WFQ ( Weighted Fair Queuing )



 WFQとは

 このキューイングは、送信元から宛先までのアプリケーション間で発生するトラフィックフローを動的に
 検出して、フローごとに個別のキュー(サブキュー)を自動管理するキューイング方式です。PQやCQでは
 管理者が手動でリスト ( priority-list 1, custom-queue-list 1 ) などを作成していましたが、WFQでは
 自動でキューが作成されます。また、パケットの優先度は Precedence 値により決めることができます。

 ところで、「送信元から宛先までのアプリケーション間のトラフィックフロー」とは、何のことでしょうか?
 例えば、「192.168.0.1/24 port : 2345」 から 「192.168.1.1/24 port:23」 のサーバにtelnetするとします。
 そうすると、これで1つのトラフィックフローとして動的に検出して「輻輳時に」1つのキューを作成します。
 つまり、「 192.168.0.2/24 port:3456 」 から 「 192.168.1.1/24 port:23 」 までtelnet接続するトラフィックを
 ルータが検出すれば、これで別の1つのトラフィックフローとして「輻輳時に」1つのキューを作成します。
 つまり、WFQは送信元から宛先へのIPアドレス、ポート番号をみてキューに振り分けています。また、
 WFQではパケットの優先度としてIPパケットのToSフィールドにあるPrecedenceの値を採用しています。



 WFQの種類

 WFQ には、Flow-Based WFQ, Distributed WFQ, Class-based WFQ, Distributed Class-Based WFQ
 の4種類があります。今回は WFQ の基本となる Flow-Based WFQ について解説させて頂きます。
 Flow-Based WFQ は自動でキューの管理、リスト作成してくれるのは管理が楽で良い所でありますが
 裏を返せば、管理者が手動でキューを作成するなどカスタマイズができないので欠点でもあります。
 この問題点を解消するためにClass-Based WFQが開発されて、今では主流のキューイング方式です。



 WFQのコンフィグ

 アプリケーション間で発生するトラフィックのフローを動的に検出して、フローごとに個別のキューを
 自動管理してくれるので、設定としてはインターフェースに以下のコマンドを一行入力するだけです。

 Cisco(config-if)# fair-queue [discard-threshold ] [dynamic-queues [reserval-queue ]

 I/Fの速度が2048bps以下のI/Fでは、例えばSerial I/Fではデフォルトで有効なっていることから
 コマンドの入力も不要です。設定が有効かどうかは show interface にて確認することができます。

 Queing Strategy : weighted fair

 オプション設定の[ discard-threshold ]の値には1つのキューに保持できるパケット数を定義します。
 この値のデフォルトを [ 64 ] です。つまり、輻輳時に1つのキューに64以上のパケットが格納された
 場合、以降のパケットは廃棄されることになります。次の [ dynamic-queues ] の値には、I/Fの持つ
 ことができる動的キューの最大数です。デフォルトは256。つまり、256のトラフィックフローのための
 キューを持てます。最後の [ reserval-queue ] は予約されたトラフィックフローのために使用される
 キューです。デフォルトは0です。この予約キューは、例えばRSVP用に予約するトラフィックフローの
 数を定義するために使用する設定です。実際には、これらのoption設定は特別な理由がない限り
 変更する必要はなく [ fair-queue ] と入力するだけでOK。つまり [ fair-queue 64 256 0 ] と同じ結果。

Queue or Threshold Default

Congestive discard threshold

64 messages

Dynamic queues

256 queues ( 帯域幅が256K以上)
64 queues ( 帯域幅が64K以下)

Reservable queues

0 queues


 FQ ( Fair Queuing ) の動作

 WFQは、重み付け ( Weighted = Precedence ) のあるFQということなので、Precendenceの理解と
 FQの動作が分かればWFQ動作を理解できるので、FQ ( Fair Queing ) の動作について説明します。

 FQ は、輻輳時にインターフェース上で全てのキューから等しいレート ( 同じ帯域幅 ) で排出します。
 下図で4つのキューがありますが、これら4つのキューにバッファされているデータ量に関係なく均等に
 帯域幅が割り振られることになるので、例えば、PC AからBへ大量のFTPデータが伝送されたとしても
 Serial 0/0 インターフェースの帯域幅を独占することはありません。PC A からBへ1Gbyteのデータを
 伝送する場合でも下図のキュー2だけにおいて64パケット以上のパケットが廃棄されていくだけです。
 つまり、キュー1、3、4は独立しており、これらのキューはパケットの排出に苦しむことはありません。


  


 ところで、キュー2のFTPパケット1と、キュー4の音声パケット1とでは当然パケットのサイズが異なります。
 FQはI/Fで利用できる帯域幅を均等に各キューに割当てるので、キュー2の1つのFTPパケットが1000byte、
 キュー4の1つの音声パケットが300byteの場合、キュー2のFTPパケット1つが排出される前に、キュー4の
 音声パケット3つが排出されることになります。またキュー1〜4でどのキューのパケットから排出するかは
 そのキューの中にバッファされているパケットのサイズで決まります。一番小さいサイズのパケットを持つ
 キューから排出されることになるので、上図で言えば、キュー4からパケットが排出されることになります。

 注意して頂きたいのは、絶対優先ではないので キュー4のパケットを全て送出してから、キュー2やキュー3に
 移行していくわけではないです。キュー4にパケットCまだ残っていますよね。PQ、LLQ、IP RTP Priorityなど
 の輻輳制御を実装している場合は、キュー4を空にしてから次のキューのパケットの転送ということになります。


  

  ※ WFQのステータスは、sh int, show queue , show queue priority コマンドにより確認することができます。Weighted Fari Queueing




 WFQ のキューのウェイト

 WFQは着信するIPパケットのIP Precedenceの値に基づき、キューのウェイトを変更することができます。
 WFQでのキューのウェイトの計算式は以下の通りですが、バージョンにより計算式の分子が異なります。

WFQのWeight計算式
IOSバージョン ( 12.0(4)T以下 ) キューのウェイト = 4096 ÷ ( Precedence値 + 1 )
IOSバージョン ( 12.0(5)T以上 ) キューのウェイト = 32768 ÷ ( Precedence値 + 1 )

 例えば、IP Precedence=0のパケットが格納されるキューのウェイトは、IOS12.0(5)以上の場合 「32768」、
 IP Precedence=1のパケットが格納されるキューのウェイトは「16384」となり、IP Precedecen=1のパケット
 が格納されるキューは、IP Precedence=-0に比べて、毎秒約2倍のバイトをI/Fから送出することなります。

 

 Resource : QoS 書籍一覧  Cisco QoS書籍一覧  Cisco QoS Command Guide 12.4  Cisco QoS Configuration Guide 12.4 



ネットワークエンジニアとして

Copyright(C) 2002-2008 Cool. All Rights Reserved