在实际网络环境中,很多时候都会出现设备high CPU的情况,有些时候可能是bug,而某些情况下,也可能是网络中发生了变化,导致了设备出现high CPU情况,这里主要记录一下Cisco Cat4500的high CPU处理步骤摘要,未记录具体的案例(某些情况下,在Cat6500上也适用)。
1、采集主要信息查看:(如下是排查high CPU的关键命令,结合起来基本能定位到high CPU的原因)
show version
show running-config
show interface
show logging
show processes cpu history
show prcoess cpu sort | ex 0.0
show platform health | exc 0.0
show platform cpu packet statistics
show platform hardware acl input entry static
show process cpu sorted detail
show processes cpu detailed process iosd sorted
show platform cpu packet buffered
show ip traffic
2、从上述的信息中,就可以判断是process 导致的high CPU还是流量过大interrupt导致的high CPU,如果是process占用的CPU比较高,一般可以根据该进程进一步排查,例如ARP Input、IP Input、SNMP ENGINE 等等情况。如果是interrupt导致high CPU,可能就需要去排查流量方面的问题(注意未知单播、组播和广播数据)。
确认process或interrupt high CPU:
------------------ show process cpu ------------------
CPU utilization for five seconds: 66% / 0%; one minute: 66%; five minutes: 64%
上述中标红的凸显的是high CPU的情况,如果interrupt导致的high CPU,“0%”将会占据大部分,例如show process cpu显示“80% / 66%”。
3、很多时候在查看了如上采集的信息之后,依然不能找到问题的根本原因,接下来需要做的,可能就是查看送往CPU的报文了。
方式1:通过SPAN抓取
This example shows how to configure a CPU source to sniff all packets received by the CPU:
Switch(config)# monitor session 1 source cpu rx
This example shows how to use queue names and queue number ranges for the CPU as a SPAN source:
Switch(config)# monitor session 2 source cpu queue control-packet rx
Switch(config)# monitor session 3 source cpu queue 21 -23 rx
方式2:通过debug
debug platform packet all receive buffer
show platform cpu packet buffered
undebug all
4、进一步分析,从采集报文信息中,一般可以定位到某些源MAC地址发送到CPU处理的报文,需要关注的主要是那些出现次数比较多的源MAC地址。确认了具体的MAC之后,再去针对该MAC的设备查看,查看对应MAC的设备是否存在什么异常操作。
PS:其他信息
在某些情况下,可能会遇到的MAC地址:
- 00:00:5E:00:01:xx >>>>>>IETF-VRRP-VRID_xx (该MAC地址一般对应的VRRP的Group号,例如00:00:5E:00:01:01对应vrrp 1 ......)
- 00:00:0c:07:ac:xx >>>>>All-HSRP-Routers_xx (和VRRP同理)
- 01:00:0C:CC:CC:CD >>>>Cisco PVST使用的目标MAC 地址
未完待续.......