华为交换机CPU占用率高原因判断和解决方法(三)
首页 > HuaWei > 故障处理   作者:圈哥  2016年7月4日 12:22 星期一  字号:   评论:0 条
时间:2016-7-4 12:22   评论:0 条 

华为交换机CPU占用率高原因判断和解决方法(三)

华为交换机CPU占用率高原因判断和解决方法(二):http://www.023wg.com/guzhang/290.html

7、识别交换机行为

在收集交换机CPU的使用情况后,如果确认交换机出现CPU占用率过高的情况,则需要对CPU占用率过高时设备的行为进行分析。通常情况下,系统CPU占用率过高与特定的业务处理或网络环境异常有关,因此可以通过收集系统CPU占用率过高期间CPU占用率较高的任务来分析设备当时的行为。

根据上节中命令的提示或者收集到的日志、告警的信息,获取CPU占用率较高的任务,建议重点关注占用率最高的前3个任务。

系统通过任务承载业务功能,任务的CPU占用率可以在一定程度上反映各业务功能的活动情况,是分析设备行为的重要手段。通常情况下,可以根据实际业务部署情况重点关注以下几类重要任务:

1、系统空闲任务

该任务是系统中的一个特殊任务,任务名为VIDL,任务优先级最低,仅在没有其他任何非空闲任务运行时,该任务才会占用CPU;在其他非空闲任务需要使用CPU时,该任务会被立即抢占。

CPU占用率是指各非空闲任务占用CPU运行时间的比率,因此,系统会利用VIDL任务占用CPU的时间来统计设备的CPU占用率。VIDL任务的CPU占用率越高,系统的CPU占用率越低,系统越空闲。

2、系统管理任务

这一类任务的主要功能是对系统资源进行管理,并提供操作系统基础机制,如定时器、信息中心等功能。常见的可能导致CPU占用率过高的系统管理任务有:

2.1、信息中心:

主要包括BOX任务(用于输出黑盒子中存储的信息)、INFO任务(用于接收、输出业务模块产生的日志、告警)等,这些任务的主要功能是提供操作系统的基础信息中心功能(如日志、告警、异常、死循环的记录,调试信息的输出等),当设备输出大量调试信息或者日志信息时,可能会引起该任务CPU占用率过高。

2.2、设备管理:

主要包括DEV任务(用于管理设备上的硬件模块)、HOTT任务(用于管理板卡的热插拔)、SRMI任务(用于处理设备器件相关的外部中断)等,这些任务主要用于处理各类设备变化事件,在配置恢复、主备倒换、堆叠新成员加入、子卡插入等特殊阶段可能出现短时间的CPU升高的情况,一般不会对业务造成影响;但是在部分设备器件故障时会上报大量中断,可能会导致SRMI任务CPU占用率升高。

2.3、设备之间通信:

主要包括IPCR任务(用于设备之间通信消息的发送、接收及分发)、IPCQ任务(用于设备之间通信消息的失败重传)、RPCQ任务(用于提供远程过程调用功能)等,这些任务的主要功能是实现设备之间管理消息通信功能。在产生大量设备之间管理消息的情况下,如大规格路由震荡、大量用户并发上线、环网震荡等,可能会导致这一类任务的CPU占用率升高。

2.4、接口管理:

主要包括IFNT任务(负责接口状态变化事件的处理)、IFPD任务(维护设备的接口数据库,处理各种接口状态变化事件)、linkscan任务(端口link状态检测任务)等,用于对设备当前的接口及其外围器件(如光模块)信息和接口状态进行维护,并将接口事件通告给业务模块进行处理。在接口数量较多、接口link状态震荡、光模块异常等情况下可能会导致这一类任务的CPU占用率升高。

3、网络管理任务

这一类任务的功能包括两个方面,一是提供网络管理界面;二是提供对网络状况的监控管理能力。常见的可能出现CPU占用率过高的任务有:

3.1、网络管理:

主要包括AGNT任务(提供IPv4 SNMP功能)、AGT6任务(提供IPv6 SNMP功能)、VTx任务(VTY用户任务,用于提供VTY用户的登录、鉴权、人机交互功能,x表示用户的登录序列,如第一个用户任务名为VT0)、FTPS任务(提供FTP服务功能)等,这些任务的作用是提供用户通过网络管理设备的能力。在用户终端打印大量数据、多个FTP进程同时下载文件、网管软件频繁访问设备遍历MIB节点信息等情况下,可能会出现这类任务的CPU占用率短时间过高的情况。

3.2、网络监控:

主要包括NSA任务(提供Netstream功能,用于监控网络中的业务流量)、NQASNQAC任务(提供NQA功能,用于对现网业务报文进行仿真测试)等,这些任务的主要作用是提供用户对网络的监控能力。这些任务一般不会导致CPU占用率过高。

4、报文接收和发送类任务

在网络中,可将报文按照功能分为控制报文和数据报文。在华为交换机控制面和转发面双平面分离的架构设计下,控制报文和部分数据报文(如ARP-Miss报文、组播RPF-Fail报文等)需要在控制面进行处理,而控制面的处理核心即为设备的CPU。由转发面上送CPU的报文经过一系列报文接收和发送任务的逐层解析和分发处理,最终完成整个报文的处理和转发过程,在这个过程中,涉及到BCMRBCMTMV07FTSVPVPRVPSSOCK等任务,当大量报文发送到控制面处理时,这些任务的CPU占用率就会出现显著的升高。这一类原因是导致系统CPU占用率高的重要原因。

5、业务协议类任务

业务协议任务承载了交换机的大部分协议功能。在网络稳定的情况下,业务协议的交互与处理一般不会造成较大的CPU占用率的波动,但是在网络变动频繁甚至是震荡的情况下,业务协议需要适应网络环境的变化进行频繁的交互和计算,此时可能会引起CPU占用率的升高。

常见的容易引起设备CPU占用率过高的任务包括ROUT(提供BGPIS-ISOSPFRIP等路由协议功能)、FIB等路由管理任务,frag_addfrag_delMSYNMAC管理任务,DHCPEAPSAM等用户管理任务以及ARP等交互较为频繁的协议任务。

 

8、分析交换机CPU高的根本原因

系统CPU占用率高通常是由系统外部输入或者系统内部事件触发的,如业务配置、网管同步、网络环境、器件故障等。因此,要确认设备CPU占用率高的根本原因,可以首先根据网络运维信息了解设备CPU占用率过高时有无重要的网络事件,如网络割接、链路状态变化、业务调整、备件更换、网管同步、大量用户上线、设备告警以及网络震荡等。

通过了解这些信息,可以为排查工作提供一些重要的线索,缩小分析排查的范围。

通过分析CPU占用率过高时的设备行为,我们可以初步判断导致CPU占用率高的直接原因,再结合网络部署及网络环境信息进行分析,可以最终找出导致CPU占用率高的根本原因。

由于系统中不同类型任务的处理过程不同,导致CPU占用率升高的根因也不同。

1、系统管理类任务

系统管理类任务的作用是对系统中的各器件进行管理,并提供操作系统基本功能给其他业务模块使用,因此系统管理类任务CPU占用率高的主要原因包括系统内部原因和其他模块触发两类。系统内部原因,通常是由硬件故障引起的,其他业务模块触发的情况下,可以根据导致系统CPU占用率过高的业务模块信息对问题进行分析。

2、网络管理类任务

网络管理类任务CPU占用率高是由网管同步等网络管理事件触发的,其影响时间较短,通常对业务不会造成影响。此类情况可以结合网络管理事件进行分析。

3、报文接收/发送类和业务协议类任务

这两类任务CPU占用率高往往是同时发生的,通常是由协议报文大量上送CPU产生的,可按照以下思路进行分析:

3.1、确定报文的种类

不同款型的交换机有多种方式对上送CPU的报文进行统计,主要有如下几种方式:

3.1.1、根据CPU-Defend统计信息分析上送报文的种类(仅S5710EIS5700EIS5700HIS6700支持支持)

可以通过display cpu-defend statistics all命令收集系统中所有上送CPU的报文的统计值。该统计值是持续累加的。如果连续采集几次信息发现某类报文上送CPU的速率明显较大(采集速率可以通过display cpu-defend rate all命令查看)甚至出现超出系统对该类报文上送CPU的速率的限制而产生报文丢弃的情况,则可将CPU占用率高的直接原因确认为是该类报文引起的。

可以使用reset cpu-defend statistics命令清空统计信息。同时CPU-Defend功能以10分钟为周期对报文上送CPU的情况进行监控,如果在检测周期内发现有报文上送CPU的数量超过阈值的情况,系统会将该类报文的报文类型、丢弃数量、发生时间等重要信息记入日志,可以通过查看该日志获取CPU占用率高时系统状态的历史记录。日志格式为:

盒交换机:

DEFD/4/CPCAR_DROP_MPU:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=[STRING], CIR/CBS=[ULONG]/[ULONG], ExceededPacketCount=[STRING])

框式主控板:

DEFD/6/CPCAR_DROP_MPU:Rate of packets to cpu exceeded the CPCAR limit on the MPU. (Protocol=[STRING], CIR/CBS=[ULONG]/[ULONG], 

 ExceededPacketCount=[STRING])

框式业务板:

DEFD/6/CPCAR_DROP_LPU:Rate of packets to cpu exceeded the CPCAR limit on the LPU in slot [STRING]. (Protocol=[STRING], 

 CIR/CBS=[ULONG]/[ULONG], ExceededPacketCount=[STRING])

3.1.2、根据业务模块使用情况判断上送CPU的报文种类

大量协议报文上送CPU通常会伴随着相关协议业务模块任务CPU占用率升高,可以利用协议任务CPU占用率信息判断是哪一类的报文大量上送CPU,常见的重要协议任务如下:

任务名

功能描述

ARP

实现ARP协议栈,管理协议状态机,维护协议相关的数据库。

DHCP

实现DHCP协议栈处理,完成DHCP SnoopingDHCP Relay等功能。

SNPG

IGMP Snooping/MLD Snooping协议栈,侦听并处理IGMPMLD协议报文。

ROUT

负责各路由协议路由选路以及路由学习,进行最优路由的选择并下发FIB

STP

实现STP协议栈,管理协议状态机,维护协议相关的数据库。

3.2、(可选)确定报文的详细特征

如果根据报文种类和网络管理事件仍无法分析出具体原因,则可以通过端口镜像获取报文信息、打印调试信息等方式分析上送CPU的报文的详细特征。

3.2.1、端口镜像获取报文信息(推荐)

端口镜像获取报文信息是最直接的获取报文详细特征的方式,且对设备的CPU不会造成任何影响,建议在上送CPU的报文的入方向端口进行镜像。

3.2.2、打印调试信息

如果不满足镜像获取报文信息条件,可以通过打印调试信息的方式对报文详细特征进行获取,打印调试信息本身会占用CPU资源,在定位问题过程中打印大量调试信息会加剧CPU占用率高的情况,请慎重使用。

3.2.2.1、(可选)通过ACL定义报文输出过滤器

如果需要对IP层调试信息进行过滤,可以通过配置ACL并应用在debug命令中的方式对输出调试信息进行过滤。

3.2.2.2、打开相应层次的调试信息开关

常用的调试信息包括IP层调试信息和链路层调试信息两种:

IP层调试信息:可以使用debugging ip packet命令打开IP层调试信息,该命令支持按照ACL对输出信息进行过滤。

链路层调试信息:可以使用debugging ethernet packet命令打开Ethernet层调试信息,该命令支持按照报文类型和接口对输出信息进行过滤。

3.2.2.3、打开终端信息输出开关

通过执行terminal monitor命令和terminal debugging命令将调试信息输出到用户终端。

3.3、分析根因

根据报文的种类和特征可以得到导致设备CPU占用率高的直接原因,根据该原因进一步分析问题的根本原因并进行相应的故障处理措施。常见的根本原因包括协议震荡、网络环路、网络攻击以及业务并发等,详细的故障处理措施请参考下节。

 

9、常见的引起CPU占用率高的原因和解决措施

1、硬件故障引起交换机CPU占用率高

当交换机出现硬件故障时,器件可能会大量上报中断,引起系统CPU占用率过高。由于硬件故障导致CPU占用率过高时,通常表现为SRMISRMRBCMDPC等中断处理相关的任务占用率较高,因此如果出现系统CPU占用率较高且以上相关任务占用率排名靠前的情况,则可能是系统硬件出现故障。

判断故障根源可能为硬件故障时,请先尝试手工复位CPU占用率较高的设备(建议采用下电的方式进行重启),如果重启后问题依然存在,请联系技术支持工程师进行处理。

2、网络环境引起交换机CPU占用率高

网络环境因素是导致交换机CPU占用率高的一类主要外部原因,常见的原因有网络震荡、网络环路、网络攻击等,不同原因导致的问题表现不同,需要根据具体情况分别进行处理。

2.1、网络震荡

网络震荡是导致设备CPU占用率过高的一类重要原因,出现网络震荡的情况下,网络频繁变动,设备忙于处理网络切换事件,导致CPU占用率高。常见的网络震荡情况如下:

2.1.1STP震荡

STP震荡是二层网络中的场景问题,在STP频繁震荡的情况下,设备需要不断进行STP拓扑计算,更新MAC表和ARP表等转发表,引起CPU占用率高。

当怀疑网络中存在频繁的STP震荡时,可以通过display stp topology-change命令查看STP的拓扑变化信息。

如果确认存在频繁的网络拓扑变化,可以通过display stp tc-bpdu statistics命令查看端口上接收到的TC-BPDU统计,以确定TC报文的来源。

根据TC报文的来源,找到发送拓扑变化的设备,根据该设备上的网络管理事件和系统日志分析STP拓扑变化的根因。

STP震荡引起交换机CPU占用率高处理建议

如果是接入侧端口up/down引起的STP拓扑变化,则在接口视图下通过stp edged-port enable命令将接入侧端口配置为边缘端口,并通过stp bpdu-protection命令开启BPDU保护功能。

如果是根桥发生了非预期的变化,即通常所说的抢根,则需要为原预期的端口通过stp root-protection命令开启根保护功能,保证拓扑的正确性。

如果网络中发生了TC攻击,则在被攻击的端口通过stp tc-protection命令部署TC保护功能,减少TC攻击对设备的影响。

如果无法找到拓扑变化原因或者执行以上处理措施后故障依然存在,请联系技术支持工程师。

2.1.2、路由协议震荡

路由协议震荡会导致路由信息的重新扩散和路由表的重新计算,对设备CPU产生影响。交换机的实际应用中,通常使用OSPF协议对动态路由信息进行管理。

可以通过日志查看OSPF邻居状态Down的原因。执行display logbuffer命令,查看如下日志信息:

OSPF/3/NBR_DOWN_REASON:Neighbor state leaves full or changed to Down. (ProcessId=[USHORT], NeighborRouterId=[IPADDR],  NeighborAreaId=[ULONG], NeighborInterface=[STRING],NeighborDownImmediate reason=[STRING], NeighborDownPrimeReason=[STRING],  NeighborChangeTime=[STRING])

NeighborDownImmediate reason此关键字记录的是OSPF邻居Down的原因。OSPF邻居Down的原因一般会有以下几种:

Neighbor Down Due to Inactivity:表示在deadtime时间内没有收到Hello报文导致OSPF邻居Down

Neighbor Down Due to Kill Neighbor:表示因为接口DownBFD Down或执行了reset ospf process操作。此时,可以通过查看NeighborDownPrimeReason字段判断具体原因。

Neighbor Down Due to 1-Wayhello ReceivedNeighbor Down Due to SequenceNum Mismatch:表示因为对端OSPF状态首先变成Down,从而向本端发送1-Wayhello,导致本端OSPF状态也变成Down。这种情况请先排查对端设备的原因。

OSPF邻居Down的常见原因包括接口链路震荡、大量LSA flooding等。

接口链路震荡

接口链路震荡会导致OSPF邻居关系震荡,可以通过日志信息查看接口up/down的记录情况。如果出现链路震荡,请对接口链路进行检查。

大量LSA flooding

大量LSA flooding会导致网络中产生大量的LS UPDATE消息,此时设备忙于处理LS UPDATE,可能会导致Hello报文得不到及时处理引起邻居状态Down。建议处理措施如下:

如果OSPF邻居超时时间配置小于20s,建议接口视图下通过ospf timer dead interval命令将OSPF邻居超时时间配置为20s以上。

建议OSPF视图下通过sham-hello enable命令使能ospf sham-hello功能,允许设备通过LSU等非hello报文维持邻居关系。

如果执行上述措施后仍然无法解决问题,建议联系技术支持工程师。

 

2.2、网络环路

网络环路是导致设备CPU占用率高的一类重要原因,出现网络环路的情况下,设备上MAC表频繁漂移,同时广播风暴会造成大量协议报文上送设备处理,导致CPU占用率高。

网络出现环路后会导致广播风暴,同时可能会有如下现象产生:

设备无法远程登录;在设备上使用display interface命令查看接口统计信息时发现接口收到大量广播报文;使用串口登录设备进行操作时,操作比较慢;CPU占用率超过70%;通过Ping命令进行网络测试时丢包严重;设备上发生环路的VLAN的接口指示灯频繁闪烁;PC机上能收到大量的广播报文;出现频繁的MAC漂移;设备部署环路检测后,设备出现环路告警。

网络环路引起交换机CPU占用率高处理建议

可以利用接口指示灯的闪烁情况和接口流量情况确认存在广播风暴的接口。

根据链路拓扑逐跳排查产生环路的设备。

判断产生环路的接口并破环。

 

2.3、网络攻击

网络攻击是由于网络中的主机或者网络设备通过发起大量的非正常网络交互对网络设备产生冲击,影响网络设备的安全性和正常的业务运行。发生网络攻击时,设备忙于处理来自于攻击源的非正常网络交互请求,导致设备CPU占用率高。

常见的引起CPU占用率高的网络攻击包括ARP攻击、ARP-Miss攻击、DHCP攻击以及TC BPDU攻击等,这些攻击行为的共同特点是攻击源产生大量的协议报文对设备进行冲击,因此可以在设备上看到大量的报文上送统计。

2.3.1ARP攻击和ARP-Miss攻击

执行display arp packet statistics命令获取ARP报文统计信息,重点关注ARP Pkt ReceivedARP-Miss Msg Received统计信息,根据其统计值的增长情况判断网络攻击类型。

堆叠情况下,display arp packet statistics命令只显示堆叠主交换机上ARP处理的报文统计数据

执行debugging arp packet命令打开ARP报文调试开关,查看大量上送的ARPARP-Miss攻击源信息。

2.3.2DHCP攻击

执行display dhcp statistics命令获取DHCP报文统计信息,如果报文上送速度较快,说明存在DHCP攻击。

2.3.3TC BPDU攻击

参见本章节“STP震荡”的定位方法。

网络攻击引起交换机CPU占用率高处理建议处理建议

如果是ARP攻击、ARP-Miss攻击和DHCP攻击,可以通过开启自动攻击溯源功能的方式及时检测攻击行为。 如果是TC BPDU攻击,参见本章节“STP震荡”的处理建议。

 

3、业务并发引起交换机CPU占用率高

大量业务并发对设备CPU的影响原理和网络攻击类似,常见的故障场景也是类似的(即大量用户上线产生大量的ARPDHCP交互),两者的主要区别是协议报文是合法的正常协议报文还是非法的恶意攻击,问题定位方法基本一致,但处理方式有所区别。

业务并发引起交换机CPU占用率高处理建议

对业务部署进行适当调整,将部分用户主机迁移到其他网络设备上线或者将部分业务调整到其他设备(如网关设备调整)。

通过策略缩小相关协议报文的CP-Car值,该调整可能会降低用户上线速率,调整需慎重。

 

4、用户操作引起交换机CPU占用率高

用户操作引起设备CPU占用率高通常是由于网管同步操作或者用户命令大量输出信息到终端导致的,该类情况的发生一般伴随着特定的网络管理事件。

采集CPU占用率高时各任务的CPU占用率,当出现AGNTAGT6任务CPU占用率过高时,可以确定CPU占用率高是网管同步等网管操作引起的;当出现VT任务CPU占用率高时,可以确定是用户命令大量输出信息到终端引起的。

用户操作引起交换机CPU占用率高处理建议

用户操作引起的CPU占用率高一般不会持续很长时间,并且通常情况下不会影响业务。如果确认用户网络管理操作是合理的管理行为且对业务没有造成影响,可无需关注;如果出现持续CPU占用率高或者对业务造成影响,请联系技术支持工程师。

 

10、防止交换机CPU占用率高配置建议

介绍部分特殊场景下的配置建议,避免引起系统CPU占用率过高,影响业务正常运行。

1、端口组特性:

当端口组成员个数超过40,批量加入4K VLAN时,可能导致CPU占用率短时间内超过80%,因此,建议该端口组批量加入的VLAN个数不超过500

2LNP特性:

当超过20个端口同时切换类型时,可能导致CPU占用率短时间内超过80%,因此,建议逐个切换端口类型,避免批量切换。

3MAC特性:

MAC频繁漂移可能导致CPU占用率高,因此,在可能产生MAC频繁漂移场景,建议通过命令mac-address flapping action error-down配置接口发生MAC漂移后的处理动作为error-down

4Loopback Detection特性:

当设备所有使能环回检测功能的接口下的VLAN个数总和超过1024时,建议通过命令loopback-detect action shutdown配置接口检测到环路时的处理动作为shutdown。(对于每个端口,每加入到一个VLANVLAN个数就加1,即使是多个端口同时加入同一个VLAN。)

 

 您阅读这篇文章共花了: 
二维码加载中...
技术交流:欢迎在本文下方留言或加入QQ群:481294053/474079428互相学习。     
本文地址:http://www.023wg.com/guzhang/292.html
版权声明:若无注明,本文皆为“重庆网管”原创,转载请保留文章出处。

返回顶部    首页   
版权所有:重庆网管    圈哥