アプリケーションノート 4115

TDMoP製品のジッタバッファを使用してパケット遅延変動(PDV)を補償する方法


要約: DS34T10xおよびDS34S10x TDM over Packet (TDMoP)デバイスは、ジッタバッファを利用してパケットネットワーク上に生じるパケット遅延変動(packet-delay variation:PDV)の補償を行います。このアプリケーションノートでは、PDVおよびそれが通信品質に与える影響について説明します。ジッタバッファの機能と種類について解説します。またこの記事では、TDMoPデバイスでジッタバッファコントローラのパラメータを設定することによってPDVの影響を最小化する方法も説明します。

はじめに

DS34T10xおよびDS34S10xファミリのTDM-over-Packet (TDMoP)デバイスは、ジッタバッファを使用してパケットネットワーク上に生じるパケット遅延変動(packet-delay variation:PDV)の補償を行います。これらのバッファは、バンドル単位または接続単位で独立して設定可能です。さらに、これらのバッファは動的な調節が可能であり、パケットネットワークの動作特性の変化にリアルタイムで適応させることができます。このアプリケーションノートではジッタバッファコントローラについて解説し、そのパラメータを設定してTDMのクロック復元時にPDVの影響を最小化する方法を示します。

DS34T10xファミリは、DS34T101、DS34T102、DS34T104、およびDS34T108で構成されます。DS34S10xファミリは、DS34S101、DS34S102、DS34S104、およびDS34S108で構成されます。

TDMネットワークにおけるタイミング

TDMネットワークには単一のクロックソースが存在し、ネットワーク内のすべてのデバイスがそれを使用します。図1に示すように、送信先TDMデバイスは受信データからクロックを抽出し、それをデータの送信に使用します(ループバックタイミング)。

Figure 1. Loopback timing in a TDM network.
図1. TDMネットワークのループバックタイミング

ネットワークの輻輳、タイミングのドリフト、または経路の変化が原因で、ジッタと呼ばれるパケット到着時間の変動が生じます。そのため、物理的なTDM接続を(図2に示すように) IP/MPLSネットワークと2個のTDMoPデバイスに置き換えると、受信側TDMoPデバイス(スレーブ)がTDMoPパケットを受け取る際の到着時間に、変動性の遅延が伴うことになります。

このジッタの影響を最小化するために、このデバイスはパケットを処理した後、TDMネットワークの一定速度でTDMデータをTDM側に送信する必要があります。この一定のデータ速度を実現するために、このデバイスはクロック復元モードで動作して発信元のTDMクロックを復元し、送信先TDMデバイスが依然としてループバックタイミングモードで動作することができるようにします。

Figure 2. Timing in a TDM-over-Packet network.
図2. TDM-over-Packetネットワークにおけるタイミング

ジッタバッファ

DS34T10x/DS34S10xは、ジッタバッファを利用してPDVが通信品質に与える影響を最小化します。ジッタバッファとは、TDMパケットの収集し、保存し、等間隔でサーキットエミュレーションエンジンに送信することができる共有メモリ領域です。TDM接続の送信端および受信端に位置するジッタバッファは、到着するパケットを意図的に遅延させて、音声歪みがほとんど、あるいはまったくないクリアな接続をエンドユーザに体験させます。

ジッタバッファには、静的ジッタバッファと動的ジッタバッファの2種類があります。静的ジッタバッファはハードウェアベースであり、メーカによって設定が行われます。動的ジッタバッファはソフトウェアベースであり、ネットワーク内の遅延の変化およびPDVに適応するようネットワーク管理者が設定を行うことができます。

DS34T10x/DS34S10xは、SDRAM内に動的ジッタバッファを備えています。これらのジッタバッファには、主な役割が2つあります。
  • パケット遅延の変動に対する補償
  • TDMoPスレーブデバイスにおける遠端側TDMクロックの復元
データは、受信したEthernetパケットの到着時間に由来する可変速度でバッファに入ります。データがバッファを出るときは、一定のTDM速度になります。クロック復元モードでは、ジッタバッファのレベルがクロック回復メカニズムの指標になります。

TDMoPのプロトコル(CESoPSN、SAToP、およびTDMoIP)では、バンドルは単一のE1またはT1から発信される任意の数の64kbpsタイムスロットを含むことができます。バンドルは単一方向のストリームであり、多くの場合、反対方向のバンドルと対になって全二重通信を可能にします。2個のTDMoPエッジデバイス間で2つ以上のバンドルを送信可能です。

DS34T10x/DS34S10xは、IP/MPLS/Ethernetネットワークによって生じる遅延の変動を補償するための、バンドル単位で設定可能な大容量のジッタバッファ(最大64バンドル)を提供しています。各バンドルを、ペイロード型マシンまたはCPUの任意のTDMポートに割当て可能です。すべてのバンドルが、独立して設定可能な次の機能を備えています。
  • 送信および受信キュー
  • 受信ジッタバッファの深さ
  • オプショナルな接続レベルの冗長性(SAToPとCESoPSNの両方)
各デバイスが、DS0分解能を備えた内部的なバンドルクロスコネクト機能を提供します。さらに、1つのポートからのすべてのT1/E1データの伝送、設定されたバイト数を各パケットで送信(SAToP)、またはT1で最大24個、E1で最大31個のタイムスロットによるT1/E1データの特定タイムスロットの伝送(CESoPSN)のいずれかに各バンドルを設定可能です。バンドルには、単一のTDMポート内の任意のタイムスロットのデータを含むことができます。しかし、1つのタイムスロットは単一のバンドルにのみ割当て可能です。SAToPおよびCESoPSNバンドルの場合、TDMoPデバイスはジッタバッファの範囲内でパケットの並べ替えを行います。パケットロスは、あらかじめ設定された調整値の挿入、または最後に受信した値の繰り返しによって補償されます。

SAToPとCESoPでは、ジッタバッファの分解能が異なります。SAToPの場合、精度はバイト単位であり、変数はE1で約4µs、T1で約5µsステップで変更可能です。CESoPの場合、精度はフレーム単位であり、E1、T1ともに変数は125µsステップで変更可能です。パケットが正常かどうかを判断するには、その前にパケット全体を格納する必要があるため、ジッタバッファの最小の精度はパケットサイズの関数になります。小さなパケット(1バイト)の場合、最小は1バイトです。大きなCESパケット(1500フレーム)の場合、PDVに関わらず最小は187.5msです。

DS34T10x/DS34S10xのジッタバッファの設定

ジッタバッファのパラメータを正しく設定することによって、アンダランおよびオーバラン状態を防止することができます。アンダランは、ジッタバッファが空のとき(入って来る速度が出て行く速度より低いとき)に発生します。アンダランイベントが発生すると、チップは実際のデータの代わりに調整用データをTDMインタフェースに送出します。オーバランはジッタバッファが一杯で新しいデータが入る余地がないとき(入って来る速度が出て行く速度を上回っているとき)に発生します。アンダランとオーバランは、バンドル種別に応じてICのハードウェアによる特殊な対処を必要とします。

DS34T10x/DS34S10xは、データ用と信号伝達用にそれぞれ独立した領域を外部SDRAM内に割り当てます。
  • 8ポートの低速モードでは、データ領域、信号伝達用領域とも、各E1/T1/Nx64インタフェースごとに1個ずつ、8個のセクションに等分されます。
    • E1/T1ストラクチャーモードでは、個々のデータセクションにE1で32個、T1で24個のタイムスロットのデータが格納され、1つのE1/T1タイムスロットに最大で4kBのスペースが割り当てられます。8個すべてのインタフェースで、合計256個のタイムスロットと1024kBのスペースが存在することになります。
    • 各信号伝達用セクションは複数のマルチフレームセクタに分割され、各マルチフレームに最大32タイムスロットのシグナリングニブルが格納されます。8個すべてのインタフェースで合計64kBになります。
    • シリアルまたはE1/T1非ストラクチャーモードでは、タイムスロット単位の割当ては行われません。ジッタバッファは、各インタフェースごとに1個ずつ、8個のセクションに等分されます。各セクションは、HDLCバンドルの場合512kB、それ以外では128kBになります。
  • 高速モード(E3/T3、STS-1)の場合、ジッタバッファは1つの大きなバッファとして動作し、セクションに分割されることなく全体で512kBになります。
ジッタバッファの深さは、次の通りです。
  • E1:最大256ms
  • 非フレーム化T1:最大340ms
  • フレーム化T1:最大256ms
  • CAS使用フレーム化T1:最大192ms
時間を単位とするジッタバッファの最大の深さは、次式に従って計算します。

½ × Buffer area per interface x (8 / Rate)(Eq. 1)

ここで、
½ = バッファの半分
Buffer area per interface = 単一の高速インタフェースの場合512kB、低速インタフェースの場合128kB
8 = 1バイト当りのビット数
Rate = 伝送速度(たとえば2.048Mbps)

CAS使用フレーム化T1の場合、式1の結果に0.75をかけてください。

ジッタバッファの深さは、バンドル設定テーブル内のRx_max_buff_sizeパラメータで定義します。ジッタバッファのレベルがRx_max_buff_sizeの値に達すると、オーバラン状態が通知されます。

Rx_pdvtパラメータ(同じくバンドル設定テーブル内にあります)は、ネットワーク遅延変動を補償するためにジッタバッファに格納するデータ量を定義します。ジッタバッファのパラメータを図3に示します。Rx_pdvtパラメータには、2つの意味があります。
  • Rx_pdvtによって、Ethernetのネットワーク遅延変動に対するICの耐性が定義される
  • ネットワークから到来するデータは、Rx_pdvtだけ遅延されてからTDMラインに送出される
Rx_pdvtは、Rx_max_buff_sizeよりも小さくしてください。また、Rx_max_buff_sizeRx_pdvtの差を、パケットの再構築にかかる時間より大きくする必要があります。さもないと、パケット到着時にオーバランが発生する可能性があります。一般的に、Rx_max_buff_sizeの推奨値は2 × Rx_pdvt + PCT (パケット作成時間)です。これによって、パケットの遅延に対してもパケットの急激な到来に対しても同等の耐性が得られます。

Figure 3. Jitter buffer parameters.
図3. ジッタバッファのパラメータ

ジッタバッファコントローラ(JBC)は、64ビット×32ビットのバンドルタイムスロットテーブルを使用して、アクティブな各バンドルに対応するタイムスロットを特定します。バンドル番号がこのテーブルのインデックスになります。アクティブな各バンドルのエントリをソフトウェアで設定しなければなりません。非構造化バンドルの場合は、バンドルのエントリ全体(32ビット)を設定する必要があります。1つのビットをセットすることは、該当するタイムスロットをそのバンドルに割り当てる意味になります。

128個のエントリからなるテーブルに、JBCの統計情報が格納されます。各TDMポートに対して、32個(タイムスロットごとに1個)の専用エントリが存在します。このジッタバッファステータステーブルには、アクティブな各バンドルについてアクティブなジッタバッファの統計情報が格納されます。ジッタバッファの統計情報が格納され、そこから統計情報の読取りを行うことになるテーブル内のエントリは、(TSAテーブル内の) Jitter_buffer_indexと呼ばれる設定可能パラメータで定義されます。

ソフトウェアは、Jitter_buffer_indexに従ってジッタバッファのステータステーブルにアクセスします。ステータステーブルには、ジッタバッファのレベルと状態(良好、アンダラン、オーバランなど)のような、現在のジッタバッファの状態が格納されています。また、ジッタバッファの最小および最大レベルを示す2つの変数も格納されています。これらの変数は、ネットワークの特性に関する情報をユーザに提供します。たとえば、これらの値を使用してユーザはジッタバッファの上端(Rx_max_buff_size)および下端からのマージンを計算することができます。容量に余裕がある場合には、Rx_pdvtを減少させることによって、ジッタバッファが受信データに付加するレイテンシを制限することが可能です。

Jitter_buffer_indexの値は、次のように定義します。
  • AAL1/HDLC/RAWストラクチャードバンドルの場合、Jitter_buffer_indexはインタフェース番号(上位2ビット)の後にバンドル中で最も小さなタイムスロットの番号をつなげたものになります。たとえば、第3のインタフェース上のタイムスロット2、4、および17でバンドルが構成される場合、Jitter_buffer_indexは10_00010[bin]、すなわち42[hex]になります。
  • 非ストラクチャードバンドルの場合、Jitter_buffer_indexはインタフェース番号(上位2ビット)の後に「0」を5個つなげたものになります。
  • AAL2バンドルの場合、各タイムスロットのデータがそれぞれ独立したジッタバッファに格納されます。したがって、Jitter_buffer_indexはインタフェース番号(上位2ビット)の後にタイムスロット番号をつなげたものになります。たとえば、第1のインタフェース上のタイムスロット2、4、および17でバンドルが構成される場合、3個のジッタバッファ(各タイムスロットごとに1個)が存在し、Jitter_buffer_indexの値はそれぞれ2[hex]、4[hex]、および11[hex]になります。
ペイロード型マシンは、シーケンス番号エラー(AAL1/RAW)またはUUIエラー(AAL2)によってパケットの欠落があったかどうかを検出します。パケットの欠落があった場合、失われたデータの補償およびビット整合性の維持のために、調整用データがジッタバッファに挿入されます。簡単に言うと、ジッタバッファに挿入されるビット数は、遠端から送信されたビット数と同じである必要があります。

RAWバンドル内でパケットが誤った順番になった場合(たとえば、シーケンス番号Nのパケットがシーケンス番号N+1のパケットより後から到着した場合など)、RAWペイロード型マシンによって並べ替えが行われます。ジッタバッファ内の適切な位置にパケットのデータが挿入されます(ただしその位置のデータがまだTDMドメインに送出されていないことが前提です)。

結論

ジッタバッファは、到着したパケットを一時的に格納して遅延変動を最小化します。パケットの到着が遅すぎた場合、それらのパケットは破棄されます。時として、ジッタバッファの設定が小さすぎたり大きすぎたりすることがあります。ジッタバッファが小さすぎると過大な数のパケットが破棄され、通話品質の低下につながる可能性があります。ジッタバッファが大きすぎると、遅延の増大によって会話が困難になる可能性があります。ジッタバッファのパラメータを正しく設定することによって、これらのアンダランおよびオーバラン状態を防止することができます。

TDMoP製品についてのご質問、またはマキシム製テレコム製品の使用に関するその他のご質問は、テレコム製品アプリケーションサポートチームまでメールまたは電話(01-972-371-6555)でお問い合わせください(英語のみの対応となります)。

次のステップ
EE-Mail EE-Mail配信の登録申し込みをして、興味のある分野の最新ドキュメントに関する自動通知を受け取る。
© , Maxim Integrated Products, Inc.
このウェブサイトのコンテンツは米国および各国の著作権法によって保護されています。コンテンツの複製を希望される場合は お問い合わせください。.
APP 4115:
アプリケーションノート 4115,AN4115, AN 4115, APP4115, Appnote4115, Appnote 4115