FIFOは高いQoSを提供できない
複数のフローを競合する環境で、一つのフローが簡単に他のフローに影響を与えてしまう。例えば、一つ目のフローが大きなバースト・パケットを送信した場合、そのパケットは
ルーターのキューの大部分を埋める
ことになる。この時到着順でパケットを処理するアルゴリズムでは、大量のパケットを送信する送信者がルータのリソースを独り占め
することになり、他のフローのQoSを低下
させてしまう。さらに、他のフローのパケットはバースト・パケットの後ろで待たされる
ことになるため、通信の遅延が大きくなる可能性がある。
フローを分離して公平に出力するアルゴリズム
多くのパケット・スケジューリング・アルゴリズムは、
フローを分離
して扱い、フロー間の干渉を発生させない
ことを目標に考案されている。初期のスケジューリング・アルゴリズムの一つにNagleによって考案された公平キューイングアルゴリズムがある。
...
リンクがアイドル状態になった時に、ルーターは、ラウンド・ロビン方式でキューを走査し、キューの先頭のパケットを取り出して送信
する。この方法では、競合状態にあるn個のホストのパケットがnパケットごとに一回ずつ送信権を得る
ことになる。これは、すべてのフローが同じ転送レートでパケットを送信できる
という意味で公平である。
- フローごとに分け、偏ったリソースを独占を防ぐことでQoSが落ちないようにしている
バイト単位のラウンドロビンで性能向上
小さなパケットを使うホストよりも大きなパケットを使うホストにより大きい待機を与えてしまうという結果がある。パケット単位のラウンド・ロビン方式の代わりにバイト単位のラウンド・ロビン方式を使うことで性能が向上することがDemers他のシミュレーションによって示されている。
....
公平キューイングはバイト単位のラウンドロビン式を近似したアルゴリズムに過ぎないが、その性能は理想的な方式とほぼ同等である。
- パケットごとよりももっと小さくしてバイトごとにすることで大きい帯域を与えないようになる
感想
公平キューイングアルゴリズムを行うことでルーターのリソースの独占を防止するため均等にパケットをバイトごとにして送信する