30 Minutes NetWorking
No.RA03

30Minutes NetWorking

BCRAN

第3回QoS(1) FIFOとWFQ

■ キューイング

スーパーインター博士

ネット君。ルータの動作はもちろん知っていると思うが?

ハイパーネット助手

え? ルーティングでしょ?

スーパーインター博士

いやまぁ、確かにルーティングだが。それはBSCIの範囲だからな。
そうだな、パケットを受け取る・受け取った場合のルータの動作だ。

ハイパーネット助手

あ〜、入力インタフェースからパケットを受け取って。ルーティングして。
でもってルーティングで決定された出力インタフェースから送信?

スーパーインター博士

そうだ。その際、出力インタフェースでは一度パケットをバッファしてから、送信することになる。

[FigureRA03-01:ルータの動作]

スーパーインター博士

細かく言えば、入力、出力時にACLが入ったり、出力前にL2ヘッダの付け替えがあったりするが、基本的にはこの流れだ。

ハイパーネット助手

入力→ルーティング→(バッファ)→出力、ですね。

スーパーインター博士

で、だ。このバッファだが。なんの為に必要なのかね?

ハイパーネット助手

なんのために、と言われても。

スーパーインター博士

ルーティングし、出力インタフェースへパケットがスイッチングされたら、すぐ送信すればいいではないか。なんでバッファするのかね? 逆に言えば、すぐ送信できない事情があるのかね?

ハイパーネット助手

すぐ送信できない事情…、あぁ、ありますあります。
イーサネットのCDによる待機とか、全二重イーサネットのPauseとか、WANだと輻輳とか。

スーパーインター博士

そうだ。送信できない場合、バッファにたまっていくわけだな。
つまり、バッファに列ができることになる。送信待ちの行列だな。

ハイパーネット助手

あ〜、いやだいやだ。「待ち行列」なんて言葉は聞きたくないです。

スーパーインター博士

M/M/1の待ち行列理論の話ではなくてだな。まぁ、M/M/sとか言われると帰ってくれといいたくなるが。
ともかく、バッファにたまった場合、パケットをどの順番で送り出すかということがポイントになる。

ハイパーネット助手

んん? 列で並んでるんだから、入ってきた順じゃないんですか?

スーパーインター博士

まぁ、基本はそれだ。FIFOと呼ばれるアルゴリズムだな

ハイパーネット助手

ふぁーすといんふぁーすとあうと。最初に入ってきたものから出て行く、でしたよね。

[FigureRA03-02:FIFO]

スーパーインター博士

そういうことだ。このFIFO方式、つまりキューイングが出力インタフェースでのバッファの基本なわけだ。

ハイパーネット助手

くえうえ〜。

スーパーインター博士

帰れ

ハイパーネット助手

はぅっ。
Queueって「くえうえ〜」って感じじゃないですか?

スーパーインター博士

どんな感じだ、それは。
ともかく、ここから来てるのかどうかは知らんが、出力バッファのことを「キュー」、バッファでの待ち行列の処理のことを「キューイング」と呼ぶ。

ハイパーネット助手

ん〜、バッファがきゅ〜。処理がきゅ〜いんぐ。

スーパーインター博士

「〜」で言うな。「キュー」と呼べ、「キュー」と。
何処のゴマフアザラシだ、君は。

ハイパーネット助手

きゅ〜。

■ キューイングの種類

スーパーインター博士

さて、基本はFIFOなのが、キューイングだが。
これには問題がある。

ハイパーネット助手

え? いいじゃないですか、先入れ先出し。シンプルだし、競争原理にも則ってますよ?

スーパーインター博士

別にネットワーク上のパケットに競争原理はいらん。
例えば、FTPによるファイル転送のような「重い」トラフィックと、Telnet・DNSのような「軽い」トラフィックが混在した場合。

ハイパーネット助手

データ量ですか? 重いと軽いは?

スーパーインター博士

そうだ。そうなると、通常のFIFOではTelnet・DNSトラフィックが遅延する可能性が高い。

[FigureRA03-03:FIFOの問題]

スーパーインター博士

まぁ、FTPのようなアプリケーションが送り出す一連の連続データフローをパケットトレインなどと呼ぶのだが。
こうなると、特に出力側が低速WAN回線などではキツイわけだな。

ハイパーネット助手

ぱけっととれいん…パケット列車。
何がキツイんですか?

スーパーインター博士

Telnetのレスポンスが極端に悪化する。本来なら輻輳を引き起こすほどではないTelnetが、FTPが前に入ることによって輻輳の影響を受けてしまうわけだ。

ハイパーネット助手

FTPのファイル転送待ちになっちゃうわけですね。そうなると確かに遅く感じるなぁ。

スーパーインター博士

さらに、レスポンス勝負のトラフィックの場合は、応答の悪化が致命的にもなりうる。
ビデオ会議や、VoIP、リアルタイムストリーミングなどだ。

ハイパーネット助手

確かに。ビデオ会議で遅延発生すると、じれったいですからね。

スーパーインター博士

そのために、特定のトラフィックに対し一定の帯域を保障するわけだ。
これをQoSと呼ぶ。

ハイパーネット助手

くおりてぃおぶさーびす。
帯域を保障する?

スーパーインター博士

うむ。この場合、ビデオ会議などのトラフィックを優先して、FTPなどのトラフィックの前にキューから送り出すことにより、帯域が保障されるわけだな。

[FigureRA03-04:QoSによる帯域保障]

ハイパーネット助手

ほぇ〜、VIP待遇なんですね。

スーパーインター博士

これがQoSの方式の1つであるDiffServの「キューイング」と呼ばれる方式だ。
今回からはこの「キューイング」を説明していく。

ハイパーネット助手

「の1つ」ってことは、他にもあるんですか?

スーパーインター博士

ある。IntServなどがそうだ。
それはまぁ、機会があれば。

ハイパーネット助手

ははぁ。

スーパーインター博士

さてさて、このキューイングだが。
説明するのは以下のものだ。

  • FIFO … First In First Out
  • WFQ … Weighted Fair Queueing
  • CBWFQ … Class Based Weighted Fair Queueing
  • LLQ … Low Latency Queueing
  • WRED … Weighted Random Early Detection
スーパーインター博士

FIFOは説明済みだからよいとして、あと4つだな。

ハイパーネット助手

あぅぅぅぅ。

スーパーインター博士

どうした?

ハイパーネット助手

未知の世界が広がっています。

■ WFQ

スーパーインター博士

ではまず、ネット君の未知の世界の1つ、WFQからだな。

ハイパーネット助手

うぇいてっどふぇあきゅーいんぐ?

スーパーインター博士

「重み付け均等化キューイング」かな、訳としては。
あぁ、言い忘れていた。これらのキューイングは輻輳が起きる可能性のあるインタフェースでのみ実装される。

ハイパーネット助手

え? 何故です?

スーパーインター博士

輻輳が起きないんだったら、バッファに溜まらないだろう?
あぁ、LANのイーサネットの待機というのもあるが。

ハイパーネット助手

さっき言ったバッファがいる理由のあるインタフェースで実装、ってことですね。

スーパーインター博士

そういうことだ。では、WFQ。
WFQはパケットトレインを分割し、トラフィックに公平に帯域を割り振る方式だ。

ハイパーネット助手

トラフィックに公平に…、だから「Fair Queueing」なんですか?

スーパーインター博士

そういうことだな。WFQはE1(2.048Mbps)以下のWANではデフォルトで使用される。
どちらかといえば、低速回線向きのキューイングだ。

ハイパーネット助手

そうなんですか?

スーパーインター博士

うむ、正直言ってWFQでは大帯域では対応しきれないし、調整機能も甘い。なので、新機能としてCBWFQがあるわけだ。

ハイパーネット助手

へ〜。じゃあWFQは古いんですね。

スーパーインター博士

まぁ、古いといえば古いな。それはともかくとしてWFQの説明をしよう。
先ほど言ったとおり、トレインを分割し、公平にキューイングを行う。

ハイパーネット助手

公平に、ですね。

スーパーインター博士

まぁ、高ボリュームトラフィックより低ボリュームトラフィックの方が優先されるが。
まず、以下の項目でトラフィックをフローに分割する。

  • 宛先/送信元ネットワークアドレス
  • 宛先/送信元MACアドレス
  • 宛先/送信元ポート番号
  • フレームリレーDLCI、FECN、BECN、DE
  • IPヘッダQos(ToS)
スーパーインター博士

で、このフローの中から低/高ボリュームを認識し、IPヘッダのToSやパケット長などから優先するパケットを決定する。

ハイパーネット助手

IPヘッダのToSと、パケット長…。

スーパーインター博士

うむ。実際の処理だが。こうなる。

[FigureRA03-05:WFQ]

ハイパーネット助手

ほぇ〜、低ボリュームは優先、高ボリュームは均等、ですか。

スーパーインター博士

そうなるわけだ。これにより、低ボリュームは優先されて帯域を消費し、残りの帯域を高ボリュームが均等かデータ量の応じて使用することになるわけだ。

ハイパーネット助手

なるほどです。

スーパーインター博士

このWFQを実装するのはすごく簡単だ。

  • (config-if)# fair-queue {輻輳しきい値}
スーパーインター博士

輻輳しきい値はオプションだ。あってもなくてもいい。

ハイパーネット助手

あるとどうなるんです?

スーパーインター博士

輻輳しきい値はデフォルトで64だ。キュー内のメッセージが64を超えた場合、それ以上の高ボリュームトラフィックを着信しても破棄する。

ハイパーネット助手

ははぁ、輻輳制御の一環ですね。

スーパーインター博士

まぁ、そうだな。
このように、WFQはトラフィックの中でも多い低ボリュームトラフィックを優先的に制御することにより、応答時間を制御してるわけだ。

ハイパーネット助手

なるほどなるほど。

スーパーインター博士

ただし、あくまでのWFQは低速回線用で、フローが多くなると対応しきれなくなる。
優先順位付けが単純すぎて、追いつかなくなるんだな。

ハイパーネット助手

ん〜〜〜、つまり、アレですか? みんな同じ優先度になっちゃったり?

スーパーインター博士

または、さらにその中でも優先したいパケットがあったりする場合もあるわけだ。
よって、拡張版のCBWFQがあるわけだ。

ハイパーネット助手

ははぁ、拡張。

スーパーインター博士

ま、それは次回だな。

ハイパーネット助手

いぇっさ〜。
30分間ネットワーキングでした〜♪

聞きたくない
いちひくろーぶんのろーかけるさーびすたいむ。
テクニカルエンジニア(ネットワーク)試験のお約束、「待ち行列」。
悩まされた人も多いのでは?
FIFO
[First In First Out]
「先入れ先出し法」と呼ばれるアルゴリズム。
読み方は「ふぁいふぉ」もしくは「ふぃふぉ」。
キューイング
[Queueing]
FIFOアルゴリズムをつかったデータ構造をキュー[queue]と呼ぶことから。
QoS
[Quality of Service]
「サービス保証」
IntServ
[Integrated Services]
「統合サービス」。
RSVP「Resource Reservation Protocol]に代表されるネットワーク上の帯域を予約していく方式。
DiffServ
[Differentiated Services]
「差別化サービス」。
IPヘッダのToSフィールドなどを利用し、特定トラフィックを優先的にキューイングする方式。
優先するパケット
パケットサイズ × (32768 / ToS +1)。
この値が小さいパケットが優先されるため、小さいパケット(低ボリュームトラフィック)が優先される)。
ハイパーネット助手ハイパーネット君の今日のポイント
  • パケットは送信インタフェースでバッファされる。
  • バッファ内のパケットをどの順序で送信するか制御するのがキューイング。
    • デフォルトは着信順でおくるFIFO
  • WFQは低ボリュームトラフィックを優先させる。

30 Minutes NetWorking No.RA03

管理人:aji-ssz(at)selene.is.dream.jp