出力スケジューリングにより、加入過多が過剰に発生した場合に重要なトラフィックが廃棄されなくなります。このドキュメントでは、Catalyst OS(CatOS)システム ソフトウェアが稼働する Catalyst 6500/6000 シリーズ スイッチでの出力スケジューリングに関連するテクニックとアルゴリズムについて包括的に説明しています。また、このドキュメントでは Catalyst 6500/6000 スイッチのキューイング機能についての簡単な概要を提供し、出力スケジューリングのさまざまなパラメータを設定する方法についても説明しています。
注:ご使用のCatalyst 6500/6000でCisco IOS®ソフトウェアを実行している場合は、『Cisco IOSシステムソフトウェアを実行しているCatalyst 6500/6000シリーズスイッチでのQoS出力スケジューリング』をを参照してください。
このドキュメントに特有の要件はありません。
このドキュメントの例は、Supervisor Engine 1A と Policy Feature Card(PFC; ポリシー フィーチャ カード)を搭載した Catalyst 6000 で作成されたものです。 しかし、これらの例は PFC2 を搭載した Supervisor Engine 2 や PFC3 を搭載した Supervisor Engine 720 でも有効です。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
出力キューでの廃棄はインターフェイスの輻輳によって発生します。通常、この原因としては、高帯域幅リンクからのトラフィックが低帯域幅リンクにスイッチングされているか、あるいは複数の着信リンクからのトラフィックが単一の発信リンクにスイッチングされていることが考えられます。
たとえば、大量のバーストトラフィックがギガビットインターフェイスに着信し、100 Mbpsインターフェイスにスイッチングされて出力される場合、100 Mbpsインターフェイスで出力ドロップが増加する可能性があります。これは、着信側の帯域幅と発信側の帯域幅との間で速度のミスマッチがあるため、インターフェイスの出力キューが過度のトラフィックによってあふれるためです。発信インターフェイスのトラフィック レートでは、発信する必要があるすべてのパケットを受け入れられません。
この問題を解決する最善の方法は、回線速度を上げることです。ただし、回線速度を上げたくない場合に、出力の廃棄を防止、減少、または制御する方法があります。出力廃棄の防止は、短時間のデータ バーストの結果として出力廃棄が発生している場合にだけ可能です。恒常的な高レートのフローによって出力の廃棄が引き起こされている場合、廃棄を防ぐことはできません。ただし、出力廃棄を制御することはできます。
テール ドロップは基本的な輻輳回避メカニズムです。テール ドロップでは、輻輳中にキューがいっぱいになり始めると、Class of Service(CoS; サービス クラス)が区別されず、すべてのトラフィックが均等に処理されます。出力キューがいっぱいになり、テールドロップが有効になると、輻輳が解消されてキューがいっぱいでなくなるまでパケットがドロップされます。テール ドロップは最も基本的なタイプの輻輳回避であり、QoS パラメータはまったく考慮されません。
Catalyst 6000 には、バッファの使用率が特定の割合になると特定の CoS が指定されたすべてのパケットが廃棄されるようになっている拡張版のテール ドロップ輻輳回避が実装されています。重み付けテール ドロップでは、しきい値のセットが定義され、CoS が各しきい値に関連付けられます。このセクションの例では、4 つのしきい値が考えられます。各しきい値の定義は次のとおりです。
しきい値 1 には、バッファの使用率が 50 % になると到達します。CoS 0 と 1 が、このしきい値に割り当てられています。
しきい値 2 には、バッファの使用率が 60 % になると到達します。CoS 2 と 3 が、このしきい値に割り当てられています。
しきい値 3 には、バッファの使用率が 80 % になると到達します。CoS 4 と 5 が、このしきい値に割り当てられています。
しきい値 4 には、バッファの使用率が 100 % になると到達します。CoS 6 と 7 が、このしきい値に割り当てられています。
図 1 のダイアグラムでは、バッファの使用率が 50 % になると、CoS 0 または 1 のすべてのパケットが廃棄されます。バッファの使用率が 60 % になると、CoS 0、1、2、または 3 のすべてのパケットが廃棄されます。バッファが完全にいっぱいになると、CoS 6 または 7 のパケットが廃棄されます。
図 1:
注:バッファの使用率が特定のしきい値を下回ると、関連するCoSを持つパケットはドロップされなくなります。
Weighted random early detection(WRED; 重み付けランダム早期検出)とは、バッファの使用率が定義されたしきい値に達すると、特定の IP 優先順位でパケットをランダムに廃棄する、輻輳回避メカニズムです。WRED は、下記の 2 つの機能の組み合せです。
テール ドロップ
Random Early Detection(RED; ランダム早期検出)
RED では、優先順位や CoS は考慮されません。RED では、バッファの使用率がしきい値に達すると、単一のしきい値の 1 つが使用されます。RED ではランダムなパケットの廃棄が開始され(ただしテール ドロップのようにすべてのパケットではありません)、最大(Max)のしきい値に達するまでこれが続きます。最大のしきい値に達すると、すべてのパケットが廃棄されます。パケットが廃棄される確率は、バッファの使用率がしきい値を超えて増加すると、直線的に増加します。図 2 のダイアグラムでは、パケットが廃棄される確率を示しています。
図 2:パケット廃棄確率
注:この図のマーク確率はREDで調整可能です。これは、線形廃棄確率のスロープが調整可能であることを意味します。
RED と WRED は、TCP ベースのトラフィックでは非常に有用な輻輳回避メカニズムです。他のタイプのトラフィックに対しては、RED はそれほど効率的ではありません。これは、TCP で輻輳の管理に使用されるウィンドウ方式のメカニズムを RED が利用しているためです。RED では、複数の TCP セッションが同じルータ ポートを通過する際にルータで発生する一般的な輻輳が回避されます。このメカニズムは、グローバル ネットワーク同期と呼ばれます。図 3 のダイアグラムでは、RED が負荷に対してどのようにスムージング効果を及ぼすかが示されています。
図 3 – 輻輳回避のための RED
RED でどのように輻輳が削減され、ルータを通過するトラフィックが平滑化されるかについての詳細は、ドキュメント『輻輳回避の概要』の「ルータが TCP と相互対話する方法」セクションを参照してください。
WRED と RED はどちらも、いくつかの最小(Min)しきい値を定義して、それらの最小しきい値に到達したときにパケットがランダムに廃棄されるという点で似ています。また、WRED では特定の最大しきい値も定義され、それらの最大しきい値に到達すると、すべてのパケットが廃棄されます。WRED では、さらに CoS が認識されています。つまり、1 つまたは複数の CoS 値が各最大しきい値と最小しきい値のペアに追加されることを意味します。最小しきい値を超えると、パケットは割り当てられた CoS でランダムに廃棄されます。キューに 2 つのしきい値を持つ、次の例について考えます。
CoS 0 と 1 が最小しきい値 1 と最大しきい値 1 に割り当てられます。最小しきい値 1 はバッファの使用率 50 %、最大しきい値 1 は 80 % に設定されています。
CoS 2 と 3 が最小しきい値 2 と最大しきい値 2 に割り当てられます。最小しきい値 2 はバッファの使用率 70 %、最大しきい値 2 は 100 % に設定されています。
バッファが最小しきい値(50 %)を超えると、CoS 0 と 1 のパケットはランダムに廃棄され始めます。バッファ使用率が増加すると、さらに多くのパケットが廃棄されます。最小しきい値 2(70 %)に達すると、CoS 2 と 3 のパケットはランダムに廃棄され始めます。
注:この段階では、CoS 0および1のパケットの廃棄確率は、CoS 2またはCoS 3のパケットの廃棄確率よりもはるかに高くなります。
最大しきい値 2 に到達すると、常に、CoS 0 と 1 のパケットはすべて廃棄され、CoS 2 と 3 のパケットはランダムに廃棄され続けます。最終的には、100 %(最大しきい値 2)に到達すると、CoS 2 と 3 のすべてのパケットが廃棄されます。
図 4 と図 5 のダイアグラムでは、これらのしきい値の例が説明されています。
図 4:最小しきい値と最大しきい値の 2 つのセット(2 つのサービス)を使用する WRED図 5:2 つのサービス セットを使用する WRED(ただし両方の最小しきい値は 0)
初期の CatOS の WRED の実装では、最大しきい値だけが設定され、最小しきい値は 0 % にハード コードされていました。図 5 のダイアグラムの下部では、動作の結果が強調表示されています。
注:パケットの廃棄確率は、常に最小しきい値を超えるため、常にヌル以外です。この動作はソフトウェア バージョン 6.2 以降では修正されています。
重み付けラウンドロビン(WRR)は、Catalyst 6000での出力スケジューリングのもう1つのメカニズムです。WRR は 2 つ以上のキューの間で動作します。WRR では、キューはラウンドロビン方式で(送信処理されて)空になり、さらに各キューの重み付けを設定できます。デフォルトでは、Catalyst 6000のポートには2つのWRRキューがあります。デフォルトは次のとおりです。
高優先度 WRR キューに 70 % の時間を使用
低優先度 WRR キューに 30 % の時間を使用
図 6 のダイアグラムには、WRR 方式で 3 つのキューを持つ WRR が示されています。高優先度キュー(赤いパケット)では、他の 2 つのキューよりも多くのパケットが送信されます。
図6 – 出力スケジューリング:WRR
注:6500ラインカードの大部分は、帯域幅ごとにWRRを実装しています。帯域幅ごとの WRR のこの実装では、スケジューラによりキューのパケット送信が許可されるたびに、特定のバイト数が送信されることになります。このバイト数には、パケットを複数取り込むことができます。たとえば、一度に 5120 バイトを送信するようになっている場合、1518 バイト パケットを 3 つ、合計で 4554 バイトを送信できます。超過バイトは失われます(5120 - 4554 = 566 バイト)。 したがって、極端な重み付け(queue 1 に 1 %、queue 2 に 99 % など)の場合、設定した重み付けのとおりにならない可能性があります。重み付けを厳密に達成する上でのこの障害は、比較的大きいパケットで頻繁に発生します。
6548-RJ-45 のような一部の新世代のラインカードでは、Deficit Weighted Round-Robin(DWRR)の実装により、この制限が克服されています。DWRR では送信はキューから行われますが、低優先度キューが滞ることはありません。DWRR では送信中の低優先度キューのトラッキングが継続され、次のラウンドで補正されます。
Catalyst 6000 の他のタイプのキューに完全優先キューがあり、常に最初に(送信処理されて)空になります。完全優先キューにパケットがあると、パケットは即座に送信されます。
WRR キューや WRED キューがチェックされるのは、完全優先キューが空になった後だけです。WRR キューまたは WRED キューのいずれかから各パケットが送信されたると、完全優先キューがチェックされ、必要な場合は(送信処理されて)空になります。
注:1p2q1t、1p3q8t、および1p7q8tに類似したキューイングタイプを持つすべてのラインカードでは、DWRRが使用されます。これ以外のラインカードは、標準 WRR が使用されています。
ポートのキューイング機能についてよくわからない場合は、show port capabilities コマンドを発行できます。WS-X6408-GBIC ラインカードでの、このコマンドの出力を次に示します。
Model WS-X6408-GBIC Port 4/1 Type No GBIC Speed 1000 Duplex full Trunk encap type 802.1Q,ISL Trunk mode on,off,desirable,auto,nonegotiate Channe yes Broadcast suppression percentage(0-100) Flow control receive-(off,on,desired),send-(off,on,desired) Security yes MembershIP static,dynamic Fast start yes QOS scheduling rx-(1q4t),tx-(2q2t) CoS rewrite yes ToS rewrite DSCP UDLD yes SPAN source,destination COPS port group none
このポートには、2q2t と呼ばれるキューイング出力のタイプが備わっています。
Catalyst 6500/6000 スイッチでは、複数のタイプのキューが利用可能です。このセクションの表は、新しいラインカードがリリースされると不完全になる可能性があります。新しいラインカードでは、新しいキューイングの組合せが導入される可能性があります。Catalyst 6500/6000 スイッチ モジュールで利用可能なすべてのキューイングについての最新の説明は、使用している CatOS バージョンの『Catalyst 6500 シリーズ ソフトウェア ドキュメンテーション』にある「QoS の設定」セクションを参照してください。
注:Cisco Communication Media Module(CMM)では、すべてのQoS機能がサポートされているわけではありません。サポートされている機能を判別するには、ご使用の特定ソフトウェア リリースのリリース ノートを確認してください。
次の表には、ポート QoS アーキテクチャの表記法が説明されています。
Tx1/Rx2 ide | キュー表記 | キューの数 | 優先キュー | WRR キューの数 | WRR キューのしきい値のタイプと数 |
---|---|---|---|---|---|
Tx の後に引き継ぐ | 2q2t | 0 | — | 0 | 2 つの設定可能なテール ドロップ |
Tx の後に引き継ぐ | 1p2q2t | 3 | 1 | 0 | 2 つの設定可能な WRED |
Tx の後に引き継ぐ | 1p3q1t | 4 | 1 | 3 | 1 つの設定可能な WRED |
Tx の後に引き継ぐ | 1p2q1t | 3 | 1 | 0 | 1 つの設定可能な WRED |
Rx | 1q4t | 1 | — | 1 | 4 つの設定可能なテール ドロップ |
Rx | 1p1q4t | 0 | 1 | 1 | 4 つの設定可能なテール ドロップ |
Rx | 1p1q0t | 0 | 1 | 1 | 設定不可 |
Rx | 1p1q8t | 0 | 1 | 1 | 8 つの設定可能な WRED |
1 Tx = 送信
2 Rx = 受信
次の表には、すべてのモジュールとインターフェイスやポートの Rx と TX 側のキューのタイプがリストされています。
モジュール | Rx キュー | Tx キュー |
---|---|---|
WS-X6K-S2-PFC2 | 1p1q4t | 1p2q2t |
WS-X6K-SUP1A-2GE | 1p1q4t | 1p2q2t |
WS-X6K-SUP1-2GE | 1q4t | 2q2t |
WS-X6501-10GEX4 | 1p1q8t | 1p2q1t |
WS-X6502-10GE | 1p1q8t | 1p2q1t |
WS-X6516-GBIC | 1p1q4t | 1p2q2t |
WS-X6516-GE-TX | 1p1q4t | 1p2q2t |
WS-X6416-GBIC | 1p1q4t | 1p2q2t |
WS-X6416-GE-MT | 1p1q4t | 1p2q2t |
WS-X6316-GE-TX | 1p1q4t | 1p2q2t |
WS-X6408A-GBIC | 1p1q4t | 1p2q2t |
WS-X6408-GBIC | 1q4t | 2q2t |
WS-X6524-100FX-MM | 1p1q0t | 1p3q1t |
WS-X6324-100FX-SM | 1q4t | 2q2t |
WS-X6324-100FX-MM | 1q4t | 2q2t |
WS-X6224-100FX-MT | 1q4t | 2q2t |
WS-X6548-RJ-21 | 1p1q0t | 1p3q1t |
WS-X6548-RJ-45 | 1p1q0t | 1p3q1t |
WS-X6348-RJ-21 | 1q4t | 2q2t |
WS-X6348-RJ21V | 1q4t | 2q2t |
WS-X6348-RJ-45 | 1q4t | 2q2t |
WS-X6348-RJ-45V | 1q4t | 2q2t |
WS-X6148-RJ-45V | 1q4t | 2q2t |
WS-X6148-RJ21V | 1q4t | 2q2t |
WS-X6248-RJ-45 | 1q4t | 2q2t |
WS-X6248A-TEL | 1q4t | 2q2t |
WS-X6248-TEL | 1q4t | 2q2t |
WS-X6024-10FL-MT | 1q4t | 2q2t |
QoS 作成には Catalyst 6500/6000 の 3 つのフィールドが使用されます。
IP 優先順位:IP ヘッダーの Type of Service(ToS)フィールドの上位 3 ビット
Differentiated Services Code Point(DSCP; DiffServ コード ポイント):IP ヘッダー内の ToS フィールドの上位 6 ビット
CoS:レイヤ 2(L2)レベルで使用される 3 ビット
これらの 3 ビットは、Inter-Switch Link(ISL)ヘッダーの一部か、IEEE 802.1Q(dot1q)タグ内のどちらかにあります。タグの付いていないイーサネット パケットの内部には、CoS はありません。
送出されるデータバスからフレームが送信される際には、パケットの CoS が考慮対象の唯一のパラメータになります。その後、パケットはスケジューラを通り、ここでパケットが入れられるキューが選択されます。したがって、このドキュメントで説明されている出力スケジューリングとすべてのメカニズムは CoS 認識だけであることに注意してください。
Multilayer Switch Feature Card(MSFC; マルチレイヤ スイッチ フィーチャ カード)を搭載した Catalyst 6500/6000 では、パケットを分類するために内部 DSCP が使用されます。QoS がイネーブルに設定された Catalyst 6500/6000 では、PFC レベルで転送決定がされる際に DSCP 値が割り当てられます。この DSCP は、非 IP パケットを含むあらゆるパケットに割り当てられ、出力スケジューリングをイネーブルにするために CoS にマッピングされます。Catalyst 6500/6000 では、DSCP から CoS 値へのマッピングを設定できます。デフォルト値を残す場合は、DSCP から CoS を取得できます。式は次のようになります。
DSCP_value / 8
さらに、パケットがタグ付の ISL か dot1q(非ネイティブの VLAN)の IP パケットである場合、DSCP 値は発信パケットの CoS にマップされます。DSCP 値は、IP ヘッダーの ToS フィールドの内部にも書かれています。
図 7 のダイアグラムは、1p2q2t キューを示しています。WRR キューは WRR スケジューラにより(送信処理されて)空にされます。また、完全優先キューの中に何かあるかどうかを判断するために、WRR キューからの各パケット間をチェックするアービターがあります。
図 7
IP ヘッダー の ToS フィールドと 802.1p/ISL CoS フィールドが書き換えられます。
スケジューリング キューおよびしきい値は、設定可能なマップを通して、CoS に基づいて選択されます。
各キューのサイズとしきい値は設定可能で、一部のキューには WRED が設定されています。
デキューイングでは、2 つのキュー間で WRR が使用されます。
発信カプセル化は、dot1q、ISL、または、なしです。
このセクションでは、Catalyst 6500/6000 のデフォルト QoS 設定からのサンプル出力と、これらの値の意味と値の調整方法についての情報を提供しています。
このコマンドを発行すると、QoS はデフォルトでディセーブルにされます。
set qos disable
次のリストのコマンドは、2q2t ポートでの各 CoS のデフォルトの割り当てを示しています。queue 1 には最初のしきい値に CoS 0 と 1 が割り当てられており、2 番目のしきい値に CoS 2 と 3 が割り当てられています。queue 2 には最初のしきい値に CoS 4 と 5 が割り当てられており、2 番目のしきい値に CoS 6 と 7 が割り当てられています。
set qos map 2q2t tx 1 1 cos 0 set qos map 2q2t tx 1 1 cos 1 set qos map 2q2t tx 1 2 cos 2 set qos map 2q2t tx 1 2 cos 3 set qos map 2q2t tx 2 1 cos 4 set qos map 2q2t tx 2 1 cos 5 set qos map 2q2t tx 2 2 cos 6 set qos map 2q2t tx 2 2 cos 7
次のコマンドでは、各キューの 2q2t ポートでのデフォルトのしきい値レベルが表示されます。
set qos drop-threshold 2q2t tx queue 1 80 100 set qos drop-threshold 2q2t tx queue 2 80 100
各 WRR キューにはデフォルトの重み付けを割り当てられます。queue 1 と queue 2 にデフォルトの重み付けを割り当てるには、このコマンドを発行します。
注:低プライオリティキューは時間の5/260 %で処理され、高プライオリティキューは時間の255/260 %で処理されます。
set qos wrr 2q2t 5 255
バッファ アベイラビリティの合計が、2 つのキュー間で分割されます。低優先度キューは、利用可能なバッファの 80 % に正しく割り当てられます。これは、パケットがバッファリングされて、しばらくそのままでいる可能性が高いキューであるためです。アベイラビリティを定義するためには、次のコマンドを発行します。
set qos txq-ratio 2q2t 80 20
次の設定では、1p2q2t ポートに関する同様の設定を表示できます。
set qos map 1p2q2t tx 1 1 cos 0 set qos map 1p2q2t tx 1 1 cos 1 set qos map 1p2q2t tx 1 2 cos 2 set qos map 1p2q2t tx 1 2 cos 3 set qos map 1p2q2t tx 2 1 cos 4 set qos map 1p2q2t tx 3 1 cos 5 set qos map 1p2q2t tx 2 1 cos 6 set qos map 1p2q2t tx 2 2 cos 7 set qos wrr 1p2q2t 5 255 set qos txq-ratio 1p2q2t 70 15 15 set qos wred 1p2q2t tx queue 1 80 100 set qos wred 1p2q2t tx queue 2 80 100
注:デフォルトでは、CoS 5(音声トラフィック)は完全優先キューに割り当てられます。
設定の最初のステップは、QoS をイネーブルにすることです。QoS はデフォルトでは無効になっていることに注意してください。QoS が無効のときは、CoS マッピングは無関係です。FIFO で使用される単一のキューがあり、そこにすべてのパケットがキューイングされます。
bratan> (enable) set qos enable QoS is enabled bratan> (enable) show qos status QoS is enabled on this switch
キューまたはキュー タイプすべてに関するしきい値に、CoS 値を割り当てる必要があります。ポートの 2q2t タイプに対して定義されるマッピングは、1p2q2t のポートには適用されません。また、2q2t 用に作成されるマッピングは、2q2t のキューイング メカニズムを備えたすべてのポートに適用されます。次のコマンドを実行します。
set qos map queue_type tx Q_number threshold_number cos value
注:キューには、可能な限り低いプライオリティキューから始まり、使用可能な完全優先キューから終わるように、常に番号が付けられます。以下が一例です。
queue 1 は、低優先度 WRR キューです。
queue 2 は、高優先度 WRR キューです。
queue 3 は、完全優先キューです。
すべてのタイプのキューに対して、この操作を繰り返し実行する必要があります。これを行わない場合は、デフォルトの CoS 割り当てが保持されます。次に 1p2q2t の例を示します。
set qos map 1p2q2t tx 1 1 cos 0 !--- This is the low-priority WRR queue threshold 1, CoS 0 and 1. set qos map 1p2q2t tx 1 1 cos 1 and 1 set qos map 1p2q2t tx 1 2 cos 2 !--- This is the low-priority WRR queue threshold 2, CoS 2 and 3. set qos map 1p2q2t tx 1 2 cos 3 and 3 set qos map 1p2q2t tx 2 1 cos 4 !--- This is the high-priority WRR queue threshold 1, CoS 4. set qos map 1p2q2t tx 3 1 cos 5 !--- This is the strict priority queue, CoS 5. set qos map 1p2q2t tx 2 1 cos 6 !--- This is the high-priority WRR queue threshold 2, CoS 6. set qos map 1p2q2t tx 2 2 cos 7 and 7
tamer (enable) set qos map 1p2q2t tx 1 1 cos 0 QoS tx priority queue and threshold mapped to cos successfully
WRR の重み付けを 2 つの WRR キューに設定する必要があります。次のコマンドを実行します。
set qos wrr Q_type weight_1 weight_2
weight_1 は queue 1 に関連し、これは低優先度の WRR キューである必要があります。Weight_1は常にweight_2より低い値にする必要があります。重みは1から255までの任意の値をとることができます。次の式でパーセンテージを割り当てることができます。
キュー 1:
weight_1 / (weight_1 + weight_2)
キュー 2:
weight_2 / (weight_1 + weight_2)
また、さまざまなタイプのキューに対する重み付けを定義する必要があります。重み付けは同じである必要はありません。たとえば、2q2t では、queue 1 には時間の 30 % が使用され、queue 2 には時間の 70 % が使用されます。重み付けを定義するには、次のコマンドを発行します。
set qos wrr 2q2t 30 70 !--- This ensures that the high-priority WRR queue is served 70 percent of the time !--- and that the low-priority WRR queue is served 30 percent of the time.
tamer (enable) set qos wrr 2q2t 30 70 QoS wrr ratio is set successfully
送信キュー比率も定義する必要があります。送信キュー比率とは、異なるキュー間でバッファが分割される方法を示します。次のコマンドを実行します。
set qos txq-ratio port_type queuel_val queue2_val ... queueN_val
注:ハードウェア上の理由から、3つのキュー(1p2q2t)がある場合は、高優先度WRRキューと完全優先キューを同じレベルに設定する必要があります。
set qos txq-ratio 1p2q2t 70 15 15 !--- This gives 70 percent of the buffer of all 1p2q2t ports to the low-priority WRR !--- queue and gives 15 percent to each of the other two queues. set qos txq-ratio 2q2t 80 20 !--- This gives 80 percent of the buffer to the low-priority queue, !--- and gives 20 percent of the buffer to the high-priority queue.
tamer (enable) set qos txq-ratio 1p2q2t 70 15 20 Queue ratio values must be in range of 1-99 and add up to 100 Example: set qos txq-ratio 2q2t 20 80 tamer (enable) set qos txq-ratio 1p2q2t 70 30 30 Queue ratio values must be in range of 1-99 and add up to 100 Example: set qos txq-ratio 2q2t 20 80 tamer (enable) set qos txq-ratio 1p2q2t 80 10 10 QoS txq-ratio is set successfully
このコンソール出力に示されているように、キュー値の合計は 100 になる必要があります。低優先度の WRR キューには、ほとんどのバッファリングが必要となるため、バッファの最大部分をこのキューに残してください。他のキューは高い優先順位で使用されます。
最後のステップとして、WRED キューまたはテール ドロップ キューにしきい値レベルを設定します。次のコマンドを発行します。
set qos wred port_type [tx] queue q_num thr1 thr2 ... thrn set qos drop-threshold port_type tx queue q_num thr1 ... thr2
set qos drop-threshold 2q2t tx queue 1 50 80 !--- For low-priority queues in the 2q2t port, the first threshold is defined at 50 !--- percent and the second threshold is defined at 80 percent of buffer filling. set qos drop-threshold 2q2t tx queue 2 40 80 !--- For high-priority queues in the 2q2t port, the first threshold is defined at 40 !--- percent and the second threshold is defined at 80 percent of buffer filling. set qos wred 1p2q2t tx queue 1 50 90 !--- The commands for the 1p2q2t port are identical. set qos wred 1p2q2t tx queue 2 40 80
tamer (enable) set qos drop-threshold 2q2t tx queue 1 50 80 Transmit drop thresholds for queue 1 set at 50% 80% tamer (enable) set qos drop-threshold 2q2t tx queue 2 40 80 Transmit drop thresholds for queue 2 set at 40% 80% tamer (enable) set qos wred 1p2q2t tx queue 1 50 90 WRED thresholds for queue 1 set to 50 and 90 on all WRED-capable 1p2q2t ports tamer (enable) set qos wred 1p2q2t tx queue 2 40 80 WRED thresholds for queue 2 set to 40 and 80 on all WRED-capable 1p2q2t ports
set qos wred 1p2q2t tx queue 2 40 80 コマンドは、しきい値のマッピングの CoS と組み合されて動作します。たとえば、次のリストのコマンドを発行すると、送信方向の 1p2q2t ポートで、CoS 0、1、2、3 のパケットは確実に最初のキュー(低い WRR キュー)で送信されます。 そのキューでのバッファの 50 % がいっぱいになると、WRED により CoS 0 と 1 のパケットの廃棄が始まります。CoS 2 と 3 のパケットが廃棄されるのは、キューのバッファの 90 % がいっぱいになった場合だけです。
set qos map 1p2q2t tx 1 1 cos 0 set qos map 1p2q2t tx 1 1 cos 1 set qos map 1p2q2t tx 1 2 cos 2 set qos map 1p2q2t tx 1 2 cos 3 set qos wred 1p2q2t tx queue 1 50 90
ポートの出力スケジューリングについて、現在のランタイム設定を確認するために使用する簡単なコマンドは show qos info runtime mod/port です。このコマンドでは、次の情報が表示されます。
ポートでのキューイング タイプ
さまざまなキューとしきい値への CoS のマッピング
バッファ共有
WRR の重み付け
この例では、queue 1 の値は WRR の 20 %、queue 2 の値は WRR の 80 % です。
tamer (enable) show qos info runtime 1/1 Run time setting of QoS: QoS is enabled Policy Source of port 1/1: Local Tx port type of port 1/1 : 1p2q2t Rx port type of port 1/1 : 1p1q4t Interface type: port-based ACL attached: The qos trust type is set to untrusted Default CoS = 0 Queue and Threshold Mapping for 1p2q2t (tx): Queue Threshold CoS ----- --------- ------- 1 1 0 1 1 2 2 3 2 1 4 6 2 2 7 3 1 5 Queue and Threshold Mapping for 1p1q4t (rx): All packets are mapped to a single queue Rx drop thresholds: Rx drop thresholds are disabled Tx drop thresholds: Tx drop-thresholds feature is not supported for this port type Tx WRED thresholds: Queue # Thresholds - percentage (* abs values) ------- ------------------------------------------ 1 80% (249088 bytes) 100% (311168 bytes) 2 80% (52480 bytes) 100% (61440 bytes) Queue Sizes: Queue # Sizes - percentage (* abs values) ------- ------------------------------------- 1 70% (311296 bytes) 2 15% (65536 bytes) 3 15% (65536 bytes) WRR Configuration of ports with speed 1000Mbps: Queue # Ratios (* abs values) ------- ------------------------------------- 1 20 (5120 bytes) 2 80 (20480 bytes) (*) Runtime information may differ from user configured setting due to hardware granularity. tamer (enable)
次の例では、WRRの重み付けがデフォルト値1ではないことに注意してください。重み付けは、キュー1に20、キュー2に80に設定されています。この例では、トラフィックジェネレータを使用して2 GbのトラフィックをCatalyst 6000に送信します。これらの2 Gbのトラフィックは、ポート1/1を通じて出力されます。ポート1/1はオーバーサブスクライブされるため、多くのパケットが廃棄されます(1 Gbps)。 show mac コマンドにより、多くの出力廃棄があることが示されます。
tamer (enable) show mac 1/1 Port Rcv-Unicast Rcv-Multicast Rcv-Broadcast -------- -------------------- -------------------- -------------------- 1/1 0 1239 0 Port Xmit-Unicast Xmit-Multicast Xmit-Broadcast -------- -------------------- -------------------- -------------------- 1/1 73193601 421 0 Port Rcv-Octet Xmit-Octet -------- -------------------- -------------------- 1/1 761993 100650803690 MAC Dely-Exced MTU-Exced In-Discard Out-Discard -------- -------------- ---------------- --------------- ----------------- 1/1 0 - 0 120065264 Last-Time-Cleared -------------------------- Fri Jan 12 2001, 17:37:43
廃棄されるパケットについて考えます。提示されるトラフィックのパターンは、次のように分割されます。
IP 優先順位 0 の 1 Gb のトラフィック
IP 優先順位 4 の 250 Mb のトラフィック
IP 優先順位 5 の 250 Mb のトラフィック
IP 優先順位 6 の 250 Mb のトラフィック
IP 優先順位 7 の 250 Mb のトラフィック
CoS マッピングに従って、次のトラフィックが送信されます。
queue 1 へのしきい値 1 の 1 Gb のトラフィック
queue 1 へのしきい値 2 の 0 Mb のトラフィック
queue 2 へのしきい値 1 の 500 Mb のトラフィック
queue 2 へのしきい値 2 の 250 Mb のトラフィック
queue 3(完全優先キュー)への 250 Mb のトラフィック
スイッチでは、着信 IP 優先順位がスイッチで維持され、出力スケジューリングの CoS 値へのマッピングに使用されるように、受信されたトラフィックを信頼する必要があります。
注:CoSに対するデフォルトのIP優先順位マッピングは、IP優先順位がCoSに等しくなります。
show qos stat 1/1 コマンドを発行して、廃棄されたパケットとおおよその割合を表示します。
この時点では、queue 3(CoS 5)で廃棄されるパケットはありません。
queue 1 でドロップされるパケットの 91.85 % は、CoS 0 のパケットです。
queue 2、しきい値 1 でドロップされるパケットの 8 % は、CoS 4 と 6 のパケットです。
queue 2、しきい値 2 でドロップされるパケットの 0.15 % は、CoS 7 のパケットです。
次の出力には、コマンドの使用法が説明されています。
tamer (enable) show qos stat 1/1 Tx port type of port 1/1 : 1p2q2t Q3T1 statistics are covered by Q2T2. Q # Threshold #:Packets dropped --- ------------------------------- 1 1:110249298 pkts, 2:0 pkts 2 1:9752805 pkts, 2:297134 pkts 3 1:0 pkts Rx port type of port 1/1 : 1p1q4t Rx drop threshold counters are disabled for untrusted ports Q # Threshold #:Packets dropped --- --------------------------------- 1 1:0 pkts, 2:0 pkts, 3:0 pkts, 4:0 pkts 2 1:0 pkts
カウンタがクリアされた後で WRR の重み付けをデフォルト値に戻すと、queue 2 では以前に発生していた 8 % のパケット廃棄ではなく、1 % のパケット廃棄だけが発生します。
注:デフォルト値は、queue 1の場合は5、queue 2の場合は255です。
tamer (enable) show qos stat 1/1 TX port type of port 1/1 : 1p2q2t Q3T1 statistics are covered by Q2T2 Q # Threshold #:Packets dropped --- ---------------------------------- 1 1:2733942 pkts, 2:0 pkts 2 1:28890 pkts, 2:6503 pkts 3 1:0 pkts Rx port type of port 1/1 : 1p1q4t Rx drop threshold counters are disabled for untrusted ports Q # Threshold #:Packets dropped --- ------------------------------------ 1 1:0 pkts, 2:0 pkts, 3:0 pkts, 4:0 pkts 2 1:0 pkts
「出力スケジューリングの監視と設定の確認」セクションの例では、出力ポートの加入過多が発生した場合に VoIP またはミッションクリティカルなトラフィックの廃棄を回避する、出力スケジューリングの実装の利点について説明されています。加入過多は頻繁にではありませんが、正常なネットワーク、特にギガビット リンクで発生します。通常、加入過多が発生するのは、ピーク時のトラフィック時間またはごく短時間内のトラフィックのバーストの間だけです。
加入過多がない場合でも、出力スケジューリングは QoS がエンドツーエンドで実装されたネットワークではきわめて有効です。出力スケジューリングは、遅延とジッタの削減に役立ちます。このセクションでは、出力スケジューリングが遅延およびジッタを減らす方法についての例を紹介しています。
パケットの遅延は、送信待機中に各スイッチのバッファで「消失した」時間により増大されます。たとえば、CoS 5 の小さい音声パケットが、大きいバックアップかファイル転送の間にポートから送られます。出力ポートに QoS がなく、小さい音声パケットが 10 の大きい 1500 バイト パケットの後でキューに入ると仮定する場合、10 の大きいパケットを送信するのに必要なギガビット速度の時間を簡単に計算できます。
(10 × 1500 × 8) = 120,000 bits that are transmitted in 120 microseconds
このパケットがネットワークを通過する間に 8 つか 9 つのスイッチを経由する必要があるとすると、約 1 ミリ秒の遅延が生じる可能性があります。この総量でカウントされているのは、ネットワークで経由するスイッチの出力キューでの遅延だけです。
注:同じ10個の大きなパケットを10 Mbpsのインターフェイス(たとえば、IP電話とPCが接続されているインターフェイス)でキューイングする必要がある場合、次の遅延が発生します。
(10 × 1500 × 8) = 120,000 bits that are transmitted in 12 ms
出力スケジューリングの実装により、CoS 5 の音声パケットが確実に完全優先キューに置かれるようになります。この措置により、これらのパケットは確実に 5 未満の CoS のパケットよりも先に送信されるようになり、遅延が削減されます。
出力スケジューリング実装のもう一つの重要な利点は、ジッタの削減です。ジッタとは、同じフロー内のパケットで見られる遅延のばらつきのことです。図 8 のダイアグラムには、出力スケジューリングがジッタを削減できる仕組みについてのシナリオの例が示されています。
図 8
このシナリオでは、次のように、単一の出力ポートで送信する必要があるストリームが 2 つあります。
10 Mbps イーサネット ポートで着信する 1 つの音声ストリーム
1 Gbps イーサネット アップリンクで着信する 1 つの FTP ストリーム
どちらのストリームも、同じ出力ポートでスイッチから送信されます。この例では、出力スケジューリングを使用しない場合に何が起こるかについて示されています。すべての大きなデータ パケットは、2 つの音声パケットの間でインターリーブされる可能性があり、これにより同じストリームからの音声パケットの受信でジッタが生成されます。スイッチから大きいデータ パケットが送信されると、パケット n とパケット n+1 の受信の間には比較的大きな遅延が伴います。一方、n+1 と n+2 の間の遅延は無視できる程度です。その結果、音声トラフィック ストリームのジッタが発生します。完全優先キューを使用すると、この問題を容易に回避できます。音声パケットの CoS 値が、完全優先キューにマッピングされるようにしてください。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
13-Apr-2007 |
初版 |