大量TC报文导致CPU高

现象描述

  1. 通过网管监控的CPU利用率情况,如图7-21所示:
    图7-21 通过网管监控看到的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 disablemac-address update arp。
    当设备收到TC报文后,默认会清除MAC、老化ARP。当设备上的ARP表项较多时,ARP的重新学习会导致网络中的ARP报文过多。配置arp topology-change disablemac-address update arp后,在网络拓扑变化时,可以根据MAC地址的出接口变化刷新ARP表项出接口。可以减少大量不必要的ARP表项刷新。

    V100R006版本开始支持mac-address update arp命令,V200R001版本开始支持arp topology-change disable命令。

建议与总结

在部署STP时,建议配置TC保护功能,所有连接终端的接口配置成边缘端口,这样可以避免某些端口的状态变化引起整个STP网络震荡而重新收敛。在处理CPU高的问题时,多关注CPCAR丢包情况。

阅读剩余
THE END