CBWFQ は、標準の重み付け均等化キューイング(WFQ)機能を拡張して、ユーザ定義のトラフィック クラスをサポートします。CBWFQ では、プロトコル、アクセス コントロール リスト(ACL)、および入力インターフェイスなどの一致基準を基にトラフィック
クラスを定義します。クラスの一致基準を満たすパケットは、そのクラスのトラフィックの一部となります。
クラスが一致基準によって定義されると、それに特性を割り当てることができます。クラスに特性を持たせるには、帯域幅、重み、最大パケット制限を割り当てます。クラスに割り当てられた帯域幅は、輻輳中のクラスに適用する保証帯域幅です。
クラスに特性を持たせるには、そのクラスのキュー制限も指定します。これは、クラスのキューに集めることができる最大パケット数です。クラスに属するパケットは、そのクラスの特性の帯域幅とキュー制限に対応しています。
キューが設定されたキュー制限に達した後、そのクラスに追加パケットが入力されると、設定されているクラス ポリシーに応じてテール ドロップまたはパケット ドロップが発生します。
テール ドロップは、CBWFQ クラスで、クラスに輻輳を回避する手段として WRED を使用してパケットをドロップするよう、明示的にポリシーを設定しない限り使用されます。ポリシー マップを構成する 1 つまたは複数のクラスで、テール ドロップの代わりに
WRED パケット ドロップを使用する場合、そのサービス ポリシーを適用するインターフェイスに WRED が設定されていないことを確認する必要があります。
デフォルトのクラスが、bandwidth ポリシーマップ クラス コンフィギュレーション コマンドを使用して設定されている場合、すべての未分類のトラフィックが単一のキューに格納され、設定された帯域幅に従って処理されます。デフォルトのクラスが fair-queue コマンドを使用して設定されている場合、すべての未分類のトラフィックがフロー分類となり、ベストエフォート扱いとなります。デフォルトのクラスが設定されていない場合、デフォルトでは設定されているどのクラスにも一致しないトラフィックはフロー分類となり、ベストエフォート扱いとなります。パケットが分類されると、クラスのディファレンシエーテッド
サービスで使用可能なすべての標準メカニズムを適用します。
フロー分類は、標準 WFQ 扱いになります。つまり、同じ発信元 IP アドレス、宛先 IP アドレス、発信元 TCP または UDP ポート、または宛先 TCP または UDP ポートが、同じフローに属するものとして分類されます。WFQ は、各フローに、帯域幅の共有を均等に割り当てます。また、フローベース
WFQ は、すべてのフローが等しく重み付けされるため、均等化キューイングとも呼ばれます。
CBWFQ では、そのクラスに指定された重みは、そのクラスの一致基準を満たすそれぞれのパケットの重みとなります。出力インターフェイスに到着したパケットは、定義された一致基準フィルタに従って分類された後、それぞれに適切な重みが割り当てられます。特定のクラスに属するパケットの重み付けは、クラス設定したときにクラスに割り当てた帯域幅から適用されます。そういった意味では、クラスの重み付けはユーザ定義可能です。
パケットの重みが割り当てられると、そのパケットは適切なクラス キューに入力されます。CBWFQ は、キューイングされたパケットに割り当てられた重み付けを使用し、クラス キューが確実に均等に提供されるようにします。
クラス ポリシーの設定、すなわち CBWFQ の設定は、次の 3 つの処理を伴います。
このプロセスによって、何種類のパケットを区別するかが決まります。
このプロセスでは、クラス マップで定義済みのクラスの 1 つに属するパケットに適用されるポリシーの設定が必要です。このため、各トラフィック クラスでポリシーを指定するポリシー マップを設定します。
このプロセスでは、既存のポリシー マップ、またはサービス ポリシーを、インターフェイスに関連付け、マップに対する特定のポリシー セットをそのインターフェイスに適用する必要があります。
CBWFQ 帯域割り当て
1 つのインターフェイスのすべての帯域割り当ての合計が、使用可能なインターフェイス帯域幅の総計の 75 % を超えることはできません。残りの 25% は、レイヤ 2 オーバーヘッド、ルーティング トラフィック、ベストエフォート トラフィックなど、その他のオーバーヘッド用に使用されます。たとえば
CBWFQ クラスデフォルト クラスの帯域幅は、残りの 25 % から使用されます。しかし、インターフェイス帯域幅の 75 パーセント以上をクラスに設定する必要があるアグレッシブな環境の下では、すべてのクラスまたはフローに割り当てられた、この
75 パーセントという 最大合計値を max-reserved-bandwidth コマンドで上書きできます。デフォルトの 75 % を上書きする場合は、注意し、ベストエフォートおよびコントロール トラフィック、レイヤ 2 オーバーヘッドをサポートするのに十分な帯域幅を残すようにしてください。
CBWFQ を使用する理由とは
CBWFQ を設定する必要があるかどうかを決定する際に考慮すべき一般的な要素の一部には次のようなものがあります。
-
帯域割り当て。CBWFQ を使用すると、特定のトラフィック クラスに対して割り当てる帯域幅の正確な量を指定できます。インターフェイス上の使用可能な帯域幅を考慮し、クラスを 64 まで設定して、それらの間で分配できます。これは、フローベース WFQ
には当てはまりません。フローベース WFQ は、重み付けを特定のトラフィックに適用し、トラフィックをカンバセーションに分類して、各カンバセーションで、どのくらいの帯域幅が許可されるかを他のカンバセーションと相対的に決定します。フローベース WFQ
では、重み付けとトラフィック分類は、7 つの IP Precedence レベルによって行われ、制限されます。
-
より粗い粒度とスケーラビリティ。CBWFQ で、フローの制限を超えた基準に基づいてどのクラスを含めるかを定義できます。CBWFQ では、トラフィックの分類方法を定義するための ACL や、プロトコルまたは入力インターフェイス名を使用でき、これによってより粗い粒度を実現します。トラフィック分類をフロー
ベースで管理する必要はありません。さらに、サービス ポリシーに最大 64 の個別クラスを設定できます。
CBWFQ および RSVP
RSVP は、CBWFQ と併用できます。RSVP および CBWFQ の両方がインターフェイスで設定されている場合、RSVP および CBWFQ は独立して動作し、それぞれが単体で実行されている場合と同様の動作を行います。RSVP は、帯域幅の可用性のアセスメントと割り当てに関しても、CBWFQ
が有効でない場合の動作と同様の動作を継続します。
機能制限
物理インターフェイスでの CBWFQ は、インターフェイスがデフォルトのキューイング モードにある場合のみ設定可能です。E1(2.048 Mbps)以下でのシリアル インターフェイスでは、デフォルトで WFQ が使用されます。他のインターフェイスでは、デフォルトで
FIFO が使用されます。物理インターフェイスで CBWFQ をイネーブルにすると、デフォルトのインターフェイス キューイング方式が上書きされます。
ポリシー マップで、パケットのドロップにテール ドロップではなく WRED を使用するようクラスを設定する場合、このサービス ポリシーを適用しようとしているインターフェイスで WRED が設定されないようにしてください。