服务器 system idle process占用率高 system idle process占用率100

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

一、CPU任务和CPU占用率简介

二、CPU报文处理原理

三、CPU占用率高属于正常现象的场景

四、CPU占用率高对系统的影响

五、排查华为交换机CPU占用率高的步骤

六、获取交换机CPU使用情况

七、识别交换机行为

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

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

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

一、CPU任务和CPU占用率简介

CPU运行的任务

华为交换机启动后,系统CPU持续运行以下任务:维护和管理设备状态的系统任务;当前网络环境需要运行的各种协议任务;从设备转发面接收和发送报文的处理任务。
在框式交换机上,根据硬件架构划分有如下角色: 机框、背板、电源/风扇、主控板、业务板;其中主控板、业务板上有CPU。

占用CPU的主要功能

华为交换机运行时,主控板需要占用CPU资源的特性功能包括:

管理设备组件:管理设备内各组件并检查其运行状态,如板卡、电源、风扇等;管理堆叠系统:管理和维护堆叠系统内成员交换机状态; 管理外部访问:处理上送CPU的网络管理流量,如Telnet、SSH、HTTP和SNMP等;

管理配置的网络控制协议:发送和接收协议报文、进行协议运算、更新转发表(如MSTP、MAC、FIB表等),网络控制协议包括STP、LLDP、LNP、LACP、VCMP、DLDP、EFM、GVRP、VRRP、各路由协议等; 辅助学习MAC:堆叠系统成员交换机间同步MAC; 软转发报文:如L2PT软转发L2协议报文;学习和老化ARP表项; 处理上送CPU的所有其他报文。

集群管理系统:管理和维护集群系统内成员交换机状态。

业务板CPU主要处理如下几类任务:

设备上的OS任务;维护和管理本单板状态的系统任务;分布到业务板运行的协议任务:如LACP在业务板上分布式收发报文等;维持转发表下发和同步的任务:如单板间同步MAC等。

CPU使用率说明

在任何时刻,设备的CPU上都可能有很多活跃的任务,如S5700LI、S9300就有超过个任务,该数值与交换机形态相关,通常设备支持的特性越多,系统运行的任务也越多。
由于系统一直处于运行状态,即使设备无任何业务配置和网络流量,其CPU占用率也不可能为0%。
在堆叠系统中,由于需要定时维护堆叠成员状态,并且系统大部分业务主要运行在堆叠主交换机上,因此堆叠主交换机的CPU占用率比单台设备运行时的CPU占用率高;堆叠成员交换机数量增多时,堆叠主交换机的CPU占用率也会相应升高。

当设备转发面上送CPU的报文速率过快(如因网络环路导致CPU短时间内收到大量报文)或者某任务长时间占用CPU时,CPU将高负荷运行,可能无法及时调度其他任务,进而引发业务异常。

设备提供了display cpu-usage命令查看当前CPU占用率情况,显示包括最近5秒钟、最近1分钟、最近5分钟的CPU平均占用率及历史最高CPU占用率和发生时刻,同时还由高到低列出了系统当前各任务在最近5秒钟内的CPU占用率情况。

通常情况下,普通数据报文转发由交换机硬件完成,无需CPU参与,因此CPU占用率高通常并不影响数据转发。

二、CPU报文处理原理

CPU参与处理的场景

华为交换机由硬件(芯片)转发普通数据报文,无需CPU参与。以下场景会将报文发送给CPU处理:
、需要交换机终结的协议报文,所有目的地址为本机的报文均需要上送CPU处理:各种协议控制报文,如STP、LLDP、LNP、LACP、VCMP、DLDP、EFM、GVRP、VRRP等;路由更新报文,如RIP、OSPF、BGP、IS{过滤}IS等;SNMP、Telnet、SSH报文;ARP、ND回应报文。

、需要特殊处理的数据报文:带option选项的ICMP报文;带hop-by-hop选项的IPv6报文;TTL小于或等于1的IPv4/IPv6报文;目的IP地址为本机的报文;ARP/ND/FIB Miss报文。

、基于ACL的特性:开启logging功能后,通过ACLdeny动作丢弃的报文;流策略重定向到CPU的报文。

、组播特性:PIM、IGMP、MLD、MSDP协议报文;未知IP组播流。

:其他特性:DHCP协议报文;ARP、ND广播请求报文,二层交换机配置动态ARP检测DAI(Dynamic ARP Inspection)时也发送ARP报文;L2PT软转发的L2协议报文(仅Tunnel两端的设备为软转发,中间设备使用硬件转发);N:1 VLAN mapping第一个报文上送CPU,后续报文使用硬件转发。

CPU处理报文的优先级

华为盒式交换机采用QoS机制处理上送CPU的报文,确保重要报文优先处理。盒式交换机将上送CPU的不同类型的报文划分到优先级不同的8个队列,不同交换机款型支持上送CPU的报文种类可能不同。

图1 将不同类型报文分发到CPU队列




以盒式交换机S5700LI形态为例,部分典型报文上送CPU的队列划分如下表1和上图1所示,队列ID值越大,优先级越高。

表1 S9300上基于协议的限速值

报文类型

业务板限

速值(kbps)

主控板限速值(kbps)

.1x、arp-miss、mpls-ping、nd、nd-miss、loopbacktest、nd-redirect

smart-link、lacp、lldp、dldp、ttl-expired、mpls-ttl-expired、ntp、hw-tacacs、fib-miss、hgmp-bc、smlk-rrpp、hotlimit、mpls-vccv-ping、arp-request、arp-reply、arp-mff、vpls-arp

eoam-3ah、mpls-one-label

vpls-igmp、mpls-rsvp、ipmc-invalid、bpdu

vrrp、bgp4plus、vrrp6、hvrp、ssh、ftp、snmp、gvrp、eoam-1ag-lblt、pppoe、hopbyhop、hgmp-mc、hgmp-uc、nac-nd、nd-snp-rs、nd-snp-rans、nd-snp-na、mad、nac-arp

mpls-oam、igmp、pim、rip、telnet、tcp、fib-hit、rrpp、udp-helper

stp、mld、unknown-multicast、bpdu-tunnel、ipmc-miss

fib6-hit、mpls-fib-hit

icmp

http、pimv6、icmpv6、easy-operation、eoam-1ag、heart-packet

IS{过滤}IS、ospf、ospf-hello、bgp、bfd、mpls-ldp、ripng、ospfv3、nac-dhcp、vpls-dhcp-request、vpls-dhcp-reply、nac-dhcpv6、ospfv3-uc

dhcp-client、dhcpv6-request、dhcpv6-reply、radius、y1731

dhcp-server

表2 业务板上CPU处理不同报文的队列划分(队列ID越大,转发优先级越高)

业务板上队列ID

报文类型

说明

7

lacp

快协议报文(快协议指响应时间很短的协议,如BFD,响应时间在100ms以内,如果短暂丢包就可能导致协议震荡)

6

vp

从业务板CPU上送的报文

5

stp、smart-link、ldt、lldp、dldp、vrrp、mpls-oam、IS{过滤}IS、pim、rip、ospf、ospf-hello、bgp、bfd、mpls-rsvp、mpls-ldp、mpls-ttl-expired、ntp、ripng、ospfv3、bgp4plus、pimv6、vrrp6、hvrp、telnet、ssh、mpls-ping、gvrp、bpdu-tunnel、rrpp、eoam-3ah、eoam-1ag、eoam-1ag-lblt、nd、y1731、mpls-one-label、loopbacktest、bpdu、nap、hgmp-mc、hgmp-uc、hgmp-bc、nd-redirect、nd-snp-rs、nd-snp-rans、nd-snp-na、mad、smlk-rrpp、ospfv3-uc

重要控制面协议报文

4

other

-

3

arp-request、arp-reply、dhcp-client、dhcp-server、igmp、vpls-igmp、icmp、8021x、http、dhcpv6-request、dhcpv6-reply、icmpv6、mld、ftp、snmp、radius、hw-tacacs、tcp、easy-operation、fib-hit、fib-miss、arp-miss、unknown-packet、udp-helper、arp-mff、pppoe、hopbyhop、mpls-vccv-ping、fib6-hit、nd-miss、nac-dhcp、vpls-arp、vpls-dhcp-request、vpls-dhcp-reply、nac-arp、icmp-ttl-expired、mpls-fib-hit、nac-nd、nac-dhcpv6、heart-packet

重要控制面协议报文

2

ttl-expired、hotlimit

次要控制面协议报文

1

unknown-multicast、ipmc-invalid、ipmc-miss

次要控制面协议报文

0

other

-

表3 主控板上CPU处理不同报文的队列划分(队列ID越大,转发优先级越高)

主控板上队列ID

报文类型

说明

7

lacp

快协议报文(快协议指响应时间很短的协议,如BFD,响应时间在100ms以内,如果短暂丢包就可能导致协议震荡)

6

vp

从业务板CPU上送的报文

5

stp、smart-link、ldt、lldp、dldp、vrrp、mpls-oam、IS{过滤}IS、pim、rip、ospf、ospf-hello、bgp、bfd、mpls-rsvp、mpls-ldp、mpls-ttl-expired、ntp、ripng、ospfv3、bgp4plus、pimv6、vrrp6、hvrp、telnet、ssh、mpls-ping、gvrp、bpdu-tunnel、rrpp、eoam-3ah、eoam-1ag、eoam-1ag-lblt、nd、y1731、loopbacktest、bpdu、nap、hgmp-mc、hgmp-uc、hgmp-bc、nd-redirect、nd-snp-rs、nd-snp-rans、nd-snp-na、mad、smlk-rrpp、ospfv3-uc

重要控制面协议报文

4

other

-

3

arp-request、arp-reply、dhcp-client、dhcp-server、igmp、vpls-igmp、icmp、8021x、http、dhcpv6-request、dhcpv6-reply、icmpv6、mld、ftp、snmp、radius、hw-tacacs、tcp、easy-operation、fib-hit、fib-miss、arp-miss、unknown-packet、udp-helper、arp-mff、pppoe、hopbyhop、mpls-vccv-ping、fib6-hit、nd-miss、nac-dhcp、mpls-one-label、vpls-arp、vpls-dhcp-request、vpls-dhcp-reply、nac-arp、icmp-ttl-expired、mpls-fib-hit、nac-nd、nac-dhcpv6、heart-packet

重要控制面协议报文

2

ttl-expired、hotlimit

次要控制面协议报文

1

unknown-multicast、ipmc-invalid、ipmc-miss

次要控制面协议报文

0

other

-

交换机根据报文的层次(管理/控制/转发)及其重要性来指定将报文发送到哪个CPU队列。CPU队列具有相对优先级。例如,Telnet管理报文和dhcp-client协议报文同时排队,CPU将优先处理5号队列的Telnet管理报文,通过该机制确保CPU高负荷下设备稳定可管理。同时,CPU还通过加权调度机制防止低优先级队列的报文得不到处理。在稳定的网络环境下,上送CPU的报文数量控制在适当的范围内,CPU占用率也稳定在一个合理的区间。如果一段时间内上送CPU的报文数量过大,则CPU会因为忙于处理这些报文而表现为CPU占用率过高。

三、CPU占用率高属于正常现象的场景

在一些网络应用中,CPU占用率较高是正常的。通常情况下,网络规模越大,处理网络流量需要的CPU资源将越多。对于运行堆叠的交换机系统,当管理的成员交换机数量增多时,CPU用于维护和管理堆叠系统状态所需要的资源也会相应增加。设备长时间运行时CPU占用率不超过%,短时间内CPU占用率不超过%,可认为设备状态是正常的。

CPU占用率高的正常场景

华为交换机在如下一些场景可能导致CPU占用率高,但是属于正常现象,而不是故障场景:

、生成树

对于MSTP,CPU占用率同实例数和活跃端口数成正比。对于VBST,由于每个VLAN独立运行一个实例,因此在相同VLAN和端口数目下,VBST比MSTP占用更多的CPU资源。

、更新路由表

当一台三层交换机接收到路由更新消息时,设备需占用CPU资源将路由信息更新到转发面。对于堆叠系统,路由信息还需要同步到其他成员交换机。在路由表更新过程中影响CPU占用率大小的因素有:路由表项的规模;更新的频率;接收更新的路由协议进程数;堆叠系统成员交换机数量。

、执行命令

部分命令因执行时间长会导致CPU占用率暂时升高,主要包括:用户视图下执行copy flash:/命令;一些输出信息量大的debug命令,尤其是通过串口输出debug信息。

、导致CPU占用率高的其他事件

端口使能了Sticky MAC功能后,快速学习MAC;将大量端口同时加入大量VLAN(如通过端口组操作,将大批端口加入大量VLAN、修改大批端口的链路类型等);频繁或大量的IGMP请求;频繁的网管操作;大量并发的DHCP请求(如交换机作为DHCP服务器时,同时恢复与大量用户的连接);ARP广播风暴;以太网广播风暴;软转发大量并发协议报文(如短时间内L2PT透传大量BPDU报文,DHCP Relay/Snooping软转发DHCP报文等);大量不能硬件转发的数据报文上送CPU(如ARP-Miss);端口频繁up/down。

四、CPU占用率高对系统的影响

CPU占用率过高会影响系统处理能力,导致网络业务表现不如预期,可能导致出现的网络故障现象有:

、STP拓扑改变甚至出现网络环路

交换机通过CPU周期性的接收BPDU报文维持其Root/Alternate端口角色,如果因上游设备CPU繁忙导致BPDU报文不能及时发出或本机CPU繁忙不能及时处理收到的BPDU报文,交换机会认为到根桥的原路径故障而重新选择Root端口,引起网络重新收敛;如果交换机原来同时存在Alternate端口,则将Alternate端口作为新的Root端口,这时就可能导致网络出现环路。

、路由拓扑改变

动态路由协议的保活由CPU完成,如果因CPU繁忙不能及时接收和发送hello报文,就会导致路由震荡,如OSPF震荡、BGP震荡、VRRP震荡。

、可靠性检测协议震荡

.3ah、.1ag、DLDP、BFD、MPLS OAM等检测协议均由CPU完成定时保活(S5700HI通过硬件OAM引擎实现.1ag、BFD、MPLS OAM的超时探测,其OAM保活不受CPU负荷状态影响),如果因为CPU繁忙不能及时接收和发送协议报文,将会导致协议震荡,进而影响相关业务流量转发。

、LACP类型的Eth-Trunk链路震荡

LACP的保活由CPU完成,如果因CPU繁忙不能及时接收和发送LACP报文,Eth-Trunk会将链路关闭,产生链路震荡。

、交换机不能响应正常的管理请求

Telnet或SSH会话不能建立,导致无法管理设备或者设备反应慢,命令执行有延迟等;SNMP超时;MAC/IP Ping耗时很长甚至超时。

、交换机不能及时转发或回应客户端请求,导致DHCP失败或IEEE .1x失败

、通过CPU软转发的报文被丢弃或转发时延增大

、设备内存消耗增加

五、排查华为交换机CPU占用率高的步骤

当发现CPU占用率过高时,建议按照“确定现象”、“明确问题”、“确认根因”、“修复故障”的整体思路进行分析,主要涉及以下几个关键点的信息:

CPU占用率升高发生在什么时间?

CPU占用率升高时系统在做什么?

什么因素导致CPU占用率升高?

CPU占用率高是否是正常情况?是否需要修复?如何修复?

六、获取交换机CPU使用情况

设备的CPU占用率指一段时间内系统中非空闲任务占用CPU处理的时间比率,是对设备CPU使用情况的一个宏观统计,具有以下的几个重要特点:

持续变化性:系统的CPU占用率不是保持不变的,它是随着系统的运行和外部环境的变化而持续变化的。

非实时性:系统的CPU占用率反映的是一个CPU统计周期内的CPU使用情况,并不是特指某一个时间点的实时占用情况。

实体强相关性:CPU占用率是以物理CPU为粒度进行统计的,通常而言,系统中的每一个物理实体单元均有一个单独的物理CPU,因此堆叠系统中每台成员交换机的CPU占用率都是相互独立的。

、获取设备信息。

通过display device命令获取设备信息,如设备型号是什么、是否是堆叠系统、堆叠系统的成员交换机设备有哪些等。

display device

S5700-28P-LI-AC's Device status:

Slot Sub Type Online Power Register Status Role

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

0 - S5700-28P-LI Present PowerOn Registered Normal Master

1 - S5700-28P-LI Present PowerOn Registered Normal Standby

2 - S5700-28P-LI Present PowerOn Registered Normal Slave

--------------------------------------------------------------------------------------------------------------------------------------------------------

display device

S7712's Device status: Slot Sub Type Online Power Register Status Role

-------------------------------------------------------------------------------

6 - ES0D0X4UXC00 Present PowerOn Registered Normal NA

8 - ES0D0F48TC00 Present PowerOn Registered Normal NA

9 - ES0D0G24SC00 Present PowerOn Registered Normal NA

- - Present PowerOff Unregistered - NA

- ES0D00SRUA00 Present PowerOn Registered Normal Master

PWR1 - - Present PowerOn Registered Normal NA

CMU1 - LE0DCMUA0000 Present PowerOn Registered Normal Master

FAN1 - - Present PowerOn Registered Normal NA

FAN2 - - Present PowerOn Registered Normal NA

FAN3 - - Present PowerOn Registered Normal NA

FAN4 - - Present PowerOn Registered Normal NA

---------------------------------------------------------------------------------------------------------------------------------------------------

display device

S12712's Device status:

Slot Sub Type Online Power Register Status Role

-------------------------------------------------------------------------------

6 - ET1D2S04SX1E Present PowerOn Registered Normal NA

- ET1D2MPUA000 Present PowerOn Registered Normal Master

- ET1D2SFUA000 Present PowerOn Registered Normal NA

PWR1 - - Present - Unregistered - NA

PWR2 - - Present PowerOn Registered Normal NA

PWR3 - - Present PowerOn Registered Normal NA

PWR4 - - Present PowerOn Registered Normal NA

CMU1 - EH1D200CMU00 Present PowerOn Registered Normal Master

FAN1 - - Present PowerOn Registered Normal NA

FAN2 - - Present PowerOn Registered Normal NA

FAN3 - - Present PowerOn Registered Normal NA

FAN4 - - Present PowerOn Registered Normal NA

FAN5 - - Present PowerOn Registered Normal NA

、获取CPU占用率统计信息。

通过display cpu-usage [ slave | slot slot-id ]命令查看发生CPU占用率高的设备的CPU占用率统计信息,slot-id在堆叠系统中表示堆叠ID。

display cpu-usage slot 0 //s5700的CPU占用率

CPU Usage Stat. Cycle: (Second)

CPU Usage : % Max: %

CPU Usage Stat. Time : ::

CPU utilization for five seconds: %: one minute: %: five minutes: %

Max CPU Usage Stat. Time : ::.

TaskName CPU Runtime(CPU Tick High/Tick Low) Task Explanation

ARP % 0/bda2b23b ARP

OS % 0/b2d02f1f Operation System

L2IF % 0/8448bf54 L2IF

IFPD 4% 0/1e575090 IFPD Ifnet Product Adapter

L2_P 3% 0/1a777526 L2_PR

FTS 2% 0/13ed6c3e FTS

IPCQ 2% 0/1256ab6f IPCQIPC task for single queue

STP 2% 0/175350b9 STP

VPR 2% 0/16254e6f VPR VP Receive

mv_rx7 2% 0/123d908c mv_rx7

VIDL 1% 0/ 5f5df6f DOPRA IDLE

mv_rx6 1% 0/ db73d34 mv_rx6

AAA 0% 0/ 1d5c6 AAA Authen Account Authorize

ACL 0% 0/ 5fa8c7 ACL Access Control List

ADPT 0% 0/ 0 ADPT Adapter

AGNT 0% 0/ 0 AGNTSNMP agent task

AGT6 0% 0/ 0 AGT6SNMP AGT6 task

ALM 0% 0/ 0 ALM Alarm Management

ALS 0% 0/ 3c2c178 ALS Loss of Signal

AM 0% 0/ 155db9 AM Address Management

APP 0% 0/ 0 APP

ASFI 0% 0/ 0 ASFI

ASFM 0% 0/ 0 ASFM

BATT 0% 0/ 0 BATT Main Task

BFD 0% 0/ 3d8a91 BFD Bidirection Forwarding

Detect

BOX 0% 0/ 0 BOX Output

BPDU 0% 0/ 1f13d BPDU Adapter

BTRC 0% 0/ BTRC

CAPM 0% 0/ 0 CAPM Capture Packet

......

---------------------------------------------------------------------------------------------------------------------------------------------------

display cpu-usage //S7700的CPU占用率

CPU Usage Stat. Cycle: (Second)

CPU Usage : % Max: %

CPU Usage Stat. Time : ::

CPU utilization for five seconds: %: one minute: %: five minutes: %

Max CPU Usage Stat. Time : ::.

TaskName CPU Runtime(CPU Tick High/Tick Low) Task Explanation

VIDL % 8/ 4c8b1ff DOPRA IDLE

OS % 1/2c684bff Operation System

PMS 2% 0/3319cd96 PMS PM Server

1AGAGT 1% 0/2d284283 1AGAGT

ROUT 1% 0/212518ba ROUTRoute task

TICK 1% 0/19d4a03c

bcmCNTR.% 0/2cc62976 tS16

AAA 0% 0/ 735b5 AAA Authen Account Authorize

ADPT 0% 0/ 0 ADPT

AGNT 0% 0/ 0 AGNTSNMP agent task

AGT6 0% 0/ 0 AGT6SNMP AGT6 task

ALM 0% 0/ 0 ALM Alarm Management

AM 0% 0/ 2c8c6a AM Address Management

AMCP 0% 0/ 87b7ca AMCP

APP 0% 0/ 98c51 APP

APS 0% 0/ d91a3d APS Automatic Protection

Switch

---- More ----

-----------------------------------------------------------------------------------------------------------------------------------

display cpu-usage //S12700的CPU占用率

CPU Usage Stat. Cycle: (Second)

CPU Usage : % Max: %

CPU Usage Stat. Time : ::

CPU utilization for five seconds: %: one minute: %: five minutes: %

Max CPU Usage Stat. Time : ::.

TaskName CPU Runtime(CPU Tick High/Tick Low) Task Explanation

VIDL % 8/ 4c8b1ff DOPRA IDLE

OS % 1/2c684bff Operation System

PMS 2% 0/3319cd96 PMS PM Server

1AGAGT 1% 0/2d284283 1AGAGT

ROUT 1% 0/212518ba ROUTRoute task

TICK 1% 0/19d4a03c

bcmCNTR.% 0/2cc62976 tS16

AAA 0% 0/ 735b5 AAA Authen Account Authorize

ADPT 0% 0/ 0 ADPT

AGNT 0% 0/ 0 AGNTSNMP agent task

AGT6 0% 0/ 0 AGT6SNMP AGT6 task

ALM 0% 0/ 0 ALM Alarm Management

AM 0% 0/ 2c8c6a AM Address Management

AMCP 0% 0/ 87b7ca AMCP

APP 0% 0/ 98c51 APP

APS 0% 0/ d91a3d APS Automatic Protection

Switch ---- More ----

、获取CPU占用率高的告警和日志信息。

当CPU占用率超过告警阈值时,系统会向网管发送告警并将CPU占用率和占用CPU资源最多的3个任务等关键信息记录到系统日志中。可通过这些信息获取CPU占用率过高的相关记录。

、查看CPU占用率过高的告警信息。可以通过网管监控或display trapbuffer命令查看设备的告警信息,查看设备是否产生了CPU占用率过高的告警。相关告警信息为:

ENTITYTRAP_1... hwCPUUtilizationRising

ENTITYTRAP/4/ENTITYCPUALARM:OID [oid] CPU utilization exceeded the pre-alarm threshold.(Index=[INTEGER],

EntityPhysicalIndex=[INTEGER], PhysicalName=[OCTET], EntityThresholdType=[INTEGER], EntityThresholdValue=[INTEGER],

EntityThresholdCurrent=[INTEGER], EntityTrapFaultID=[INTEGER].)

、查看CPU占用率过高的日志信息。可以通过查看系统日志文件或display logbuffer命令查看设备的日志信息,查看设备是否产生了CPU占用率过高的日志。相关日志信息为:

VOSCPU/4/CPU_USAGE_HIGH

VOSCPU/4/CPU_USAGE_HIGH:The CPU is overloaded (CpuUsage=[ULONG]%, Threshold=[ULONG]%), and the tasks with top three

CPU occupancy are: [CPU-resources-usage]

七、识别交换机行为

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

根据上节中命令的提示或者收集到的日志、告警的信息,获取CPU占用率较高的任务,建议重点关注占用率最高的前3个任务。
系统通过任务承载业务功能,任务的CPU占用率可以在一定程度上反映各业务功能的活动情况,是分析设备行为的重要手段。通常情况下,可以根据实际业务部署情况重点关注以下几类重要任务:

、系统空闲任务

该任务是系统中的一个特殊任务,任务名为VIDL,任务优先级最低,仅在没有其他任何非空闲任务运行时,该任务才会占用CPU;在其他非空闲任务需要使用CPU时,该任务会被立即抢占。
CPU占用率是指各非空闲任务占用CPU运行时间的比率,因此,系统会利用VIDL任务占用CPU的时间来统计设备的CPU占用率。VIDL任务的CPU占用率越高,系统的CPU占用率越低,系统越空闲。
、系统管理任务
这一类任务的主要功能是对系统资源进行管理,并提供操作系统基础机制,如定时器、信息中心等功能。常见的可能导致CPU占用率过高的系统管理任务有:

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

、设备管理:

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

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

、接口管理:

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

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

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

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

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

常见的容易引起设备CPU占用率过高的任务包括ROUT(提供BGP、IS-IS、OSPF、RIP等路由协议功能)、FIB等路由管理任务,frag_add、frag_del、MSYN等MAC管理任务,DHCP、EAP、SAM等用户管理任务以及ARP等交互较为频繁的协议任务。

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

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

通过了解这些信息,可以为排查工作提供一些重要的线索,缩小分析排查的范围。
通过分析CPU占用率过高时的设备行为,我们可以初步判断导致CPU占用率高的直接原因,再结合网络部署及网络环境信息进行分析,可以最终找出导致CPU占用率高的根本原因。
由于系统中不同类型任务的处理过程不同,导致CPU占用率升高的根因也不同。

、系统管理类任务

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

、网络管理类任务

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

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

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

、确定报文的种类
不同款型的交换机有多种方式对上送CPU的报文进行统计,主要有如下几种方式:
、根据CPU-Defend统计信息分析上送报文的种类(仅S5710EI、S5700EI、S5700HI和S6700支持支持)
可以通过displaycpu-defend statistics all命令收集系统中所有上送CPU的报文的统计值。该统计值是持续累加的。如果连续采集几次信息发现某类报文上送CPU的速率明显较大(采集速率可以通过display cpu-defend rate all命令查看)甚至出现超出系统对该类报文上送CPU的速率的限制而产生报文丢弃的情况,则可将CPU占用率高的直接原因确认为是该类报文引起的。

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

盒交换机:

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

框式主控板:

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

ExceededPacketCount=[STRING])
框式业务板:

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

CIR/CBS=[ULONG]/[ULONG],ExceededPacketCount=[STRING])
、根据业务模块使用情况判断上送CPU的报文种类)
大量协议报文上送CPU通常会伴随着相关协议业务模块任务CPU占用率升高,可以利用协议任务CPU占用率信息判断是哪一类的报文大量上送CPU,常见的重要协议任务如下:

任务名

功能描述

ARP

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

DHCP

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

SNPG

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

ROUT

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

STP

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

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

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

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

.1、(可选)通过ACL定义报文输出过滤器
如果需要对IP层调试信息进行过滤,可以通过配置ACL并应用在debug命令中的方式对输出调试信息进行过滤。

.2、打开相应层次的调试信息开关
常用的调试信息包括IP层调试信息和链路层调试信息两种:
IP层调试信息:可以使用debugging ip packet命令打开IP层调试信息,该命令支持按照ACL对输出信息进行过滤。
链路层调试信息:可以使用debugging ethernet packet命令打开Ethernet层调试信息,该命令支持按照报文类型和接口对输出信息进行过滤。

.3、打开终端信息输出开关
通过执行terminal monitor命令和terminal debugging命令将调试信息输出到用户终端。

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

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

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

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

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

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

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

、网络震荡

网络震荡是导致设备CPU占用率过高的一类重要原因,出现网络震荡的情况下,网络频繁变动,设备忙于处理网络切换事件,导致CPU占用率高。常见的网络震荡情况如下:
、STP震荡
STP震荡是二层网络中的场景问题,在STP频繁震荡的情况下,设备需要不断进行STP拓扑计算,更新MAC表和ARP表等转发表,引起CPU占用率高。
当怀疑网络中存在频繁的STP震荡时,可以通过displaystp 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攻击对设备的影响。
如果无法找到拓扑变化原因或者执行以上处理措施后故障依然存在,请联系技术支持工程师。

、路由协议震荡

路由协议震荡会导致路由信息的重新扩散和路由表的重新计算,对设备CPU产生影响。交换机的实际应用中,通常使用OSPF协议对动态路由信息进行管理。
可以通过日志查看OSPF邻居状态Down的原因。执行displaylogbuffer命令,查看如下日志信息:

OSPF/3/NBR_DOWN_REASON:Neighbor state leaves full or changed toDown. (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:表示因为接口Down、BFD Down或执行了resetospf process操作。此时,可以通过查看NeighborDownPrimeReason字段判断具体原因。
Neighbor Down Due to 1-Wayhello Received或NeighborDown Due to SequenceNum Mismatch:表示因为对端OSPF状态首先变成Down,从而向本端发送1-Wayhello,导致本端OSPF状态也变成Down。这种情况请先排查对端设备的原因。

OSPF邻居Down的常见原因包括接口链路震荡、大量LSA flooding等。
接口链路震荡
接口链路震荡会导致OSPF邻居关系震荡,可以通过日志信息查看接口up/down的记录情况。如果出现链路震荡,请对接口链路进行检查。

大量LSAflooding
大量LSAflooding会导致网络中产生大量的LS UPDATE消息,此时设备忙于处理LS UPDATE,可能会导致Hello报文得不到及时处理引起邻居状态Down。建议处理措施如下:
如果OSPF邻居超时时间配置小于20s,建议接口视图下通过ospftimer dead interval命令将

OSPF邻居超时时间配置为20s以上。
建议OSPF视图下通过sham-helloenable命令使能ospf sham-hello功能,允许设备通过LSU等非hello报文维持邻居关系。

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

、网络环路
网络环路是导致设备CPU占用率高的一类重要原因,出现网络环路的情况下,设备上MAC表频繁漂移,同时广播风暴会造成大量协议报文上送设备处理,导致CPU占用率高。
网络出现环路后会导致广播风暴,同时可能会有如下现象产生:
设备无法远程登录;在设备上使用display interface命令查看接口统计信息时发现接口收到大量广播报文;使用串口登录设备进行操作时,操作比较慢;CPU占用率超过%;通过Ping命令进行网络测试时丢包严重;设备上发生环路的VLAN的接口指示灯频繁闪烁;PC机上能收到大量的广播报文;出现频繁的MAC漂移;设备部署环路检测后,设备出现环路告警。

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

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

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

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

、网络攻击

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

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

、ARP攻击和ARP-Miss攻击
执行displayarp packet statistics命令获取ARP报文统计信息,重点关注ARP Pkt Received和ARP-Miss Msg Received统计信息,根据其统计值的增长情况判断网络攻击类型。
堆叠情况下,displayarp packet statistics命令只显示堆叠主交换机上ARP处理的报文统计数据
执行debuggingarp packet命令打开ARP报文调试开关,查看大量上送的ARP或ARP-Miss攻击源信息。

、DHCP攻击& ~& f. o1 Y n5 [% \
执行displaydhcp statistics命令获取DHCP报文统计信息,如果报文上送速度较快,说明存在DHCP攻击。

、TC BPDU攻击6 r2 Q4 V$ P* D! [( q% z s- R; f
参见本章节“STP震荡”的定位方法。
网络攻击引起交换机CPU占用率高处理建议处理建议
如果是ARP攻击、ARP-Miss攻击和DHCP攻击,可以通过开启自动攻击溯源功能的方式及时检测攻击行为。 如果是TC BPDU攻击,参见本章节“STP震荡”的处理建议。

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

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

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

对业务部署进行适当调整,将部分用户主机迁移到其他网络设备上线或者将部分业务调整到其他设备(如网关设备调整)。
通过策略缩小相关协议报文的CP-Car值,该调整可能会降低用户上线速率,调整需慎重。

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

用户操作引起设备CPU占用率高通常是由于网管同步操作或者用户命令大量输出信息到终端导致的,该类情况的发生一般伴随着特定的网络管理事件。
采集CPU占用率高时各任务的CPU占用率,当出现AGNT或AGT6任务CPU占用率过高时,可以确定CPU占用率高是网管同步等网管操作引起的;当出现VT任务CPU占用率高时,可以确定是用户命令大量输出信息到终端引起的。

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

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

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

、端口组特性:

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

、LNP特性:

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

、MAC特性:

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

、Loopback Detection特性:

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

原文链接:,转发请注明来源!