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

リンク レベル フロー制御

リンク レベル フロー制御は、システムの輻輳が解決されるまでデータ送信を一時停止する輻輳管理技術です。受信デバイスが輻輳状態になると、PAUSE フレームを送信してトランスミッタと通信します。送信デバイスは、一時停止フレームを受信すると、それ以降のデータ フレームの送信を短時間停止します。リンク レベル フロー制御機能は、リンク上のすべてのトラフィックに適用されます。送受信方向は個別に設定できます。デフォルトでは、リンク レベル フロー制御は両方向でディセーブルです。

リンク レベル フロー制御のガイドラインと制限事項

リンク レベル フロー制御(LLFC)には、次の設定上のガイドラインと制約事項があります。

  • キーワードが付いているコマンドはサポートされていません。 show internal

  • FEX HIF または FEX HIF PO インターフェイスでの LLFC の変更または設定はサポートされていません。

  • ネットワーク転送エンジン(Network Forwarding Engine(NFE))(および NFE 搭載の Cisco Nexus 3164Q スイッチ)を搭載している Cisco Nexus 9500 プラットフォーム スイッチで LLFC はサポートされていません。

  • 100G Cisco Nexus 9408PC-CFP2 ライン カードは LLFC をサポートしていません。

  • イーサネット インターフェイスは LLFC 機能を自動検出しません。LLFC は明示的に設定する必要があります。

  • LLFC を有効にするには、バッファの一部を予約する必要があります。この予約により、使用可能な共有バッファ領域が減少します。

  • Data Center Bridging Exchange プロトコル(DCBX)はサポートされていません。

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

  • 各イーサネット インターフェイスで、スイッチは PFC または LLFC のいずれかをイネーブルにできますが、両方イネーブルにすることはできません。


    (注)  


    PFC と LLFC の両方がイネーブルの場合、LLFC が選択されます。


  • インターフェイスで LLFC を設定すると、インターフェイスがフラップし、一時的なトラフィック損失が発生します。

  • no-drop QoS グループを設定する場合は、フロー制御 send-on が設定されていないポートで受信したパケットが no-drop QoS グループに分類されないようにする必要があります。

  • 出力キューのドロップを引き起こす可能性があるため、no-drop クラスでは重み付けランダム早期検出(WRED)を有効にしないでください。

  • no-drop クラスにはデフォルトのバッファ サイズを使用することを推奨します。CLI を使用してバッファ サイズを指定すると、リンク速度と MTU サイズに関係なく、すべてのポートに同じバッファ サイズが割り当てられるためです。

  • トラフィックがない場合は LLFC 設定を変更することを推奨します。変更しないと、システムの MMU にすでに存在するパケットが予期された処理を行えない場合があります。

  • LLFC および PFC は、Cisco Nexus 9300-X クラウド スケール プラットフォーム スイッチおよび 9500 シリーズ クラウド スケール モジュラ スイッチでサポートされます。

  • 3232C は、カットスルー ポートと LLFC 対応ポートの組み合わせをサポートしていません。カットスルーと LLFC は相互に排他的であり、他の機能がなくても機能します。9.3(8) リリース後、カットスルーが有効になっているスイッチでは、LLFC がポートで有効になっている場合、そのポートはストア アンド フォワード モードで動作します。

  • Cisco NX-OS リリース 10.4(1)F 以降、LLFC は Cisco Nexus C9348GCFX3 でサポートされます。

  • Cisco NX-OS リリース 10.4(2)F 以降、LLFC は Cisco Nexus C93108TC-FX3 スイッチでサポートされています。

  • Cisco NX-OS リリース 10.4(1)F 以降、LLFC および LLFCWD 機能は Cisco Nexus C9348GC-FX3PH でサポートされません。

リンク レベル フロー制御に関する情報

インターフェイスのリンク レベル フロー制御

リンクレベルのフロー制御が設定されている場合、指定されたインターフェイスがアップ状態の場合、システムはインターフェイスの状態をダウンに変更し、フロー制御の設定を適用します。設定がインターフェイスに正常に適用されると、システムはインターフェイスを UP状態に復元します。

ポートのリンク レベル フロー制御

ポート シャットダウン イベントの間、インターフェイスのフロー制御設定は保持されますが、リンク上でトラフィックの送受信は行われません。ポートの起動イベント中に、フロー制御設定がハードウェアに復元されます。

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

送信方向と受信方向は別々に設定でき、ネットワーク上の各デバイスは異なるリンクレベルフロー制御(LLFC)設定を持つことができます。次の表に、設定が一致しないデバイスの相互作用を示します。

スイッチ A スイッチ B 説明

PAUSE フレームを送受信するように設定された LLFC。

PAUSE フレームを受信するように設定された LLFC。

スイッチ A は 802.3x PAUSE フレームを送信し、802.3x PAUSE フレームを処理できます。スイッチ B は、802.3x PAUSE フレームを受信のみできます。

PAUSE フレームを送受信するように設定された LLFC。

PAUSE フレームを送信するように設定された LLFC。

スイッチ A は 802.3x PAUSE フレームを送信し、802.3x PAUSE フレームを処理できます。スイッチ B は 802.3x PAUSE フレームを送信できますが、受信したすべての PAUSE フレームをドロップします。

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

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

手順の概要

  1. configure terminal
  2. interface ethernet 1/1
  3. flowcontrol receive on
  4. exit

手順の詳細

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

ステップ 1

configure terminal

例:


Device# configure terminal

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

ステップ 2

interface ethernet 1/1

例:


Device(config)# interface ethernet 1/1

インターフェイス タイプを設定し、インターフェイス コンフィギュレーション モードを開始します。

ステップ 3

flowcontrol receive on

例:


Device(config-if)# flowcontrol receive on

インターフェイスでのプロセス ポーズ フレームの受信をイネーブルにします。

ステップ 4

exit

例:

Device(config-if)# exit

インターフェイス コンフィギュレーション モードを終了します。

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

インターフェイスでリンクレベルフロー制御送信を設定するには、インターフェイスでフロー制御をイネーブルにし、ネットワーク QoS タイプの QoS ポリシーを設定して no-drop QoS グループをイネーブルにし、QoS タイプの QoS ポリシーを適用して必要なトラフィックを分類します。 no-drop 動作を no-drop クラスに追加します。

no-drop クラスを定義する場合は、キューイングポリシーを使用して、No-Drop QoS クラスに帯域幅が割り当てられていることを確認する必要があります。詳細については、「タイプキューイングポリシーの設定」を参照してください。


(注)  


no-drop QoS グループを設定する場合は、フロー制御 send-on が設定されていないポートで受信したパケットが no-drop QoS グループに分類されないようにする必要があります。これは、フロー制御 send-on が設定されておらず、リンクレベルのポーズフレームを生成できず、送信デバイスに送信を停止するように要求する方法がないため、必要です。したがって、すべてのインターフェイスでフロー制御送信が設定されていない場合は、システムポリシーを使用してパケットを no-drop QoS グループに分類しないでください。代わりに、フロー制御 send-on が有効になっているインターフェイスにインターフェイス QoS ポリシーを適用する必要があります。


手順の概要

  1. configure terminal
  2. interface ethernet 1/1
  3. flowcontrol send on
  4. exit

手順の詳細

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

ステップ 1

configure terminal

例:


Device# configure terminal

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

ステップ 2

interface ethernet 1/1

例:


Device(config)# interface ethernet 1/1

インターフェイス タイプを設定し、インターフェイス コンフィギュレーション モードを開始します。

ステップ 3

flowcontrol send on

例:


Device(config-if)# flowcontrol transmit on

インターフェイスがリモートデバイスにポーズフレームを送信できるようにします。

ステップ 4

exit

例:


Device(config-if)# exit

インターフェイス コンフィギュレーション モードを終了し、グローバル コンフィギュレーション モードに戻ります。

リンク レベル フロー制御ウォッチドッグ間隔の設定

リンク レベル フロー制御ウォッチドッグ(LLFCWD)は、デフォルトでグローバルに有効になっています。インターフェイス上で PFC および PFCWD が設定されると、インターフェイス上の LLFCWD が自動的にイネーブルになります。LLFC が設定されていない PFC/PFCWD 設定インターフェイスで LLFC パケットが検出されると、LLFC ウォッチドッグがトリガーされます。

PFCWD 間隔および PFCWD 乗数 CLI コマンドを使用して、LLFCWD 間隔および乗数を設定します。この手順を使用して、LLFC ウォッチドッグ間隔と、no-drop キューの復元に使用する乗数を設定します。


(注)  


LLFC ウォッチドッグを無効にするには、グローバル コンフィギュレーション モードで次のように入力します。

switch(config)# link-level-flow-control watch-dog interval off

始める前に

リンク レベル フロー制御ウォッチドッグ間隔を設定する前に、次の点を考慮してください。

  • リンク レベル フロー制御ウォッチドッグは、次の Cisco Nexus 9000 シリーズ プラットフォーム スイッチおよびライン カードでサポートされます。

    • N9K-C9232C

    • N9K-C9236C

    • N9K-C92304QC

    • N9K-X9736C-EX

    • N9K-X9732C-EX

    • N9K-X9732C-EXM

    • N9K-X97160YC-EX

    • N9K-C93180YC-FX3

    • N9K-C93108TC-FX3P

  • PFC はインターフェイスでイネーブルにする必要があります。PFCWD は、インターフェイスでグローバルに有効にする必要があります。LLFC を同じインターフェイスに設定しないでください。


    (注)  


    PFC ウォッチドッグは、コマンドを使用して、キューが「スタック」していることを示す syslog メッセージを送信します(priority-flow-control watch-dog-interval on disable-action )。このコマンドが PFC インターフェイスで呼び出された場合、キューはシャットダウンされず、代わりに syslog メッセージが生成されます。LLFC ウォッチドッグ機能が有効で、リンク レベルのフロー制御パケットがインターフェイスで受信されると、PFC ウォッチドッグの disable-action コマンドが有効になっている場合でも、キューは閉じられます。


  • 自動復元と固定復元を 0 に設定しないでください。

  • インターフェイスで LLFC が有効になっている場合、LLFC WD は無効になります。

手順の概要

  1. configure terminal
  2. priority-flow-control watch-dog interval value
  3. priority-flow-control auto-restore multiplier value
  4. (任意) show queuing llfc-queue [interface interface-list] [module module] [detail]
  5. (任意) clear queuing llfc-queue [interface interface-list] [module module]

手順の詳細

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

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

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

ステップ 2

priority-flow-control watch-dog interval value

例:

switch(config)# priority-flow-control watch-dog interval 200

ウォッチドッグ間隔値を指定します。指定できる範囲は 100 ~ 1000 ミリ秒です。

ステップ 3

priority-flow-control auto-restore multiplier value

例:

switch(config)# priority-flow-control auto-restore multiplier 50

自動復元乗数の値を設定します。範囲は 0 ~ 100 です。

(注)  

 

自動復元乗数は 0 に設定しないでください。

(注)  

 

LLFC ウォッチドッグ no-drop キューが復元されると、キューの状態を記録するシステム ロギング メッセージ エントリが作成されます。次に、メッセージの例を示します。

Error Message TAHUSD-SLOT#-2- TAHUSD_SYSLOG_LLFCWD_QUEUE_RESTORED : [chars]
Description : NO DROP Queue Restored due to LLFC WatchDog timer expiring message

ステップ 4

(任意) show queuing llfc-queue [interface interface-list] [module module] [detail]

例:

switch(config)# show queuing llfc-queue interface ethernet 1/1 detail
(任意)

LLFCWD 統計情報を表示します。この手順の最後にある出力例を参照してください。

ステップ 5

(任意) clear queuing llfc-queue [interface interface-list] [module module]

例:

switch(config)# clear queuing llfc-queue interface ethernet 1/1
(任意)

LLFCWD キューの統計情報をクリアします。

イーサネット 1/1 インターフェイス用の show queuing llfc-queue コマンドの出力に関する詳細を以下に示します。

switch# show queuing llfc-queue interf e 1/1 detail

slot  1
=======


+----------------------------------------------------+
Global watch-dog interval [Enabled]

+----------------------------------------------------+

+----------------------------------------------------+
Global LLFC watchdog configuration details

LLFC watchdog poll interval                 : 100 ms
LLFC watchdog auto-restore multiplier       : 10
LLFC watchdog fixed-restore multiplier      : 0
+----------------------------------------------------+

+----------------------------------------------------+
Ethernet1/1 Interface LLFC watchdog: [Enabled]
+----------------------------------------------------+
+----------------------------------------------------+
| QOS GROUP 6 [Active] LLFC [YES] LLFC-COS [6]
+----------------------------------------------------+
|                               |  Stats             |
+----------------------------------------------------+
|                       Shutdown|                   1|
|                       Restored|                   1|
|             Total pkts drained|                 554|
|             Total pkts dropped|            56093783|
|   Total pkts drained + dropped|            56094337|
|         Aggregate pkts dropped|            56094337|
|     Total Ingress pkts dropped|                   0|
| Aggregate Ingress pkts dropped|                   0|
+----------------------------------------------------+


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

例:ドロップなしポリシーの設定

ドロップなしポリシーの設定

次に、no-drop ポリシーを設定し、そのポリシーをセッション ポリシーに適用する例を示します。


Device# configure terminal
Device(config)# class-map type network-qos class1
Device(config-cmap-nq)# match qos-group 1
Device(config-cmap-nq)# policy-map type network-qos my_network_policy
Device(config-pmap-nq)# class type network-qos class1
Device(config-pmap-nq-c)# pause pfc-cos 2
Device(config-pmap-nq-c)# system qos
Device(config-sys-qos)# service-policy type network-qos my_network_policy
Device# show running ipqos

トラフィックのドロップなしクラスへの分類

すべてのトラフィックを no-drop クラスにマップする QoS ポリシーの作成方法の例を次に示します。


Device# configure terminal
Device(config)# class-map type qos class1
Device(config-cmap-qos)# match cos 2
Device(config-cmap-qos)# policy-map type qos my_qos_policy
Device(config-pmap-qos)# class type qos class1
Device(config-pmap-c-qos)# set qos-group 1
Device(config-pmap-c-qos)# interface e1/5
Device(config-sys-qos)# service-policy type qos input my_qos_policy
Device(config-sys-qos)# 

次の例に示すように、qos-group 1 の帯域幅を保証するキューイング ポリシーを system-qos の下に適用します。


policy-map type queuing my_queuing_policy
class type queuing c-out-q-default
bandwidth percent 1
class type queuing c-out-q3
bandwidth percent 0
class type queuing c-out-q2
bandwidth percent 0
class type queuing c-out-q1
bandwidth percent 99
  
system qos
  service-policy type queuing output my_queuing_policy

上記の例では、c-out-q1 はデフォルトで qos-group 1 のトラフィックと一致します。したがって、qos-group 1 に一致するキューイング用のデフォルト以外のクラスマップは必要ありません。キューイングの設定の詳細については、「キューイングの設定」を参照してください。

LLFC を有効にするには、network-qos で no-drop ポリシーを設定する必要があります。バッファリング モジュールは、一時停止(インターフェイス レベルの設定に基づいて LLFC または PFC)を生成するように MAC モジュールに通知する必要があります。アダプタへの PFC ネゴシエーションは、DCBX を使用します。LLFC または PFC は、インターフェイスの設定によって制御されます。たとえば、flow-control send and receive on はインターフェイスで LLFC をイネーブルにし、priority-flow-control mode on はインターフェイスで PFC をイネーブルにします。

DCBX がサポートされている場合、auto モードはアダプタと PFC をネゴシエートします。これは、LLFC または PFC をイネーブルにするインターフェイス レベルの設定ですが、LLFC が機能するためには、network-qos レベルのポーズ設定を設定する必要があります。トラフィックが qos-group 1 に分類されていても、一時停止が生成されると、インターフェイスレベルの設定に基づいて LLFC が生成されます。

例:リンク レベル フロー制御の送受信の設定

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

次に、デバイスでリンク レベル フロー制御の送受信を設定する例を示します。

  • LLFC 受信のみが有効な場合、no-drop クラスをシステム network-qos で設定する必要はありません。

    
    Device# configure terminal
    Device(config)# interface ethernet 1/1
    Device(config-if)# flowcontrol receive on
    Device(config-if)# exit
    
    
  • LLFC の受信と送信の両方が有効になっている場合は、システムネットワーク QoS で no-drop クラスを設定する必要があります。(no-drop クラスの設定については、「No-Drop ポリシーの設定」の例を参照してください)。

    
    Device# configure terminal
    Device(config)# interface ethernet 1/1
    Device(config-if)# flowcontrol receive on
    Device(config-if)# flowcontrol send on
    Device(config-if)# exit
    
    
  • LLFC 送信のみが有効な場合、no-drop クラスをシステム network-qos で設定する必要があります。(no-drop クラスの設定については、「No-Drop ポリシーの設定」の例を参照してください)。

    
    Device# configure terminal
    Device(config)# interface ethernet 1/1
    Device(config-if)# flowcontrol send on
    Device(config-if)# exit