目次
エンドツーエンド遅延
エンドツーエンド遅延とは、送信元から送信されたパケットがあて先に届くまでに要する時間です。下の図のコンピュータAから送信されたパケットがあて先のコンピュータBに届くまでに必要な時間がエンドツーエンド遅延です。
VoIPなどのリアルタイム通信を行うアプリケーションでは、エンドツーエンド遅延をきちんと制御することが重要です。VoIPの音声通話で通話品質を保つためには、目安としてエンドツーエンド遅延を150ms以内にすることが挙げられています。
エンドツーエンド遅延は、パケットの転送経路上の下記の遅延を累積したものになります。
- 処理遅延(Processing Delay)
- キューイング遅延(Queuing Delay)
- シリアル化遅延(Serialization Delay)
- 伝搬遅延(Propagation Delay)
以降で、ネットワーク上でのパケットの転送についての遅延についてもう少し詳しく見ていきます。
処理遅延
処理遅延は、ルータやスイッチでパケットの転送処理にかかる時間です。ルータやスイッチなどのネットワークデバイスにおける処理遅延は、パケットを受信してからルーティングやスイッチングを行い、出力インタフェースのキューにパケットを入れるまでの時間です。
処理遅延は、ルータやスイッチの転送アーキテクチャや処理性能に依存します。
キューイング遅延
キューイング遅延は、パケットが出力インタフェースのキューに入っている時間です。キューとは、パケットを出力するときの待ち行列です。
ソフトウェア的にキューを複数作成して、パケットをキューイングすることができます。アプリケーションの種類ごとに異なるキューにパケットをキューイングすることで、優先制御を行うことができます。パケット転送の優先制御とは、すなわちキューイング遅延を小さくすることになります。
QoSの機能によって、特定のパケットを優先制御するということは、キューイング遅延の制御を行っているということがポイントです。
シリアル化遅延
シリアル化遅延とは、パケットをインタフェースから送信するために電気信号や光信号、電波など物理的な信号に変換するための時間です。
シリアル化遅延は、インタフェースの帯域幅と送信するパケットサイズから次のように計算されます。
シリアル化遅延=パケットサイズ/帯域幅
高速なインタフェースではシリアル化遅延は小さく、低速なインタフェースではシリアル化遅延は大きくなります。
伝搬遅延
伝搬遅延は、物理的な信号が伝送媒体を通って次のデバイスまで到達するために必要な時間です。
伝搬遅延は伝送媒体によって異なりますが、目安として100マイルあたり1msです。kmで考えると、1kmあたり約6μsです。
エンドツーエンド遅延は、ms単位で考えるので伝搬遅延はほとんど無視しても構わないぐらい小さいです。ただし、国際間や衛星通信など非常に長距離な通信を行うときには伝搬遅延は無視できないほどの影響を持ちます。
遅延を小さくするには?
さて、エンドツーエンド遅延を小さくするにはどうすればいいのでしょう?
処理遅延や伝搬遅延は小さくすることはとても困難です。処理遅延を小さくするのは、ルータやスイッチといったネットワークデバイスをより高性能なものにアップグレードすれば可能ですが、コストがかかります。伝搬遅延はエンドツーエンドの物理的な距離を小さくすれば可能ですが、現実的にはとても難しいです。
遅延を小さくするには、帯域幅をアップグレードするのが一番手っ取り早いです。高速なインタフェースであれば、ネットワークは輻輳せずにキューイング遅延が発生しません。また、シリアル化遅延も小さくてすみます。
ただし、一ヶ所だけ帯域幅をアップグレードしてもあまり意味がないです。エンドツーエンド、つまり累積で考えていかないといけないので、経路上のルータやスイッチですべて帯域幅をアップグレードすることが必要です。これは非常にお金がかかってしまいます。
そこでQoS機能によって、いまあるリソース、つまり帯域幅を有効に活用して遅延の制御を行います。QoS機能によって制御できるのは、キューイング遅延とシリアル化遅延です。
パケットの優先制御といわれているのは、キューイング遅延を小さくすることを意味しています。VoIPなど優先したいパケットは、キューにいる時間をできる限り小さくしてすぐに転送します。
また、シリアル化遅延を小さくするために、LFI(Link Fragmentation and Interleaving)や圧縮を行います。シリアル化遅延の計算式の分子であるパケットサイズを小さくして、その結果、シリアル化遅延を小さくする機能です。