このドキュメントでは、分類とキューイングの実行方法を簡素化するための Cisco Nexus 7000 シリーズ スイッチの Quality of Service(QoS)機能の設定例について説明します。
この設定を行う前に、次の要件が満たされていることを確認します。
Nexus 7000 シリーズ スイッチの設定に関する基本知識があること
QoS の基本的な知識がある
このドキュメントの情報は、Nexus 7000 シリーズ スイッチに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ドキュメント表記の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
多くの導入環境では、Nexus 7000 スイッチのデフォルト QoS パラメータで十分です。ただし、カスタム ポリシーの作成に必要となる、制限事項とコンフィギュレーションの詳細について理解する必要があります。
Nexus 7000 M シリーズのラインカードでは、次の 2 つの側面を考慮する必要があります。
キューイング ポリシー
QoS ポリシー
キューイングはハードウェアで実行され、Modular QoS CLI(MQC)キューイング ポリシーを使用して設定されます。QoS ポリシーは、トラフィックのマーキングやポリシングに使用され、その他のシスコ プラットフォームにおいて標準 QoS ポリシーとして厳密な形式で MQC ポリシーによって使用されます。たとえば、アクセス リストを使用して、ポリシーマップが対応するクラスマップでトラフィックを分類し、トラフィックの設定やポリシングを行います。
現在、M シリーズ モジュールでは、サービス クラス(CoS)の値に厳密に基づいてキューイングが実行されます。このため、CoS 値が導き出される方法をまず理解する必要があります。CoS 値がスイッチに入力するトラフィックおよび残すトラフィックを理解した後で、キューイング コンフィギュレーションに集中し、さまざまなトラフィック タイプで目的の QoS を取得できます。
ルーテッド ユニキャスト トラフィックの場合は、Differentiated Services Code Point(DSCP)の値の最上位 3 ビットから CoS 値が導き出されます。ブリッジド ユニキャスト トラフィックの場合、CoS 値は、802.1q ヘッダーで受信した CoS 値からコピーされます。L2 アクセス リンクでは、トランク ヘッダーがないことに注意してください。したがって、アクセスポートでトラフィックが受信され、ブリッジされた場合、トラフィックはCoS 0でスイッチから出力されます。DSCP値は変更されませんが、パケットは目的のプライオリティを取得しない可能性があります。CoS 値または DSCP 値を手動で設定する QoS ポリシーにより、ポリシーマップで CoS 値を手動で設定できます。
マルチキャストの動作も理解することが重要です。ルーテッド マルチキャスト トラフィックは、ルーテッド ユニキャスト トラフィックと同じ方法で CoS 値を導き出します。ブリッジド マルチキャスト トラフィックの場合、動作は L3 の状態によって決まります。マルチキャスト グループに L3 の状態がない場合、CoS はブリッジド ユニキャスト トラフィックと同じ方法で導き出されます。マルチキャスト グループに L3 の状態がある場合、CoS はルーテッド ユニキャスト トラフィックと同じ方法で導き出されます。トラフィックを受信する VLAN のスイッチ仮想インターフェイス(SVI)の希薄モードで Protocol Independent Multicast(PIM)を有効にすると、マルチキャストが見られたときに S,G エントリが作成されます。
まとめると、トラフィック タイプごとの CoS の動作は次のようになります。
トラフィック タイプ | CoS の動作 |
ルーテッド ユニキャスト | ToS の 3-MSB からコピー |
ブリッジド ユニキャスト | 変更なし |
ルーテッド マルチキャスト | ToS の 3-MSB からコピー |
グループに L3 状態があるブリッジド マルチキャスト | ToS の 3-MSB からコピー |
グループに L3 状態がないブリッジド マルチキャスト | 変更なし |
トラフィックをアクセス ポート(Eth8/1)で受信して VLAN にブリッジする例を検討してみましょう。デフォルトでは、ブリッジド ユニキャスト トラフィックの CoS 値は変更されません。トラフィックがアクセス ポートに到着すると、デフォルトの CoS 値の 0 が割り当てられます。この例では、プライオリティトラフィック(DSCP 46)がアクセスポートで受信され、DSCP値が変更されず、CoS値が0でスイッチを出力します。したがって、パケットは適切なプライオリティを取得しません。
回避策として、入力ポートで CoS 値を手動で設定する QoS ポリシーを作成することが考えられます。
この例では、DSCP 46 のパケットのみで CoS 値が更新されます。適切な CoS 値を確保するために複数の DSCP 値が必要となる場合は、クラスマップおよびポリシーマップのアクションをさらに定義する必要があります。
代替オプションとして、アクション 「default copy」でテーブルマップを使用することが挙げられます。 テーブルマップでは、現在の DSCP 値に基づいて DSCP をリセットできます。たとえば、DSCP 値が 40 のトラフィックを受信し、DSCP 値 46 に再マーキングする必要がある場合は、アクション 「from 40 to 46」でテーブル マップを使用できます。
テーブルマップでは、アクション 「default copy」を含めて、DSCP 値を元の値に設定することもできます。これは、分類が「match dscp ef」、 アクションが 「set dscp ef」のポリシーマップを作成することと同じです。 論理的に DSCP 値は変更されませんが、アクション 「set dscp」では、CoS 値が新しい DSCP 値の 3-MSB に暗黙的に設定されます。
このため、CoS 値を DSCP 値の 3-MSB に常に更新する必要がある場合は、単一アクション 「default copy」でテーブルマップを使用します。
CoS 値が導き出されたら、グローバル キューイング クラスマップを操作して、キューに対する CoS のマッピングに影響を与えることができます。このクラスマップはグローバルであり、その特定キューイング タイプのすべての Virtual Device Context(VDC)ですべてのモジュールに影響します。たとえば、M108 モジュールと M132 モジュールの次のデフォルト キューイング クラスマップを検討してみましょう(1p7q4t)。
class-map type queuing match-any 1p7q4t-out-pq1
Description: Classifier for egress priority queue of type 1p7q4t
match cos 5-7
class-map type queuing match-any 1p7q4t-out-q2
Description: Classifier for egress queue 2 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q3
Description: Classifier for egress queue 3 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q4
Description: Classifier for egress queue 4 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q5
Description: Classifier for egress queue 5 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q6
Description: Classifier for egress queue 6 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q7
Description: Classifier for egress queue 7 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q-default
Description: Classifier for egress default queue of type 1p7q4t
match cos 0-4
デフォルトでは、CoS 0-4 がデフォルト キューに、CoS 5-7 がプライオリティ キューにマッピングされます。これは、同じキューイング タイプのデフォルト キューイング ポリシーと密接に関連します。
policy-map type queuing default-out-policy
class type queuing out-pq1
priority level 1
queue-limit percent 16
class type queuing out-q2
queue-limit percent 1
class type queuing out-q3
queue-limit percent 1
class type queuing out-q-default
queue-limit percent 82
bandwidth remaining percent 25
プライオリティ キューは「priority」であり、キュー制限は 16 % です。デフォルト キューのキュー制限は 82 % であり、デフォルト帯域幅は残りの部分となります。使用されないその他のキューには、キュー制限 1 % が割り当てられます。q4、q5、q6 はデフォルト キューイング ポリシーで表現されていないため、キュー制限はさらに小さくなり、帯域幅はハードウェアでプログラムされます。
カスタム キューイング ポリシーを作成するには、次の手順を実行します。
M132 モジュールの例を検討してみましょう。これは 1p7q4t キューイング アーキテクチャであり、8 個すべての CoS 値は別個のキューにマッピングされます。出力には、カスタム キューイング ポリシー、およびグローバル キューイング クラスマップの変更が表示されます。
policy-map type queuing 10G_POLICY
class type queuing 1p7q4t-out-pq1
priority level 1
queue-limit percent 10
class type queuing 1p7q4t-out-q2
queue-limit percent 10
bandwidth remaining percent 10
class type queuing 1p7q4t-out-q3
queue-limit percent 5
bandwidth remaining percent 5
class type queuing 1p7q4t-out-q4
queue-limit percent 5
bandwidth remaining percent 5
class type queuing 1p7q4t-out-q5
queue-limit percent 10
bandwidth remaining percent 20
class type queuing 1p7q4t-out-q6
queue-limit percent 5
bandwidth remaining percent 10
class type queuing 1p7q4t-out-q7
queue-limit percent 5
bandwidth remaining percent 10
class type queuing 1p7q4t-out-q-default
queue-limit percent 50
bandwidth remaining percent 40
! voice
class-map type queuing match-any 1p7q4t-out-pq1
match cos 5
! scavenger
class-map type queuing match-any 1p7q4t-out-q2
match cos 1
! transactional
class-map type queuing match-any 1p7q4t-out-q3
match cos 2
! call signaling
class-map type queuing match-any 1p7q4t-out-q4
match cos 3
! video
class-map type queuing match-any 1p7q4t-out-q5
match cos 4
! routing
class-map type queuing match-any 1p7q4t-out-q6
match cos 6
! management
class-map type queuing match-any 1p7q4t-out-q7
match cos 7
! best effort
class-map type queuing match-any 1p7q4t-out-q-default
match cos 0
最後の手順では、カスタム キューイング ポリシーをそれぞれの 1p7q4t インターフェイスに適用します。
interface Ethernet8/1
service-policy type queuing output 10G_POLICY
デフォルト キューイング ポリシーでは、CoS 0-4 がデフォルト キューに、CoS 5-7 がプライオリティ キューにマッピングされることが想定されます。このため、キュー q3、q4、q5、q6、q7 のキュー制限は極端に小さくなります。show queuing interface コマンドを入力すると、ハードウェアで設定されて適用されている現在のキューサイズと帯域幅を確認できます。
各CoS値が特定のキューにマッピングされた前のセクションのポリシー例を考えてみましょう。この例の最後に、カスタムキューイングポリシーがEth8/1に適用されました。また、デフォルトキューイングポリシーが残された1p7q4tインターフェイス(Eth6/1)が存在します。
N7k# show queuing interface e6/1
<some output omitted>
Configured queue-limit ratios
queue-limit ratios: 78[1p7q4t-out-q-default] 1[1p7q4t-out-q2] 1[1p7q4t-out-q3]
*1[1p7q4t-out-q4] *1[1p7q4t-out-q5] *1[1p7q4t-out-q6] *1[1p7q4t-out-q7] 16[1p7q4t-out-pq1]
* means unused queue with mandatory minimum queue-limit
Thresholds:
COS Queue Threshold Type Min Max
______________________________________________________________
0 1p7q4t-out-q-default DT 100 100
1 1p7q4t-out-q2 DT 100 100
2 1p7q4t-out-q3 DT 100 100
3 1p7q4t-out-q4 DT 100 100
4 1p7q4t-out-q5 DT 100 100
5 1p7q4t-out-pq1 DT 100 100
6 1p7q4t-out-q6 DT 100 100
7 1p7q4t-out-q7 DT 100 100
上の出力から、キュー q2 と q3 のキュー制限は 1 % であり、q4、q5、q6、q7 のキュー制限は *1 % であることが分かります。これは最低必須キュー制限です(言い換えると、1 % より大幅に小さくなります)。 また、CoS 値 1-4 と 6-7 では、この非常に小さいキューが利用されることが分かります。小さいキューサイズは出力の廃棄を引き起こし、ネットワークのパフォーマンスを低下させる可能性があります。これは、デフォルトのトラフィックCoS 0がこれらの小さいキューのいずれかにマップされている場合に、さらに悪化します。
まとめると、カスタム キューイング ポリシーを作成してグローバル キューイング クラスマップを変更する場合は、同じキューイング タイプを共有するシャーシのすべてのインターフェイスにカスタム キューイング ポリシーを適用することが重要です。
役に立つ drop コマンドは次のとおりです。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
29-May-2013 |
初版 |