一个小调整,竟然让交换机、路由器的CPU占用率降低了50%

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

下午好,我的网工朋友。

在信息时代下,不仅仅在网络工程领域,高CPU占用率都是一个非常常见的问题,尤其是在交换机、路由器等设备上。

这种情况不仅会影响网络性能,还可能导致服务中断和数据丢失。

今天就和你来探索一下当遇见交换机、路由器等设备CPU占用率过高的故障时应该怎样解决。

今日文章阅读福利:《 cisco路由器配置(实战篇) 》

私信发送暗号“思科”,即可获取思科官方教材资源,以及顺手给你打包了一些别的好东西,进一步提升你的技术视野。

01 CPU占用率是啥意思?

CPU占用率,就是一个时间段内,CPU执行代码的时间与时间段总长度的比率。CPU占用率常常是衡量设备性能的重要指标之一。

CPU占用率高,是设备本身的一种现象,直观表现为display cpu-usage命令查询结果中整机CPU占用率“CPU usage”偏高,如超过70%。在网络运行中CPU高常常会导致其他业务异常,如BGP震荡、VRRP频繁切换、甚至设备无法登录。以下讨论的原因及步骤基于CPU占用率高这个现象。

通常,整机CPU占用率过高,是由于某些任务的CPU占用率居高不下导致的。具体导致某任务CPU占用率高的可能原因:

  • 上送CPU报文过多,如环路或DoS报文攻击
  • STP网络频繁震荡,收到大量TC报文,造成设备频繁删除MAC表和ARP表项
  • 设备产生海量日志,占用大量CPU资源

02 故障诊断流程

详细处理流程如下图所示。

03 故障处理步骤

01 检查占用CPU高的任务名称

执行命令display cpu-usage,查看各任务的CPU占用率。

记录CPU占用率超过70%的任务名称。

这个取值并非绝对数值,有可能某些任务执行时就需要占用70%的CPU而对业务不会造成影响,也有可能某些任务占用CPU 30%时就会对业务造成影响。应该根据实际情况判断。

02 检查是否上送CPU的报文太多

执行命令display cpu-defend statistics,查看上送CPU报文的统计信息,关注丢弃计数。

<Huawei> display cpu-defend statistics all
-----------------------------------------------------------------------        
Packet Type               Pass Packets        Drop Packets                      
-----------------------------------------------------------------------        
8021X                                0                   0                      
arp-miss                             1                   0                      
arp-reply                            5                   0                      
arp-request                    1450113               25597                      
bfd                                  0                   0                      
bgp                                  0                   0                      
dhcp-client                     114693              136586                      
dhcp-server                          0                   0                      
dns                                  0                   0                      
fib-hit                              0                   0                      
ftp                                717                   0                      
fw-dns                               0                   0                      
fw-ftp                               0                   0                      
fw-http                              0                   0                      
fw-rtsp                              0                   0                      
fw-sip                               0                   0                      
gvrp                                 0                   0                      
http                               798                   0                      
hw-tacacs   0                   0                      
icmp                                10                   0                      
igmp                                 0                   0                      
ipsec                                0                   0                      
isis                                 0                   0                      
lacp                                 0                   0                      
lldp                             33959                   0                      
ntp                                  0                   0                      
ospf                              1569                   0                      
pim                                  0                   0                      
pppoe                                0                   0                      
radius                               0                   0                      
rip                                  0                   0                      
snmp                                 0                   0                      
ssh                                  0                   0                      
stp                                  0                   0                      
tcp                               7671                   0                      
telnet                           71149                   0                      
ttl-expired                        656                   0                      
udp-helper                           0                   0                      
unknown-multicast                    6                   0                      
unknown-packet                   94189                   0                      
vrrp                                 0                   0                      
-----------------------------------------------------------------------
  • 如果某种类型报文“Drop”计数较大,且对应上一步中占用的CPU使用率较高,可以判断为发生了报文攻击。
  • 如果没有发现有流量过大的报文,请执行步骤3。

03 检查是否TC报文过多

支持STP的设备上,STP使能情况下,设备在接收到TC-BPDU报文时,会删除MAC地址表项和ARP表项。如果有人伪造TC-BPDU报文恶意攻击,设备短时间内会收到很多TC-BPDU报文,频繁的删除操作会导致CPU占用率比较高。

执行命令display stp,查看接口下收到的TC报文和TCN报文计数。

<Huawei> display stp interface Eth2/0/1                                      
----[CIST][Port2(Ethernet2/0/1)][FORWARDING]----                                
Port Protocol       :Enabled                                                  
Port Role           :Designated Port                                          
Port Priority       :128                                                      
Port Cost(Dot1T )   :Config=auto / Active=199999                              
Designated Bridge/Port   :4096.00e0-fc01-0005 / 128.2                          
Port Edged          :Config=default / Active=disabled                          
Point-to-point      :Config=auto / Active=true                                
Transit Limit       :147 packets/hello-time                                    
Protection Type     :None                                                      
Port STP Mode       :MSTP                                                      
Port Protocol Type  :Config=auto / Active=dot1s                                
PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20                  
TC or TCN send      :1                                                        
TC or TCN received  :0                                                        
BPDU Sent           :124008                                                    TCN: 0, Config: 0, RST: 0, MST: 124008                                
BPDU Received       :0                                                        TCN: 0, Config: 0, RST: 0, MST: 0
  • 如果该值很大,系统视图下执行命令stp tc-protection配置对TC类型BPDU报文的抑制。配置此命令后,默认每个Hello周期处理3个TC报文。可以根据实际情况通过stp tc-protection threshold命令指定处理的报文数量门限值,可以通过stp timer hello命令修改Hello周期的时长。
  • 如果TC报文数量不多,请执行步骤4。

04 检查网络是否有环路

当设备的某个VLAN中包含较多接口时,如果有两个接口形成环路,则报文会在多个接口之间一直转发,会导致CPU占用率上升。

执行命令display current-configuration,查看是否使能了MAC地址漂移告警功能。

#
loop-detect eth-loop alarm-only
#
  • 如果没有,执行命令loop-detect eth-loop alarm-only配置当发生MAC地址漂移时产生告警。此时如果网络中有环路,当设备两个接口学习到同一个MAC表项时,会产生告警。如:
Feb 22 2022 18:42:50 Huawei L2IFPPI/4/MAC_FLAPPING_ALARM:OID 1.3.6.1.4.1.2011.5.25.42.2.1.7.12The mac-address has flap value .  (L2IfPort=0,entPhysicalIndex=0,  BaseTrapSeverity=4, BaseTrapProbableCause=549, BaseTrapEventType=1,  MacAdd=0000-c0a8-0101,vlanid=100,  FormerIfDescName=Ethernet1/0/0,CurrentIfDescName=Ethernet1/0/1,DeviceName=HUAWEI)
  • 根据告警提示信息,查看相应的接口连接以及组网需求。
  • 如果不需要环网,根据组网图,将其中一个端口shutdown处理。
  • 如果确实需要环网,关闭Loop Detection功能,并启动STP等破环协议。
  • 如果设备已经配置了loop-detect eth-loop alarm-only,但是没有看到告警,请执行步骤5。

05 检查设备是否产生海量日志

某些异常情况下如受到攻击、运行中发生了错误、端口频繁Up/Down等,设备会不停打印诊断信息或日志信息。此时对存储器要进行频繁的读写操作,会造成CPU占用率升高。

执行命令display logbuffer,查看是否有大量的异常日志。

整理:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/700850.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中带日期的操作

当我们把日期转换为Number类型的时候&#xff0c;就会变成时间戳&#xff08;毫秒&#xff09; const future new Date(2037, 10, 19, 15, 23); console.log(Number(future)); // console.log(future); //与上行代码等效● 所以我们就可以利用时间戳去做点东西&#xff0c;例…

Spring整合其他技术

文章目录 Spring整合mybatis思路分析Mybatis程序核心对象分析整合Mybatis 代码实现 Spring整合Junit修改成警告 Spring整合mybatis 思路分析 Mybatis程序核心对象分析 上面图片是mybatis的代码&#xff0c;上述有三个对象&#xff0c;分别是sqlSessionFactory&#xff0c;sqlS…

7nm项目之模块实现——02 Placeopt分析

一、Log需要看什么 1.log最后的error 注意&#xff1a;warnning暂时可以不用过于关注&#xff0c;如果特别的warning出现问题&#xff0c;在其他方面也会体现 2.run time 在大型项目实际开发中&#xff0c;周期一般较长&#xff0c;可能几天过这几周&#xff0c;所以这就需要…

Linux - make与makefile

文章目录 什么是make和makefile如何使用依赖关系 和 依赖方法伪目标 写个程序-进度条换行和回车的区别 什么是make和makefile make是一个命令 makefile是一个文件 这就是make和makefile的本质 make和 ll , pwd ,su 一样都是命令 makefile和 test &#xff0c; test.c 一样都是…

【408精华知识】计算机系统结构

感觉教材和网络上对于计算机系统的结构描述都比较模糊&#xff0c;我自己对其进行了总结&#xff0c;并且画出图&#xff0c;不过因为学习的还是不够深入和全面&#xff0c;有的地方肯定是有问题的&#xff0c;烦请大家批评指正&#xff0c;我会进行修改~ 文章目录 零、结构图总…

比大小(打擂台)(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明比较大小函数max; int max(int a, int b);int main() {//初始化变量值&#xff1b;int i, n, m, a[10];//填充数组&#xff1b;printf("请输入10个数…

电力系统潮流计算的计算机算法(一)——网络方程、功率方程和节点分类

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第一篇笔记。下一篇传送门。 实际中的大规模电力系统包含成百上千个节点、发电机组和负荷&#xff0c;网络是复杂的&#xff0c;需要建立复杂电力系统的同一潮流数学模型&#xff0c;借助计算机进行求解。 简介 …

C++基础语法之数组

一、一维数组 在C中&#xff0c;一维数组是一系列具有相同数据类型的元素的集合。它们在内存中是连续存储的&#xff0c;可以通过索引访问每个元素。 一维数组的声明形式如下&#xff1a; 数据类型 数组名[常量表达式] 例如&#xff1a; // 声明一个能存储10个整数的数组 in…

振弦式应变计的灵敏系数k范围探讨

振弦式应变计是一种广泛应用于工程结构健康监测的重要设备&#xff0c;其灵敏系数k是衡量其性能的关键指标。本文将探讨振弦式应变计的灵敏系数k的一般范围&#xff0c;并分析影响灵敏系数的因素。 一、振弦式应变计的工作原理 振弦式应变计通过测量振弦在受力作用下的振动频率…

创建短链性能测试

压测条件 创建短链接参数固定&#xff0c;拆分了两个不同的接口进行压测。 线程池组属性如下所示&#xff1a; 完整的jmx文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <jmeterTestPlan version"1.2" properties"…

【风变】Python爬虫精进复习-20240430

参考笔记 下面给出一个巨佬学习风变pyhton基础语法和爬虫精进的笔记&#xff08;链接&#xff09; 风变编程笔记(一)-Python基础语法 风变编程笔记(二)-Python爬虫精进 技术总结 request BeautifulSoup selenium BeautifulSoup 练习0-1&#xff1a;文章下载 import requ…

一台linux通过另一台linux访问互联网-TinyProxy

参考&#xff1a; https://blog.csdn.net/weixin_41831919/article/details/113061317https://www.yuncongz.com/archives/1.htmlhttps://blog.csdn.net/aoc68397/article/details/101893369 环境&#xff1a;ubuntu 18.04 机器1: IP 219.216.65.252 (可以访问外网) 机器2: IP…