Cisco Nexus 5600 シリーズ NX-OS Quality of Service コンフィギュレーション ガイド リリース 7.x
キューイングおよびフロー制御の設定
キューイングおよびフロー制御の設定

目次

キューイングおよびフロー制御の設定

この章の内容は、次のとおりです。

キューの概要

入力キューイング ポリシー

入力ポリシー マップをイーサネット インターフェイスに関連付けて、指定されたトラフィック クラスの帯域幅を確保したり、プライオリティ キューを指定したりできます。

アダプタの入力ポリシーは、指定された Cos 値と一致するすべての発信トラフィックに適用されます。

インターフェイスの入力ポリシーを設定すると、スイッチはアダプタに設定データを送信します。 アダプタが DCBX プロトコルや入力ポリシー Type-Length-Value(TLV)をサポートしていない場合、入力ポリシーの設定は無視されます。

出力キューイング ポリシー

出力ポリシー マップをイーサネット インターフェイスにアソシエートし、指定されたトラフィック クラスの帯域幅を保証したり、出力キューを設定したりできます。

帯域割り当ての制限は、FCoE トラフィックなど、インターフェイス上のすべてのトラフィックに適用されます。

イーサネット インターフェイスごとに最大 8 つのキュー(システム クラスごとに 1 つ)をサポートします。 キューには次のデフォルト設定があります。

  • これらのキューに加え、CPU に転送される制御トラフィックは完全プライオリティ キューを使用します。 ユーザ設定ではこのキューにはアクセスできません。

  • FCoE トラフィック(FCoE システム クラスにマッピングされるトラフィック)にキューが割り当てられます。 このキューは、帯域幅の 50% で重み付けラウンドロビン(WRR)スケジューリングを使用します。

  • デフォルトのドロップ システム クラスの標準イーサネット トラフィックにキューが割り当てられます。 このキューは、帯域幅の 100 % で WRR スケジューリングを使用します。

システム クラスを追加すると、キューがクラスに割り当てられます。 影響を受けたすべてのインターフェイスで帯域割り当てを再設定する必要があります。 帯域幅は、自動的にユーザ定義のシステム クラス専用にはなりません。

設定可能な完全プライオリティ キューは 1 つです。 このキューは、制御トラフィック キュー(データ トラフィックではなく制御トラフィックを伝送)以外の他のすべてのキューより先に処理されます。

Cisco Nexus デバイスのバッファとキューの制限

Cisco Nexus デバイスでは、ポートごとのパケット バッファは 640KB です。 ASIC 単位のすべてのポートでの入力は 16MB です。 ASIC 単位のすべてのポートでの出力は 9MB です。

Cisco Nexus デバイスには、ポートごとに次のデフォルトのバッファ割り当てがあります。

表 1 ポートごとの Cisco Nexus デバイスのデフォルトのバッファ割り当て

トラフィック クラス

入力バッファ サイズ(KB)

10G ポートに対する 300M の class-fcoe

161.25

40G ポートに対する 300M の class-fcoe

182.5

10G ポートに対する 3000A/300M の class-fcoe

412.5

40G ポートに対する 3000M の class-fcoe

1300

10G ポートに対する 300M のユーザ定義の no-drop

160

40G ポートに対する 300M のユーザ定義の no-drop

181.25

10G ポートに対する 3000M のユーザ定義の no-drop

411.875

40G ポートに対する 3000M のユーザ定義の no-drop

1298.125

デフォルトのバッファ割り当てはクラスのタイプによって異なります。 たとえば、通常のテール ドロップ トラフィック クラスを作成するときのデフォルトの割り当ては、queue-limit コマンドを使用して大規模なサイズを指定しない場合、22.7KB です。

network-qos policy-map から、user-created qos-group に使用可能な入力バッファ スペースを増やすには、queue-limit コマンドを使用します。

各ユーザ作成 qos-group に割り当てられる入力バッファに加えて、qos-group ごとに出力で必要になる追加の 28.6KB バッファがあります。

デフォルトの QoS 設定では、使用可能なすべてのバッファ(470KB)が class-default に割り当てられます。 新しい qos-group を作成すると、新しい qos-group に必要なバッファが class-default から削除されます。 class-default に残されるバッファ サイズは、470 から他の qos-group で使用される入力バッファを減算し、さらにそれから 28.6KB を減算したものに、qos-group の数を乗算したものと同じになります。


(注)  


各新規クラスにはさらに 28.6KB が必要になるため、class default に残っているバッファの正確な量は、478 から他の qos-group によって使用されるバッファを減算し、さらにそれから 18.880KB を減算したものに qos-group の数を乗算したものと同じになります。


Cisco Nexus デバイスのデフォルト QoS ポリシーは、class-fcoe を作成せず、FCoE トラフィック用にバッファおよび qos-group を予約しません。

show queuing interface コマンドは、qos-group ごとに割り当てられた入力バッファの量を表示できます。

フロー制御の概要

リンクレベル フロー制御

IEEE 802.3x リンクレベル フロー制御により、輻輳レシーバはリンクのもう一方の端にあるトランスミッタと通信して、短時間の間データの転送を停止できます。 リンクレベル フロー制御機能は、リンク上のすべてのトラフィックに適用されます。

送受信方向は個別に設定できます。 デフォルトでは、リンクレベル フロー制御は両方向でディセーブルです。

Cisco Nexus デバイスでは、イーサネット インターフェイスはリンクレベル フロー制御機能を自動検出しません。 イーサネット インターフェイスでこの機能を明示的に設定する必要があります。

各イーサネット インターフェイスで、スイッチはプライオリティ フロー制御またはリンクレベル フロー制御のいずれか(両方は不可)をイネーブルにできます。

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

プライオリティ フロー制御(PFC)により、ポーズ機能をリンク上のすべてのトラフィックではなく、リンク上の特定のトラフィック クラスに適用できます。 PFC は、IEEE 802.1p CoS 値に基づいて、ポーズ機能を適用します。 スイッチが PFC をイネーブルにすると、ポーズ機能を適用する CoS 値をアダプタに伝えます。

イーサネット インターフェイスは PFC を使用して、ロスレス サービスを no-drop システム クラスに提供します。 PFC はクラス単位でポーズ フレームを実装し、IEEE 802.1p CoS 値を使用してロスレス サービスを必要とするクラスを特定します。

スイッチにおいて各システム クラスには、関連付けられた IEEE 802.1p CoS 値があります。この CoS 値はデフォルトで割り当てられるか、システム クラスで設定されます。 PFC をイネーブルにすると、スイッチは no-drop CoS 値をアダプタに送信し、PFC をこれらの CoS 値に適用します。

FCoE システム クラスのデフォルトの CoS 値は 3 です。 この値は設定可能です。

デフォルトでは、スイッチは PFC 機能をイネーブルにするためのネゴシエーションを行います。 ネゴシエーションが成功すると、設定に関係なく、PFC はイネーブルになり、リンクレベル フロー制御はディセーブルのままです。 PFC ネゴシエーションに失敗した場合は、PFC をインターフェイスで強制的にイネーブルにするか、IEEE 802.x リンクレベル フロー制御をイネーブルにできます。

PFC をインターフェイスでイネーブルにしていない場合、IEEE 802.3X リンクレベル ポーズをイネーブルにできます。 デフォルトでは、リンクレベル ポーズはディセーブルです。

キューイングの設定

指定したファブリック エクステンダのキュー制限の設定

ファブリック エクステンダ コンフィギュレーション レベルで、出方向(ネットワークからホストへ)の指定ファブリック エクステンダのキュー制限を制御できます。 ファブリック エクステンダに低いキュー制限値を使用することにより、1 つのブロックされたレシーバが他の非輻輳レシーバに送信されるトラフィックに影響を与えること(「行頭ブロッキング」)を防止できます。 より高いキュー制限値では、バースト吸収が改善され、行頭ブロッキング保護が少なくなります。 ファブリック エクステンダがすべての使用可能なハードウェア領域を使用できるようにするには、このコマンドの no 形式を使用します。


(注)  


システム レベルで、fex queue-limit コマンドを使用してファブリック エクステンダのキュー制限を設定できます。 ただし、特定のファブリック エクステンダのキュー制限を設定すると、そのファブリック エクステンダのシステム レベルで設定されたキュー制限設定が上書きされます。


次のファブリック エクステンダのキュー制限を指定できます。

  • Cisco Nexus 2148T ファブリック エクステンダ(48x1G 4x10G SFP+ モジュール)

  • Cisco Nexus 2224TP ファブリック エクステンダ(24x1G 2x10G SFP+ モジュール)

  • Cisco Nexus 2232P ファブリック エクステンダ(32x10G SFP+ 8x10G SFP+ モジュール)

  • Cisco Nexus 2248T ファブリック エクステンダ(48x1G 4x10G SFP+ モジュール)

  • Cisco Nexus N2248TP-E ファブリック エクステンダ(48x1G 4x10G モジュール)

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

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

     
    ステップ 2 switch(config)# fex fex-id
     

    ファブリック エクステンダを指定し、ファブリック エクステンダ モードを開始します。

     
    ステップ 3 switch(config-fex)# hardware fex_card_type queue-limit queue-limit
     

    指定ファブリック エクステンダのキュー制限を設定します。 キュー制限はバイト単位で指定します。 有効な範囲は、Cisco Nexus 2148T ファブリック エクステンダの場合は 81920 ~ 652800、その他すべてのサポート対象のファブリック エクステンダの場合は 2560 ~ 652800 です。

     

    次に、Cisco Nexus 2248T ファブリック エクステンダのデフォルト キュー制限を復元する例を示します。

    switch# configure terminal
    switch(config-if)# fex 101
    switch(config-fex)# hardware N2248T queue-limit 327680

    次に、Cisco Nexus 2248T ファブリック エクステンダ上でデフォルトで設定されているキュー制限を削除する例を示します。

    switch# configure terminal
    switch(config)# fex 101
    switch(config-fex)# no hardware N2248T queue-limit 327680

    no-drop バッファしきい値の設定

    3000m ロスレス イーサネットの no-drop バッファしきい値を設定できます。


    (注)  


    両方向でロスレス イーサネットを実現するためには、Cisco Nexus デバイスに接続されているデバイスに同様の機能が必要です。 no-drop 用のデフォルトのバッファおよびしきい値により、最大 300 メートルまでロスレス イーサネットを保証できます。
    手順
       コマンドまたはアクション目的
      ステップ 1switch# configure terminal  

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

       
      ステップ 2 switch(config)# policy-map type network-qos policy-map name
       

      policy-map network-qos クラス モードを開始し、type network-qos ポリシー マップに割り当てられたポリシー マップを特定します。

       
      ステップ 3 switch(config-pmap-nq)# class type network-qos class-map name
       

      ポリシー マップの既存のネットワーク QoS クラス マップを参照し、クラス モードを開始します。

       
      ステップ 4 switch(config-pmap-nq-c)# pause no-drop buffer-size buffer-size pause-threshold xoff-size resume-threshold xon-size
       

      3000m ロスレス イーサネットの一時停止および再開のためのバッファしきい値設定を指定します。

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

      • pause-threshold:ポートがピアを一時停止するバッファ制限を指定します。

      • xoff-size:一時停止するバッファ制限を表すバイト数。 有効な値の範囲は 0 ~ 490880 です。

      • resume-threshold:ポートがピアを再開するバッファ制限を指定します。

      • xon-size:再開するバッファ制限を表すバイト数。 有効な値の範囲は 0 ~ 490880 です。

       
      ステップ 5 switch(config-pmap-nq-c)# no pause no-drop buffer-size buffer-size pause-threshold xoff-size resume-threshold xon-size
       
      (任意)

      3000m ロスレス イーサネットの一時停止および再開のためのバッファしきい値設定を削除します。

       
      ステップ 6 switch(config-pmap-nq-c)# exit
       

      クラス モードを終了します。

       
      ステップ 7 switch(config-pmap-nq)# exit
       

      policy-map network-qos モードを終了します。

       

      次に、3000 メートルの Cisco Nexus デバイスに対する no-drop バッファしきい値の設定方法を示します。

      switch(config-pmap-nq)# policy-map type network-qos nqos_policy
      switch(config-pmap-nq)# class type network-qos nqos_class
      switch(config-pmap-nq-c)# pause no-drop buffer-size 152000 pause-threshold 103360 resume-threshold 83520 
      switch(config-pmap-nq-c)# exit
      switch(config-pmap-nq)# exit
      switch(config)# exit
      switch#
      

      Cisco Nexus 2148T ファブリック エクステンダのバッファしきい値の設定

      ファブリック エクステンダ コンフィギュレーション モードで、Cisco Nexus 2148T ファブリック エクステンダのバッファしきい値を設定できます。 バッファしきい値は、出力キューにテール ドロップしきい値の観測を開始するように指示が送信される前に、入力バッファの消費レベルを設定します。 バッファ使用量が設定されたバッファしきい値よりも低い場合、テール ドロップしきい値は無視されます。

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

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

         
        ステップ 2 switch(config)# fex fex-id
         

        ファブリック エクステンダを指定し、ファブリック エクステンダ モードを開始します。

         
        ステップ 3 switch(config-fex)# hardware N2148T buffer-threshold buffer limit
         

        Cisco Nexus 2148T ファブリック エクステンダのバッファしきい値を設定します。 バッファしきい値はバイト単位で指定します。 有効な範囲は、Cisco Nexus 2148T ファブリック エクステンダの場合、81920 ~ 316160 です。

         

        次に、Cisco Nexus 2148T ファブリック エクステンダのバッファしきい値をデフォルトに戻す例を示します。

        switch# configure terminal
        switch(config)# fex 101
        switch(config-fex)# hardware N2148T buffer-threshold 163840

        次に、Cisco Nexus 2148T ファブリック エクステンダのデフォルトのバッファしきい値を削除する例を示します。

        switch# configure terminal
        switch(config)# fex 101
        switch(config-fex)# no hardware N2148T buffer-threshold

        Cisco Nexus デバイスでのユニキャスト トラフィックの仮想出力キュー制限のイネーブル化

        ユニキャスト トラフィックの仮想出力キュー(VOQ)の制限をイネーブルにできます。 輻輳とブロッキングを軽減するために、VOQ を使用して、1 つのブロックされたレシーバが、他の非輻輳ブロッキング レシーバに送信されるトラフィックに影響を与えることを防止します。

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

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

           
          ステップ 2 switch(config)# hardware unicast voq-limit
           

          ユニキャスト トラフィックの VOQ 制限をイネーブルにします。 デフォルトでは無効になっています。

           
          ステップ 3 switch(config)# no hardware unicast voq-limit
           

          ユニキャスト トラフィックの VOQ 制限をディセーブルにします。

           
          次に、スイッチ上でユニキャスト パケットに対する VOQ 制限をイネーブルにする例を示します。
          switch(config)# hardware unicast voq-limit
          switch(config)#
          

          フロー制御の設定

          リンクレベル フロー制御

          IEEE 802.3x リンクレベル フロー制御により、輻輳レシーバはリンクのもう一方の端にあるトランスミッタと通信して、短時間の間データの転送を停止できます。 リンクレベル フロー制御機能は、リンク上のすべてのトラフィックに適用されます。

          送受信方向は個別に設定できます。 デフォルトでは、リンクレベル フロー制御は両方向でディセーブルです。

          Cisco Nexus デバイスでは、イーサネット インターフェイスはリンクレベル フロー制御機能を自動検出しません。 イーサネット インターフェイスでこの機能を明示的に設定する必要があります。

          各イーサネット インターフェイスで、スイッチはプライオリティ フロー制御またはリンクレベル フロー制御のいずれか(両方は不可)をイネーブルにできます。

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

          デフォルトでは、イーサネット インターフェイスは、DCBX プロトコルを使用してネットワーク アダプタと PFC についてネゴシエーションします。 PFC がイネーブルの場合、PFC は、no-drop クラスに設定された CoS 値と一致するトラフィックに適用されます。

          インターフェイスの PFC を強制的にイネーブルにすることで、ネゴシエーション結果を上書きできます。

          Cisco NX-OS Release 5.0(3)N1(1) から、レイヤ 2 またはレイヤ 3 インターフェイスのプライオリティ フロー制御を設定できます。


          (注)  


          インターフェイスをレイヤ 3 インターフェイスとして設定するには、no switchport コマンドを使用します。


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

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

             
            ステップ 2 switch(config)# interface type slot/port
             

            変更するインターフェイスを指定します。

            (注)     

            これが 10G ブレークアウト ポートの場合、slot/port 構文は slot/QSFP-module/port になります。

             
            ステップ 3 switch(config-if)# no switchport
             
            (任意)

            レイヤ 3 インターフェイスを選択します。

             
            ステップ 4 switch(config-if)# priority-flow-control mode {auto | on}
             

            選択したインターフェイスの PFC モードを設定します。

            PFC 機能についてネゴシエーションを行うには、auto を指定します。 これはデフォルトです。

            PFC を強制的にイネーブルにするには、on を指定します。

             
            ステップ 5 switch(config-if)# no priority-flow-control mode on
             
            (任意)

            選択したインターフェイスの PFC 設定をディセーブルにします。

             

            次に、インターフェイス上で PFC を強制的にイネーブルにする例を示します。

            switch# configure terminal
            switch(config)# interface ethernet 1/2
            switch(config-if)# priority-flow-control mode on
            

            次に、どのようにレイヤ 3 インターフェイスで PFC を強制的にイネーブルにする例を示します。

            switch# configure terminal
            switch(config)# interface ethernet 1/5
            switch(config-if)# no switchport
            switch(config-if)# priority-flow-control mode on
            

            リンクレベル フロー制御の設定

            イーサネット インターフェイスの LLC は、デフォルトでディセーブルです。 送受信方向で LLC をイネーブルにできます。

            レイヤ 2 またはレイヤ 3 インターフェイスにフロー制御を設定できます。


            (注)  


            インターフェイスをレイヤ 3 インターフェイスとして設定するには、no switchport コマンドを使用します。


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

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

               
              ステップ 2 switch(config)# interface type slot/port
               

              変更するインターフェイスを指定します。

              (注)     

              これが 10G ブレークアウト ポートの場合、slot/port 構文は slot/QSFP-module/port になります。

               
              ステップ 3 switch(config-if)# no switchport
               
              (任意)

              レイヤ 3 インターフェイスを選択します。

               
              ステップ 4 switch(config-if)# flowcontrol [receive {on | off}] [transmit {on | off}]
               

              選択されたインターフェイスの LLC をイネーブルにします。 receive および transmiton または off を設定します。

               
              ステップ 5 switch(config-if)# no flowcontrol [receive {on | off}] [transmit {on | off}]
               
              (任意)

              選択されたインターフェイスの LLC をディセーブルにします。

               

              次に、インターフェイス上で LLC をイネーブルにする例を示します。

              switch# configure terminal
              switch(config)# interface ethernet 1/2
              switch(config-if)# flowcontrol receive on transmit on
              

              次に、レイヤ 3 インターフェイスで LLC をイネーブルにする例を示します。

              switch# configure terminal
              switch(config)# interface ethernet 1/4
              switch(config-if)# no switchport
              switch(config-if)# flowcontrol receive on transmit on
              

              キューおよびフロー制御設定の確認

              設定を確認するには、次のいずれかのコマンドを使用します。

              コマンド

              目的

              show queuing interface [interface slot/\port]

              キューの設定および統計情報を表示します。

              (注)     

              これが 10G ブレークアウト ポートの場合、slot/port 構文は slot/QSFP-module/port になります。

              show interface flowcontrol [module numbef ]

              すべてのインターフェイスでフロー制御設定の詳細なリストを表示します。

              show interface [interface slot/port] priority-flow-control [module number]

              指定されたインターフェイスのプライオリティ フロー制御詳細を表示します。

              (注)     

              これが 10G ブレークアウト ポートの場合、slot/port 構文は slot/QSFP-module/port になります。

              show wrr-queue cos-map [var]

               

              running-config ipqos

              QoS の実行コンフィギュレーションに関する情報を表示します。

              startup-config ipqos

              QoS のスタートアップ コンフィギュレーションに関する情報を表示します。