华为华三思科等交换机CPU占用率高原因判断和解决方法第一篇
1、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上都可能有很多活跃的任务,如S5700LI、S9300就有超过200个任务,该数值与交换机形态相关,通常设备支持的特性越多,系统运行的任务也越多。
由于系统一直处于运行状态,即使设备无任何业务配置和网络流量,其CPU占用率也不可能为0%。在堆叠系统中,由于需要定时维护堆叠成员状态,并且系统大部分业务主要运行在堆叠主交换机上,因此堆叠主交换机的CPU占用率比单台设备运行时的CPU占用率高;堆叠成员交换机数量增多时,堆叠主交换机的CPU占用率也会相应升高。
当设备转发面上送CPU的报文速率过快(如因网络环路导致CPU短时间内收到大量报文)或者某任务长时间占用CPU时,CPU将高负荷运行,可能无法及时调度其他任务,进而引发业务异常。
设备提供了display cpu-usage命令查看当前CPU占用率情况,显示包括最近5秒钟、最近1分钟、最近5分钟的CPU平均占用率及历史最高CPU占用率和发生时刻,同时还由高到低列出了系统当前各任务在最近5秒钟内的CPU占用率情况。
通常情况下,普通数据报文转发由交换机硬件完成,无需CPU参与,因此CPU占用率高通常并不影响数据转发。
2、CPU报文处理原理
华为交换机由硬件(芯片)转发普通数据报文,无需CPU参与。以下场景会将报文发送给CPU处理:
1、需要交换机终结的协议报文,所有目的地址为本机的报文均需要上送CPU处理:各种协议控制报文,如STP、LLDP、LNP、LACP、VCMP、DLDP、EFM、GVRP、VRRP等;路由更新报文,如RIP、OSPF、BGP、IS-IS等;SNMP、Telnet、SSH报文;ARP、ND回应报文。
2、需要特殊处理的数据报文:带option选项的ICMP报文;带hop-by-hop选项的IPv6报文;TTL小于或等于1的IPv4/IPv6报文;目的IP地址为本机的报文;ARP/ND/FIB Miss报文。
3、基于ACL的特性:开启logging功能后,通过ACL deny动作丢弃的报文;流策略重定向到CPU的报文。
4、组播特性:PIM、IGMP、MLD、MSDP协议报文;未知IP组播流。
5:其他特性:DHCP协议报文;ARP、ND广播请求报文,二层交换机配置动态ARP检测DAI(Dynamic ARP Inspection)时也发送ARP报文;L2PT软转发的L2协议报文(仅Tunnel两端的设备为软转发,中间设备使用硬件转发);N:1 VLAN mapping第一个报文上送CPU,后续报文使用硬件转发。
华为盒式交换机采用QoS机制处理上送CPU的报文,确保重要报文优先处理。盒式交换机将上送CPU的不同类型的报文划分到优先级不同的8个队列,不同交换机款型支持上送CPU的报文种类可能不同。

图1
将不同类型报文分发到CPU队列
以盒式交换机S5700LI形态为例,部分典型报文上送CPU的队列划分如下表1和上图1所示,队列ID值越大,优先级越高。
表1 CPU处理不同报文的队列划分 |
|
|
队列ID | 报文类型 | 说明 |
7 | IPC、RPC、LACP | 内部管理报文 |
6 | VP | 内部软转发的协议报文 |
5 | Telnet、SSH、LNP、DHCP | 管理面协议报文 |
4 | ARP Request | 重要控制面协议报文 |
3 | STP、SMLK、EOAM、VCMP | 重要控制面协议报文 |
2 | LBDT、LLDP、DLDP、IGMP、ICMP、NTP、802.1x、GVRP、L2PT、ARP Miss、FTP、SNMP | 控制面协议报文 |
1 | Other | - |
0 | Other |
|


图1
框式交换机上报文的上送限速
如上图1所示,框式交换机报文最终送到主控板的CPU可能经过多次限速,包括:转发芯片的限速、交换网芯片的限速。多次限速逐层形成防护墙,保证主控板CPU的安全。

图2
框式交换机上送CPU报文的限速分类
如上图2所示,框式交换机每个芯片/逻辑的限速主要分为三类:基于协议的限速、基于队列的限速、基于端口的所有报文统一限速。如下以V200R007版本S9300非X1E系列的业务板为例,介绍CPU限速等的缺省情况(其他款型、其他版本可以通过命令display cpu-defend configuration all查看)。
表1 S9300上基于协议的限速值 |
|
|
|
|
报文类型 | 业务板限速值(kbps) | 主控板限速值(kbps) |
|
|
802.1x、arp-miss、mpls-ping、nd、nd-miss、loopbacktest、nd-redirect | 64 | 64 |
|
|
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 | 64 | 128 |
|
|
eoam-3ah、mpls-one-label | 64 | 256 |
|
|
vpls-igmp、mpls-rsvp、ipmc-invalid、bpdu | 64 | 512 |
|
|
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 | 128 | 128 |
|
|
mpls-oam、igmp、pim、rip、telnet、tcp、fib-hit、rrpp、udp-helper | 128 | 256 |
|
|
stp、mld、unknown-multicast、bpdu-tunnel、ipmc-miss | 128 | 512 |
|
|
fib6-hit、mpls-fib-hit | 128 | 1024 |
|
|
icmp | 192 | 256 |
|
|
http、pimv6、icmpv6、easy-operation、eoam-1ag、heart-packet | 256 | 256 |
|
|
isis、ospf、ospf-hello、bgp、bfd、mpls-ldp、ripng、ospfv3、nac-dhcp、vpls-dhcp-request、vpls-dhcp-reply、nac-dhcpv6、ospfv3-uc | 256 | 512 |
|
|
dhcp-client、dhcpv6-request、dhcpv6-reply、radius、y1731 | 512 | 512 |
|
|
dhcp-server | 512 | 1024 |
|
|
表2 业务板上CPU处理不同报文的队列划分(队列ID越大,转发优先级越高) |
|
|
|
|
业务板上队列ID | 报文类型 | 说明 |
|
|
7 | lacp | 快协议报文(快协议指响应时间很短的协议,如BFD,响应时间在100ms以内,如果短暂丢包就可能导致协议震荡) |
|
|
6 | vp | 从业务板CPU上送的报文 |
|
|
5 | stp、smart-link、ldt、lldp、dldp、vrrp、mpls-oam、isis、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、isis、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占用率过高。