はじめに
このドキュメントでは、Nexus 9000でMAC移動が発生した場合のトラブルシューティング方法とその防止方法について説明します。
前提条件
背景説明
2018 Nov 14 15:53:26.943 N9K %-SLOT1-5-BCM_L2_LEARN_DISABLE: MAC Learning Disabled unit=0
2018 Nov 14 15:53:27.769 N9K %-SLOT1-5-BCM_L2_LEARN_ENABLE: MAC Learning Enabled unit=0
スイッチがフレームを受信し、そのフレームを受信したLANポートに送信側のMACアドレスを関連付けるときに、MACラーニングの概念と、スイッチ上でテーブルを維持する方法について理解します。ループ状態では、スイッチ上の2つの異なるポートを介して同じMACが学習されることがあります。
トポロジ
+-----------+ Po6 +------------+
| N9K_1 +----------+ N9K_2 |
| +----------+ |
+-----------+ +--+---------+
1/3 | | 2/1
| |
| |
+-+---------------+--+
| Server |
+--------------------+
0000.117d.e02e
トラブルシューティング方法
BCM ASICが短期間に大量のMACアドレスを学習すると、BCM_USDはハードウェアでMACラーニングを無効/有効にでき、次のメッセージが表示されます。これは、mac-moves/flaps/loopsが多すぎる場合、または新しいmacが特定のしきい値を学習/移動した場合に発生する可能性があります。デフォルトでは、Nexus9Kでは、スイッチでmac-movesが発生していることを具体的に示すログは表示されません。ただし、これらの動きが大きい場合は、これらのログが表示されます。
2018 Nov 14 15:53:26.943 N9K %-SLOT1-5-BCM_L2_LEARN_DISABLE: MAC Learning Disabled unit=0
2018 Nov 14 15:53:27.769 N9K %-SLOT1-5-BCM_L2_LEARN_ENABLE: MAC Learning Enabled unit=0
2018 Nov 14 15:53:27.863 N9K %-SLOT1-5-BCM_L2_LEARN_DISABLE: MAC Learning Disabled unit=0
2018 Nov 14 15:53:28.770 N9K %-SLOT1-5-BCM_L2_LEARN_ENABLE: MAC Learning Enabled unit=0
これらのメッセージは、MACテーブル内のイベントを示しています。環境内でMACの移動が継続的に発生している場合は、これらのメッセージが表示される可能性があります。基本的に、スイッチは非常に高いレートで2つ以上のインターフェイスで同じ送信元MACを持つフレームを受信しました。スイッチには、MACの移動回数をカウントし、MACアドレスの移動回数に基づいて重み付けするメカニズムがあります。コントロールプレーンを保護するために、スイッチによってダイナミックMACラーニングが無効にされます。
この時点で、mac-moveのカウントをチェックして、デバイスでmac-moveが発生しているかどうか、および発生した回数を確認できます。
N9K# sh mac address-table notification mac-move
MAC Move Notify Triggers: 1
Number of MAC Addresses added: 612336
Number of MAC Addresses moved: 612328
Number of MAC Addresses removed: 0
Number of MAC Addresses movedの出力は、スイッチでmac-movesが発生していることを示しています。
コンフィギュレーション
次に明らかなのは、この問題を引き起こしているMACアドレス、VLAN、およびこれが発生しているインターフェイス情報を見つけることです。この情報を探すには、N9KプラットフォームでL2FMのログレベルをデフォルト値の2から5に上げる必要があります。
N9K# sho logging level l2fm
Facility Default Severity Current Session Severity
-------- ---------------- ------------------------
l2fm 2 2
0(emergencies) 1(alerts) 2(critical)
3(errors) 4(warnings) 5(notifications)
6(information) 7(debugging)
N9K# conf t
Enter configuration commands, one per line. End with CNTL/Z.
N9K(config)# logging level l2fm 5
N9K(config)# end
N9K# sho logging level l2fm
Facility Default Severity Current Session Severity
-------- ---------------- ------------------------
l2fm 2 5
0(emergencies) 1(alerts) 2(critical)
3(errors) 4(warnings) 5(notifications)
6(information) 7(debugging)
Any mac moves at this point can be seen in the syslogs:
2018 Nov 14 16:04:23.881 N9K %L2FM-4-L2FM_MAC_MOVE2: Mac 0000.117d.e02e in vlan 741 has moved between Po6 to Eth1/3
2018 Nov 14 16:04:23.883 N9K %L2FM-4-L2FM_MAC_MOVE2: Mac 0000.117d.e02e in vlan 741 has moved between Po6 to Eth1/3
このような場合、MACアドレスがあるポートから別のポートに移動する回数を検出して制限できます。
Cisco NX-OSリリース6.0(2)U3(1)までは、2つのポート間でループが検出されると、MACラーニングが180秒間無効でした。
ただし、7.0(3)I7(3)以降では、mac address-table loop-detect port-downコマンドを使用してループが検出された場合に、インターフェイスインデックスの低いポートをダウンさせるようにスイッチを設定できるようになりました。
N9K# conf t
Enter configuration commands, one per line. End with CNTL/Z.
N9K(config)# mac address-table loop-detect port-down
N9K(config)# exit
N9K#
このコマンドをイネーブルにした後にさらにループ検出を行うと、インターフェイスインデックスの小さいインターフェイスがダウンします。
2018 Nov 13 19:33:54.773 N9K %ETHPORT-5-IF_DOWN_NONE: Interface port-channel6 is down (None)
2018 Nov 13 19:33:59.046 N9K %ETH_PORT_CHANNEL-5-PORT_DOWN: port-channel6: Ethernet2/1 is down
2018 Nov 13 19:33:59.049 N9K %ETH_PORT_CHANNEL-5-PORT_DOWN: port-channel6: Ethernet2/2 is down
2018 Nov 13 19:33:59.166 N9K %ETH_PORT_CHANNEL-5-FOP_CHANGED: port-channel6: first operational port changed from Ethernet2/1 to none
2018 Nov 13 19:33:59.235 N9K %ETHPORT-5-IF_DOWN_ERROR_DISABLED: Interface port-channel6 is down (Error disabled. Reason:error)
2018 Nov 13 19:33:59.244 N9K %ETHPORT-5-IF_DOWN_CFG_CHANGE: Interface Ethernet2/2 is down(Config change)
2018 Nov 13 19:33:59.252 N9K %ETHPORT-5-IF_DOWN_CFG_CHANGE: Interface Ethernet2/1 is down(Config change)
2018 Nov 13 19:34:05.269 N9K %ETHPORT-5-IF_DOWN_CHANNEL_ERR_DISABLED: Interface Ethernet2/2 is down (Channel error disabled)
2018 Nov 13 19:34:05.303 N9K last message repeated 1 time
2018 Nov 13 19:34:05.303 N9K %ETHPORT-5-IF_DOWN_CHANNEL_ERR_DISABLED: Interface Ethernet2/1 is down (Channel error disabled)
確認
このコマンドを使用して、現在設定されているアクションを確認します。
N9K# show mac address-table loop-detect
Port Down Action Mac Loop Detect : disabled
インターフェイスのインデックスを確認して、機能に応じて正しいインターフェイスが無効になっているかどうかを確認できます。
N9K# show system internal l2fm l2dbg macdb address 0000.117d.e02e vlan 741
Legend
------
Db: 0-MACDB, 1-GWMACDB, 2-SMACDB, 3-RMDB, 4-SECMACDB 5-STAGEDB
Src: 0-UNKNOWN, 1-L2FM, 2-PEER, 3-LC, 4-HSRP
5-GLBP, 6-VRRP, 7-STP, 8-DOTX, 9-PSEC 10-CLI 11-PVLAN
12-ETHPM, 13-ALW_LRN, 14-Non_PI_MOD, 15-MCT_DOWN, 16 - SDB
17-OTV, 18-Deounce Timer, 19-AM, 20-PCM_DOWN, 21 - MCT_UP
22-VxLAN, 23-L2RIB 24-CTRL, 25-UFDM
Slot:0 based for LCS 31-MCEC 20-OTV/ORIB
VLAN: 741 MAC: 0000.117d.e02e
Time If/swid Db Op Src Slot FE
Wed Nov 14 16:04:28 2018 0x16000005 0 UPDATE 3 0 0
Wed Nov 14 16:04:28 2018 0x16000005 0 REFRESH_DETECT 3 0 15
Wed Nov 14 16:04:28 2018 0x1a000400 0 UPDATE 3 0 0
Wed Nov 14 16:04:28 2018 0x1a000400 0 REFRESH_DETECT 3 0 15
Wed Nov 14 16:04:28 2018 0x16000005 0 UPDATE 3 0 0
N9K# show int snmp-ifindex
--------------------------------------------------------------------------------
Port IFMIB Ifindex (hex)
--------------------------------------------------------------------------------
mgmt0 83886080 (0x5000000 )
Eth1/1 436207616 (0x1a000000)
Eth1/2 436208128 (0x1a000200)
Eth1/3 436208640 (0x1a000400)
<snip>
Po6 369098757 (0x16000005)
その他のプラットフォーム
次のコマンドを使用して、他のNexusプラットフォームでMAC移動通知を有効にできます。
N3K:
mac address table notification mac-move
logging level fwm 6
logging monitor 6
N5K/N6K:
mac address table notification mac-move
logging level fwm 6
logging monitor 6
N7K/N9K:
logging level l2fm 5
IOS:
mac address table notification mac-move
Note: To revert/remove these commands, simply use the `no` version of each command.
ポートをシャットダウンするために、バージョン6.0(2)N2(1)以降が稼働するNexus5K/6Kでは、次のコマンドも使用できます。
N5K(config)# mac address-table loop-detect ?
port-down Take port-down action for mac loop detection
N5K(config)# mac address-table loop-detect port-down
Further, the following command is available on the platform to err-disable the edge-port on the MAC move loop detection,
N5K(config)# mac address-table loop-detect port-down edge-port
Nexus 3000のNX-OSリリース6.0(2)A8(1)では、このようなループが検出されたときに、インターフェイスインデックスの低いポートをダウンさせるアクションを設定できます。
N3K(config)# mac address-table loop-detect ?
port-down Take port-down action for mac loop detection
N3K(config)# mac address-table loop-detect port-down
The following command is available on this platform as well, to err-disable the edge-port on the MAC move loop detection,
N5K(config)# mac address-table loop-detect port-down edge-port
関連情報