プライオリティ フロー制御の構成

プライオリティ フロー制御について

Class Based Flow Control(CBFC)または Per Priority Pause(PPP)とも呼ばれるプライオリティ フロー制御(PFC;IEEE 802.1Qbb)は、輻輳が原因のフレーム損失を防ぐメカニズムです。PFC は 802.3x フロー制御(ポーズ フレーム)またはリンク レベル フロー制御(LFC)と類似しています。ただし、PFC はサービス クラス(CoS)ごとに運用されます。

バッファしきい値が輻輳により超過された場合、指定された期間リンク上のすべてのデータ送信を一時停止するために、ピアにポーズ フレームを送信します。(トラフィックが設定されたしきい値を下回り)輻輳が軽減されると、再開フレームはリンク上でデータ伝送を再開することが保障されます。

これに対して、輻輳中は、どの CoS 値を一時停止する必要があるかを示すポーズ フレームを PFC が送信します。PFC ポーズ フレームには、トラフィックが一時停止する必要のある時間の長さを示す各 CoS の 2 オクテットのタイマー値が含まれます。タイマーの時間単位はポーズ量子で指定されます。量子は、ポートの速度で 512 ビットを送信するために必要な時間です。範囲は 0 ~ 65535 です。ポーズ量子が 0 のポーズ フレームは、一時停止したトラフィックを再開する再開フレームを示します。


(注)  


他のクラスが通常の動が許可される一方で、トラフィックの特定のサービス クラスのみフロー制御を使用できます。


PFC はピアに対して、既知のマルチキャスト アドレスにポーズ フレームを送信して、特定の CoS 値を持つフレームの送信を停止するように求めます。このポーズ フレームは、ピアによる受信時に転送されない 1 ホップ フレームです。輻輳が軽減されると、PFC はピアにフレームの伝送の再開を要求できます。

プライオリティ フロー制御の前提条件

PFC には、次の前提条件があります。

  • モジュラ QoS CLI について理解している。

  • デバイスにログインしている。

プライオリティ フロー制御のガイドラインと制約事項

Nexus 3500 プラットフォームのPFC 構成時のガイドラインと制約事項は次のとおりです。

  • PFC は、qos-group 2 および qos-group 3 に一致する network-qos クラスでのみサポートされます。他の qos-group 一致するクラスで構成すると、エラーが発生します。

  • network-qos ポリシーで PFC を構成する場合は、pause コマンドの pause pfc-cos バリアントを使用します。

  • pause コマンドの pause no-drop バリアントは、LLFC の構成にのみ使用されます。

  • 同じスイッチで LLFC と PFC を同時に設定しないことをお勧めします。フロー制御には、次の構成から 1 つだけ選択します。

    [PFC 設定(PFC Configuration)]: network-qos 構成のpause pfc-cos バリアントのみで、ポートでの優先フロー制御を有効にします。

    [LLFC 設定(LLFC Configuration)] : ポートでのネットワーク QoS ポリシーとフロー制御送受信の pause no-drop バリアントのみ。

  • PFC が正しく機能するためには、PFC 対応ネットワークの参加エンティティは、標準に従って PFC フレームを受け入れる必要があります。ピアが PFC フレームを受け入れると、輻輳しているキューに対してのみ PFC フレームが生成されます。

    ただし、ピアが PFC フレームを受け入れない場合、バッファのしきい値を超えたパケットをすぐにドロップするプロビジョニングはありません。その結果、no-drop バッファ全体が使い果たされ、PFC フレームが他の非輻輳/トラフィックなしの no-drop キューに送信されます。

  • PFC フレームは、マルチキャスト キューに到達する輻輳したトラフィックに対して生成されます。

  • 一時停止バッファのしきい値は、network-qos ポリシーで構成されます。

  • ポーズ バッファ サイズのしきい値設定の追加は、ケーブル長が 100 m 未満の場合はオプションであり、設定する必要はありません。

  • ケーブル長が 100 m を超える場合、ポーズ バッファ サイズのしきい値設定は必須であり、ネットワーク QoS ポリシー設定の一部として必要です。

  • PFC がポートまたはポート チャネルでイネーブルにされる場合でも、ポート フラップは発生しません。

  • PFC 設定は、送信(Tx)および受信(Rx)の両方向で PFC をイネーブルにします。

  • ポーズ フレームの設定時間量子はサポートされません。

  • この設定は、特定のトラフィック クラス キューにマッピングされ、一時停止が選択されたストリームをサポートしません。クラスにマッピングされたすべてのフローは、no-drop として扱われます。これにより、キュー全体のスケジューリングが行われず、キューのすべてのストリームでトラフィックが一時停止します。no-drop クラスのロスレス サービスを実現するには、キュー内で no-drop クラスのトラフィックに限定することを Cisco は推奨します。

  • no-drop クラスが 802.1p CoS x に基づいて分類され、内部プライオリティ値(QoS グループ)y を割り当てた場合は、802.1p CoS 上でのみトラフィックを区別するために内部プライオリティ値 x を使用して、他のフィールドを使用しないことを推奨します。分類が CoS に基づいていない場合、割り当てられるパケット プライオリティは x で、これにより、内部プライオリティ x および y のパケットが同じプライオリティ x にマッピングする結果となります。

  • PFC 機能では、どの最大伝送単位(MTU)サイズでも、最大 2 つの no-drop クラスがサポートされます。ただし、次の要因に基、づいて、PFC-enabled インターフェイスの数に制限があります。

    • no-drop クラスの MTU サイズ

    • 一時停止しきい値のバッファ サイズ

    • 10G および 40G ポートの数

    • デフォルトの MTU および 10G ポートで一時停止しきい値を設定する場合、PFC で有効にできるインターフェイスの最大数は約 20 インターフェイスです。

  • systemjumbomtu コマンドを使用して、システム内の MTU の上限を定義できます。MTU 範囲は、1500 ~ 9216 バイトで、デフォルトは 9216 バイトです。

  • インターフェイス QoS ポリシーはシステム ポリシーよりも優先されます。PFC の優先度の派生も同じ順序で行われます。

  • 入力と出力の両方において、すべての PFC 対応インターフェイスで同じインターフェイス レベルの QoS ポリシーを適用していることを確認します。


    注意    


    PFC の設定に関係なく、インターフェイス レベルまたはシステム レベルで完全-優先レベルがあるキューイング ポリシーの適用または削除をする前にトラフィックを停止することを Cisco は推奨します。


  • ネットワークを介してエンドツーエンドのロスレス サービスを実現するには、no-drop クラス トラフィック フロー(Tx/Rx)を介して各インターフェイスで PFC をイネーブルにすることを Cisco は推奨します。

  • トラフィックがない場合は PFC 設定を変更することを Cisco は推奨します。このようにしないと、システムの Memory Management Unit(MMU)に既に含まれているパケットが、予期されるとおりに処理されない可能性があります。

  • no-drop クラスにデフォルトのバッファ サイズを使用するか、または 10G および 40G インターフェイスおよび no-drop クラス MTU サイズに適した異なるネットワーク QoS ポリシーを設定することを Cisco は推奨します。バッファ サイズを CLI を使用して指定する場合は、リンク速度、MTU サイズに関係なく、すべてのポートに同じバッファ サイズが割り当てられます。10G および 40G インターフェイスへの同じポーズ バッファ サイズの適用はサポートされません。

  • 出力キューのドロップの原因になるため、no-drop クラスで WRED をイネーブルにしないでください。

  • VLAN タグ付きパケットの場合、プライオリティは VLAN タグの 802.1p フィールドに基づいて割り当てられ、割り当てられた内部プライオリティ(qos-group)よりも優先されます。DSCP または IP アクセスリストの分類は、VLAN タグ付きフレームでは実行できません。

  • 非VLAN タグ付きフレームの場合、入力 QoS ポリシーによって提供される set qos-group アクションに基づいてプライオリティが割り当てられます。分類は、precedence、DSCP、または access-list などの QoS ポリシーで許可される一致条件に基づきます。このクラスの network-qos ポリシーで提供される pfc-cos 値が、この場合の qos-group 値と同じであることを確認します。

プライオリティ フロー制御のデフォルト設定

表 1. デフォルトの PFC 設定

パラメータ

デフォルト

PFC

自動(Auto)

プライオリティ フロー制御の構成

アクティブなネットワーク QoS ポリシーで定義されている CoS の no-drop 動作をイネーブルにするには、ポート単位の PFC を設定できます。PFC は、次の 3 種類のモードのいずれかに設定できます。

  • on:ピアの機能に関係なく、ローカル ポートで PFC をイネーブルにします。

  • off:ローカル ポートで PFC をディセーブルにします。

手順の概要

  1. configure terminal
  2. interface type slot/port
  3. priority-flow-control mode [ | off |on]
  4. show interface priority-flow-control

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します。

ステップ 2

interface type slot/port

例:

switch(config)# interface ethernet 2/5
switch(config-if)#

指定したインターフェイス上でインターフェイス モードを開始します。

ステップ 3

priority-flow-control mode [ | off |on]

例:

switch(config-if)# priority-flow-control mode on
switch(config-if)#

PFC を on モードに設定します。

ステップ 4

show interface priority-flow-control

例:

switch# show interface priority-flow-control

(任意)すべてのインターフェイスの PFC のステータスを表示します。

トラフィック クラスのプライオリティ フロー制御のイネーブル化

特定のトラフィック クラスの PFC をイネーブルにできます。

手順の概要

  1. configure terminal
  2. class-map type qos class-name
  3. match cos cos-value
  4. exit
  5. policy-map type qos policy-name
  6. class type qos class-name
  7. set qos-group qos-group-value
  8. exit
  9. exit
  10. class-map type network-qos match-any class-name
  11. match qos-group qos-group-value
  12. exit
  13. policy-map type network-qos policy-name
  14. class type network-qos class-name
  15. pause pfc cos-value
  16. exit
  17. exit
  18. system qos
  19. service-policy type network-qos policy-name

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル コンフィギュレーション モードを開始します

ステップ 2

class-map type qos class-name

例:

switch(config)# class-map type qos c1
switch(config-cmap-qos)#

トラフィックのクラスを表す名前付きオブジェクトを作成します。クラス マップ名には、アルファベット、ハイフン、またはアンダースコア文字を含めることができます。クラス マップ名は大文字と小文字が区別され、最大 40 文字まで設定できます。

ステップ 3

match cos cos-value

例:

switch(config-cmap-qos)# match cos 2

パケットをこのクラスに分類する場合に照合する CoS 値を指定します。CoS 値は、0 ~ 7 の範囲で設定できます。

ステップ 4

exit

例:

switch(config-cmap-qos)# exit
switch(config)#

クラス マップ モードを終了し、グローバル コンフィギュレーション モードを開始します。

ステップ 5

policy-map type qos policy-name

例:

switch(config)# policy-map type qos p1
switch(config-pmap-qos)#

トラフィック クラスのセットに適用されるポリシーのセットを表す名前付きオブジェクトを作成します。ポリシー マップ名は、最大 40 文字の英字、ハイフン、または下線文字を使用でき、大文字と小文字が区別されます。

ステップ 6

class type qos class-name

例:

switch(config-pmap-qos)# class type qos c1
switch(config-pmap-c-qos)#

クラス マップをポリシー マップに関連付け、指定したシステム クラスのコンフィギュレーション モードを開始します。

(注)  

 

アソシエートされるクラス マップには、ポリシー マップ タイプと同じタイプが必要です。

ステップ 7

set qos-group qos-group-value

例:

switch(config-pmap-c-qos)# set qos-group 2

トラフィックをこのクラス マップに分類する場合に照合する 1 つまたは複数の qos-group 値を設定します。デフォルト値はありません。

ステップ 8

exit

例:

switch(config-pmap-c-qos)# exit
switch(config-pmap-qos)#

システム クラス コンフィギュレーション モードを終了し、ポリシー マップ モードを開始します。

ステップ 9

exit

例:

switch(config-pmap-qos)# exit
switch(config)#

ポリシー マップ モードを終了し、グローバル コンフィギュレーション モードを開始します。

ステップ 10

class-map type network-qos match-any class-name

例:

switch(config)# class-map type network-qos match-any c1
switch(config-cmap-nqos)#

トラフィックのクラスを表す名前付きオブジェクトを作成します。クラス マップ名には、アルファベット、ハイフン、またはアンダースコア文字を含めることができます。クラス マップ名は大文字と小文字が区別され、最大 40 文字まで設定できます。

ステップ 11

match qos-group qos-group-value

例:

switch(config-cmap-nqos)# match qos-group 2

QoS グループ値のリストに基づいてパケットを照合することによって、トラフィック クラスを設定します。QoS グループ 2 および QoS グループ 3 でサポートされます。

ステップ 12

exit

例:

switch(config-cmap-nqos)# exit
switch(config)#

クラス マップ モードを終了し、グローバル コンフィギュレーション モードを開始します。

ステップ 13

policy-map type network-qos policy-name

例:

switch(config)# policy-map type network-qos p1
switch(config-pmap-nqos)#

トラフィック クラスのセットに適用されるポリシーのセットを表す名前付きオブジェクトを作成します。ポリシー マップ名は、最大 40 文字の英字、ハイフン、または下線文字を使用でき、大文字と小文字が区別されます。

ステップ 14

class type network-qos class-name

例:

switch(config-pmap-nqos)# class type network-qos c1
switch(config-pmap-nqos-c)#

クラス マップをポリシー マップに関連付け、指定したシステム クラスのコンフィギュレーション モードを開始します。

(注)  

 

アソシエートされるクラス マップには、ポリシー マップ タイプと同じタイプが必要です。

ステップ 15

pause pfc cos-value

例:

switch(config-pmap-nqos-c)# pause pfc-cos 2

PFC は、どの CoS 値を一時停止する必要があるかを示す一時停止フレームを送信します。(CoS 値の範囲は 0 ~ 7 です。)

(注)  

 

Nexus 3500 は、一時停止コマンドのreceive オプションをサポートしていません。receive オプションを設定するとエラーが発生します。

ステップ 16

exit

例:

switch(config-pmap-nqos-c)# exit
switch(config-pmap-nqos)#

コンフィギュレーション モードを終了し、ポリシー マップ モードを開始します。

ステップ 17

exit

例:

switch(config-pmap-nqos)# exit
switch(config)#

ポリシー マップ モードを終了し、グローバル コンフィギュレーション モードを開始します。

ステップ 18

system qos

例:

switch(config)# system qos
switch(config-sys-qos)#

システム クラス コンフィギュレーション モードを開始します。

ステップ 19

service-policy type network-qos policy-name

例:

switch(config-sys-qos)# service-policy type network-qos p1

システム レベルまたは特定のインターフェイスにネットワーク QoS タイプのポリシー マップを適用します。

一時停止バッファーのしきい値の構成

一時停止バッファのしきい値は、network-qos ポリシーで設定されます。システム内のすべてのポートで共有されます。


(注)  


入力キューイング ポリシーでの一時停止しきい値の設定は、Nexus 3500 ではサポートされていません。


手順の概要

  1. configure terminal
  2. policy-map type queuing policy-map-name
  3. class-map type network-qos class-map-name
  4. pause buffer-size buffer-size pause threshold xoff-size resume threshold xon-size pfc-cos pfc-cos-value
  5. no pause buffer-size buffer-size pause threshold xoff-size resume-threshold xon-size pfc-cos pfc-cos-value

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 2

policy-map type queuing policy-map-name

ポリシーマップ キューイング クラス モードを開始し、タイプ キューイング ポリシー マップに割り当てられたポリシー マップを識別します。

ステップ 3

class-map type network-qos class-map-name

タイプ network-qos のクラス マップを付加し、 network-qos クラス キューイング モードを開始します。

ステップ 4

pause buffer-size buffer-size pause threshold xoff-size resume threshold xon-size pfc-cos pfc-cos-value

ポーズと再開のためのバッファのしきい値設定を指定します。

ステップ 5

no pause buffer-size buffer-size pause threshold xoff-size resume-threshold xon-size pfc-cos pfc-cos-value

ポーズと再開のためのバッファのしきい値設定を削除します。

例:


switch(config-cmap-nqos)# class type network-qos nc2
switch(config-cmap-nqos)# match qos-group 2
switch(config-cmap-nqos)# 
switch(config-cmap-nqos)# policy-map type network-qos n1
switch(config-pmap-nqos)# class type network-qos nc2 
switch(config-pmap-nqos-c)# pause buffer-size 30000 pause-threshold 29000 resume-threshold 12480 pfc-cos 2

キュー制限の設定

queue-limit は、network-qos ポリシーで設定されます。


(注)  


キュー制限は、no-drop(PFC)対応のネットワーク QoS クラスで設定できます。ただし、キュー制限はそのようなクラスでは効果がありません。


手順の概要

  1. configure terminal
  2. policy-map type network-qos policy-map-name
  3. class-map type network-qos class-map-name
  4. queue-limit queue-size bytes

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 2

policy-map type network-qos policy-map-name

network-qos キューイング クラス モードを開始し、タイプ network-qos ポリシー マップに割り当てられたポリシー マップを識別します。

ステップ 3

class-map type network-qos class-map-name

タイプ network-qos のクラス マップを付加し、 network-qos クラス キューイング モードを開始します。

ステップ 4

queue-limit queue-size bytes

キュー制限を指定します。(範囲は 20480 ~ 6000000 です。)

プライオリティ フロー制御の設定の確認

PFC 設定を表示するには、次の作業を実行します。

コマンド

目的

show interface priority-flow-control {module [number]}

すべてのインターフェイスまたは特定のモジュールの PFC のステータスを表示します。

show interface priority-flow-control [detail] module [number]

すべてのインターフェイスまたは特定のモジュールの PFC の詳細ステータスを表示します。

show interface Ethernet {mod-number | port-number} priority-flow-control [detail]

インターフェイスごとの PFC ステータスを表示します。

プライオリティ フロー制御の設定例

次に、PFC の設定例を示します。

configure terminal
interface ethernet 1/1
priority-flow-control mode on

次に、トラフィック クラスで PFC をイネーブルにする例を示します。

switch(config)# class-map type qos c2
switch(config-cmap-qos)# match cos 2
switch(config-cmap-qos)# exit

switch(config)# policy-map type qos p1
switch(config-pmap-qos)# class type qos c2
switch(config-pmap-c-qos)# set qos-group 2
switch(config-pmap-c-qos)# exit
switch(config-pmap-qos)# exit

switch(config)# class-map type queuing cq2
switch(config-cmap-que)# match qos-group 2
switch(config-cmap-que)# exit

switch(config)# policy-map type queuing pq1
switch(config-pmap-que)# class type queuing cq2 
switch(config-pmap-c-que)# bandwidth percent 20
switch(config-pmap-c-que)# exit
switch(config-pmap-que)# exit

switch(config)# class-map type network-qos cn1
switch(config)# class-map type network-qos n2
switch(config-cmap-nqos)# match qos-group 2
switch(config-cmap-nqos)# exit

switch(config)# policy-map type network-qos pn1
switch(config-pmap-nqos)# class type network-qos n2
switch(config-pmap-nqos-c)# pause pfc-cos 2
switch(config-pmap-nqos-c)# exit
switch(config-pmap-nqos)# exit

switch(config)# system qos
switch(config-sys-qos)# service-policy type network-qos pn1
switch(config-sys-qos)# service-policy type qos input p1
switch(config-sys-qos)# service-policy type queuing output pq1

(注)  


プライオリティ フロー制御機能に問題がある場合は、トラブルシューティングのために次のコマンドから出力を収集します:

  • show tech-support module 1

    • 内部 QoS ハードウェア バッファ/構成情報を表示します。

  • show tech-support aclqos

    • PFC 構成/ステータス コマンドを表示します。

  • show tech-support

    • 他の QoS 内部コマンドとともにshow running config 出力を表示します。