トラフィック制御の仕組みと種類(その2)UNIX USER2005年3月号「ネットワークトラフィックを制御せよ Part1」より転載(1/2 ページ)

Part1では、トラフィック制御機構のアプローチについて紹介する。主に、トラフィック制御を行う場所や、パケットを処理する際のキューイング方式などを解説する。

» 2005年02月25日 20時35分 公開
[広瀬雄二(東北公益文科大学),UNIX USER]

代表的なトラフィック制御方式

 トラフィック制御の方式を理解するには、「キュー」という概念を知る必要がある。これは、「待ち行列」を思い浮かべれば良い。どんなに多くのサービスデーモンが動いているホストでも、外部にパケットが出ていくときには最終的に1本のネットワークケーブルに流れる電気的信号へと変換される。実際に送出されるパケットが、送出順に並んで待機している状態の待ち行列のことをキューという。

 以下、標準的なキューイング方式からトラフィック制御に利用されている代表例*を示しておく。Part 2で利用する制御方式の基本となる考え方なので、実際の設定で分からなくなったら以下の部分を読み返すと良いだろう。

FIFOキュー

 FIFO(First In First Out)キューは基本となる方式で、トラフィック制御をかけないデフォルト状態がこれに該当する。FIFO自身は帯域制御用のものではないが、後述する帯域制御方式の最終的な出口はFIFOに渡されること、またFIFOを応用した帯域制御方式が存在することなどから、その仕組みをきちんと理解しておきたい。

 FIFOでは送出依頼のあったパケットを待ち行列の最後尾に配置する、つまり最初に来たパケットを最初に送り出す、非常にシンプルな仕組みとなっている。

PRIQ/PQ

 FIFOではすべてのパケットを平等に並ばせたが、パケットの種類に応じて優先度をつけたものがPRIQ/PQ(Priority Queueing)である。帯域制御というよりは、優先制御に該当するだろう。パケットの分類には、TCP/UDPの種別やポート番号、UID、送信元アドレス/宛先アドレスなどが利用される(図3)。

図3 図3 PRIQの仕組み(クリックで拡大)

 送出依頼の発生したパケットは、それに応じた優先度を持つキューに入れられる。一番優先度の高いキューにあるものから先に送出され、そこが空になったら2番目に優先度の高いキューの中身が処理される。裏を返せば、優先度の高いキューに分類されるパケットが送出され続けていると、優先度の低いキューはなかなか処理されなくなるわけだ。したがって、PRIQを下手に設定すると、特定のサービスが実用にならない事態に陥ることもあるので注意が必要である。

 ストリーム配信を行うサーバーなど、ほかのサービス用の帯域を犠牲にしても優先させたいものがある場合に有効だ。

WFQ

 PRIQではキューに対する優先度を絶対的な処理順位として扱ったが、複数のキューに対してそれぞれ重み付けを行い、低優先度のキューも高優先度のものより先に処理される可能性を与えたものがWFQ(Weighted Fair Queueing)である。

 図4の例では、3つのキューが優先度の比率として5:3:2という割合で処理される。つまり、3つのキューすべてに送出待ちパケットがある場合、それらは5:3:2の割合で取り出されて送出キューに送られる。その結果として、全体に与えられた帯域幅の1/2、3/10、1/5が各キューに与えられることになる。

図4 図4 WFQの仕組み(クリックで拡大)

 Part 2で利用するIPFW(FreeBSD)では、WFQを効率化したWF2Q+(Worst-case Fair Weighted Fair Queueing)を採用している。

このページで出てきた専門用語

トラフィック制御に利用されている代表例

実際にトラフィック制御を行う場合には、いくつかの方式を階層的に組み合わせて利用することが多い。


       1|2 次のページへ

Copyright(c)2010 SOFTBANK Creative Inc. All rights reserved.

注目のテーマ