Cisco 交换机 CPU 占用过高排查:从 show processes 到 CoPP - 夜莺博客

Cisco 交换机 CPU 占用过高排查:从 show processes 到 CoPP

交换机 CPU 飙高通常不是根因,而是症状:真正的问题往往是二层环路、ARP 风暴、某个功能把大量报文上送到 CPU,或者控制平面进程本身占用异常。排查的关键是先分清 “进程占用” 还是 “中断/上送流量占用”,这两者的处理路径完全不同。下面是可按顺序执行的排查流程。

第 1 步:看 CPU 数字,分清进程与中断

Switch# show processes cpu sorted 5sec
Switch# show processes cpu history
Switch# show platform resources
Switch# show platform software status control-processor brief

show processes cpu 第一行形如 CPU utilization for five seconds: 85%/60%:斜杠前是总占用,斜杠后是中断(interrupt)占用。中断高意味着大量报文被 punt 到 CPU 而不是硬件转发;进程高才需要去看具体是哪个进程。

第 2 步:如果是进程占用高

Switch# show processes cpu sorted 5sec
Switch# show processes cpu platform sorted 5min location switch active r0

平台侧进程里,正常情况下不应该有任何一个进程长期超过 linux_iosd-imag。常见的高占用进程包括 SISF(设备跟踪/Snooping)、ARP Input、HULC、以及各种 punt/inject 相关进程。Catalyst 9000 上由 SISF 引起的 CPU 高占用非常典型:设备跟踪数据库里堆积了大量远端主机条目,进程忙于处理探测和条目老化。处置办法通常是收窄设备跟踪策略,把它限制在真正需要的接口上,而不是全局打开:

Switch(config)# device-tracking policy DT-POLICY
Switch(config-device-tracking)# no protocol udp
Switch(config)# interface GigabitEthernet1/0/24
Switch(config-if)# device-tracking attach-policy DT-POLICY

第 3 步:如果是中断/上送流量占用高

Switch# show platform punt-statistics
Switch# show interfaces counters errors
Switch# show mac address-table count
Switch# show spanning-tree detail | include topology change
Switch# show ip arp summary

结合现场现象判断:ARP 报文数量陡增说明有终端在做扫描或被环路放大;MAC 表剧烈变化、STP 拓扑频繁变更说明存在二层环路;大量广播/组播进入 CPU 则多半是风暴或者某台主机异常。对应的措施:

  • 边缘口启用 BPDU Guard / Root Guard,阻断非预期的 STP 参与设备。
  • 启用风暴抑制(storm-control)限制广播/组播上行到 CPU 的速率。
  • 定位并断开异常主机或环路端口,而不是先去调 CPU 相关的定时器。
  • 部署 CoPP(控制平面策略),把 ARP、DHCP、STP、SNMP 等分类限速,保证管理流量在风暴期间仍能登录。

第 4 步:验证与收尾

Switch# show processes cpu sorted 5sec
Switch# show processes cpu history
Switch# show policy-map control-plane
Switch# show ip device tracking all

处理完之后一定要对比历史曲线(show processes cpu history 提供 72 小时视图),确认是持续下降而不是短暂回落。同时把这次事件的触发条件写进监控告警:CPU 5 分钟均值、punt 速率、ARP 表条目数,任何一个越过阈值都应该在用户报障之前触发。

相关阅读:Catalyst MAC 漂移与环路排查二层环路与广播风暴排查Cisco DHCP Snooping 配置

原文链接:https://www.cisco.com/c/en/us/support/docs/ios-nx-os-software/ios-xe-16/213549-troubleshoot-high-cpu-usage-in-catalyst.pdf