概要

このドキュメントでは、Nexus 5000 スイッチのログに「FWM-2-STM_LOOP_DETECT」のエラー メッセージがあった場合の解決方法について説明します。

Nexus 5000 スイッチのログに「FWM-2-STM_LOOP_DETECT」というメッセージが表示されるときの処理方法

%FWM-2-STM_LOOP_DETECT: Loops detected in the network among ports

Eth x/y and Eth x/y vlan xx -

Disabling dynamic learn notifications for 180 seconds

%FWM-2-STM_LEARNING_RE_ENABLE: Re enabling dynamic learning on all interfaces

このメッセージは、スイッチがこれら 2 つのインターフェイスで同じ送信元の MAC アドレスを持つフレームを受信し、これらのインターフェイスで同じ MAC アドレスを高速で認識することを示してます。 スイッチはこれをループとして検出します。 スイッチは、コントロール プレーンを保護するために MAC アドレス ラーニングを無効にします。 アドレス ラーニングの無効化は、ループが 1 つの VLAN だけに発生した場合でも、すべての VLAN で実行されます。

考えられる原因

- 不正なスパニング ツリー プロトコル（STP）ポート ステート コンバージェンスのため、MAC アドレスが移動する。

- STP ステートがコンバージされて正しい状態にあるときに、データの送信元がすべてのスイッチを物理的に横断していることが原因で、MAC アドレスが移動します。

- MAC アドレスはインターフェイスの間でサーバネットワーク インターフェイス カード（NIC）が/ボンディングのために団結設定されるが、接続されたスイッチ インターフェイスは設定しません場合移動できます。 これは両端のインターフェイスを結ぶために Link Aggregation Control Protocol （LACP）を使用すればまたは設定します「アクティブ/スタンバイ な」モードで NIC を使用するためにサーバ インターフェイスをことができます避ける。

ループの検出方法

フォワーディング マネージャ（FWM）には、MAC の移動回数をカウントし、MAC アドレスの移動回数に基づいてその重み付けをする機能があります。 これにより、MAC の移動回数の合計（すべての VLAN、MAC、インターフェイスでのスイッチ全体）が出て、%FWM-2-STM_LOOP_DETECT が宣言され、ループ状態の FWM を保護するためにラーニングが無効になります。

しきい値の計算方法： 指定された時系列スキャン期間（10 秒間）にスイッチ全体で 28,000 回の MAC 移動回数。 これで %FWM-2-STM_LOOP_DETECT と宣言され、ラーニングが無効になります。

メッセージ例

2011 Jan 30 16:14:23 Nexus-5000 %FWM-2-STM_LOOP_DETECT:

Loops detected in the network among ports Eth119/1/13 and Po90 vlan 218 -

Disabling dynamic learn notifications for 180 seconds

2011 Jan 30 16:17:23 Nexus-5000 %FWM-2-STM_LEARNING_RE_ENABLE:

Re enabling dynamic learning on all interfaces

MAC 移動通知のロジックに注意する必要があります。 MAC 移動の MAC アドレス テーブルの通知が有効の場合、MAC 移動が通知される可能性があります。 これによりコンソールの通知ログが追加されますが、アクションは実行されません。 移動が宣言されるのは、10 秒間の時系列スキャン期間内に VLAN の任意の 2 つのポート間で特定の MAC アドレスが 3 回行き来（移動）した場合です。

トラブルシューティング

スイッチの MAC アドレス通知を有効にすると、どの MAC アドレスが移動するかを見つけることができます。

Nexus-5000# conf t

Nexus-5000(config)# mac address-table notification mac-move

Nexus 5000 スイッチでは、MAC 移動通知に関する syslog メッセージを生成するために、MAC 移動通知を有効にするだけでは、必ずしも十分ではありません。

syslog メッセージが確実に生成されるようにするには、前のコマンドと一緒に次のコマンドを入力します。

Nexus-5000# conf t

Nexus-5000(config)# Logging level spanning-tree 6

Nexus-5000(config)# Logging level fwm 6

Nexus-5000(config)# Logging monitor 6

これらのコマンドを追加すると、MAC アドレス移動がある場合に FWM 検出が syslog に必ず表示されます。

VLAN 全体でスイッチの STP ポート ステートを検証するには、次のコマンドを入力します。

Nexus-5000# show spanning-tree

Nexus-5000# show spanning-tree vlan <id>

Nexus-5000# show spanning-tree internal interaction

例

MAC アドレスが移動したかどうかを確認するには、次のコマンドを入力します。

Nexus-5000# show mac address-table notification mac-move

MAC Move Notify Triggers: 1206

Number of MAC Addresses added: 944088

Number of MAC Addresses moved: 265

Number of MAC Addresses removed: 943920

どの MAC アドレスが移動したかを表示するには、MAC アドレスの移動も記録される最小ロギング レベルであるレベル 6 が必要です。

2012 Jun 12 16:05:31.564 Nexus-5000 %FWM-6-MAC_MOVE_NOTIFICATION:

Host 0000.0000.fe00 in vlan 85 is flapping between

port Eth104/1/8 and port Eth104/1/9

解決策

- 正しい STP コンバージェンスを確認し、関係図内のすべてのスイッチで STP ポートステートをチェックします。 また、競合がないこと、および不適切なポート ステートがないことも確認します。

- 物理的に移動しているデータ フレームの送信元を特定したら、高速で連続的な移動を停止するために送信元を制御します。

- デフォルトでは、動的なラーニングは 180 秒後に再度有効になります。 その時点で、すべての STP 競合または不整合は解決されている必要があります。 そうでない場合、動的なラーニングは再度、無効になります。

Nexus 5000 スイッチの関連する機能拡張

Cisco Bug ID CSCug28099 - Enh: Nexus 5000 でループの検出後にポートを無効にするためのノブ。

ここでは古いコード（6.0(2)N2(1) より前）での現行の動作を説明します。

ループ メッセージ（FWM-2-STM_LOOP_DETECT: Loops detected in the network among ports <port_id> and <po_id> vlan >vlan_id> - Disabling dynamic learn notifications for 180 seconds）が検出されると、ループ検出から 120 秒後に、MAC アドレス テーブル全体をエージングするのではなく、すべての MAC アドレスを急速にエージ アウトしてから、再学習してください。 この動作のため、120 秒間は新しい MAC アドレスを学習しませんが、ループが常に存在している場合、すべての VLAN から MAC アドレスを急速にエージングするため、ネットワークに重大な影響を及ぼすことがあります。

この機能拡張は、ループ検出後に完全な停止を回避するため、スイッチが当該ポート（ループが検出されたポート）をシャットダウンする CLI ノブを導入する目的で適用されました。

バージョン 6.0(2)N2(1) 以降のコードに導入されているコマンドを次に示します。

swo2-371(config)# mac address-table loop-detect ?

port-down  Take port-down action for mac loop detection

swo2-371(config)# mac address-table loop-detect port-down

swo2-371(config)# no mac address-table loop-detect port-down