现象描述
1、通过网管监控的CPU利用率情况,如图所示:
2、同时设备上还出现CPU占用率过高的日志信息。
Switch %%01VOSCPU/4/CPU_USAGE_HIGH(l)[31]:The CPU is overloaded(CpuUsage=96%, Threshold=95%), and the tasks with top three CPU occupancy are:
FTS total : 18%
SRMT total : 11%
SOCK total : 8%
Switch %%01VOSCPU/4/CPU_USAGE_HIGH(l)[60]:The CPU is overloaded(CpuUsage=100%, Threshold=95%), and the tasks with top three CPU occupancy are:
PPI total : 41%
SRMT total : 10%
FTS total : 8%
3、同时设备上还有大量的ARP报文超过CPCAR后丢弃的日志记录。
Switch %%01DEFD/4/CPCAR_DROP_MPU(l)[56]:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=arp-miss, ExceededPacketCount=016956)
Switch %%01DEFD/4/CPCAR_DROP_MPU(l)[57]:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=arp-reply, ExceededPacketCount=020699)
Switch %%01DEFD/4/CPCAR_DROP_MPU(l)[58]:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=arp-request, ExceededPacketCount=0574
4、采集端口TC(Topology Change)报文收发情况。
使用命令display stp tc-bpdu statistics查看所有使能STP的端口接收到的TC报文计数。间隔5秒再次获取一次,可以看出所有端口接收到的TC报文计数在均在增长。
原因分析
通过查看端口的TC报文计数,发现端口收到大量的TC报文,且在不断增长。触发MAC删除、ARP表项刷新,设备处理大量arp-miss、arp-request和arp-reply报文,导致CPU升高,OSPF Hello报文、VRRP心跳报文不能及时处理,出现震荡。
问题判断方法
1、全局配置stp tc-protection。
配置此命令后可以保证设备频繁收到TC报文时,每2秒周期内最多只处理1次表项刷新,从而减少MAC、ARP表项频繁刷新对设备造成的CPU处理任务过多。
2、全局配置arp topology-change disable及mac-address update arp。
当设备收到TC报文后,默认会清除MAC、老化ARP。当设备上的ARP表项较多时,ARP的重新学习会导致网络中的ARP报文过多。配置arp topology-change disable、mac-address update arp后,在网络拓扑变化时,可以根据MAC地址的出接口变化刷新ARP表项出接口。可以减少大量不必要的ARP表项刷新。
注:V100R006版本开始支持mac-address update arp命令,V200R001版本开始支持arp topology-change disable命令。
建议与总结
在部署STP时,建议配置TC保护功能,所有连接终端的接口配置成边缘端口,这样可以避免某些端口的状态变化引起整个STP网络震荡而重新收敛。在处理CPU高的问题时,多关注CPCAR丢包情况。