スーパバイザ III(WS-X4014)またはスーパバイザ IV(WS-X4515)が装着された Catalyst 4000 では、拡張 Quality of Service(QoS)機能(分類、ポリシング、マーキング、キューイング、スケジュールなど)がサポートされています。このドキュメントでは、キューイング機能とスケジュール機能(トラフィック シェーピング、共有、絶対優先\低遅延キューイングなど)について説明します。キューイングは、パケットを出力インターフェイスでさまざまなキューにキューイングする方法を決定し、スケジューリングは、(輻輳時に)高優先順位トラフィックを低優先順位トラフィックより優先する方法を決定します。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
この文書を読むには、次の知識が必要です。
フレームのレイヤ 2(L2)プライオリティ設定は、Class of Service(COS)値に基づきます。この値は、InterSwitch Link(ISL)ヘッダー(4 ビットのユーザ フィールドの 3 つの最小重みビット)および 802.1Q ヘッダー(2 バイトのタグ制御情報フィールドの 3 つの最大重みビット)で指定されています。
パケットのレイヤ 3(L3)プライオリティ設定は、Differentiated Services Code Point(DSCP)値に基づきます。この値は、IP ヘッダー内の Type of Service(TOS; タイプ オブ サービス)バイト(6 つの最大重みビット)または TOS バイト内の IP 優先順位値(3 つの最大重みビット)で指定されています。
設定の詳細については、「ソフトウェア設定ガイド」を参照してください。
この文書の情報は、スーパーバイザ III(WS-X4014)上の次のソフトウェア バージョンに基づいています。
Cisco IOS® ソフトウェア リリース 12.1(8)EW
注:スーパーバイザIVは、Cisco IOSソフトウェアリリース12.1(12c)EWで最初にサポートされています。このドキュメントで説明されている機能は、明示的に区別しない限り、スーパーバイザ IV を対象としています。
このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。
Catalyst 4000 スーパーバイザ III および IV は、共有メモリ スイッチング アーキテクチャを使用しており、既存のラインカードにキューイングおよびスケジューリング機能を提供できます。スーパーバイザは非ブロッキング スイッチング アーキテクチャを提供するため、入力キューイングは行われません。パケットはバックプレーンを経由して出力ポートに転送されます。インターフェイスの出力側には、4 つの送信キューがあります。キュー サイズは現時点で、ファーストイーサネット ポートの場合は 240 パケット、非ブロッキング ギガビット イーサネット インターフェイスの場合は 1920 パケットに固定されています。非ブロッキングとは、バックプレーンへの接続において、ポートで加入過多が発生しないことを意味します。次に、非ブロッキング ギガビット イーサネット ポートのリストを示します。
スーパーバイザ エンジン III(WS-X4014)および IV(WS-X4515)上のアップリンク ポート
WS-X4306-GB ラインカード上のポート
WS-X4232-GB-RJ ラインカード上の 2 つの 1000BASE-X ポート
WS-X4418-GB ラインカード上の最初の 2 つのポート
WS-X4412-2GB-TX ラインカード上の 2 つの 1000BASE-X ポート
ブロッキング(加入過多の)ギガビット イーサネット ポートのキュー サイズも、現時点では 240 パケットに固定されています。次に、ブロッキング ポートのリストを示します。
WS-X4412-2GB-TX ラインカード上の 10/100/1000 T ポート
WS-4418-GB ラインカード上の、最初の 2 つのポート以外のポート
WS-X4424-GB-RJ45 ラインカード上のポート
WS-X4448-GB-LX ラインカード上のポート
WS-X4448-GB-RJ45 ラインカード上のポート
注:キュー サイズは、パケットのサイズではなくパケットの数に基づきます。現在、スーパーバイザ III は、送信キューに関して Weighted Random Early Detection(WRED; 重み付けランダム早期検出)などの輻輳回避メカニズムをサポートしません。
注:スーパーバイザIVは、Cisco IOSリリース12.1(13)EW以降でActive Queue Management(AQM)機能をサポートしています。AQM は、バッファ オーバーフローが発生する前に動作する輻輳回避技術です。AQM は、ダイナミック バッファ制限(DBL)によって実現します。DBL はスイッチ内の各トラフィックのキュー長を追跡します。特定のフローのキュー長が制限を超えると、DBL はパケットをドロップするか、パケット ヘッダーの明示的輻輳通知(ECN)ビットを設定します。DBL の設定方法についての詳細は『QoS の設定』を参照してください。
QOS が無効の場合、パケットは入力ポートで着信 DSCP により信頼され、適切なキューにキューイングされます。これらのキューはラウンドロビン方式で処理されます。
QOS が有効な場合、パケットは内部 DSCP に基づいてキューイングされます。内部 DSCP は、ポート信頼状態を使用して着信 COS/DSCP から算出されるか、または入力ポートまたは Access Control List(ACL)/クラスベース マーキングの COS/DSCP デフォルト設定から算出されます。キューはグローバルな DSCP-TX キュー マッピングに基づいて選択され、完全に設定可能です。マッピングは次のように表示できます。
Switch#show qos maps dscp tx-queue DSCP-TxQueue Mapping Table (dscp = d1d2) d1 : d2 0 1 2 3 4 5 6 7 8 9 ------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 02 02 02 2 : 02 02 02 02 02 02 02 02 02 02 3 : 02 02 03 03 03 03 03 03 03 03 4 : 03 03 03 03 03 03 03 03 04 04 5 : 04 04 04 04 04 04 04 04 04 04 6 : 04 04 04 04
上記のマッピングはデフォルトのマッピングです。必要な場合は、qos map dscp dscp-values to tx-queue queue-id コマンドを発行してマッピングを変更できます。たとえば、DSCP 値 50 を TX キュー 2 にマッピングする場合は、グローバル コンフィギュレーション モードで次のように設定します。
Switch(config)#qos map dscp 50 to tx-queue 2 !--- You can verify to make sure the changes have been made. Switch #show qos maps dscp tx-queue DSCP-TxQueue Mapping Table (dscp = d1d2) d1 : d2 0 1 2 3 4 5 6 7 8 9 ------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 02 02 02 2 : 02 02 02 02 02 02 02 02 02 02 3 : 02 02 03 03 03 03 03 03 03 03 4 : 03 03 03 03 03 03 03 03 04 04 5 : 02 04 04 04 04 04 04 04 04 04 6 : 04 04 04 04
マッピングを変更するための設定ステップの詳細については、次の文書を参照してください。
スイッチ Application-Specific Integrated Circuit(ASIC; 特定用途向け集積回路)の制限のため、入力ポートが trust-cos に設定されている場合、送信 COS は着信パケットの COS、またはポートで設定されたデフォルト COS(タグなしパケットの場合)のいずれかと等しくなります。パケットに対して set ip dscp value コマンドを発行してパケットの DSCP を設定するようにポリシーが設定されている場合は、デフォルト/パケット COS ではなく、この値が内部 DSCP のソースとして使用され、パケットは適切なキューにキューイングされます。ポートで COS が信頼されない場合、発信 COS は内部 DSCP 値に基づきます。
送信キュー 3 は、必要に応じて完全優先キューとして設定できます。この場合、このキューにキューイングされたパケットは、設定されたシェア値を超えない限り、それ以外のキューにキューイングされたパケットより前に送信されるようにスケジューリングされます。これについては次の項で説明します。
完全優先機能はデフォルトでは無効になっています。デフォルト マッピングでは、CoS 4 および 5 のパケットと DSCP 32 から 47 のパケットが送信キュー 3 にキューイングされます。DSCP から tx-queue へのマッピングは、必要なパケットが高優先度キューにキューイングされるように、必要に応じて変更できます。
低優先順位パケット用のキューが枯渇しないようにするため、このキューは、優先順位の低い大量の TCP/IP トラフィックではなく、主として音声トラフィックなどの少量でも優先順位の高いトラフィック用に設定する必要があります。完全優先キュー以外のキューの枯渇を防ぐ必要がある場合は、高優先度キューにシェーピング/シェアリングを設定することもお勧めします。シェーピング/シェアリングを設定することにより、完全優先キューのシェープ/シェア値が満たされたときに、他の低優先順位パケットがスケジューリングされます。
Switch#show run interface gigabitEthernet 1/1 interface GigabitEthernet1/1 no switchport ip address 10.1.1.1 255.255.255.0 tx-queue 3 priority high end
Catalyst 4000 スーパーバイザ III および IV は、bandwidth コマンドをサポートします。このコマンドは tx-queue コマンドのサブコマンドです。このコマンドを使用することにより、4 つの送信キューのそれぞれに最小帯域幅を保証できます。このコマンドは、ルーティング プロトコルの目的で使用されるインターフェイス レベルの bandwidth コマンドと混同しないようにする必要があります。このコマンドを DSCP-TX キュー マッピングとともに使用することにより、4 つの各キューにキューイングされる各クラスのトラフィックにどの程度の帯域幅を保証するかを細かく制御できます。通常、音声トラフィックなどの高優先度トラフィックは、送信キュー 3 に設定したシェアリングを使って、完全優先キューイングにより、輻輳時に一定の最低トラフィック量が保証されます。リンク帯域幅のシェアリングは、非ブロッキング ギガビット イーサネット ポートでのみサポートされます。この機能は現在、ブロッキング ギガビット イーサネット ポートまたは 10/100 ファーストイーサネット インターフェイスでは使用できません。
QOS がスイッチ上でグローバルに有効になっている場合は、デフォルトで 4 つのキューすべてに、すべてのポートで 250 Mbps の最小帯域幅が割り当てられます。場合によっては、対象となるアプリケーションまたはネットワークの設定にあわせて、デフォルト設定を変更する必要があります。
Switch#show run interface gigabitEthernet 1/1 interface GigabitEthernet1/1 no switchport ip address 10.1.1.1 255.255.255.0 tx-queue 1 bandwidth 500 mbps tx-queue 2 bandwidth 25 mbps tx-queue 3 bandwidth 50 mbps priority high tx-queue 4 bandwidth 200 mbps end Switch#show qos interface GigabitEthernet 1/1 QoS is enabled globally Port QoS is enabled Port Trust State: 'untrusted' Default DSCP: 0 Default CoS: 0 tx-Queue Bandwidth ShapeRate Priority QueueSize (bps) (BPS) (packets) 1 500000000 disabled N/A 1920 2 250000000 disabled N/A 1920 3 50000000 disabled high 1920 4 200000000 disabled N/A 1920
スイッチでは現在、キューあたりの帯域幅シェアの合計が 1 Gbps 以下であるかどうかを検証しません。たとえば、Q1 = 300 Mbps、Q2 = 200 Mbps、Q3= 100 Mbps、および Q4 = 500 Mbps の場合、そのインターフェイスで利用可能な帯域幅の合計は 1 Gbps を超えます。このような加入過多のシナリオにおけるスイッチの動作を理解するには、スケジューリングの動作を理解する必要があります。
送信キューの出力レートが、設定されたシェアおよびシェープ値に満たない場合は、高優先度キューと見なされます。最初は、シェアを与えられたキューが存在しないため、すべてのキューが高優先度キューであり、したがってラウンドロビン方式で処理されます(高優先順位に設定されたキューは、空でない限り、シェアを満たすまでは常に最初に処理される点に注意してください)。 一部のキューがシェアを満たすと、高優先度キューが他にない場合は、それらのキューが処理されます。高優先度キューが存在しない場合は、すべての低優先度キュー(すでにシェアを満たしたキュー)がラウンドロビン方式で処理されます。
上で説明した動作から、このシナリオ例では、Q1、Q2、および Q3 は輻輳時にそれぞれのシェアを確保できますが、Q4 は確保できません。これは、物理的にインターフェイスが利用可能な帯域幅を超える帯域幅を割り当てることができないためです。シェア値は、ユーザ/アプリケーションの要件に応じて慎重に選択する必要があります。
Catalyst 4000 スーパーバイザ III および IV は、ポリシング機能に加えてトラフィック シェーピング機能もサポートします。シェーピング機能は、ファーストイーサネットでもギガビット イーサネットでも、送信キューごとに設定できます。シェーピングでは、キューごとの 1 秒あたりの送信帯域幅を、16 Kbps ~ 1 Gbps(ファーストイーサネット ポートの場合 100 Mbps)で設定可能な最大値に制限できます。 シェーピングでは、特定のキューからパケットを送信するかどうかがパケットごとに決定されるため、設定値からの変動が非常に低くなります。
Switch#show run interface FastEthernet 5/9 interface FastEthernet5/9 no switchport no snmp trap link-status ip address 10.1.1.1 255.255.255.0 tx-queue 1 shape 50 mbps tx-queue 2 shape 35 mbps tx-queue 3 priority high shape 5 mbps tx-queue 4 shape 10 mbps Switch#show qos interface FastEthernet 5/9 QoS is enabled globally Port QoS is enabled Port Trust State: 'untrusted' Default DSCP: 0 Default CoS: 0 tx-Queue Bandwidth ShapeRate Priority QueueSize (BPS) (BPS) (packets) 1 N/A 50000000 N/A 240 2 N/A 35000000 N/A 240 3 N/A 5000000 high 240 4 N/A 10000000 N/A 240
パケットは、すでに説明した 4 つのキューのいずれか 1 つの内部 DSCP に基づいてキューイングされます。内部 DSCP は、入力 DSCP、入力ポート DSCP、またはクラスベース マーキングから算出されます。送信キュー スケジューリングは次のように行われます。シェーピングが設定されている場合は、送信キュー内のパケットが、設定された最大シェープ値の範囲内にあるかどうかがチェックされます。この値を超えている場合は、送信されずにキューイングされます。
パケットが適格な場合は、シェアリング/完全優先機能が考慮されます。まず、完全優先キューに入れられたパケットが、そのキューに設定されたシェープ パラメータに満たない限り優先されます。完全優先キューが処理された後(すなわち、完全優先キュー内にパケットがなくなったか、そのシェアが満たされた後)、非完全優先キュー内のパケットがラウンドロビン方式で処理されます。このようなキューが 3 つあるため、これらのキューに設定されたシェアリングが再び考慮されます。たとえば、送信キュー 1 がこのシェアを満たさなかった場合は、シェアを満たした送信キュー 2 よりも優先されます。優先順位の高いキューのパケットがなくなると、シェアをすでに満たしているキュー内のパケットが考慮されます。
注:このコンティストで優先順位が高い場合、DSCP、CoS、またはIP優先順位の値が高くなることは意味しません。ここでは、特定のキューがそのシェアを満たしているかどうかのみに基づいています。特定の非完全優先キューがそのシェアを満たしていない場合、シェアを満たしている非完全優先キューよりも優先順位が高いキューと見なされます。