!guide_close_btn!

【交换机在江湖---维护无忧系列】CPU占用率高故障专题(1)----简介、原理篇

digest [复制链接]
发表于 : 2016-2-27 12:05:11 最新回复:2019-08-14 13:15:19
13180 28
交换机在江湖
交换机在江湖 官方号

?

“哎呀,包租婆,掉线啦!还怎么工作呀!”56d11b75d46e1.gif

?

上网又慢还掉线。一定是包租婆断了网!等的宝宝都有小脾气了。56d11b88db5d8.gif

?

“看看是不是CPU占用率过高啊。”

?

――掉线网速还慢,冷静,小编带机智你一起排查下是不是问题出现在内部~56d11ee066feb.gif

?

CPU占用率高故障专题将分为三篇发布,分别是

简介、原理篇

故障定位解决篇

典型案例篇

本次小编带您来看CPU占用率高之简介、原理篇。
五张图快速掌握CPU占用率高相关知识 56d11f1bd5709.png

通过本节内容,您可以快速了解并掌握CPU占用率高的相关知识,包括CPU占用率高造成的影响、引起CPU占用率高的常见原因、如何定位CPU占用率高、如何解决CPU占用率高和如何尽量避免CPU占用率高,更多详细信息,请查看后续章节。
56d1107696ead.jpg

56d1108110458.jpg

56d1108bea73b.jpg

56d11096709d6.jpg

56d110a1ab317.jpg

1 CPUCPU占用率简介

交换机的核心--CPU

交换机采用分布式架构,主要包括转发平面和控制平面。其中转发平面用于实现二三层转发;而控制平面主要用于实现转发的控制。

1-1所示,交换机的控制平面采用通用嵌入式CPU实现,转发平面采用转发芯片实现:

l?? 转发芯片完成主要的二三层转发功能,如更新用于二层转发的MAC地址表以及用于IP转发的三层转发表。转发芯片的特点是能够实现大吞吐量的数据转发。

l?? CPU主要维护软件表项(如路由表、ARP表等),并根据软件表项的转发信息来配置转发芯片的硬件三层转发表。同时,CPU本身也可以完成软件三层转发。CPU的特点是数据处理能力非常低。

图1-1 交换机的分布式架构

56d110f20cd2d.jpg

在网络中,可将报文按照功能分为控制报文和数据报文。当交换机上还未建立任何硬件转发表项时,如果报文到达交换机,首包由CPU转发并建立三层转发硬件表项,后续包(即非首包)流量由入端口进入转发芯片,如1-2所示:

图1-2 交换机对非首包流量的处理

56d1111fb52f3.jpg

??


l?? 后续包的部分流量1(一般为数据报文)直接由转发芯片转发出去这部分流量不经过CPU,所以该流量的处理也不消耗CPU。这部分流量一般为数据报文。

l?? 后续包的部分流量2(一般为控制报文和部分数据报文)经由转发芯片上送CPU,由CPU来决定是否需要将其转发出去或直接在CPU终结。该流量需要消耗CPU,不能进行高速转发。

总的来说,真正决定交换机高速交换转发的是转发芯片中的二三层硬件表项,而转发芯片的硬件表项来源于CPU维护的软件表项。可以看出,CPU是交换机的核心。

CPU占用率

交换机正常启动后,为了维持系统的正常运行,CPU上有大约超过200个活跃的任务用于完成对设备的管理、监控和三层表项学习,并且该任务数量与交换机形态相关。通常交换机支持的特性越多,系统运行的任务也越多。

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

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

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

l?? 实体强相关性:CPU占用率是以物理CPU为粒度进行统计的,通常而言,设备上的每块业务板均有一个单独的物理CPU,因此它们的CPU占用率都是相互独立的。

CPU占用率表示交换机在某个时间点的运行任务情况。如1-3所示,A任务占用10msB任务占用30ms,然后空闲60ms,再又是A任务占10msB任务占30ms,空闲60ms。如果在一段时间内都是如此,那么这段时间内的占用率为40%CPU占用率越高,说明交换机在这个时间上运行了很多任务,反之则很少。

图1-3 任务占用CPU运行时间

56d1118b3e5d7.jpg

?

可以看出,CPU占用率的高低与CPU的强弱有直接关系,因此,CPU占用率是衡量设备性能的重要指标之一。

2?CPUCPU占用率原理

2.1 CPU处理报文原理(框式交换机)

华为交换机由转发芯片转发普通数据报文,无需CPU参与。以下场景会将报文发送给CPU处理:

l?? 需要交换机终结的协议报文

所有目的地址为本机的报文均需要上送CPU处理:

??????????? 各种协议控制报文,如STPLLDPLNPLACPVCMPDLDPEFMGVRPVRRP

??????????? 路由更新报文,如RIPOSPFBGPIS-IS

??????????? SNMPTelnetSSH报文

??????????? ARPND回应报文

l?? 需要特殊处理的报文

??????????? option选项的ICMP报文

??????????? hop-by-hop选项的IPv6报文

??????????? TTL小于或等于1IPv4/IPv6数据报文

??????????? 目的IP地址为本机的数据报文

??????????? ARP/ND/FIB Miss报文

l?? 应用了ACL,需要CPU处理的报文

??????????? 开启logging功能后,通过ACL deny动作丢弃的报文

??????????? 流策略重定向到CPU的报文

l?? 组播特性相关的报文

??????????? PIMIGMPMLDMSDP协议报文

??????????? 未知IP组播流

l?? 其他特性的相关报文

??????????? DHCP协议报文

??????????? ARPND广播请求报文

??????????? L2PT软转发的L2协议报文(仅Tunnel两端的设备为软转发,中间设备使用芯片硬件转发)

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

图2-1 框式交换机上报文的上送限速

56d111fe1a190.jpg

?

56d1122c422a9.jpg

?

56d1123f1c397.jpg

?

2-2所示,每个芯片/逻辑的限速主要分为三类:基于协议的限速、基于队列的限速、基于端口的所有报文统一限速。如下以V200R007版本S9300X1E系列的业务板为例,介绍CPU限速等的缺省情况(其他款型、其他版本可以通过命令display cpu-defend configuration all查看)。

图2-2 上送CPU报文的限速分类

56d11288df704.jpg

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

报文类型

业务板限速值(kbps)

主控板限速值(kbps)

802.1xarp-missmpls-pingndnd-missloopbacktestnd-redirect

64

64

smart-linklacplldpdldpttl-expiredmpls-ttl-expiredntphw-tacacsfib-misshgmp-bcsmlk-rrpphotlimitmpls-vccv-pingarp-requestarp-replyarp-mffvpls-arp

64

128

eoam-3ahmpls-one-label

64

256

vpls-igmpmpls-rsvpipmc-invalidbpdu

64

512

vrrpbgp4plusvrrp6hvrpsshftpsnmpgvrpeoam-1ag-lbltpppoehopbyhophgmp-mchgmp-ucnac-ndnd-snp-rsnd-snp-ransnd-snp-namadnac-arp

128

128

mpls-oamigmppimriptelnettcpfib-hitrrppudp-helper

128

256

stpmldunknown-multicastbpdu-tunnelipmc-miss

128

512

fib6-hitmpls-fib-hit

128

1024

icmp

192

256

httppimv6icmpv6easy-operationeoam-1agheart-packet

256

256

isisospfospf-hellobgpbfdmpls-ldpripngospfv3nac-dhcpvpls-dhcp-requestvpls-dhcp-replynac-dhcpv6ospfv3-uc

256

512

dhcp-clientdhcpv6-requestdhcpv6-replyradiusy1731

512

512

dhcp-server

512

1024

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

?

业务板上队列ID

报文类型

说明

7

lacp

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

6

vp

从业务板CPU上送的报文

5

stpsmart-linkldtlldpdldpvrrpmpls-oamisispimripospfospf-hellobgpbfdmpls-rsvpmpls-ldpmpls-ttl-expiredntpripngospfv3bgp4pluspimv6vrrp6hvrptelnetsshmpls-pinggvrpbpdu-tunnelrrppeoam-3aheoam-1ageoam-1ag-lbltndy1731mpls-one-labelloopbacktestbpdunaphgmp-mchgmp-uchgmp-bcnd-redirectnd-snp-rsnd-snp-ransnd-snp-namadsmlk-rrppospfv3-uc

重要控制面协议报文

4

other

-

3

arp-requestarp-replydhcp-clientdhcp-serverigmpvpls-igmpicmp8021xhttpdhcpv6-requestdhcpv6-replyicmpv6mldftpsnmpradiushw-tacacstcpeasy-operationfib-hitfib-missarp-missunknown-packetudp-helperarp-mffpppoehopbyhopmpls-vccv-pingfib6-hitnd-missnac-dhcpvpls-arpvpls-dhcp-requestvpls-dhcp-replynac-arpicmp-ttl-expiredmpls-fib-hitnac-ndnac-dhcpv6heart-packet

重要控制面协议报文

2

ttl-expiredhotlimit

次要控制面协议报文

1

unknown-multicastipmc-invalidipmc-miss

次要控制面协议报文

0

other

-

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

主控板上队列ID

报文类型

说明

7

lacp

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

6

vp

从业务板CPU上送的报文

5

stpsmart-linkldtlldpdldpvrrpmpls-oamisispimripospfospf-hellobgpbfdmpls-rsvpmpls-ldpmpls-ttl-expiredntpripngospfv3bgp4pluspimv6vrrp6hvrptelnetsshmpls-pinggvrpbpdu-tunnelrrppeoam-3aheoam-1ageoam-1ag-lbltndy1731loopbacktestbpdunaphgmp-mchgmp-uchgmp-bcnd-redirectnd-snp-rsnd-snp-ransnd-snp-namadsmlk-rrppospfv3-uc

重要控制面协议报文

4

other

-

3

arp-requestarp-replydhcp-clientdhcp-serverigmpvpls-igmpicmp8021xhttpdhcpv6-requestdhcpv6-replyicmpv6mldftpsnmpradiushw-tacacstcpeasy-operationfib-hitfib-missarp-missunknown-packetudp-helperarp-mffpppoehopbyhopmpls-vccv-pingfib6-hitnd-missnac-dhcpmpls-one-labelvpls-arpvpls-dhcp-requestvpls-dhcp-replynac-arpicmp-ttl-expiredmpls-fib-hitnac-ndnac-dhcpv6heart-packet

重要控制面协议报文

2

ttl-expiredhotlimit

次要控制面协议报文

1

unknown-multicastipmc-invalidipmc-miss

次要控制面协议报文

0

other

-

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

2.2 CPU处理报文原理(盒式交换机)

华为交换机由硬件转发普通数据报文,无需CPU参与。以下场景会将报文发送给CPU处理:

l?? 需要交换机终结的协议报文

所有目的地址为本机的报文均需要上送CPU处理:

??????????? 各种协议控制报文,如STPLLDPLNPLACPVCMPDLDPEFMGVRPVRRP

??????????? 路由更新报文,如RIPOSPFBGPIS-IS

??????????? SNMPTelnetSSH报文

??????????? ARPND回应报文

l?? 需要特殊处理的数据报文

??????????? option选项的ICMP报文

??????????? hop-by-hop选项的IPv6报文

??????????? TTL小于或等于1IPv4/IPv6报文

??????????? 目的IP地址为本机的报文

??????????? ARP/ND/FIB Miss报文

l?? 基于ACL的特性

??????????? 开启logging功能后,通过ACL deny动作丢弃的报文

??????????? 流策略重定向到CPU的报文

l?? 组播特性

??????????? PIMIGMPMLDMSDP协议报文

??????????? 未知IP组播流

l?? 其他特性

??????????? DHCP协议报文

??????????? ARPND广播请求报文,二层交换机配置动态ARP检测DAIDynamic ARP Inspection)时也发送ARP报文

??????????? L2PT软转发的L2协议报文(仅Tunnel两端的设备为软转发,中间设备使用硬件转发)

??????????? N:1 VLAN mapping第一个报文上送CPU,后续报文使用硬件转发

交换机采用QoS机制处理上送CPU的报文,确保重要报文优先处理。交换机将上送CPU的不同类型的报文划分到优先级不同的8个队列,不同交换机款型支持上送CPU的报文种类可能不同。以S5700LI形态为例,部分典型报文上送CPU的队列划分如2-42-3所示,队列ID值越大,优先级越高。

?

表2-4 CPU处理不同报文的队列划分

队列ID

报文类型

说明

7

IPCRPCLACP

内部管理报文

6

VP

内部软转发的协议报文

5

TelnetSSHLNPDHCP

管理面协议报文

4

ARP Request

重要控制面协议报文

3

STPSMLKEOAMVCMP

重要控制面协议报文

2

LBDTLLDPDLDPIGMPICMPNTP802.1xGVRPL2PTARP MissFTPSNMP

控制面协议报文

1

Other

-

0

Other

-

?

图2-3 将不同类型报文分发到CPU队列

?? 56d1153bbfcdb.bmp

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



2.3?CPU占用率高造成的影响

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

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

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

??????????? TelnetSSH会话不能建立,导致无法管理设备或者设备反应慢,命令执行有延迟等

??????????? SNMP超时

??????????? MAC/IP Ping耗时很长甚至超时

l?? 交换机不能及时转发或回应客户端请求,导致DHCP失败或IEEE 802.1x认证失败

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

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

l?? 路由拓扑改变

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

l?? 可靠性检测协议震荡

802.3ah802.1agDLDPBFDMPLS OAM等检测协议均由CPU完成定时保活,如果因为CPU繁忙不能及时接收和发送协议报文,将会导致协议震荡,进而影响相关业务流量转发。

l?? LACP类型的Eth-Trunk链路震荡

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

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

l?? 交换机内存消耗增加

2.4?CPU占用率高属于正常现象的场景

在网络运行中,CPU占用率过高常常会导致业务异常,例如BGP震荡、VRRP频繁切换甚至用户无法登录交换机。但某些情况下,CPU占用率高并不会导致网络问题,例如,交换机在某一时刻集中读取光模块信息、瞬间流量增多等各种具体情况,导致CPU占用率暂时性高的现象是正常的、可接受的,所以不能简单的将CPU占用率高当作故障处理。只有当设备长时间不能正常处理业务时,才需要定位是否由于CPU占用率高而引起的。

如下一些场景可能导致CPU占用率高,属于正常现象,而不是故障场景。如果过了一段时间后,CPU占用率恢复到正常值,则可以不需要处理:

l?? 网络中瞬间流量增多

l?? 交换机单板刚启动

l?? 交换机在某一时间点集中读取光模块信息

l?? 交换机在进行生成树的计算

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

l?? 交换机接收到路由更新信息,大规模更新路由表

当接收到路由更新消息时,设备需占用CPU资源将路由信息更新到转发面。对于集群/堆叠系统,路由信息还需要同步到其他成员交换机。

在路由表更新过程中影响CPU占用率大小的因素有:

??????????? 路由表项的规模

??????????? 更新的频率

??????????? 接收更新的路由协议进程数

??????????? 集群/堆叠系统成员交换机数量

l?? 交换机在执行copy cfcard:/或输出信息量大的debug等执行时间长的命令

l?? 网管系统在频繁操作交换机

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

??????????? 端口使能了Sticky MAC功能后,快速学习MAC

??????????? 将大量端口同时加入大量VLAN(如通过端口组操作,将大批端口加入大量VLAN、修改大批端口的链路类型等)

??????????? 频繁或大量的IGMP请求

??????????? 大量并发的DHCP请求(如交换机作为DHCP服务器时,恢复与大量用户的连接)

??????????? ARP广播风暴

??????????? 以太网广播风暴

??????????? 软转发大量并发协议报文(如短时间内L2PT透传大量BPDU报文,DHCP Relay/Snooping软转发DHCP报文等)

??????????? 大量不能由转发芯片直接转发的数据报文上送CPU(如ARP-Miss

??????????? 端口频繁Up/Down

?CPU占用率高基础知识都了解了吧~欲知如何定位故障,如何解决解决。敬请期待下一篇~~56d120697b078.png

?

更多交换机故障处理过程和技巧,请猛戳我:交换机在江湖汇总贴

?

本帖最后由 交换机在江湖 于 2017-06-23 14:05 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下专题推荐:

  • x
  • 常规:

点评 回复

跳转到指定楼层
zjwshenxian
zjwshenxian  导师 发表于 2016-6-10 19:37:53 已赞(0) 赞(0)

感谢分享!

  • x
  • 常规:

点评 回复

Nana00
Nana00  新锐 发表于 2016-2-27 13:35:21 已赞(0) 赞(0)

好资料,多谢分享哦
  • x
  • 常规:

点评 回复

yetao
yetao   发表于 2016-2-27 16:46:51 已赞(0) 赞(0)

回复2楼

好贴
  • x
  • 常规:

点评 回复

网络小虫
网络小虫   发表于 2016-4-20 10:56:12 已赞(0) 赞(0)

郑重警告你,这文章写的太精彩了。

  • x
  • 常规:

点评 回复

网络小虫
网络小虫   发表于 2016-4-20 11:01:01 已赞(0) 赞(0)

郑重警告你,这文章写的太精彩了。

  • x
  • 常规:

点评 回复

li yue
li yue   发表于 2016-4-20 14:05:16 已赞(0) 赞(0)

多谢分享!


  • x
  • 常规:

点评 回复

Paradise
Paradise  管理员 发表于 2016-3-1 10:40:46 已赞(0) 赞(0)

赞 写的不错  ! 期待下一篇

  • x
  • 常规:

点评 回复

共祝愿祖国好
共祝愿祖国好   发表于 2016-11-26 17:31:22 已赞(0) 赞(0)

非常好的资料!我要好好学习,感谢分享【交换机在江湖---维护无忧系列】CPU占用率高故障专题(1)----简介、原理篇-2107521-1
  • x
  • 常规:

点评 回复

不忘初心  方得始终——只有不忘记自己最初的想法,才能有始有终地去完成自己的梦想。
虎添翼
虎添翼  新锐 发表于 2016-11-26 19:56:26 已赞(0) 赞(0)

终于明白了交换机内部CPU的工作有哪些部分,高级功能还是很考验CPU的。
  • x
  • 常规:

点评 回复

123
返回列表
发表回复
您需要登录后才可以回帖 登录 | 注册

警告 内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!

登录参与交流分享

登录

华为企业互动社区
华为企业互动社区