交换机在江湖---维护无忧系列】CPU占用率高故障专题(1)----简介、原理篇
“哎呀,包租婆,掉线啦!还怎么工作呀!” 上网又慢还掉线。一定是包租婆断了网!等的宝宝都有小脾气了。 “看看是不是CPU占用率过高啊。” ――掉线网速还慢,冷静,小编带机智你一起排查下是不是问题出现在内部~ CPU占用率高故障专题将分为三篇发布,分别是 简介、原理篇 故障定位解决篇 典型案例篇 本次小编带您来看CPU占用率高之简介、原理篇。 五张图快速掌握CPU占用率高相关知识 通过本节内容,您可以快速了解并掌握CPU占用率高的相关知识,包括CPU占用率高造成的影响、引起CPU占用率高的常见原因、如何定位CPU占用率高、如何解决CPU占用率高和如何尽量避免CPU占用率高,更多详细信息,请查看后续章节。 1 CPU和CPU占用率简介
交换机的核心--CPU 交换机采用分布式架构,主要包括转发平面和控制平面。其中转发平面用于实现二三层转发;而控制平面主要用于实现转发的控制。 如图1-1所示,交换机的控制平面采用通用嵌入式CPU实现,转发平面采用转发芯片实现:
图1-1 交换机的分布式架构 在网络中,可将报文按照功能分为控制报文和数据报文。当交换机上还未建立任何硬件转发表项时,如果报文到达交换机,首包由CPU转发并建立三层转发硬件表项,后续包(即非首包)流量由入端口进入转发芯片,如图1-2所示: 图1-2 交换机对非首包流量的处理
CPU占用率 交换机正常启动后,为了维持系统的正常运行,CPU上有大约超过200个活跃的任务用于完成对设备的管理、监控和三层表项学习,并且该任务数量与交换机形态相关。通常交换机支持的特性越多,系统运行的任务也越多。 设备的CPU占用率指一段时间内系统中非空闲任务占用CPU处理的时间比率,是对设备CPU使用情况的一个宏观统计,具有以下的几个重要特点:
图1-3 任务占用CPU运行时间 可以看出,CPU占用率的高低与CPU的强弱有直接关系,因此,CPU占用率是衡量设备性能的重要指标之一。 2 CPU和CPU占用率原理
2.1 CPU处理报文原理(框式交换机)华为交换机由转发芯片转发普通数据报文,无需CPU参与。以下场景会将报文发送给CPU处理:
各种协议控制报文,如STP、LLDP、LNP、LACP、VCMP、DLDP、EFM、GVRP、VRRP等 路由更新报文,如RIP、OSPF、BGP、IS-IS等 SNMP、Telnet、SSH报文 ARP、ND回应报文
带hop-by-hop选项的IPv6报文 TTL小于或等于1的IPv4/IPv6数据报文 目的IP地址为本机的数据报文 ARP/ND/FIB Miss报文
流策略重定向到CPU的报文
未知IP组播流
ARP、ND广播请求报文 L2PT软转发的L2协议报文(仅Tunnel两端的设备为软转发,中间设备使用芯片硬件转发) 如图2-1所示,报文最终送到主控板的CPU可能经过多次限速,包括:转发芯片的限速、交换网芯片的限速。多次限速逐层形成防护墙,保证主控板CPU的安全。 图2-1 框式交换机上报文的上送限速 ?
如图2-2所示,每个芯片/逻辑的限速主要分为三类:基于协议的限速、基于队列的限速、基于端口的所有报文统一限速。如下以V200R007版本S9300非X1E系列的业务板为例,介绍CPU限速等的缺省情况(其他款型、其他版本可以通过命令display cpu-defend configuration all查看)。 图2-2 上送CPU报文的限速分类 表2-1 S9300上基于协议的限速值
表2-3 主控板上CPU处理不同报文的队列划分(队列ID越大,转发优先级越高)
交换机根据报文的层次(管理/控制/转发)及其重要性来指定将报文发送到哪个CPU队列。CPU队列具有相对优先级。例如,Telnet管理报文和dhcp-client协议报文同时排队,CPU将优先处理5号队列的Telnet管理报文,通过该机制确保CPU高负荷下设备稳定可管理。同时,CPU还通过加权调度机制防止低优先级队列的报文得不到处理。在稳定的网络环境下,上送CPU的报文数量控制在适当的范围内,CPU占用率也稳定在一个合理的区间。如果一段时间内上送CPU的报文数量过大,则CPU会因为忙于处理这些报文而表现为CPU占用率过高。 2.2 CPU处理报文原理(盒式交换机) 华为交换机由硬件转发普通数据报文,无需CPU参与。以下场景会将报文发送给CPU处理:
各种协议控制报文,如STP、LLDP、LNP、LACP、VCMP、DLDP、EFM、GVRP、VRRP等 路由更新报文,如RIP、OSPF、BGP、IS-IS等 SNMP、Telnet、SSH报文 ARP、ND回应报文
带hop-by-hop选项的IPv6报文 TTL小于或等于1的IPv4/IPv6报文 目的IP地址为本机的报文 ARP/ND/FIB Miss报文
流策略重定向到CPU的报文
未知IP组播流
ARP、ND广播请求报文,二层交换机配置动态ARP检测DAI(Dynamic ARP Inspection)时也发送ARP报文 L2PT软转发的L2协议报文(仅Tunnel两端的设备为软转发,中间设备使用硬件转发) N:1 VLAN mapping第一个报文上送CPU,后续报文使用硬件转发 交换机采用QoS机制处理上送CPU的报文,确保重要报文优先处理。交换机将上送CPU的不同类型的报文划分到优先级不同的8个队列,不同交换机款型支持上送CPU的报文种类可能不同。以S5700LI形态为例,部分典型报文上送CPU的队列划分如表2-4和图2-3所示,队列ID值越大,优先级越高。 表2-4 CPU处理不同报文的队列划分
图2-3 将不同类型报文分发到CPU队列 交换机根据报文的层次(管理/控制/转发)及其重要性来指定将报文发送到哪个CPU队列。CPU队列具有相对优先级。例如,Telnet管理报文和L2PT软件透传L2协议报文同时排队,CPU将优先处理5号队列的Telnet管理报文,通过该机制确保CPU高负荷下设备稳定可管理。同时,CPU还通过加权调度机制防止低优先级队列的报文得不到处理。在稳定的网络环境下,上送CPU的报文数量控制在适当的范围内,CPU占用率也稳定在一个合理的区间。如果一段时间内上送CPU的报文数量过大,则CPU会因为忙于处理这些报文而表现为CPU占用率过高。 2.3 CPU占用率高造成的影响 当设备转发面上送CPU的报文速率过快(如因网络环路导致CPU短时间内收到大量报文)或者某任务长时间占用CPU时,CPU将高负荷运行,可能无法及时调度其他任务,进而引发业务异常。 CPU占用率过高会影响系统处理能力,导致网络业务表现不如预期,可能导致出现的网络故障现象有:
SNMP超时 MAC/IP Ping耗时很长甚至超时
在网络运行中,CPU占用率过高常常会导致业务异常,例如BGP震荡、VRRP频繁切换甚至用户无法登录交换机。但某些情况下,CPU占用率高并不会导致网络问题,例如,交换机在某一时刻集中读取光模块信息、瞬间流量增多等各种具体情况,导致CPU占用率暂时性高的现象是正常的、可接受的,所以不能简单的将CPU占用率高当作故障处理。只有当设备长时间不能正常处理业务时,才需要定位是否由于CPU占用率高而引起的。 如下一些场景可能导致CPU占用率高,属于正常现象,而不是故障场景。如果过了一段时间后,CPU占用率恢复到正常值,则可以不需要处理:
在路由表更新过程中影响CPU占用率大小的因素有: 路由表项的规模 更新的频率 接收更新的路由协议进程数 集群/堆叠系统成员交换机数量
将大量端口同时加入大量VLAN(如通过端口组操作,将大批端口加入大量VLAN、修改大批端口的链路类型等) 频繁或大量的IGMP请求 大量并发的DHCP请求(如交换机作为DHCP服务器时,恢复与大量用户的连接) ARP广播风暴 以太网广播风暴 软转发大量并发协议报文(如短时间内L2PT透传大量BPDU报文,DHCP Relay/Snooping软转发DHCP报文等) 大量不能由转发芯片直接转发的数据报文上送CPU(如ARP-Miss) 端口频繁Up/Down CPU占用率高基础知识都了解了吧 |