今天在学校的一个三层交换上看到持续的日志信息:
Host 00:E0:FC:09:BC:F9is flapping between fa0/x and fa0/y.
思科对此官方的解释是:
Error Message SW_MATM-4-MACFLAP_NOTIF: Host [enet] in [chars] [dec] is flapping between port [chars] and port [chars]
某主机的MAC地址在某两端口之间摆动。
Explanation This message means that the switch found the traffic from the specified host flapping between the specified ports. [enet] is the host MAC address, [chars] [dec] is the switch ID, and the first and second [chars] are the ports between which the host traffic is flapping.
Recommended Action Check the network switches for misconfigurations that might cause a data-forwarding loop.
思科推荐行动是检查交换机的配置以防有数据传输环路。
在一个唯一环路冗余只做在接入层(备用线路)上,且全部运行STP的网络环境中,我认为没有环路的可能性。
也没有服务器的网卡在两端口间做过bonding(这种情况的表现是flapping只在两个特定的端口之间。解决方案
是交换机上做channal-group。)
如此分析,这大路边的可能故障也就是环路被排除掉了。
那么再来重新分析一下LOG信息。
刚才我们关注的是flapping between,下面关注一下MAC地址和端口所能提供的线索。
这些flapping的端口,每次都不尽相同,但是有个特点就是,全都是华为的端口,神码的端口压根没参与过。
猜想,这会不会跟华为的某种协议有关呢?
查了一下那个总在flapping的MAC地址 Host 00:E0:FC:09:BC:F9,
LZ还打了客服,华为-3COM技术支持(800-810-0504-3)。
回答是:那是华为发送STP、loopback-detection、NDP、STDP、gratuitous-arp-learning用的组播所用的虚拟地址。
也就是说,网络中所有华为的设备都在用那个MAC在发信息。
“S3600系列交 换机开启STP功 能后,对端设备可能出现报告MAC地址移动的现象。其原因为S3600系列交换机的BPDU报文采用固定MAC地址为源MAC。该情况对正常业务没有影响。为了防止 该日志信息对正常日志信息的影响,可以通过类似日志信息过滤的功能对此种日志信息过滤。
S系列交换机生成 树协议报文的源MAC地址是00E0-FC09-BCF9或者 000F-E207-F2E0。”
以上红黑联盟的博主还说:
因为多厂商间对协议的理解方式不同,各厂商按照各自的方式改动了实现的方式,所以应尽量避免二层互联,对接的时候一定要提前测试好保持谨慎。
51CTO也有类似的解释http://ruilinux.blog.51cto.com/4265949/870195
H3C定义的LACP报文(DMAC=0180C2000002、H3C设备SMAC=000f-e207-f2e0、)也是BPDU报文的一种。由于V3平台交换机每端口没有设置各自的MAC地址,因此BPDU源MAC都是使用上述固定的特殊MAC作为源MAC地址的。但S3600/5600系列交换机最新版本支持在系统视图下使用port-mac命令进行定义。
对于固定源MAC地址,H3C交换机是不学习BPDU报文的源MAC的,但有些友商设备对于BPDU的源MAC是进行学习的,因此在友商设备上有时会记录MAC地址漂移的告警。
博主建议:对于V3平台交换机如S3600/5600系列交换机可以升级到最新版本通过port-mac命令更改BPDU报文的源MAC地址。但是需要注意的是,如果网络中没有环路,那么该现象正常不影响业务使用,因此也不推荐使用port-mac命令进行更改。
原因已经很明确了。大牛曾试验过关掉loopback-detection就不会出现类似LOG了。
不过说来,这华为事事还真多,我又发现了还有类似的固定MAC地址:
01-80-C2-00-00-00是STP、loopback detection的目的mac
loopback-detection环回监测使用及原理
以H3C交换机为例
1、开启全局监测 >loopback-detection enable
2、开启相应端口监测 >int gig 1/0/1 loopback-detection enable
3、如为trunk端口,1和2步只能对trunk端口的默认vlan进行监测,需要对所有vlan开启监测 loopback-detection per-vlan en
4、如为trunk端口,发现环路仅上报错误,需要设置端口受控,access端口不需要。 loopback-detection control en
loopback-detection监控从端口发出的报文是否又通过该端口回到设备,用于判断端口下挂网络是否存在环路。
对access端口,会删除mac列表,block端口,对trunk端口会上报,不会禁用端口。
这个困扰了两天的问题,终于可以得出一个结论了。
综上所述,接入层华为设备的上行口LOOPBACK-DETECTION关闭就好,其他照旧。
通过这次的事情呢,在老师的指导下,在各种论坛里,我也有些感悟吧
1.园区网里的二层设备尽可能统一厂牌,否则要根据show log来确定关闭某些端口的某些服务。
2.对于网络中的任何改动,一切以保证网络畅通为首要目的。流量较为正常,拥塞和延时都不严重的时候,千万不要轻举妄动。
3.STP还是不要关的。