本文档介绍如何对MAC地址抖动通知错误进行故障排除。
当交换机检测到网络上的MAC地址摆动事件时,就会生成此通知消息。
当交换机获知同一个MAC地址源且在短时间内位于两个不同接口上时,会检测到MAC地址抖动事件。
当在多个交换机端口上检测到同一MAC地址时,Cisco Catalyst交换机会发出通知,从而导致交换机不断更改与该MAC地址关联的端口。通过此系统日志的此警报包含主机的MAC地址、VLAN以及摆动的MAC地址之间的端口。鉴于此行为可能是由于多种原因造成的,因此确定MAC地址抖动的根本原因对于确保网络的稳定性和性能至关重要。
SW_MATM-4-MACFLAP_NOTIF
Example: Apr 26 12:27:55 Switch-1 %SW_MATM-4-MACFLAP_NOTIF: Host **0011.2233.4455** in vlan **10** is flapping between port **Gi1/0/10** and port **Po1**.
检查这些消息以确定MAC地址移动是由预期漫游行为、冗余系统MAC移动、EtherChannel不一致还是第2层转发环路造成的。
导致此错误的原因可能有多种,有些可能表明存在严重的网络问题。
常见原因包括:
无线客户端移动通常是预期的,并且通常可以忽略不计(假设未观察到任何服务影响)。在未使用CAPWAP的AP之间漫游回无线控制器,或在由两个不同的无线控制器控制的AP之间漫游的客户端可能会生成此日志。为同一MAC地址生成的日志之间的时间可以相隔几秒或几分钟。如果您看到单个MAC地址每秒钟移动多次,则可能表示存在更严重的问题,并且可能需要额外的故障排除。
某些处于主用/备用状态的冗余系统或设备可以共享一个通用虚拟IP和MAC地址,而且在任何时间点只有主用设备使用它。如果两台设备意外变为活动状态,并且都开始使用虚拟地址,则会出现此错误。使用日志中提到的接口并运行show mac address-table address <mac-address> vlan <vlan-id>命令,通过网络跟踪此MAC地址的路径,以确定当前获取MAC地址的位置以及哪些设备正在从共享MAC地址生成流量。记录系统日志消息中报告的MAC地址、VLAN和接口,然后在路径中的每台交换机上运行命令。使用CDP、LLDP、接口描述或网络图来确定下一个连接的设备,并继续跟踪MAC地址,直到确定源设备为止。根据生成MAC地址移动的设备,可能需要对其冗余状态进行其他故障排除。
MAC地址抖动通知的常见原因是EtherChannel或端口通道配置错误。如果交换机报告一个MAC地址,在预期属于EtherChannel的物理链路之间重复移动,这强烈表明EtherChannel未成功建立或两端形成不一致。在这种情况下,一台设备可以将接口视为独立的物理链路,而另一端的设备则通过它们将流量作为单个逻辑捆绑进行转发。
例如,如果一台交换机配置为使用LACP,而对等交换机配置为静态EtherChannel模式,或者LACP协商由于其他原因失败,则可能会发生这种情况。在Cisco IOS或Cisco IOS XE Catalyst交换机上,当LACP协商失败时,接口不会形成端口通道。根据平台、软件版本和配置的不同,非捆绑接口可以保持作为单个接口的操作状态,也可以置于挂起状态。如果多个独立链路保持转发状态,交换机可以连续重新获取不同端口上的同一源MAC地址并生成MAC抖动通知。
当连接两端之间的EtherChannel配置不一致时,也会发生MAC抖动事件。同一MAC地址可能会在物理接口和逻辑端口通道接口之间移动,也可能在预期捆绑但配置不一致的链路之间移动。对此情况进行故障排除时,验证两台设备是否具有匹配的EtherChannel设置,包括捆绑模式,例如LACP、PAgP或静态模式。分配给端口通道的相应成员链路、一致的第2层参数(如中继或接入模式)、VLAN成员资格、本征VLAN和允许的VLAN列表。如果EtherChannel不一致是根本原因,确保正确协商EtherChannel并且两端具有匹配的EtherChannel和第2层配置可以消除这些MAC地址抖动事件。
第2层环路通常会在短时间内生成重复的MAC地址移动消息,通常伴随着高输入数据包速率、协议不稳定性和用户流量影响。日志通常可用于单个或少量MAC地址,并且用户可能会受到网络的影响。路由协议和第2层协议经常发生故障,从而导致生成额外的日志和一般的不稳定性。
要排除L2环路故障,请运行show interface | include is up|input rate命令,请注意所有显示每秒输入数据包数量极高的活动接口(通常来说,根据接口的速度,这可以是大的6、7或8位数)。
很可能只有1个或2个接口具有异常高的输入速率。在跟**环路路径时**使用输入数据包速率)作为主数据点。在验证期间,使用生成树拓扑更改(TCN)、根网桥状态、阻塞端口和不一致端口作为支持数据。识别高输入接口后,使用CDP、LLDP或您的接口描述/网络图登录到连接到该端口的相邻设备,并运行show interface | include is up|input rate命令再次,重复跟踪具有异常输入速率的接口的过程。在网络中跟踪接口和主机名时,请对其进行跟踪。
继续检查邻居并查看输入速率,直到输入端口用完,并且邻居用完或最后返回到已检查的设备上。
在此方法中,可能会出现以下两种结果之一:
命令语法因平台和软件版本而异。在Cisco IOS XE上,运行show mac address-table命令。某些旧版平台运行show mac-address-table语法。
| 命令 |
目的 |
|---|---|
| show version |
确定平台、软件版本和正常运行时间。 |
| show logging |
检查MAC抖动消息和相关协议事件。 |
| show spanning-tree |
检验根网桥、端口角色、端口状态和拓扑更改。 |
| show mac address-table address <mac-address> vlan <vlan-id> |
确定当前获取MAC地址的位置。 |
| show interfaces |
Include is up。 |
| show etherchannel summary |
检验端口通道状态和成员一致性。 |
| show cdp neighbors detail / show lldp neighbors detail |
识别连接到接口的相邻设备。 |
| 版本 | 发布日期 | 备注 |
|---|---|---|
3.0 |
07-Aug-2026
|
更新了拼写、语法,插入了水平线以分隔各个部分,便于阅读。 |
2.0 |
24-Apr-2025
|
重新认证。 |
1.0 |
25-Oct-2023
|
初始版本 |