低速回線ではデータ・パケットを分割

 では,IPネットワークをどのようにすれば,音声パケットの遅延やゆらぎ,パケット・ロスを減らせるのだろうか。

 一般に,大きな遅延やゆらぎは,IPネットワークの部分,その中でもとくにルーターで発生するケースが多い。ルーターは,音声以外のパケットを同時に処理しており,この処理の流れで遅延やゆらぎを発生する可能性が高いのである。

図6 サイズの大きなIPパケットがネットワーク上を同時に流れると大きな遅延が生じる
 まず,ルーターで遅延やゆらぎが発生する代表的な場合のメカニズムを見てみよう(図6[拡大表示])。ルーターにさまざまな長さのIPパケットが流れ込んでくると,その処理の関係で遅延やゆらぎが発生する。音声パケットがルーターに到着したとき,ルーターがほかのサイズの大きなIPパケットを転送しようとしていると,音声パケットは大きなサイズのIPパケットをルーターが送り出すまでそのまま待っていなければならない。ここで遅延が発生する。

 この現象は,とくに64kビット/秒のISDN回線や128kビット/秒の専用線など低速なWAN回線にIPパケットが出て行くような場合に大きな問題となる。例えば64kビット/秒の回線に1500バイトのデータ・パケットを流し終えるには,約190ミリ秒もかかる。もしルーターが1500バイトのIPパケットを転送し始めた時に音声パケットが到着すると,音声パケットは最大で約190ミリ秒も待たされてしまうことになる。

 こうした事態を防ぐには,ルーターが持つフラグメンテーション機能を利用する(図6[拡大表示])。フラグメンテーション機能とは,ルーター側でサイズの大きなパケットを適当に分割する機能のこと。大きなサイズのIPパケットが先に届いても,ルーターの中で分割することで,そのすき間に音声パケットを割り込ませられるようになるので,音声パケットの遅延時間を短くできる。

 ただし,フラグメンテーション機能を使うと,本来大きなサイズで流せるデータ・パケットを分割してそれぞれにヘッダーを付けるため,データ転送効率(スループット)は大きく低下してしまう。また,ルーター自身にも大きな負荷がかかる。WAN側の回線速度が速ければ,ルーターにかかる負荷が大きくなるばかりで,実際の効果は半減する。そもそも,フラグメンテーションが必要になるほど,ルーター内の遅延時間は長くならない。フラグメンテーション機能を利用するかどうかは,回線速度とルーターの負荷を考慮に入れて判断することになる。

ルーター内部で音声を優先的に処理

図7 音声パケットの中継品質はルーターのキューイングで制御する
VoIPのパケットを優先して送出させることで遅延を小さくする。
 フラグメンテーションを行っても,まだルーターの処理には問題が残っている。それは,ルーターのキューイングの問題だ(図7[拡大表示])。

 ルーターは,なにも設定していない状態では受けとったIPパケットをいったん「キュー」と呼ぶ待ち行列にため,これを先着順に処理していく。もしルーターが処理しきれないほどIPパケットが届いたら,キューからあふれたIPパケットは捨てられる。音声とデータが混在するネットワークのルーターは,すでにキューに多くのデータ・パケットがたまった状態で音声パケットが次々と到着すると,音声パケットを長い間待たせたり,破棄してしまう可能性がある。

 つまり,ルーターによって音声パケットの流れに大きな遅延やゆらぎ,パケット・ロスが加わってしまうのだ。そこで,こうした状況を避ける工夫がルーターに必要になる。それが,優先キューイング処理と呼ばれる機能である(図7[拡大表示])。

 これは,IPパケットのヘッダー部をルーターが識別して,特定のIPパケットを先に転送処理する機能。一般に,優先処理するパケットを識別するために,ヘッダー部分にあるTOS(トス)フィールドと呼ぶ領域を利用する。つまり,VoIPゲートウエイから音声パケットを送り出すときに,優先度が高くなるようパラメータを設定するのである(図7[拡大表示])。こうすることで,ルーター側では,仮にデータ・パケットがキューにたまっていても,あとから届いた音声パケットを優先的に処理できるようになり,遅延を最小限に抑えられる。

ゆらぎは受信側で吸収

 ルーターでいくら遅延やゆらぎが起こらないように工夫しても,複雑な構成のIPネットワークを経由していくうちに,やはりある程度の遅延やゆらぎが発生するのは避けられない。遅延に関しては,いったん発生したものを減らすことはできない。したがって,できる限り遅延が発生するのを抑えることが重要になる。

図8 ゆらぎは受信側ゲートウエイで吸収する
パケットをいったんバッファにためて,間隔を揃えてから音声に戻す。
 一方,ゆらぎに関しては,受信側で工夫することである程度改善できる。それには,受信側のVoIPゲートウエイが持つ「ゆらぎ吸収バッファ」を使う(図8[拡大表示])。

 しくみは,とても単純だ。ゆらぎというのは,もともと一定間隔で送り出された音声パケットの間隔が,途中で長くなったり短くなったりする現象である。そこで,あらかじめゆらぎの発生を予測して,受信側のVoIPゲートウエイにバッファ・メモリーを用意しておく。

 そして,音声パケットが届いてもすぐには再生せず,ある程度バッファにためてから再生を始める。このようにすれば,多少音声パケットの到着時間がばらついても,一つながりの音声として再生できるというわけだ。

 ただし,ゆらぎ吸収バッファを使うと,バッファにためておく時間分だけ確実に遅延が増えてしまう。バッファの量を大きく設定すれば,音声が途切れるなどといった事態は避けられるものの,遅延が大きくなりすぎて今度は通話品質の劣化を招く。つまり,遅延による通話品質とゆらぎによる音質がトレード・オフの関係になっている。

 ゆらぎ吸収バッファのサイズは,ユーザーが固定的にサイズを設定する方法のほか,VoIPゲートウエイが通信状況を見てバッファ量を自動調整する製品もある。