部署了组播业务的交换机CPU占用率高,同时发现交换机上存在大量239.255.255.250的组播组的转发表项,占用了较多的转发表项资源,而实际组播业务中并没有规划该组播组地址。
例如:某局点的一个用户子网启用IPTV业务后,交换机CPU占用率高,同时发现交换机上出现大量源IP地址为某品牌机顶盒的IP地址,组IP地址为239.255.255.250的组播路由表项,并且这些组播表项扩散到其他用户子网络,设备上都可以查看到大量该组播组地址的转发表项。
239.255.255.250地址属于SSDP(Simple Service Discovery Protocol)简单服务发现协议使用的组播地址,因此当网络中存在服务器或者终端PC默认启用SSDP服务时,便会发送对应组播报文到交换机上。
由于239.255.255.250地址不属于组播地址的永久组地址(永久组地址也称为保留组地址,用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发)224.0.0.X范围之内,交换机将该组播组地址作为一个正常普通的组播组来处理,因此会生成对应的组播转发表项。
本案例中,初步分析是这种品牌的机顶盒默认启用了SSDP服务,会发送对应“ssdp:discover”消息报文到源DR交换机触发组播转发表项,同时向RP注册成功后,其他用户子网中的终端设备发送该组播组的Report报文,导致各子网交换机均出现大量不同源IP,相同组IP的组播转发表项。
1.执行display cpu-usage命令,查看交换机CPU占用率,发现CPU占用率在80%以上,并且查看CPU占用率较高的任务,发现收包任务“bcmRx/FTS/VPR/SOCK”占用率最高。
2.使用display cpu-defend statistics命令查看上送CPU报文的统计信息,判断是否存在过多IGMP协议报文。
a.执行reset cpu-defend statistics命令,清除上送CPU报文的统计信息。
b.执行display cpu-defend statistics packet-type igmp all命令,查看上送CPU的IGMP报文统计信息。
3.找出组播攻击源。
可以通过以下三种方式来找出组播攻击源:
−端口镜像获取报文信息
端口镜像获取报文信息是最直接的获取报文详细特征的方式,且对设备的CPU不会造成任何影响,建议在上送CPU的报文的入方向端口进行镜像。交换机端口镜像配置方式请参考产品文档的“配置指南-网络管理与监控配置-镜像配置”章节。
−查看组播表项
n如果配置的二层组播,执行display igmp-snooping port-info命令,会发现有不同主机端口都收到了239.255.255.250组播组的Report请求。
如果配置的三层组播,执行display multicast forwarding-table命令,会发现存在较多不同源地址、相同组播地址239.255.255.250的组播转发表项。
−配置基于攻击溯源的本机防攻击策略
执行display auto-defend attack-source和display auto-defend attack-source slot slot-id命令,查看主控板和接口板的攻击源信息。
4.通过以上方法,同时结合实际组播业务部署中没有规划239.255.255.250的组播组地址,确定设备受到239.255.255.250组播组报文攻击。
解决方案
有两种解法方法,一种是在交换机上过滤该组播组报文(推荐使用该方法),一种是在存在攻击源的服务器或终端PC上关闭SSDP服务。
l在交换机上过滤该组播组报文。
a.过滤239.255.255.250的IGMP协议报文。
b.过滤239.255.255.250数据报文。
l在服务器或终端PC上关闭SSDP服务。
a.进入“控制面板”,选择“管理工具”,进入后再选择“服务”。
b.在列表中找到“SSDP Discovery Service”服务,选择并停止该项服务。
经验总结
239.255.255.250组地址属SSDP服务所有,一般windows服务器默认会开启该服务,因此网络中出现该组地址的表项是较为常见的。
对于交换机而言,这只是一个普通的组播组,如果发现CPU占用率高,并且判断是受到未在业务规划内的239.255.255.250的报文攻击,可以在交换机上进行相关的过滤配置或者在服务器或终端设备上关闭该服务,避免交换机上大量生成该组播组的转发表项。
相关介绍
简单服务发现协议SSDP(Simple Service Discovery Protocol)是一种应用层协议,其构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的组播方式实现。
SSDP协议一般使用组播地址239.255.255.250:1900(IPv4),FF0x::C(IPv6)来传送相关消息。
按照协议的规定,当一个控制点(客户端)接入网络的时候,它可以向一个特定的组播地址的SSDP端口使用M-SEARCH方法发送“ssdp:discover”消息。当设备监听到这个保留的组播地址上由控制点发送的消息的时候,设备会分析控制点请求的服务,如果自身提供了控制点请求的服务,设备将通过单播的方式直接响应控制点的请求。
SSDP的UDP数据报文和IGMP Report报文分别如图6-1和图6-2所示。
图6-1 SSDP的UDP数据报文
图6-2 SSDP的IGMP Report报文
6.2 交换机受到ARP报文攻击
问题现象描述
如图6-3所示,Switch为网关,Switch_1(框式交换机)经常脱管,且Switch_1下用户存在上网掉线,Ping网关存在时延、不通等现象,而Switch_2下联业务正常,Ping网关正常。
图6-3 故障组网图
问题根因说明
Switch_1上存在源mac固定的ARP攻击导致用户无法进行正常ARP交互。
问题判断方法
在Switch_1上执行以下操作:
步骤 1查看设备CPU占用率,判断CPU占用率较高。
发现CPU占用率达到82%。
步骤 2查看存在临时ARP表项,初步判断设备的ARP表项学习存在问题。
发现有两条ARP表项的“MAC ADDRESS”字段为“Incomplete”即为临时表项,表示有ARP表项学习不到。
步骤 3判断设备正遭受ARP攻击。
1.由于有未学习到的ARP表项,查看上送CPU的ARP-Request报文统计信息。
发现交换机的4号单板上存在大量ARP-Request报文丢包。
2.配置攻击溯源识别攻击源。
3.查看攻击源信息。
发现攻击源的MAC地址为0000-0000-00db,位于GigabitEthernet2/0/22端口。
如果该MAC有对应ARP,还可以执行命令display arp | include 0000-0000-00db查询对应的IP。
----结束
解决方案
l配置黑名单。
l配置攻击溯源的惩罚功能。
6.3 STP震荡引起CPU占用率高
问题现象描述
一台盒式交换机的CPU占用率过高,交换机输出大量的ARP报文超过CPCAR后丢弃的日志,同时采集端口信息时,发现所有使能STP的端口接收的TC报文计数均在增长。
问题根因说明
端口收到大量的TC报文引起STP震荡,触发大量MAC表项删除、ARP表项刷新,使交换机需要处理大量ARP-Miss、ARP-Request和ARP-Reply报文,导致CPU占用率升高。
问题判断方法
1.查看日志,设备上出现CPU占用率过高的日志信息。
2.查看日志,设备上还有大量的ARP报文超过CPCAR后丢弃的日志记录。
3.采集端口TC(Topology Change)报文收***况。
隔几秒执行一次display stp tc-bpdu statistics命令,查看端口TC/TCN报文收发计数,发现所有使能STP的端口,接收的TC报文计数均在增长。
解决方案
1.系统视图下执行stp tc-protection命令,打开TC保护的告警开关。
打开TC保护告警开关后,可以保证设备频繁收到TC报文时,每2秒周期内最多只处理1次表项刷新,从而减少MAC、ARP表项频繁刷新对设备造成的CPU处理任务过多。
同时设备会触发MSTP_1.3.6.1.4.1.2011.5.25.42.4.2.15 hwMstpiTcGuarded和MSTP_1.3.6.1.4.1.2011.5.25.42.4.2.16 hwMstpProTcGuarded两个告警。
2.系统视图下执行arp topology-change disable命令,去使能设备响应TC报文的功能。
当设备收到TC报文后,默认会对ARP表项进行老化。执行该命令后,当设备收到TC报文时,不对ARP表项进行老化或删除,避免网络拓扑变化频繁时,设备重新的学习ARP表项造成网络中ARP报文过多,导致设备的CPU占用率过高。
3.系统视图下执行mac-address update arp命令,使能MAC刷新ARP功能。
当设备收到TC报文后,默认会清除MAC表项。执行该命令后,在MAC地址表项出接口刷新时,设备将直接刷新ARP表项的出接口,可以减少大量不必要的ARP表项刷新。
经验总结
在处理CPU高的问题时,需要多关注CPCAR丢包情况。
在部署STP时,建议配置TC保护功能,并将所有连接终端的接口配置成边缘端口,这样可以避免某些端口的状态变化引起整个STP网络震荡而重新收敛。
6.4 OSPF震荡引起CPU占用率高
问题现象描述
如图6-4所示,Switch_1、Switch_2、Switch_3和Switch_4配置了OSPF协议,发现Switch_1设备的CPU占用率高,ROUT任务占用率明显高于其他任务并且产生路由震荡。
图6-4 故障组网图
问题根因说明
网络中IP地址冲突导致路由震荡。
问题判断方法
步骤 1在各交换机上每隔一秒执行一次display ospf lsdb命令,查看每台交换机的OSPF的LSDB链路状态数据库信息。
步骤 2根据各交换机的回显信息,判断故障点。
l如果同时出现以下情况,说明LSA老化异常。
−一台交换机上发现网段LSA的老化时间(Age)为3600或者没有这条LSA,且Sequence字段增加很快。
−其他交换机的相同网段LSA的Age不断在3600和其他较小值之间切换,而且Sequence字段增加很快。
a.在各交换机上每隔一秒执行一次display ospf routing,如果看到有路由振荡且没有邻居振荡,则可以判断为IP地址冲突或Router ID冲突。结合display ospf lsdb的回显信息,可以判断为DR和非DR的IP地址冲突。
b.根据AdvRouter字段找到其中的一台设备进而定位出是哪个接口,与其冲突的设备只能够通过网络IP地址规划找到,很难通过OSPF自身携带的信息找到冲突设备。
如本例中,可以首先判断出冲突的IP地址为112.1.1.2,其中一台冲突设备的Router ID为1.1.1.1,与其冲突的另外一台设备(3.3.3.3)无法通过OSPF自身携带的信息找到。
l如果任一台交换机上出现两个LinkState ID为112.1.1.2的Network LSA,并且这两个LSA的Age字段一直都很小,Sequence字段增加比较快。说明IP地址冲突发生在DR和BDR上。
----结束
解决方案
根据规划修改冲突一方的IP地址。
经验总结
l网络中时常会出现由于接口IP地址配置冲突而导致的路由问题。出现此问题时,设备通常伴随下面两个现象:
−设备CPU占用率高,执行命令display cpu-usage查看CPU使用状态时,ROUT任务占用率明显高于其他任务。
−发生路由振荡。
l在OSPF网络中,接口IP地址配置冲突时可能导致OSPF的LSA频繁的老化和产生,进而导致网络不稳定,引起路由振荡,消耗CPU处理资源。
因此,网络中接口IP地址需要根据规划配置,不要随意改动网络规划参数。
6.5 交换机出现环路引起大量组播报文上送,导致CPU占用率高
问题现象描述
一台框式交换机为下挂用户提供HSI(High Seed Internet)业务、VOIP业务和IPTV业务,其中HSI和VOIP均为PPPoE业务,IPTV业务为IGMP Snooping二层组播业务。
管理用户发现交换机入方向流量带宽超过90%,同时主控板和接口板的CPU占用率达到80%以上。
问题根因说明
交换机下挂新增的接入设备未使能STP,从而出现环路,大量IGMP协议报文上送交换机CPU,引起CPU占用率过高,使EFM报文交互延时,从而出现交换机与其他交换机之间出现互联端口EFM(Ethernet in the First Mile)闪断,导致端口的MSTP重新计算,影响了正常业务。
问题判断方法
在框式交换机上执行以下操作:
1.执行命令display cpu-usage命令,查看CPU占用率,发现主、备设备的主控板的CPU占用率达到87%,接口板CPU占用率达到93%。
2.查看设备输出告警。
a.设备出现端口超过带宽阈值的告警。
b.设备出现EFM震荡,根桥丢失。
3.执行命令display interface,发现端口处理组播报文过多。
4.执行命令display cpu-defend statistics all,发现“Packet Type”为“igmp”的报文过多,说明大量IGMP组播协议报文上送交换机CPU。
5.在处理组播报文较多的端口进行镜像报文获取,定位发现是某地址的组播报文上送。
解决方案
1.在交换机上配置基于黑名单的本机防攻击策略,过滤IGMP协议报文,减少下面网络出现环路后组播协议报文对CPU的冲击。
排查现网网络部署,对构成环路的线路进行破环处理