はじめに
初めての記事投稿はQiitaの限定公開記事(自分用)でメモ程度にまとめていたQoSの遅延の種類についての記事をブラッシュアップしたものとします。
「通信遅いんだけどどこで遅延しているの?」って聞かれた時に
具体的に答えられなかったので、昔購入した以下の本を再度読みなおしたのが契機です。
Cisco QOS Exam Certification Guide (IP Telephony Self-Study), 2nd Edition
遅延の種類は以下の10種類です。
1:Serialization delay(fixed)
2:Propagation delay(fixed)
3:Queuing delay(variable)
4:Forwarding/processing delay(variable)
5:Shaping delay(variable)
6:Network delay(variable)
7:Codec delay(variable)
8:Compression delay
9:Packetization delay(fixed)
10:De-jitter buffer delay(variable)
Serialization delay(fixed)
シリアル化遅延と呼ばれるものです。パケットの長さによって生じる遅延です。
計算式:bit sent/Link speed
【例】
125byteのパケットがfast-ethernetのI/Fを持つswitchに送られるとき
1000bits/100,000,000(bps)=0.1msとなります。
また、隣接機器のfast-ethernetのI/Fで125byteのパケットを受け取るときにも
同様に遅延が発生します。
Propagation delay(fixed)
計算式:Length of Link(meters)/2.1 × 10の8乗 ※meters/second
【例】
1000km離れている場所への遅延は
1,000,000/2.1*10×8乗=004.8ms
Queuing delay(variable)
文字通り、キューイングによって生じる遅延です。
この遅延は一番初めにキューに入ったパケットが送られるスピード次第です。
FIFOの場合で考えてみます。
最初に入ったパケットのシリアル化遅延が1ms(1250byteのパケットが100MbpsのI/Fから送出される)の場合、2番目に送られるパケットの遅延は1ms、3番目に送られるパケットの遅延は3ms…のようになる。
自然渋滞が起きる現象と同じですね。
Forwarding/processing delay(variable)
OutputQueueからパケットが離れるまでの時間は含まれておらず。
説明については原文をそのまま引用させていただきます。
the processing time between when a frame is fully-received, and when the packet has been placed in an output queue.so, forwarding delay does not include the time the pecket sits in the output queue waitng to leave the router.
Shaping delay(variable)
皆さんおなじみのシェーピングによる遅延です
シェーピングをすることで通信の平滑化が可能となり、バーストトラフィックを防ぎます。
ネットワークの帯域が広いのにスピードが出ない場合はこれが原因の可能性が高いです。
遅延の影響ですが、シェーピングレートに依存します。
例えば、アクセスレートが128kbpsで64kbpsの回線にパケットを出す場合、
パケット送出レートは64000*8=512,000bit/sとなります。
あくまでも物理回線のスピードに送信レートは準じます。
インプットキューについては考慮不要みたいです。
あくまでもアウトプットキューのみが対象。
Network delay(variable)
1のSerialization delay(fixed)と2のPropagation delay(fixed)を合わせたものです。
以下の具体例で見てきましょう。
【構成】R2—-SP網—-R3
【速度】R2~SP網:128kbps R3~SP網:1.544Mbps
【距離】1000km(R2とR3)
この時のNetwork遅延は
R2のSP網側のI/F及びR3のSP網側のI/Fのシリアル化遅延
+ R2~R3間の伝送遅延となります。
なので、計算すると
1000Km/2.110の8乗=4.8ms
1500byte*8/128000bps=94ms
1500byte*8/1544000=7.8ms
合計106.6msの遅延
となります。
ただし、実際にはSP網の機器の数や輻輳具合などによって変化するので
正確な予測は困難です。利用しているSP会社の回線に関するSLAを確認しましょう。
Codec delay(variable)
以下の2つの要素から構成されます。
①アナログ信号をデジタル信号に変換する時間
②look-aheadと呼ばれる特性による遅延
①については使用するコーデックの種類によって時間が異なります。
G.729ですと10msとなります。
Ciscoによると2.5ms-10msの間だそうです。
②については以下です(理解放棄)
The codec algorithm may cause additional delays due to a feature called look-ahead. Look- ahead occurs when the codec is predictive—in other words, one method of using fewer bits to encode voice takes advantage of the fact that the human vocal cords cannot instantaneously change from one sound to a very different sound.
By examining the voice speech, and knowing that the next few ms of sound cannot be significantly different, the algorithm can use fewer bits to encode the voice—which is one way to improve from 64-kbps G.711 to an 8-kbps G.729 call.
However, a predictive algorithm typically requires the codec to process some voice signal that will be encoded, plus the next several milliseconds of voice. With G.729, for example, to process a 10-ms voice sample, the codec must have all of that 10 ms of voice, plus the next 5 ms, in order to process the predictive part of the codec algorithm.
So, the G.729a codec delays the voice as follows, for each 10-ms sample, starting with the time that the 10 ms to be encoded has arrived: 5 ms look-ahead + 5 ms processing (average) = 10 ms
Compression delay
Packetization delay(fixed)
音声については必ず20msの遅延が発生すると覚えておきましょう。
De-jitter buffer delay(variable)
音声については一定の間隔で届かないと音声品質が下がるのでバッファを設けています。
CiscoのIOSだと40msをデフォルト値として設定されているようです。
ドキュメントに記載されている図を見ていただけるとイメージが付きやすいと思います。
おまけ:遅延の全体像
どこでどういった遅延が生じるか一覧化されてます。
コメント