◆ WFQ(Weighted Fair Queueing)とは
WFQでは、送信元 ⇔ あて先の間で発生するトラフィックフローを動的に検出して、フローごとに個別の
キューを自動管理します。PQでは「priority-list」CQでは「custom-queue-list」を作成していましたが
WFQでは自動的にキューが作成されるため、キューを作成するための設定は必要ありません。パケットの
優先度については、IPパケットのToSフィールドにあるIP Precedence値を使用して決定します。
トラフィックフローは「送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号」等で
識別されます。例えば「 IP:192.168.0.1 port:1030 」から「 IP:10.1.1.1 port:23 」にtelnetとすると
これで1つのトラフィックフローとしてルータは動的に検出して1つのキューを作成します。トラフィック
フローはWFQが有効なI/Fで「show queue interface inteface-id」とするとConversationの項目として
カウントされてその統計値を確認することができます。
◆ WFQの種類
WFQは正確には以下の4種類があります。今回解説するいわゆるWFQはFlow-Based WFQのことです。
・ WFQ(Flow-Based WFQ)
・ DWFQ(Distributed WFQ)
・ CBWFQ(Class-based WFQ)
・ DCBWFQ(Distributed Class-Based WFQ )
WFQは自動でキューの管理、リスト作成してくれて便利ですがカスタマイズできない問題もあります。
この問題点を解消するためにClass-Based WFQが開発されて、現在では主流のキューイング方式です。
◆ WFQ - トラフィックフロー(conversation)の分類基準
WFQでは以下の基準でフローを分類して、フローごとにキューを動的に作成します。
・ 送信元IPアドレス
・ あて先IPアドレス
・ 送信元ポート番号
・ あて先ポート番号
・ プロトコルタイプ
・ ToSフィールド
◆ WFQの動作
IPプレシデンス値が付加されたパケットが全くない場合、WFQでは輻輳時にインターフェース上で全ての
キューから、等しいレートでパケットを送信します。従って、あるトラフィックフローでFTP通信を行って
いても、FTP通信でインターフェースの帯域が占有されるようなことはありません。次に、どのキューから
パケットが排出されるかですが、パケットサイズが小さいパケットを格納するキューから排出を始めます。
◆ WFQの動作
WFQではIPプレシデンス値が大きいパケットほど優先されて処理されます。キューのウェイト(重み)は、
IPプレシデンスの値が大きいほど小さくなり、キューのウェイトが小さい値ほど優先処理される仕組みです。
例えば、IPプレシデンス値が「1」のパケットが格納されるキューは、「0」のパケットが格納されるキュー
に比べて毎秒約2倍のバイト数のパケットをキューから排出することになります。
IPプレシデンス値 |
ToS Byte Value |
Weight(重み) |
0 |
0(0x00) |
32768 |
1 |
32(0x20) |
16384 |
2 |
64(0x40) |
10920 |
3 |
96(0x60) |
8192 |
4 |
128(0x80) |
6552 |
5 |
160(0xA0) |
5456 |
6 |
192(0xC0) |
4680 |
7 |
224(0xE0) |
4096 |
QoS文献により、Weight値は「32384、16192、10794、8096、6476、5397、4626、4048」とあります。
これらの値はソフトウェアバージョンにより異なる場合もあり、あくまで参考情報として頂ければと思います。
◆ WFQ - Ciscoルータのコンフィグ設定
WFQのコンフィグ設定は、2Mbps以下の速度のインターフェースでデフォルトで有効化されています。つまり
Serialインターフェースなどでデフォルトで有効化されています。ちなみに、10Mbps、100Mbps、1Gbpsなど
いわゆるLANインターフェースでは、デフォルトで「FIFO」が有効化されています。
そして、WFQではデフォルトで動的にキューが作成されることから、特に何も設定の必要はありません。なお
WFQが有効化されているかどうかは、show interfaceコマンドの真ん中の行にて、以下の情報で確認できます。
Queueing strategy:weighted fair
無効化されていて有効化したい場合、次の「fair-queue」と1行コマンド設定するだけで有効化できます。
また、オプションの設定のパラメータを変更したい場合にも、以下のコマンド構文によって設定をします。
◆ WFQの設定
(config)# interface interface-id
(config-if)# fair-queue [congestive-discard-threshold [ dynamic-queues [ reservable-queues ]]]
コマンド引数 |
Packet Limits |
congestive-discard-threshold |
デフォルト値:64。1つのキューに保持できるメッセージ数。conversationがこのしきい値
を超えると新しいメッセージのパケットは破棄される。1〜4096の間で指定できる。
|
dynamic-queues |
動的に作成されるキューの最大数。16、32、64、128、256、512、1024、2048、4096の
値から設定する。
|
reservable-queues |
デフォルト値:0。予約されたトラフィックフローのために使用されるキューの数。例えば
RSVP用に予約するトラフィックフローなどのために使用される設定。0 〜 1000 間で指定。
|
※ Serial0/0を例として、「 show interface serial0/0 」「 show queue serial0/0 」などでステータス確認することができます。
|