涉及产品和版本
S交换机所有产品和版本
组网情况
如图1所示,Switch-A和Switch-B通过Eth-Trunk链路直连,配置VRRP协议,Switch-A为VRRP主设备,Switch-B为VRRP备设备。Switch-A和Switch-B做三层网关,下挂多台接入交换机做二层,均使能了STP协议进行破环。二层交换机与接入用户相连。
现象描述
Switch-A交换机上ARP学习异常,有很多Incomplete的ARP表项,下面用户终端的ARP时有时无,业务不稳定。
原因分析
Switch下挂的二层交换机上,STP域的边缘端口均没有配置stp edged-port enable
,这些端口状态发生变化时会发送TC报文,Switch收到后进行STP收敛处理,立即清除ARP表项或进行老化探测处理Switch上因为ARP数量比较多,发送大量ARP请求报文进行探测,收到用户的ARP应答报文比较多,超过了cpcar值,部分ARP应答报文丢弃,这些ARP将被老化删除,对应用户业务不能使用。Switch频繁收到这样的TC报文,业务更加不稳定。
操作步骤
登录设备进行观察,查看VLANIF27接口下的ARP。该VLANIF接口接入的是经常在线的用户的服务器。长时间观察,发现接口下的ARP总数有时在50个左右,有时在20个左右,数量不稳定。同时还有Incomplete
状态的ARP,IP地址也不固定。学习到的ARP表项的老化时间有时都为0。
<Switch-A>displayarpinterfacevlanif27 IPADDRESSMACADDRESSEXPIRE(M)TYPEINTERFACEVPN-INSTANCEVLAN/CEVLAN------------------------------------------------------------------------------ 10.212.4.30025-9e7f-fd01I-Vlanif27 10.212.4.1290014-38b9-73c30D-0Eth4/0/4227/- 10.212.4.13300e0-fc94-cddd0D-0Eth4/0/4227/- 10.212.4.2030018-7172-59010D-0Eth4/0/4227/- 10.212.4.1070011-43a3-388f0D-0Eth4/0/42
从现象看,Switch应该是收到了TC报文,进行了老化ARP的操作。
通过display stp tc命令也可以看到端口收到的TC报文情况:
[Switch-A-hidecmd]displaystptc ----------StpInstance0tcortcncount---------- PortGigabitEthernet1/0/00 PortGigabitEthernet1/0/10 PortGigabitEthernet1/0/20 PortGigabitEthernet1/0/30 PortGigabitEthernet1/0/487 PortGigabitEthernet1/0/5123 PortGigabitEthernet1/0/699 PortGigabitEthernet1/0/871 PortGigabitEthernet1/0/9173 PortGigabitEthernet1/0/10146 PortGigabitEthernet1/0/138 PortGigabitEthernet1/0/210
分析日志,日志中也显示收到TC报文、进行ARP表项老化处理的记录:
Apr19201109:59:58DCN_S9306_A%%01MSTP/6/RECEIVE_MSTITC(l):MSTPreceivedBPDUwithTC,MSTPprocess0instance0,portnameisEthernet4/0/46.
同时有arp-reply报文的cpcar丢弃记录:
Apr19201109:28:13DCN_S9306_A%%01QOSE/4/CPCAR_DROP_LPU(l):SomepacketsaredroppedbycpcarontheLPUinslot1.(Protocol=arp-reply,Drop-Count=061)
基于上面的信息,分析得出:Switch频繁收到TC报文,进行老化ARP表项的操作。设备需要发送大量ARP探测报文,用户终端回应arp-reply报文的数量也很多,超过了cpcar的car值,部分应答报文丢弃,ARP表项就会老化删除,影响到业务应用。
Switch收到的TC报文是下面的接入交换机发送的。接入交换机直接连接PC,端口使能了STP,但是没有配置stp edged-port enable
。PC在开机和关机时,很多边缘端口UP、DOWN,交换机就会反复发送TC报文。
将这些边缘端口配置stp edged-port enable
后,经过几天的观察,没有再出现问题了,用户的业务运行正常。
建议与总结
类似的问题出现过很多次,交换机做网关,下挂二层交换机接入用户,网络中使用STP协议破环。通常,二层交换机上的STP边缘端口都没有配置stp edged-port enable
。用户PC上线、下线,端口就会反复UP/DOWN,设备向STP根节点发送TC报文。网关设备频繁进行STP收敛,清除ARP,导致ARP学习异常。
这种应用场景下,推荐配置:
交换机上配置stp converge normal
,这样交换机收到TC报文,不会立即清除ARP,而是发起ARP探测,探测失败才会删除ARP,对流量转发不会造成很大的影响;二层交换机的STP边缘端口上配置stp edged-port enable
,这样边缘端口的状态变化不会引起网络反复进行STP收敛。