mfc程序运行时间越长越占用cpu_弱电网络工程师必知系列:交换机CPU和CPU占用率的基础知识...

一、简介

本文简要介绍了CPU和CPU占用率的定义、CPU处理报文的原理、以及CPU占用率高造成的影响。

二、CPU和CPU占用率定义

CPU和CPU占用率定义

交换机的核心--CPU

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

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

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

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

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

b2b4b2da7e973f58c397de93e0834ddb.png

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

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

a1160f6fd10f0197d546b1612521042c.png

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

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

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

CPU占用率

交换机正常启动后,为了维持系统的正常运行,CPU上有多个活跃的任务用于完成对设备的管理、监控和三层表项学习。通常交换机支持的特性越多,系统运行的任务也越多。

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

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

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

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

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

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

22276844544ccab61eb55486cece25c4.png

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

三、CPU处理报文原理

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

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

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

  • 各种协议控制报文,如STP、LLDP、LACP、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,需要CPU处理的报文

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

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

组播特性相关的报文

  • IGMP协议报文

  • 未知IP组播流

其他特性的相关报文

  • DHCP协议报文

  • ARP、ND广播请求报文

交换机根据报文的权重,将上送CPU的不同类型的报文划分到优先级不同的多个队列,确保重要报文优先处理。同时,还可以针对上送CPU的报文进行限速,使单位时间内上送CPU报文的数量限制在一定的范围之内,从而保证CPU对业务的正常处理。

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

238b14491c12d55fceb4e8be2cee7509.png

在稳定的网络环境下,上送CPU的报文数量控制在适当的范围内,CPU占用率也稳定在一个合理的区间。如果一段时间内上送CPU的报文数量过大,则CPU会因为忙于处理这些报文而表现为CPU占用率过高。

四、CPU占用率高造成的影响

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

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

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

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

  • SNMP超时。

  • MAC/IP Ping耗时很长甚至超时。

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

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

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

路由拓扑改变。

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

可靠性检测协议震荡。

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

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

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

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

交换机内存消耗增加。

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

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

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

网络中瞬间流量增多。

交换机单板刚启动。

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

批量读取光模块信息(执行命令display interface transceiver或者在网管读取光模块信息)。

交换机在执行copy flash:/或输出信息量大、执行时间长的命令,如debugging、display diagnostic-information命令。

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

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

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

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

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

  • 路由表项的规模

  • 更新的频率

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

  • 堆叠系统成员交换机数量

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

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

  • 频繁或大量的IGMP请求。

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

  • ARP广播风暴。

  • 以太网广播风暴。

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

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

  • 端口频繁Up/Down。

   大家好,我是老季,一个做弱电的民工,我将尽我最大的努力做好这个公众号,和大家一起分享弱电行业的知识技能,这是我的个人微信号,想加入弱电圈子可以添加我的个人号,圈子里都是做弱电的,资源可以互相补充。

1668a12efe97060cb03eaaf8364a7eb8.png

扫一扫,关注本公众号,成为弱电行业高手

36abfa8a7b7affe1b0ffda46ed626a9e.png

在右下角点个在看,点个赞,就是对小编最好的支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值