Cisco Nexus 9000 シリーズ NX-OS Quality of Service コンフィギュレーション ガイド リリース 6.x
プライオリティ フロー制御の設定
プライオリティ フロー制御の設定

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

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

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 はピアにフレームの送信の再開を要求できます。

プライオリティ フロー制御のライセンス要件

次の表に、この機能のライセンス要件を示します。

製品

ライセンス要件

Cisco NX-OS

PFC 機能にライセンスは必要ありません。 ライセンス パッケージに含まれていない機能は NX-OS イメージにバンドルされており、無料で提供されます。 NX-OS ライセンス方式の詳細については、『Cisco NX-OS Licensing Guide』を参照してください。

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

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

  • モジュラ QoS コマンドライン インターフェイスについて理解している。

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

プライオリティ フロー制御の注意事項と制約事項

PFC 設定時の注意事項と制約事項は次のとおりです。

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

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

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

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

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

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

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

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

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

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

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


    注意    


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


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

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

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

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

  • PFC は、Cisco Nexus 9300 プラットフォームと N9K-X9564TX および N9K-X9564PX ラインカードではサポートされていません。

  • ダイナミック ロード バランシングは、PFC を使用する内部リンクではイネーブルにできません。 DLB をディセーブルにし、port-channel load-balance internal rtag7 コマンドを使用して内部リンクに対し RTAG7 ロード バランシングをイネーブルにする必要があります。

  • ダイナミック ロード バランシング(DLB)に基づくハッシュ方式は、ラインカードのすべての内部リンクでデフォルトでイネーブルになっています。 DLB がイネーブルの場合、内部リンクの輻輳が発生し、PFC が適用されると、no-drop トラフィックで正しくない順序のパケット配信が発生することがあります。 システム上のアプリケーションが正しくない順序の配信の影響を受ける場合、qos-group レベルで DLB をディセーブルにすることで、これに対処できます。 QoS ポリシー マップの set dlb-disable アクションと、no-drop クラスに対する set qos-group アクションを使用して、DLB をディセーブルにします。

    次の例では、qos-group 1 が no-drop クラスであることを前提とします。 set dlb-disable アクションと set qos-group アクションを追加することで、この no-drop クラスに対して DLB がディセーブルになります。

    switch(config)# policy-map p1
    switch(config-pmap-qos)# class c1
    switch(config-pmap-c-qos)# set qos-group 1
    switch(config-pmap-c-qos)# set dlb-disable
    switch(config-pmap-c-qos)# end
    switch# show policy-map p1
    
    
      Type qos policy-maps
      ====================
    
      policy-map type qos p1
        class  c1
          set qos-group 1
          set dlb-disable
    

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

表 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 {on}

    4.    show interface priority-flow-control


手順の詳細
     コマンドまたはアクション目的
    ステップ 1 configure terminal


    例:
    switch# configure terminal
    switch(config)#
     

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

     
    ステップ 2interface type slot/port


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

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

     
    ステップ 3priority-flow-control mode {on}


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

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

     
    ステップ 4show 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 buffer-size buffer-size pause-threshold xoff-size resume-threshold xon-size pfc-cos 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 グループ値のリストに基づいてパケットを照合することによって、トラフィック クラスを設定します。 値の範囲は 0 ~ 5 です。 QoS グループ 0 は class-default に相当します。

       
      ステップ 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 c-nq1
      switch(config-pmap-nqos-c)#
       

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

      (注)     

      関連付けられるクラス マップには、ポリシー マップ タイプと同じタイプが必要です。

       
      ステップ 15 pause buffer-size buffer-size pause-threshold xoff-size resume-threshold xon-size pfc-cos cos-value


      例:
      switch(config-pmap-nqos-c)# pause buffer-size 20000 pause-threshold 100 resume-threshold 1000 pfc-cos 1
       

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

      • buffer-size buffer-size:入力トラフィックのバッファ サイズをバイト単位で指定します。 有効な値の範囲は 10240 ~ 490880 です。

        (注)     

        設定できる最大バッファ サイズは 143680 バイトです。

      • pause-threshold xoff-size:ポートがピアを一時停止するバッファ制限をバイト単位で指定します。 有効な値は 0 ~ 490880 です。

        (注)     

        設定できるポーズしきい値は最大 58860 バイトです。

      • resume-threshold xon-size:ポートがピアを再開するバッファ制限をバイト単位で指定します。 有効な値は 0 ~ 490880 です。

        (注)     

        設定できる再開しきい値は最大 38400 バイトです。

      • pfc-cos cos-value:PFC をアサートする CoS 値を指定します。 有効な値の範囲は 0 ~ 7 です。

        (注)     

        バッファ サイズを設定するときは、次の点に注意してください。

        • バッファ サイズはポーズしきい値より大きくする必要があります。また、ポーズしきい値は再開しきい値より大きくする必要があります。 この条件が満たされていないと、次のメッセージが表示されます。

          ERROR: buffer-size can't be less then pause/resume-threshold
        • ポーズしきい値と再開しきい値の差は、20480 バイト以上にする必要があります。 この条件が満たされていないと、次のメッセージが表示されます。

          Warning: The recommended difference between pause and resume threshold is 20480 bytes
        • ポーズしきい値は、再開しきい値より大きくする必要があります。 この条件が満たされていないと、次のメッセージが表示されます。

          ERROR: pause-threshold can't be less then resume-threshold
       
      ステップ 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
       

      システム レベルまたは特定のインターフェイスに network-qos タイプのポリシー マップを適用します。

       

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

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

      コマンド

      目的

      show interface priority-flow-control [module number]

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

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

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

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

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

      switch(config)# class-map type qos c1
      switch(config-cmap-qos)# match cos 3
      switch(config-cmap-qos)# exit
      switch(config)# policy-map type qos p1
      switch(config-pmap-qos)# class type qos c1
      switch(config-pmap-c-qos)# set qos-group 3
      switch(config-pmap-c-qos)# exit
      switch(config-pmap-qos)# exit
      switch(config)# class-map type network-qos match-any c1
      switch(config-cmap-nqos)# match qos-group 3
      switch(config-cmap-nqos)# exit
      switch(config)# policy-map type network-qos p1
      switch(config-pmap-nqos)# class type network-qos c-nq1
      switch(config-pmap-nqos-c)# pause buffer-size 20000 pause-threshold 100 resume-threshold
      1000 pfc-cos 3
      switch(config-pmap-nqos-c)# exit
      switch(config-pmap-nqos)# exit
      switch(config)# system qos
      switch(config-sys-qos)# service-policy type network-qos p1