ネットワークの遅延 まとめてみた ~コード遅延 パケット化遅延 シリアル化遅延 伝搬遅延 キューイング遅延 デジッタ遅延 デコード遅延~
はじめに
こんにちは、ばーやんです!突然ですがネットワークの遅延ってなにからきているかわかりますか?
pingで遅延などを測定していることはあってもそれが何から来ているかふわっとしている方も多いのではないでしょうか?
今回は遅延の解像度をあげるべく記事を執筆しました!
おすすめの読者
- ネットワークエンジニア、インフラエンジニア
- 遅延が重要な技術開発をしている方(ライブ配信、ゲーム、HPC等)
- 通信遅延の解像度を上げたい方
参考文献
通信遅延の分類の方法はいくつかあります。今回はCiscoのホワイトペーパー「パケット音声ネットワークでの遅延について」を参考にまとめていきます。気になったら読んでみてください。
遅延の全体像
全体像から見ていきましょう。
通信遅延の全体像です(元の記事が音声のみで特殊だったので少し抽象化しています。)
遅延が発生する順番は以下のような形
- コード遅延:データをパケットに乗せられる形に符号化する遅延
- パケット化遅延:パケットにデータを乗せる詰め込み待ちの遅延
- シリアル化遅延:データを送信するのにかかる時間
- 伝搬遅延:光、電気信号が物理的に伝搬するのに必要な遅延
- キューイング遅延:キューにパケットが溜まったときの送信待ち遅延
- デジッタ遅延:受信側でジッタを吸収するためのバッファリングをする遅延
- デコード遅延:届いたパケットを復号化する遅延
初見のものがあれば伸びしろです、ひとつずつ見ていきましょう!
1. コード遅延
コード遅延は、「符号化・圧縮に必要なデータがとれるのを待つ時間」です。
ホワイトペーパーでは音声の符号化、圧縮方法としてG.729を用いていました。
エンコードに15msの音声情報を用いデータの符号化・圧縮を行うので最低15msの遅延がここで発生します。
0.1秒(100ms)ずれたら歌うのしんどいよなーとか考えると音声の遅延としては結構大きいですね!
2. パケット化遅延
続いてパケット化遅延。これはRTPのペイロードにデータを詰め込む遅延です。
2.1. パケット化遅延のトレードオフ
パケット化遅延を小さくしたければ詰め込むデータ量を小さくすればいいですがデメリットとして
・オーバーヘッド分余分に帯域を使う
・CPUなどのリソース負荷が上がる
の2点があります。ここは「低遅延」をとるか「帯域、CPU負荷の低減」をとるかのトレードオフですね。
2.2. 大きいデータの時は大きいRTPペイロードを使う
映像などデータ量が大きい場合、RTPのペイロードはIPフラグメンテーションを回避できる範囲で、大きいペイロードサイズを使うといいでしょう。
3. シリアル化遅延
データを回線に送るまでにかかる時間です。
フレームイズを回線速度で割ることでざっくり計算できます。
フレームサイズがおおきく回線が細いほどシリアル化遅延は大きくなります。
3.1. 通信帯域の大容量化に伴い減少
最近は回線が太いので通常無視できるほど小さいです。
控えめに3MByte/sの実行速度がでる回線を使っていた場合を考えます。
一般的なフレームの最大サイズである1518Byteのフレームでシリアル化遅延は0.5msとなります。
30MByte/sの回線なら0.05msとなります。
3.2. ジャンボフレームを使うと増加する
フレームサイズに比例してこの遅延はおおきくなります。
MTUが9000Byteのジャンボフレームを使うと通常のイーサネットフレーム(MTU1500Byte)の約6倍のシリアル化遅延が発生します。
4. 伝搬遅延
伝搬遅延は電機や光が伝達するのに物理的にかかってしまう遅延です。
日本でも北海道、沖縄だと往復25msかかってしまいます。(実際は直線じゃないのでもっとかかる。)
アメリカだと9000kmくらいなので、実際直線じゃないマージン込めて往復100ms程度でしょうか。
国をまたぐレベルになると結構大きいですね。
5. キューイング遅延
遅延の王様キューイング遅延。みんなが遅延と思っている大体はこれです。
キューイング遅延は平たく言うと送信待ち時間です。
スイッチ、ルータ、コンピュータは回線に送信するデータを一旦キューに貯め込みます。
送信待ちの間フレーム(パケット)はキューにいるので遅延が発生します。
5.1. キューイング遅延とQoS制御
緊急通信や音声信号などキュー待ちされると困るフレームもありますよね。
それを解決する技術としてQoS制御があります。QoSではフレームに優先度をつけ優先度の高いパケットを優先的に送信します(語彙力)
たとえばIEEE802.1Qのタグ付けVLANではPCPという3bitを見てフレームの優先度を判断するようになっています。
これによってでキュー待ちを飛ばして音声フレームなどはとんでいきます。
5.2. 優先キューも送信中の割り込みはできない
例え優先キューの中のフレームでも流石に、送信中のフレームは抜かせません。
じっくり、送信完了するのを待ちます。
5.3. キューイング遅延は輻輳時の支配的な遅延
日頃回線がおそいなーーと思うとき、裏ではキューにデータがたまって、送信待ち状態になっています。俗にいう輻輳している状態ですね、輻輳時に大きく遅延が増えるのはキューイング遅延のせいです。
6. デジッタ遅延
ジッタによる揺らぎを吸収するためのバッファリング遅延
これはどこでバッファをとるかはアプリケーションによってことなります。
音声の場合、ルータでとることもあるようです。
7. デコード遅延
データを復号するための遅延。
エンコードと違い、「処理が単純」かつ「データを待つ時間がない」ため、通常小さいです。
まとめ
今回ネットワークの遅延についてCiscoのホワイトペーパーベースでまとめてみました!
皆様の遅延の解像度を上げる一助になれば幸いです!
ばーやんでした~(`・ω・´)b
Discussion
よりエンドに近いところであるWiFi APの遅延も含めてもらえると全体網羅性があがってより良いと思います。遅延時間を占める割合的にかなり大きいと思いますので。