内容

概要

前提条件

要件

使用するコンポーネント

表記法

概要

サービス クラスの動作

アクセス リンクの CoS の動作の変更

出力キュー選択とスケジュール

カスタム キューイング ポリシーの作成

警告

関連情報

概要

このドキュメントでは、分類とキューイングの実行方法を簡素化するための 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 状態がないブリッジド マルチキャスト

変更なし

アクセス リンクの CoS の動作の変更

トラフィックをアクセス ポート（Eth8/1）で受信して VLAN にブリッジする例を検討してみましょう。デフォルトでは、ブリッジド ユニキャスト トラフィックの CoS 値は変更されません。トラフィックがアクセス ポートに到着すると、デフォルトの CoS 値の 0 が割り当てられます。この例では、プライオリティトラフィック(DSCP 46)がアクセスポートで受信され、DSCP値が変更されず、CoS値が0でスイッチを出力します。したがって、パケットは適切なプライオリティを取得しません。

注：分かりやすくするために、CoS ヘッダーを示しています。E8/1はアクセスポートであるため、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 はデフォルト キューイング ポリシーで表現されていないため、キュー制限はさらに小さくなり、帯域幅はハードウェアでプログラムされます。

カスタム キューイング ポリシーの作成

カスタム キューイング ポリシーを作成するには、次の手順を実行します。

1. 目的のキュー制限と帯域幅割り当てでカスタム キュー ポリシーを作成します。

2. グローバル キューイング クラスマップを変更し、必要な CoS をキュー マッピングに作成します。

3. 新しいキューイング ポリシーを適切なインターフェイスに適用します。

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 コマンドは次のとおりです。

- show policy-map interface ex/y

- show system internal queueing stat interface ex/y

関連情報

- Cisco Nexus 7000 Series NX-OS Quality of Service コンフィギュレーション ガイド、リリース 5.x

- テクニカル サポートとドキュメント – Cisco Systems