S5700因收到大量STP TC报文导致CPU升高

发布时间:  2015-02-04 浏览次数:  11245 下载次数:  0
问题描述
如图1-1所示,某用户反馈其企业网络中,其中一台S5700交换机(图中标号为S11的设备)CPU异常,CPU占用率经常达到90%以上。
图1-1 S5700因收到大量STP TC报文导致CPU升高组网图

告警信息
执行命令display cpu-usage,查询S5700的CPU信息,S5700最近曾出现CPU升高的记录,CPU占用率最高达到了97%。
<S5700> display cpu-usage
CPU Usage Stat. Cycle: 60 (Second)
CPU Usage            : 18% Max: 97%
CPU Usage Stat. Time : 2014-10-07  11:19:29
CPU utilization for five seconds: 18%: one minute: 18%: five minutes: 18%
Max CPU Usage Stat. Time : 2014-09-11 16:37:54.
查询设备日志,有大量TC报文日志产生:
Oct  7 2014 11:06:20-05:13 S5700 %%01INFO/4/SUPPRESS_LOG(l)[15]:Last message repeated 1 times.(InfoID=1092489232, ModuleName=MSTP, InfoAlias=RECEIVE_MSTITC)
Oct  7 2014 11:05:19-05:13 S5700 %%01INFO/4/SUPPRESS_LOG(l)[16]:Last message repeated 3 times.(InfoID=1092489232, ModuleName=MSTP, InfoAlias=RECEIVE_MSTITC)
Oct  7 2014 11:04:12-05:13 S5700 %%01INFO/4/SUPPRESS_LOG(l)[17]:Last message repeated 3 times.(InfoID=1092489232, ModuleName=MSTP, InfoAlias=RECEIVE_MSTITC)
处理过程

步骤 1 

因未在故障时采集信息,无法知道具体哪些进程引起CPU升高,怀疑为设备FTS任务进程要处理大量的TC报文,导致CPU占用率升高。设备一直产生TC报文日志,首先确定此TC报文是本设备产生的,还是从其它设备收到的。
使用display stp tc-bpdu statistics命令查询TC报文是在S5700设备产生的,还是从其它设备收到的。经查询S5700与SwitchA互连的端口GigabitEthernet0/0/52收到的TC报文一直增长,且同时转发至其它接入层交换机。由此可以判断该TC报文不是S5700设备产生的。
<S5700> display stp tc-bpdu statistics
-------------------------- STP TC/TCN information --------------------------
MSTID Port                        TC(Send/Receive)      TCN(Send/Receive)
0     GigabitEthernet0/0/51       29272/63              0/0
0     GigabitEthernet0/0/52       3/18363               0/0


步骤 2 

使用display stp tc-bpdu statistics命令逐层排查TC报文入方向设备,确认此TC报文是在网络中的哪一台设备上产生的。
查询核心设备SwitchA,发现Eth-Trunk1收到大量的TC报文,而Eth-Trunk1是与核心设备SwicthB互联的,由此可以判断该TC报文不是SwitchA产生的。
<SwitchA> display stp tc-bpdu statistics
-------------------------- STP TC/TCN information --------------------------
MSTID Port                        TC(Send/Receive)      TCN(Send/Receive)
0     GigabitEthernet0/0/1        16754/7               0/0
0     GigabitEthernet0/0/2        17112/1               0/0
0     GigabitEthernet0/0/3        17462/11              0/0
0     GigabitEthernet0/0/4        17793/4               0/0
0     GigabitEthernet0/0/5        18118/5               0/0
0     GigabitEthernet0/0/6        18415/3               0/0
0     GigabitEthernet0/0/14       17791/3               0/0
0     GigabitEthernet0/0/15       18113/6               0/0
0     GigabitEthernet0/0/16       18435/4               0/0
0     Eth-Trunk1                  4/11010               0/0

 

继续查询核心设备SwitchB,发现GigabitEthernet0/0/2端口收到大量的TC报文,而GigabitEthernet0/0/2端口是与S4设备的GigabitEthernet0/0/52互联,由此可以判断该TC报文不是SwitchB产生的。
<SwitchB> display stp tc-bpdu statistics
-------------------------- STP TC/TCN information --------------------------
MSTID Port                        TC(Send/Receive)      TCN(Send/Receive)
0     GigabitEthernet0/0/1        12495/13               0/0
0     GigabitEthernet0/0/2        135/8349               0/0
0     GigabitEthernet0/0/3        13430/19               0/0
0     GigabitEthernet0/0/4        13784/14               0/0
0     GigabitEthernet0/0/5        14200/17               0/0
0     GigabitEthernet0/0/6        14687/10               0/0
0     GigabitEthernet0/0/14       14164/16               0/0
0     GigabitEthernet0/0/15       14164/16               0/0
0     GigabitEthernet0/0/16       14625/12               0/0
0     Eth-Trunk1                  11012/4               0/0

 

继续查询S4设备,发现GigabitEthernet0/0/51、GigabitEthernet0/0/52端口Send方向大量的TC报文计数增涨,初步判断TC报文由应由此设备产生。
<S4> display stp tc-bpdu statistics
-------------------------- STP TC/TCN information --------------------------
MSTID Port                        TC(Send/Receive)      TCN(Send/Receive)
0     GigabitEthernet0/0/51       8196/1123             0/0 
0     GigabitEthernet0/0/52       8343/136              0/0


步骤 3 

当查询到S4设备时,发现其TC报文只有在出方向上不断有增长计数,由此可判断该TC报文为S4设备产生。此时执行命令display stp topology-change查询该TC报文的信息。从以下回显可以看出,该设备GigabitEthernet0/0/51端口不断由阻塞变为放开后,由于状态变为detected而触发拓扑变化。
<S4> display stp topology-change
CIST topology change information
   Number of topology changes             :8233
   Time since last topology change        :0 days 0h:0m:26s
   Topology change initiator(detected)    :GigabitEthernet0/0/51
   Number of generated topologychange traps :   9852
   Number of suppressed topologychange traps:   13


步骤 4 

执行命令display interface brief查询该接入设备端口信息,发现该设备GigabitEthernet0/0/51端口入方向有大量错包,隔一段时间后,再次查询该设备的端口信息,GigabitEthernet0/0/51端口入方向还是有大量错包。由此说明此接口入方向光纤线缆有问题,排查线缆故障后问题解决。
<S4> display interface brief
PHY: Physical
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
(E): E-Trunk down
(b): BFD down
(e): ETHOAM down
(dl): DLDP down
(d): Dampening Suppressed
InUti/OutUti: input utility/output utility
Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors   
........
GigabitEthernet0/0/51       up    up       0.01%  0.02%   38068638          0
........
----结束

根因
STP组网中,与STP计算的设备互连端口因链路质量不好,导致设备STP频繁收敛,产生大量TC报文,导致收到此TC报文的设备部分CPU升高,影响业务正常运行。
解决方案
排查S3设备与S4设备之间的链路故障原因。
建议与总结
在参与STP计算的核心设备上,全局配置stp tc-protection命令,配置后可以保证设备频繁收到TC报文时,每2秒周期内最多只处理1次表项刷新。从而减少MAC、ARP表项频繁刷新对设备造成的负担。

END