stp bpdu-protection stp tc-protection arp topology-change disable mac-address update arp
cpu-defend policy test car packet-type snmp cir 256 cbs 48128
交换机CPU占用率是指一段时间内CPU执行代码的非空闲时间与时间段总长度的比率,可反映某个时间段交换机CPU资源使用情况,其计算机公式为:CPU占用率=(总时间-空闲时间)/总时间。空闲时间是指CPU运行Idle任务的时间,Idle任务是一个低优先级任务,不完成具体工作,如果Idle任务得到了调度,就认为CPU当前处于空闲状态。系统的CPU占用率不是保持不变的,它是随着系统的运行和外部环境的变化而持续变化的。正常状态下,交换机的CPU占用率不会超过5%,交换机在采用堆叠方式,其CPU占用率不会超过8%,在配置功能较多的情况下,CPU占用率不会超过30%,如果CPU交换机占用率超过50%则视为不正常。
交换机CPU占用率高的危害当交换机CPU处理的数据包过多、各类中断请求过多或部分任务进程占用了较长CPU处理时间时,CPU负载就会增加,无法及时调度其他任务,从而会导致出现业务异常、业务处理能力下降和很多网络故障等。 1.网络结构改变一般正常网络环境中,为确保网络不间断工作,会采用备份交换机的网状结构,各交换机同时会启用STP/SEP/RSTP/MSTP等生成树功能的协议,避免网络出现环路。在这些协议运行过程中,交换机CPU会周期性接收BPDU等报文来维持交换机端口Root/Alternate等角色,如果交换机CPU占用率过高,很可能导致BPDU报文不能及时发送和处理,交换机会认为到根桥的路径出现故障,从而重新选择ROOT端口,引起网络重新收敛,导致网络拓扑改变。如果交换机原来同时存在Alternate端口,交换机会将Alternate端口作为新的ROOT端口,进行数据收发,导致网络结构发生改变,也可能会导致网络出现环路。 2.Eth-Trunk主干链路关闭为提高交换机之间流量带宽,交换机会启用LACP(链路汇聚控制协议),交换机物理端口在启用LACP协议后,会由交换机CPU发送LACPDU来完成相关汇聚任务,其后链路保活均由CPU进行LACP协议的计算完成。如果CPU占用率过高,就会导致交换机不能及时接收和发送LACPDU报文,从而引起Eth-Trunk将会链路关闭,造成网络中断。 3.无法远程管理交换机远程管理交换机已经成为管理配置交换机的首选方式之一,远程管理和配置一般都是通过Telnet、SSH、Web和SNMP等协议方式与交换机建立会话来进行。当交换机CPU占用率过高时,交换机就无法处理这些会话响应,从而导致无法远程管理交换机,造成管理成本上升。 4.通过CPU转发的报文被丢弃或转发时延增大当交换机CPU占用率过高时,会导致对各类协议控制、组播等报文的转发不及时,交换机内存消耗会增加,从而导致后续协议控制、组播等报文会被丢弃和转发时延增大。需要说明的是,普通数据报文转发由交换机电子集成电路完成,无需CPU参与,因此CPU占用率高通常并不影响普通数据报文转发。 交换机CPU占用率高的正常应用场景交换机正常运行时,CPU会处理数以百计的活动系统进程。由于交换机一直处于运行状态,即使无任何业务配置和网络数据包,其CPU占用率也不会为0。在一些应用场景下,交换机长时间运行时,CPU占用率一般不超过80%,短时间内CPU占用率不超过95%,可认为交换机状态是正常的。 1.生成树场景在交换机应用了MSTP协议后,CPU占用率会同实例个数和活动端口数成正比,数量越多,用于计算和维护的CPU资源就会增多,在应用了VBST协议后,由于每个VLAN独立运行一个实例,因此在相同VLAN和端口数目下,VBST会比MSTP占用更多的CPU资源。 2.更新路由表当一台三层交换机接收到路由更新消息时,交换机会占用CPU资源将路由信息更新。CPU占用率取决于路由更新信息的多少、更新频率、接受路由更新进程数量、堆叠交换机数量等,路由更新信息越多、更新频率越快、路由更新进程数越多、参与堆叠的交换机数量越多,CPU占用率就越高,对于堆叠交换机,路由信息还需要同步到其他成员交换机。 3.执行配置管理类命令部分配置命令需CPU长时间参与也会导致CPU占用率暂时升高,这些命令主要有:用户视图下执行copy flash:/命令、配置内容很多的情况下执行Save命令和Display running-configuration命令、执行用于输出各类调试信息的Debug命令、执行持续时间长且数据包多的Ping命令、交换机端口启用了执行Portsecurity mac-address sticky相关命令时、还有利用交换机抓包的命令等。 4.交换机参与堆叠在交换机堆叠环境中,由于主要业务运行在堆叠主交换机上,还需要周期性维护堆叠成员状态,因此主堆叠主交换机的CPU占用率比单台交换机运行时的CPU占用率高,堆叠成员交换机数量增多时,堆叠主交换机的CPU占用率也会相应升高。 5.交换机参与堆叠有较多管理用户同时远程管理交换机时、交换机启动后有较多客户机生成MAC地址表时、交换机启用DHCP功能有大量DHCP请求时、增加数量较多的VLAN并将各端口加入VLAN中时、交换机端口频繁Up/Down时、网络流量增加时等。 故障引发交换机CPU占用率高除正常应用场景外,只要是交换机CPU占用率高,都可视为故障,应及时排除。 1.网络环路网络环路是造成交换机CPU占用率高的最常见最主要的原因。当出现网络环路时,交换机会发生MAC地址漂移,产生的广播风暴产生大量无效报文,会消耗交换机CPU资源。 2.网络震荡网络震荡也是导致交换机CPU占用率的另一大重要原因,在出现网络震荡时,网络参数会频繁发生改变,交换机忙于网络切换事件,CPU就会增加工作量。 3.交换机遭到攻击和网络中存在病毒当网络中存在ARP病毒,交换机遭到DHCP攻击、BPDU攻击、SSH暴力破解等恶意攻击时,交换机CPU将不得不处理这些报文,导致CPU长时间处理这些攻击报文,造成交换机CPU占用率高,性能下降,从而引发其他业务的中断,影响正常的业务。 图1 确定故障流程 图2 交换机当前占用率最高的3个任务 4.交换机部件故障当交换机部件出现故障后,部件会发送大量SRMI、SRMR等中断报文,其他正常部件也会发送大量的保活类报文给交换机CPU来连通交换机故障部件,而这些报文都会极大地消耗交换机CPU资源,造成交换机CPU占用率高。 5.配置错误这里以VLAN配置为例进行说明,实际需要的VLAN不多,但却建立了很多无效VLAN,而每建立一个VLAN时,即使没有客户机,交换机都会发送一条ACL,来捕获该VLAN中的ARP报文,如果VLAN过多,就会导致交换机CPU占用率高,还有在GVRP环境下频繁创建和删除VLAN,每发送一条命令,就会触发大量报文通信,也会造成交换机CPU占用率升高。 表1 可引起交换机CPU占用率增高的常见任务 CPU占用率高故障排除方法当发现CPU占用率过高时,首先要确定CPU占用率高是否是正常现象,除了正常应用场景外,都可以视为是故障引起,再进行故障排除。正常的处理步骤为“确定故障现象、判定故障原因、进行故障修复”(因本文中涉及部分交换机操作命令,本文中所有命令以华为交换机操作命令和功能为例,其他品牌交换机均有类似命令和功能)。 1.确定故障现象可以通过几种方式来确认是什么任务、是什么报文和是交换机上哪个硬件模块引起的CPU占用率高,通过交换机当前任务、报文类型和模块接口可以直接找到在什么接口什么原因造成的故障,确定故障流程如图1。 图3 子模块占用交换机CPU的比例统计信息 图4 各类协议Drop数量 (1)获取CPU占用任务情况,确认高比例任务。在用户模式下,执行display cpuusage命令,可以查看各在线任务的CPU占用率,可以记录占用率最高的前3个任务名称(如图2),其占用率排名前3的任务分别是FTS、VIDL和bcmRX。表1为可引起交换机CPU占用率高的常见任务名称和功能描述。 (2)获取CPU占用率高的模块信息,确认高比例模块接口。在用户模式下,执行display cpu-usage [slave|slot slot-id]命令,slot-id在堆叠系统中表示堆叠ID,可以查看相关模块占用交换机CPU的比例统计信息(如图3),为交换机slot 0模块的硬件CPU占用率。 (3)获取CPU占用率高报文统计信息,确认高比例报文类型。在用户模式下,执行display cpu-defend statistics all命令,查看上送CPU报文的统计查询信息,获取报文类型,特别要关注丢弃计数(如图4),通过各类协议的Drop计数来确认是否存在冲击情况,如果某类协议存在的Drop数很大,则可以认为该协议存在冲击CPU情况。 2.判断故障原因依据收集到的各类信息,判断故障产生的原因。 (1)系统类原因。系统主要是对交换机中各部件进行管理,同时给其他业务和模块提供系统基础支持。系统类问题主要是操作系统本身故障和模块故障触发,操作系统故障一般是硬件故障或操作系统故障,模块类故障一般是模块硬件故障和配置原因,通常表现为 SRMI、SRMR、BCMDPC等中断处理相关的任务占用率较高,因此,如果出现系统CPU占用率较高且以上相关任务占用率排名靠前的情况,则可以判定为系统类故障原因。 (2)STP震荡原因。使用display cpu-defend statistics all可以得到各报文的统计值,各类报文统计是交接机启动后各类报文收发的总和,所以在交换机CPU占用率高的情况下,需隔一段时间运行一下这个命令,这样才能确保单位时间采集到的各类报文统计比较精确。可以通过display stp topology-change命令查看STP拓扑变化信息来判定是否是STP震荡原因,可以通过执行display stp tc-bpdu statistics命令查看端口上接收到的TC-BPDU统计,以确定TC报文的来源物理接口。 (3)路由协议原因。这里以OSPF协议为例,可以通过日志查看OSPF邻居状态Down的原因。执行display logbuffer命令,查看日志信息(如图5):其中NeighborDownImmediate reason关键字记录的是OSPF邻居Down的原因,具体原因见表2。 图5 交换机日志信息 图6 MAC地址漂移告警信息 (4)环路类原因。当交换机未启用生成树协议就有可能会形成环路,报文会在多个接口间转发,导致CPU占用率上升。使用display currentconfiguration,查看是否使能了MAC地址漂移告警功能,如果使能了该功能且存在MAC地址漂移现象,就会出现告警信息,如果未使能该功能,可在用户模式下执行loopdetect eth-loop alarm-only命令,当有MAC地址漂移时,就会有告警信息。图6所示,是交换机中有环路,其中MAC地址为0000-0ca8-0101的地址发生了漂移,漂移分别发生在GigabitEthernet1/0/3和GigabitEthernet1/0/2端口。 表2 OSPF邻居Down的原因 此外,如果交换机无法远程登录、在交换机上占用display interface命令查看接口统计信息时发现接口收到大量广播报文、占用串口登录交换机进行操作时,操作比较慢、通过Ping命令进行网络测试时,丢包严重、交换机上发生环路的VLAN的接口指示灯频繁闪烁、PC机上能收到大量的广播报文、交换机部署环路检测后,交换机出现环路告警都可以视为环路类原因。 (5)网络攻击类原因。常见的引起CPU占用率高的网络攻击包括ARP攻击、ARPMiss攻击、DHCP攻击以及TC BPDU攻击等,这些攻击行为的共同特点是攻击源产生大量的协议报文对交换机CPU进行冲击,因此可以在交换机上看到大量的报文上送统计。判断ARP攻击和ARPMiss攻击,可以通过执行display arp packet statistics命令获取ARP报文统计信息,重点关注ARP Pkt Received和ARP-Miss Msg Received统计信息,根据其统计值的增长情况判断网络攻击类型。执行debugging arp packet命令打开ARP报文调试开关,查看大量上送的ARP或ARP-Miss攻击源信息。判断DHCP攻击,可以通过执行display dhcp statistics命令获取DHCP报文统计信息,如果报文上送速度较快,说明存在DHCP攻击。 (6)配置错误类原因。由于网管同步操作或者用户命令大量输出信息到终端导致的,该类情况的发生一般伴随着特定的网络管理事件,配置错误会瞬间提高CPU占用率或造成交换机CPU短时间占用率升高,如果暂停配置或取消配置命令发现CPU占用率降低则视可配置错误原因。通过在用户模式下运行display cpuusage命令可以采集CPU占用率高时各任务的CPU占用率,当发现AGNT或AGT6任务CPU占用率过高时,就可以确定CPU占用率高是网管同步等网管操作引起的,当出现VT任务CPU占用率高时,可以确定是用户命令大量输出信息到终端引起的。 3.进行故障修复针对故障原因不同需采用不同的故障修复方法。 (1)硬件故障原因。判断故障根源可能为硬件故障时,请先尝试手工复位CPU占用率较高的交换机,去除交换机配置,如果复位后问题依然存在,可联系厂商进行处理。 (2)STP震荡原因。如果是用户接口Up/Down引起的STP拓扑变化,则在接口视图下通过执行stp edgedport enable命令,将接入侧端口配置为边缘端口,并执行stp bpdu-protection命令开启BPDU保护功能。如果是发现根桥不断改变造成震荡时,则需要每台交换机执行stp root-protection命令开启根保护功能。 (3)路由协议震荡原因。以OSPF路由协议为例,OSPF邻居失连的主要原因有接口链路震荡、大量LSA泛洪报文等。当发生接口链路震荡时,接口链路震荡会导致OSPF邻居关系震荡,可以通过日志信息查看接口Up/Down的记录情况,请对接口链路进行检查。如果有大量LSA泛洪报文时,会导致网络中产生大量的LS UPDATE消息,此时交换机忙于处理LS UPDATE,可能会导致Hello报文得不到及时处理,引起邻居状态Down,如果OSPF邻居超时时间配置小于20s,建议接口视图下通过ospf timer dead interval命令将OSPF邻居超时时间配置为20s以上。建议OSPF视图下通过sham-hello enable命令使能ospf sham-hello功能,允许交换机通过LSU等非hello报文维持邻居关系。 (4)网络环路故障。可以通过执行display cpu-usage[slave|slot slot-id]命令来确保是哪个子模块造成交换机CPU占用率高,发现后可以利用接口指示灯的闪烁情况和通过执行display interface来确认各接口流量情况,如果仍方便排除时,可在用户模式下执行loop-detect eth-loop alarm-only命令,查看发生MAC地址漂移的接口,也就是产生环路的接口,还可以采用1/2法通过拔网线的方式来确定发生环路的接口,排除环路故障或启动STP/RSTP/MSTP等生成树协议。 (5)网络攻击故障。如果是 ARP攻 击、ARP-Miss攻击和DHCP攻击,可以通过开启自动攻击溯源功能的方式及时检测攻击行为,如果网络中发生了攻击,则在被攻击的端口通过stp tc-protection命令开启保护功能,减少攻击对交换机的影响,可以在找到攻击源后,隔离接口或对攻击源进行故障排除。 (6)配置故障。用户操作引起的CPU占用率高一般不会持续很长时间,并且通常情况下不会影响业务,如果造成业务故障且造成交换机CPU占用率高,则为配置故障,请清除该配置。
|