QoS の設定
この項では、次のトピックについて取り上げます。
コントロール トラフィックの概要
Cisco MDS 9000 ファミリは、内部的および外部的に生成されたコントロール トラフィックの QoS をサポートします。スイッチ内では、コントロール トラフィックはスーパーバイザ モジュールから送信され、高プライオリティ フレームとして取り扱われます。高プライオリティ ステータスは、他のすべてのトラフィックに対する絶対的なプライオリティを提供し、次の場合に割り当てられます。
- 内部的に生成された最優先のコントロール トラフィック(通常は、クラス F フレーム)。
- 他のベンダーのスイッチから Cisco MDS 9000 ファミリに入る外部的に生成された最優先のコントロール トラフィック。他のベンダーのスイッチで生成される高プライオリティ フレームは、Cisco MDS 9000 ファミリのスイッチに入るときに高プライオリティとして認識されます。
コントロール トラフィックのイネーブル化またはディセーブル化
デフォルトでは、特定の最優先のコントロール トラフィックの QoS 機能がイネーブルになっています。これらの最優先のコントロール フレームには、最高(絶対)プライオリティが割り当てられます。
ヒント
このコマンドを発行すると、すべての最優先のコントロール トラフィックには自動的に最低プライオリティが割り当てられるため、この機能をディセーブルにすることはお勧めしません。
手順の詳細
コントロール トラフィックの高プライオリティ割り当てをディセーブルにする場合は、次の手順に従います。
|
|
|
ステップ 1 |
switch# config t |
コンフィギュレーション モードに入ります。 |
ステップ 2 |
switch(config)# no qos control priority 0 |
コントロール トラフィックの QoS 機能をイネーブルにします。 |
switch(config)# qos control priority 0 |
コントロール トラフィックの QoS 機能をディセーブルにします。 |
コントロール トラフィック情報の表示
重要なコントロール トラフィックの QoS 設定の現在の状態を表示するには、 show qos statistics コマンドを使用します。このコマンドは、現在の QoS 設定とともに高プライオリティとしてマークされたフレームの数を表示します。この数はデバッグのためにのみ表示され、設定を変更することはできません(例 2-1 を参照)。
例 2-1 現在の QoS 設定の表示
switch# show vpc statistics
Total number of FC frames transmitted from the Supervisor= 15767
Number of highest-priority FC frames transmitted = 8224
Current priority of FC control frames = 0 (0 = lowest; 7 = highest)
データ トラフィックの概要
低ボリュームで遅延の影響を受けやすいアプリケーションであるオンライン トランザクション処理(OLTP)では、要求された情報に迅速にアクセスする必要があります。バックアップ処理アプリケーションでは、高帯域幅が必要ですが、遅延の影響をあまり受けません。サービスの差別化をサポートしないネットワークでは、すべてのトラフィックが同一の方法で処理されるため、同じ遅延が発生し、同じ帯域幅が割り当てられます。Cisco MDS 9000 ファミリ スイッチの QoS 機能は、このような保証を提供します。
データ トラフィックは異なるレベルのサービスの差別化で、低、中、高プライオリティに優先順位付けできます。QoS を適用して、遅延の影響を受けやすいアプリケーションのファイバ チャネル データ トラフィックに、データ ウェアハウスなどのスループット集中型のアプリケーションよりも高いプライオリティが割り当てられるようにできます(図 2-1 を参照)。
図 2-1 データ トラフィックの優先順位付け
図 2-1 では、スイッチ 1 に到達する OLTP トラフィックは、高プライオリティ レベルのスループット分類(クラス マップ)とマーキング(ポリシー マップ)でマークされます。同様に、バックアップ トラフィックは、低プライオリティ レベルでマークされます。トラフィックは、仮想出力キュー(VOQ)内の対応するプライオリティ キューに送信されます。
最初のスイッチで設定されている Deficit Weighted Round Robin(DWRR)スケジューラは、高プライオリティのトラフィックが低プライオリティのトラフィックよりもより効率的に処理されることを保証します。たとえば、70:20:10 の加重がされている DWRR は、高プライオリティ キューが低プライオリティ キューのレートの 7 倍でサービスが提供されていることを示しています。これによって、輻輳が発生した場合に、高プライオリティ トラフィックの遅延の低減と帯域幅の拡大が保証されます。2 番目のスイッチにおける同様の設定は、他の方法でも同じトラフィック処理が行われることを保証します。
OLTP サーバが要求を送信するときに ISL で輻輳が発生すると、要求は高プライオリティ キューに入ります。高プライオリティ キューでは輻輳が発生していないため、ほぼ即時にサービスが提供されます。スケジューラは低プライオリティ キューのバックアップ トラフィックよりも高いプライオリティを割り当てます。
(注
) 高プライオリティ キューを通過するトラフィック フローがない場合は、低プライオリティ キューが全帯域幅を使用し、設定された値には制限されません。
スイッチ 2 でも同様の処理が行われ、処理要求への応答が送信されます。OLTP サーバで発生するラウンドトリップ遅延は、低プライオリティ トラフィックの量または ISL 輻輳とは関係ありません。OLTP トラフィックで ISL 帯域幅を使用していない場合は、バックアップ トラフィックが利用可能な ISL 帯域幅を使用します。
VSAN とゾーン ベース QoS の比較
同じスイッチ内でゾーン ベース QoS と VSAN ベース QoS 設定ができますが、これらの設定には大きい違いがあります。 表 2-1 VSAN ベースとゾーン ベースにおける QoS プライオリティ設定の違いを明示しています。
表 2-1 QoS 設定の違い
|
|
特定の VSAN でアクティブなゾーン セットを設定し、すべてのメンバー ゾーンで QoS パラメータも設定している場合は、ポリシー マップと VSAN を関連付けることができません。 |
すでにポリシー マップが関連付けられている VSAN 上では、ゾーン セットをアクティブにできません。 |
ポリシー マップに関連付けられた 2 つのクラス マップに同じフローがある場合は、最初に接続されたクラス マップの QoS 値が有効になります。 |
異なる QoS 値を持つ特定のゾーン セットの 2 つのゾーンに同じフローがある場合は、高い方の QoS 値が考慮されます。 |
— |
ゾーン マージ中に Cisco NX-OS ソフトウェアが QoS パラメータの不一致を検出すると、リンクが分離されます。 |
QoS がイネーブルの場合にだけ有効です。 |
QoS がイネーブルの場合にだけ有効です。 |
手順の詳細
次の手順に従います。
ステップ 1 QoS 機能をイネーブルにします。
ステップ 2 クラスマップを作成して定義します。
ステップ 3 サービス ポリシーを定義します。
ステップ 4 設定を適用します。
データ トラフィックの QoS の開始
デフォルトでは、QoS データ トラフィック機能は、データ トラフィックについて無効になっています。データ トラフィックの QoS を設定するには、まずスイッチのデータ トラフィック機能を有効にする必要があります。
ヒント
QoS は相互運用性モードでサポートされています。詳細については、『Cisco MDS 9000 Family Switch-to-Switch Interoperability Configuration Guide』を参照してください。
手順の詳細
QoS データ トラフィック機能をイネーブルにするには、次の手順に従います。
|
|
|
ステップ 1 |
switch# config t |
コンフィギュレーション モードに入ります。 |
ステップ 2 |
switch(config)# qos enable |
QoS をイネーブルにします。この時点でデータ トラフィック パラメータを設定します。 |
switch(config)# no qos enable |
現在適用されている QoS 設定を削除し、QoS をディセーブルにします。この時点でデータ トラフィック パラメータの設定ができなくなります。 |
クラス マップ作成の概要
クラス マップ機能を使用して、一致条件を持つトラフィック クラスを作成して定義し、そのクラスに属するトラフィックを識別します。クラス マップ名は 63 以内の英数字で、デフォルトは match-all オプションです。フロー ベース トラフィックは次の値のいずれかを使用します。
- WWN:送信元 WWN または宛先 WWN。
- ファイバ チャネル ID(FC ID):送信元 ID(SID)または宛先 ID(DID)。可能なマスク値は FFFFFF(FC ID 全体が使用されます。これはデフォルトです)、FFFF00(ドメインおよびエリア FC ID だけが使用されます)、あるいは FF0000(ドメイン FC ID だけが使用されます)。
(注
) 0x000000 の SID または DID は許可されていません。
ヒント
クラス マップで一致するエントリの順序は重要ではありません。
クラス マップの作成
class-map コマンドを使用して、一致条件を持つトラフィック クラスを作成および定義し、そのクラスに属するトラフィックを識別します。クラス マップ設定(switch(config-cmap))モードから 1 つの一致ステートメントを持つ一致基準を定義します。
(注
) source-device-alias または destination-device-alias オプションのための拡張モードはサポートされていません。
(注
) IVR ゾーン セットおよび VSAN を持つ QoS 属性はサポートされていません。
- 送信元 WWN を指定するには source-wwn オプションを使用し、または宛先 WWN を指定するには destination-wwn オプションを使用します。
- source-address オプションを使用して発信元 ID(SID)を指定するか、 destination-address オプションを使用して宛先 ID(DID)を指定します。
- 入力インターフェイスを指定するには、 input-interface オプションを使用します。
- 分散デバイス エイリアスを指定するには、 destination-device-alias オプションを使用します。
手順の詳細
クラス マップを作成するには、次の手順を実行します。
|
|
|
ステップ 1 |
switch(config)# qos class-map MyClass match-all switch(config-cmap)# |
このクラスのすべての一致するステートメントに論理 AND 演算子を指定します。フレームがすべての(デフォルトの)設定済み基準に一致する場合は、このクラスに適合します。これはデフォルトです。 |
switch(config)# qos class-map MyClass match-any switch(config-cmap)# |
このクラスのすべての一致するステートメントに論理 OR 演算子を指定します。フレームがいずれか 1 つの設定済み基準に一致する場合は、このクラスに適合します。 |
ステップ 2 |
switch(config-cmap)# match destination-address 0x12ee00 |
指定された宛先 FC ID に一致するフレームの宛先アドレスを指定します。 |
switch(config-cmap)# match source-address 0x6d1090 mask 0xFFFFFF |
指定された送信元 FC ID に一致するフレームの発信元アドレスとマスクを指定します。 |
switch(config-cmap)# match destination-wwn 20:01:00:05:30:00:28:df |
フレームに一致する宛先 WWN を指定します。 |
switch(config-cmap)# match source-wwn 23:15:00:05:30:00:2a:1f |
フレームに一致する送信元 WWN を指定します。 |
switch(config-cmap)# match destination-device-alias DocDeviceAlias |
フレームに一致する宛先デバイス エイリアスを指定します。 |
switch(config-cmap)# match source-device-alias DocDeviceAliase |
フレームに一致する送信元デバイス エイリアスを指定します。 |
switch(config-cmap)# match input-interface fc 2/1 |
フレームに一致する送信元インターフェイスを指定します。 |
switch(config-cmap)# no match input-interface fc 3/5 |
指定された送信元インターフェイスに基づいて一致を削除します。 |
サービス ポリシー定義の概要
サービス ポリシーは、ポリシー マップを使用して指定されます。ポリシー マップにより、クラス マップは順序付きでサービス レベルにマッピングされます。ポリシー マップ内では複数のクラス マップを指定でき、クラス マップを高、中、または低のサービス レベルにマッピングできます。デフォルトの優先度は [Low] です。ポリシー マップ名は、63 文字までの英数字に制限されています。
別の方法として、クラス マップを Diffserv コード ポイント(DSCP)に割り当てることもできます。DSCP は指定されたフレームのサービス レベルのインジケータです。DSCP 値の範囲は 0 ~ 63 です。デフォルト値は 0 です。46 の DSCP 値は使用できません。
ポリシー マップ内でのクラス マップの順序は重要であり、フレームがクラス マップと比較される順序はこれにより決定します。最初に一致したクラス マップの対応するプライオリティが、フレームにマーキングされます。
(注
) QoS DSCP 値の実装に関する詳細については、http://www.cisco.com/en/US/tech/tk543/tk757/technologies_tech_note09186a00800949f2.shtml を参照してください。
(注
) クラス マップは、各ポリシー マップで設定された順序で処理されます。
手順の詳細
サービス ポリシーを指定するには、次の手順を実行します。
|
|
|
ステップ 1 |
switch(config)# qos policy-map MyPolicy switch(config-pmap)# |
MyPolicy というポリシー マップを作成し、ポリシーマップ サブモードに入ります。 |
switch(config)# no qos policy-map OldPolicy switch(config)# |
OldPolicy というポリシー マップを削除し、ポリシーマップ サブモードに入ります。 |
ステップ 2 |
switch(config-pmap)# class MyClass switch(config-pmap-c)# |
事前定義されたクラスの名前を指定し、そのクラスのポリシーマップ サブモードを開始します。 |
switch(config-pmap)# no class OldClass |
ポリシー マップから OldClass というクラス マップを削除します。 |
ステップ 3 |
switch(config-pmap-c)# priority high |
このクラスに一致する各フレームに割り当てられるプライオリティを指定します。 |
switch(config-pmap-c)# no priority high |
前に割り当てられたプライオリティを削除し、デフォルト値 low に戻します。 |
ステップ 4 |
switch(config-pmap-c)# dscp 2 |
DSCP 値を指定して、このクラスに一致する各フレームをマークします。 |
switch(config-pmap-c)# no dscp 60 |
前に割り当てられた DSCP 値を削除し、工場出荷時のデフォルト 0 に戻します。 |
サービス ポリシー実行の概要
QoS データ トラフィック ポリシーを設定したら、対象の VSAN にそのポリシーを適用して、データ トラフィック設定を実行する必要があります。ポリシーを VSAN に適用しないと、データ トラフィック設定は実行されません。VSAN に適用できるポリシー マップは 1 つだけです。
(注
) 同じポリシーをある範囲内の VSAN に適用できます。
手順の詳細
サービス ポリシーを適用するには、次の手順を実行します。
|
|
|
ステップ 1 |
switch(config)# qos service policy MyPolicy vsan 3 |
VSAN 3 に設定済みのポリシーを適用します。 |
switch(config)# no qos service policy OldPolicy vsan 7 |
VSAN 7 に適用された設定済みのポリシーを削除します。 |
DWRR トラフィック スケジューラ キューの概要
Cisco NX-OS ソフトウェアは 4 つのスケジューリング キューをサポートします。
- 厳密なプライオリティ キューは、他のキューに優先してサービスの提供を受けるキューです。他のキューの状態に関係なく、キュー内にフレームがある場合は、必ずキューに対してサービスが提供されます。
- QoS はその他のすべてのトラフィックを DWRR スケジューリング高、中、および低プライオリティ トラフィック キューに割り当てます。
DWRR スケジューラは、設定された重みの比率でキューにサービスを提供します。重みが大きくなると、それに比例して、帯域幅が高くなり、遅延が低減されます。デフォルトの重みは、高キューの場合は 50、中キューの場合は 30、低キューの場合は 20 です。設定された重みの比率は異なります(たとえば、70:30:5 または 60:50:10 を設定できますが、50:70:10 は設定できません)が、キューの重みの減少順によって、必ずプライオリティが高いキューのサービス レベルが高くなるように保証されています。
表 2-2 では、第 1 世代、第 2 世代、第 3 世代のスイッチング モジュールの QoS 動作について説明しています。
表 2-2 第 1 世代、第 2 世代のスイッチング モジュールの QoS 動作
|
|
|
世代 1 |
世代 1 |
QoS 動作は、指定されたポート経由で受信され、同じ出力ポートのキューに格納されるトラフィックの DWRR 設定を反映しています。その他のすべてのトラフィックは同じ帯域幅を共有します。 |
世代 1 |
世代 2 または世代 3 |
QoS 動作は、指定されたポート経由で受信され、同じ出力ポートのキューに格納されるトラフィックの DWRR 設定を反映しています。その他のすべてのストリームは同じ帯域幅を共有します。 |
世代 2 または世代 3 |
世代 1 |
帯域幅パーティショニングはすべてのトラフィックで同じです。 |
世代 2 または世代 3 |
世代 2 または世代 3 |
QoS 動作は、可能なすべてのストリームの DWRR 加重設定を反映しています。 |
手順の詳細
DWRR キューに重みを関連付けるには、次の手順を実行します。
|
|
|
ステップ 1 |
switch(config)# qos dwrr-q high weight 10 |
指定したキュー(デフォルト キュー)に相対的な重み(10)を関連付けます。 |
switch(config)# no qos dwrr-q low weight 51 |
デフォルトの重み 20 を復元します。 |
例
show qos コマンドは、データ トラフィックの現在の QoS 設定を表示します(例 2-2 から 2-10 を参照)。
例 2-2 すべてのクラス マップの内容の表示
switch# show qos class-map
qos class-map MyClass match-any
match destination-wwn 20:01:00:05:30:00:28:df
match source-wwn 23:15:00:05:30:00:2a:1f
match input-interface fc2/1
qos class-map Class2 match-all
match input-interface fc2/14
qos class-map Class3 match-all
match source-wwn 20:01:00:05:30:00:2a:1f
例 2-3 指定したクラス マップの内容の表示
switch# show qos class-map name MyClass
qos class-map MyClass match-any
match destination-wwn 20:01:00:05:30:00:28:df
match source-wwn 23:15:00:05:30:00:2a:1f
match input-interface fc2/1
例 2-4 すべての設定済みのポリシー マップの表示
switch# show qos policy-map
例 2-5 指定したポリシー マップの表示
switch# show qos policy-map name MyPolicy
例 2-6 スケジュール済みの DWRR 設定の表示
qos dwrr-q high weight 50
qos dwrr-q medium weight 30
例 2-7 適用されたすべてのポリシー マップの表示
switch# show qos service policy
qos service policy MyPolicy vsan 1
qos service policy Policy1 vsan 4
例 2-8 指定された VSAN に関連付けられたポリシー マップの表示
switch# show qos service policy vsan 1
例 2-9 指定されたインターフェイスに関連付けられたクラス マップの表示
switch# show qos service policy interface fc3/10
例 2-10 QoS 統計情報の表示
switch# show vpc statistics
Total number of FC frames transmitted from the Supervisor= 301431
Number of highest-priority FC frames transmitted = 137679
Current priority of FC control frames = 7 (0 = lowest; 7 = highest)
QoS の設定例
ここでは、図 2-2 で例示されているアプリケーションのコンフィギュレーション例を示します。
図 2-2 トラフィック優先順位付けのアプリケーション例
OLTP サーバとバックアップ サーバの両方がディスクにアクセスしています。バックアップ サーバは、大量のデータをディスクに書き込んでいます。このデータは特定のサービス保証を必要としません。OLTP サーバがディスクに書き込んでいるデータ量は比較するとかなり少なくなっていますが、トランザクション処理は低遅延アプリケーションであるため、このトラフィックでは応答時間がより短くなければなりません。
スイッチからディスクへのトラフィックの場合、輻輳発生点は、スイッチ 2 とディスクの間のリンクです。このパスにはバックアップ トラフィックはほとんどないため、概してリターン パスでは輻輳が発生しません。
OLTP サーバからディスクへのトラフィックの優先度をバックアップ サーバからディスクへのトラフィックの優先度よりも高くするには、スイッチ 2 でのサービスの差別化が必要です。
手順の詳細
アプリケーション例のトラフィック優先順位付けを設定する場合は、次の手順に従います。
ステップ 1 クラス マップを作成します。
Switch 2(config)# qos class-map jc1 match-all
Switch 2(config-cmap)# match source-wwn 21:00:00:0c:50:02:ca:b5
Switch 2(config-cmap)# match destination-wwn 22:00:00:04:cf:22:eb:dc
Switch 2(config-cmap)# exit
Switch 2(config)# qos class-map jc2 match-all
Switch 2(config-cmap)# match source-wwn 21:00:00:0c:50:02:c7:ff
Switch 2(config-cmap)# match destination-wwn 22:00:00:04:cf:22:eb:dc
Switch 2(config-cmap)# exit
ステップ 2 ポリシー マップを作成します。
Switch 2(config)# qos policy-map jp1
Switch 2(config-pmap)# class jc1
Switch 2(config-pmap-c)# priority high
Switch 2(config-pmap-c)# exit
Switch 2(config-pmap)# class jc2
Switch 2(config-pmap-c)# priority low
Switch 2(config-pmap-c)# exit
Switch 2(config-pmap)# exit
ステップ 3 サービス ポリシーを割り当てます。
Switch 2(config)# qos service policy jp1 vsan 1
ステップ 4 DWRR キューの重みを割り当てます。
Switch 2(config)# qos dwrr-q high weight 50
Switch 2(config)# qos dwrr-q medium weight 30
Switch 2(config)# qos dwrr-q low weight 20
ステップ 5 スイッチ 1 の DWRR キューの重みを割り当てます。 で、クラス マップを作成します。 を繰り返し、両方のスイッチで転送パス輻輳を処理します。
コンフィギュレーション例のあらゆる場所で輻輳が発生する可能性があります。両方のスイッチのリターン パスの輻輳を処理するには、次のように、さらに 2 つクラス マップを作成し、ポリシー マップに含める必要があります。
ステップ 1 さらに 2 つのクラス マップを作成します。
Switch 2(config)# qos class-map jc3 match-all
Switch 2(config-cmap)# match source-wwn 22:00:00:04:cf:22:eb:dc
Switch 2(config-cmap)# match destination-wwn 21:00:00:0c:50:02:ca:b5
Switch 2(config-cmap)# exit
Switch 2(config)# qos class-map jc4 match-all
Switch 2(config-cmap)# match source-wwn 22:00:00:04:cf:22:eb:dc
Switch 2(config-cmap)# match destination-wwn 21:00:00:0c:50:02:c7:ff
Switch 2(config-cmap)# exit
ステップ 2 ポリシー マップにクラス マップを割り当てます。
Switch 2(config)# qos policy-map jp1
Switch 2(config-pmap)# class jc3
Switch 2(config-pmap-c)# priority high
Switch 2(config-pmap-c)# exit
Switch 2(config-pmap)# class jc4
Switch 2(config-pmap-c)# priority low
Switch 2(config-pmap-c)# exit
Switch 2(config-pmap)# exit
ステップ 3 スイッチ 1 の ポリシー マップにクラス マップを割り当てます。 で、さらに 2 つのクラス マップを作成します。 を繰り返し、両方のスイッチでリターン パス輻輳を処理します。