交换机CPU使用率过高的原因分析及探讨 | ![]() |
新钢自动化部在将物料环网的百兆老网首次接进千兆新网后,发生了几次断网现象。在查找断网原因的过程中,发现新网的赫斯曼千兆二层交换机的CPU使用率非常高,达到了80%以上,并且瞬时值经常达到100%,但是三层核心交换机的CPU利用率却是正常的。为此,进行了原因分析和试验诊断,最终顺利解决了该问题,获得了宝贵的工作经验。
1 交换机CPU利用率过高的原因分析通过现场调查及查阅类似故障的多个案例,发现引起CPU利用率过高的原因有以下几点:广播风暴、ARP攻击、高CPU利用率的正常情况、其他导致CPU过高的事件等。
1.1 广播风暴广播风暴是指广播数据充斥网络无法处理并占用大量网络带宽,导致网络性能下降,甚至彻底瘫痪。广播风暴的产生有多种原因,比如误用集线器、蠕虫病毒、交换机端口故障、网线问题和网络环路等。
1.1.1 误用集线器集线器不具备交换功能,集线器对数据包的处理方法是将数据包复制并放大,然后送到连接该集线器的各个设备中,因此数据包充斥在整个局域网中,可能造成数据包的冲突加剧。如果误将集线器当作交换机使用后,由于其本身的这种缺陷,会引发广播风暴。
1.1.2 蠕虫病毒在判断局域网中某计算机是否感染了蠕虫病毒(如震荡波、RPC等病毒)时,可以查看该计算机网卡的发送包和接收包数量。如果发送包数量在快速增加,说明该计算机感染了蠕虫病毒。网络传播发送数据包会损耗大量的网络带宽,引起网络堵塞,导致广播风暴。
1.1.3 交换机端口故障当交换机出现一个端口传输速率非常缓慢,且最后导致整个交换机都慢下来时,可以通过控制台检查交换机的运行状态。如果交换机的缓冲池增长得非常快且达到90%以上,就可以断定交换机与所连接的计算机之间发送了大量的广播。产生这种现象的原因可能是由于连接该计算机的网卡被损坏,导致不断发送广播包; 也可能是由于网卡与交换机形成了回路,广播包被阻塞不能及时发出而造成。
1.1.4 网线短路制作网线时没有压好线、或者网线表皮有磨损导致的短路可能会引起交换机的端口阻塞。因为大多数交换机都是使用存储转发技术,它的工作原理是对某一段数据包进行分析、判断、寻址,并进行转发。在发出前数据包均存储在交换机的缓冲区内,当网线发生短路时,该交换机将接收到大量的不符合分装原则的数据包,造成交换机CPU工作繁忙,数据包来不及转发,从而导致缓冲区溢出产生丢包现象,最后产生广播风暴。
1.1.5 网络环路当网络中存在物理环路时,会造成每一帧数据都在网络中重复广播,引起广播风暴。要消除这种网络循环连接带来的网络广播风暴可以使用STP协议(生成树协议),以网络中一台交换机为节点生成一棵转发树,这样所有的数据都只在这棵树所指示的路径上传输,就不会产生广播风暴———因为树型结构没有环路。但由于STP算法对交换机来说占用资源太大,因此一般交换机都默认未启用该协议。
1.2 ARP攻击在局域网中,通信前必须通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)。ARP协议对网络安全具有重要的意义,但是ARP方式在设计之初没有考虑到过多的安全问题,这给ARP协议留下了很多的隐患,而ARP欺骗攻击就是利用该协议漏洞,通过伪造MAC地址来实现ARP欺骗攻击。
ARP攻击能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断地发出伪造的ARP响应包,就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统会试图通过“ARP欺骗”手段截获所在网络内其他计算机的通信信息并造成这些计算机出现通信故障。
1.3 高CPU利用率的正常情况在某些环境下,高CPU利用率是正常的。通常,两层或三层的网络越大,CPU处理相关网络流量的需求就越大。以下是潜在的高CPU利用率的操作。
1.3.1 高CPU利用率的正常情况生成树导致的CPU利用率大小是由生成树的实例个数以及活动接口的数量决定的。实例和活动接口越多,CPU利用率越高,而且如果网络拓扑发生变化,生成树协议就需要重新计算新的路径,重新收敛产生,导致耗时较长且CPU利用率非常高。
1.3.2 路由表更新启用了三层路由功能的交换机需要处理路由更新信息。CPU利用率取决于以下几个因素:路由更新信息的大小、更新的频率、接受路由更新的路由进程数量、routemap和filter的使用。
1.3.3 监控软件监控软件的一些命令也能导致CPU利用率峰值的产生,比如显示配置信息Repor(或Debug)调试、高频或大量的IGMP请求、大量的IPSLAs监控会话(ICMPping或traceroute包)、执行SNMP请求、同时有大量的DHCP请求(当交换机作为DHCPserver时)、ARP广播风暴和以太网广播风暴等。
2 措施为了解决新钢自动化部的物料环网(新网)中的赫斯曼两层交换机的CPU使用率过高的问题,进行了故障排除、原因分析和解决方案测试等过程。
2.1 检查是否出现物理环路物料主网使用的是赫斯曼模块化交换机,因为赫斯曼拥有HIPER-Ring(冗余环网)技术,所以设计时启用了HIPER-Ring功能,让主网形成物理环,设置了其中一条链路为冗余链路,冗余链路只在整个主环网出现问题时才会被激活,不会影响整个网络运行,并且此冗余链路充当了整个主网的备用保障。但是主网节点下交换机中若出现错误连接或多余连接的网线形成小环网,也会导致网络风暴的产生,所以需要对每个节点下挂的所有光纤、网线进行依次排查。通过对主环网进行断线测试、对主环网各节点下挂的设备全部进行切断实验并排查每个设备的接线后,发现赫斯曼两层交换机的CPU利用率还是很高,因此排除了有网络环路形成的可能。
2.2 生成树协议赫斯曼模块化交换机默认将端口的STP(生成树协议)开启,主网端口使用的是HIPER-Ring协议。由于HIPER-Ring协议与STP协议不能同时共存于网络中,因此主环网中未开启STP协议,其余下挂端口都启用了STP协议。STP协议是通用协议,不同厂家、不同设备都能运行该协议。各节点下挂设备有华为的交换机,如果华为交换机等设备未开启STP协议,就有可能产生网络风暴,导致断网发生。检查除主环网接口外各个设备的STP配置后,发现所有设备都已启用了协议,因此排除了未开启生成树协议而形成网络风暴的可能。
2.3 抓包软件分析网络中的数据包可以通过抓包软件进行抓取包,进而分析数据包中的数据。用Wireshark抓包软件对整个网络及各个两层交换机进行抓包分析后,发现并无大量ARP丢弃、ARP帧等,且各个ARP都是正常的数据收发,据此可以排除ARP攻击的可能。但是在分析中发现了较多的传输协议帧、报文帧等数据包,其产生的原因可能是各种软件应用了较多的传输协议和各类不同报文,导致整个网络中存在较多、较杂的数据包,且这些数据包不直接被CPU处理,因此这也很有可能不是导致CPU利用率过高的直接原因。
2.4 采用赫斯曼命令对CPU进行抓包赫斯曼交换机命令中有debug命令,能对进入CPU的数据进行抓包。对CPU进行抓包后,发现有较多的UDP帧。为确保分析的准确性,将抓包后的所有数据都发送给了厂家,由厂家做进一步分析并提供技术支持。
2.5 升级交换机固件经多次测试后仍未能找到导致CPU利用率高的明确原因后,咨询了赫斯曼厂家,厂家对该问题进行了分析判断并答复如下:
1) 三层交换机的CPU性能比两层交换机的性能好很多,所以会出现三层交换机CPU的利用率为百分之十几,而两层交换机的CPU利用率非常高的现象;
2) 赫斯曼模块化二层交换机的CPU最大利用率的平均值应为80%以下,而新钢自动化部的赫斯曼模块化二层交换机达到了80%以上,已超出允许范围,属于CPU过载;
3) 固件版本过低,可能会导致CPU使用率升高,尝试用升级固件版本来修复。
经赫斯曼厂家技术人员远程对所有二层交换机的固件升级后,发现CPU的使用率平均值降到了80%以下,所有二层交换机的CPU使用率基本处于50%左右。不过参考其他正在使用的赫斯曼模块化交换机,其CPU使用率还是稍微高出一些。至此,问题得到圆满解决。
3 结论对新钢自动化部物料环网二层交换机的CPU使用率非常高的问题进行分析后,对交换机的固件进行了远程升级,有效解决了该问题。但是,导致CPU利用率稍高的另一部分因素还是存在的,需要我们做进一步分析,比如之前提到的使用了过多种类的通讯协议、通讯报文等,都有可能导致CPU的进程较为繁忙,利用率也可能增高。
2) 网络维护涉及到诸多层面的知识、经验、技巧和方法等,需要不断探索学习、融会贯通,认真分析处理问题,才能保障网络的正常运行。