之前客户内网中存在大量环路,由于客户运维不是很熟悉,所以整理了该文档以供参考。
交换机防环路的策略有如下几点:
- 指定STP根指定汇聚交换机为STP的根交换机;
- 启用环路保护功能(stp bpdu-protection是用来保护边缘端口的边缘端口下面是接pc的 所以收不到BPDU包。而如果不小心在该接口下接入了一个交换机 就会接收到BPDU包 而开启了这个功能之后 你的这个端口检测到有BPDU包的存在 就会自动把状态变为down。如果你网络中没有启用边缘端口不需要使用这个命令)
- 端口开启bpdu enable不论是trunk,还是access口,都可以配置bpdu enable命令。BPDU桥协议数据单元,是STP生成树协议中的报文,开启主要是防环。通过BPDU来协商哪个端口处于blocking的状态来阻塞数据发出,这样就可以达到防环。在每个或者单个端口上激活;如果接收到任何BPDU,该端口即被屏蔽。
- 开启边缘端口配置的接口不参与生成树计算,即可以转发BPDU也可以接收BPDU。配置BPDU保护功能后,如果边缘端口收到了BPDU,交换机将关闭这些端口,同时通知网管系统,被关闭的端口只能由网络管理人员手动恢复。
终端、服务器都不支持STP协议,如果这些设备和交换机连接,建议在交换机的端口上执行命令stp edged-port enable开启边缘端口属性或执行命令stp disable去使能STP。
否则,当用户插拔链路连接介质,或先执行shutdown,再执行undo shutdown,重启端口后,因对端端口不会发送STP的协议报文进行协商,导致交换机上的端口经过2倍的Forward Delay(默认为15秒)时间后才能正常转发报文。
或者使用stp disable命令。
stp bpdu-protection
用来保护边缘端口的边缘端口下面是接pc的 所以收不到BPDU包 。而如果不小心在该接口下接入了一个交换机就会接收到BPDU包 而开启了这个功能之后 你的这个端口检测到有BPDU包的存在 就会自动把状态变为down。如果你网络中没有启用边缘端口不需要使用这个命令。 - 启用环路检测功能loopback-detection环回检测,环回监测会在相应端口发送检测包,如果能够从发送的端口收到发送的包,即为端口内存在环路,对access端口,会删除mac列表,block端口,对trunk端口会上报,不会禁用端口。因此,环回监测功能只能发现单一端口的自环,或者是下级存在外部环路,例如本端口下级联hub,在hub上产生环路。如果需要检测和防止多端口的环路,例如两端口同时接入一根网线的两段,则需要开启stp。
在分别对接入层交换机配置STP和Loopback-detection进行测试后,得出结果:
1.当接入层交换机有两个端口用网线同时与同一个傻瓜交换机相连形成环路时:
(1)STP生效,阻塞其中一个端口,网络正常。
(2)Loopback-detection未生效,该交换机开始广播风暴,网络不正常。
2.当接入层交换机有一个端口用网线连着一个傻瓜交换机,傻瓜交换机上有两个端口用网线对接时:
(1)STP生效。阻塞该接入层交换机端口,其他接口网络正常,但该交换机无法远程控制。
(2)Loopback-detection生效,阻塞该接入层交换机端口,并通报trap信息,其他接口网络正常。 - TC-guard gongji防护
启用防TC-BPDU报文gongji功能后,在单位时间内,MSTP进程处理TC类型BPDU报文的次数可配置(缺省的单位时间是2秒,缺省的处理次数是3次。)。如果在单位时间内,MSTP进程在收到TC类型BPDU报文数量大于配置的阈值,那么MSTP进程只会处理阈值指定的次数。对于其它超出阈值的TC类型BPDU报文,定时器到期后,MSTP进程只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护交换机的目的。
当网络拓扑发生变化时,交换机会从自己的指定端口向外发送TCN BPDU报文 接收到TCN BPDU报文的交换机向发送者发送TCA报文 根交换机接收到TCN BPDU报文向网络中发送TC BPDU 收到TC BPDU的交换机将MAC地址表老化时间设为15s 就这些 TCA是应答TCN的,只回应发送TCN的交换机 TC是发送到整个网络的。通过查看端口的TC报文计数,发现端口收到大量的TC报文,且在不断增长。触发MAC删除、ARP表项刷新,设备处理大量arp-miss、arp-request和arp-reply报文,导致CPU升高,OSPF Hello报文、VRRP心跳报文不能及时处理,出现震荡。
stp tc-protection //tc保护
arp topology-change disable
mac-address update arp
当设备收到TC报文后,默认会清除MAC、老化ARP。当设备上的ARP表项较多时,ARP的重新学习会导致网络中的ARP报文过多。配置arp topology-change disable、mac-address update arp后,在网络拓扑变化时,可以根据MAC地址的出接口变化刷新ARP表项出接口。可以减少大量不必要的ARP表项刷新。
执行此命令arp topology-change disable,去使能设备响应TC报文的功能后,当网络的拓扑发生变化的时候,系统的ARP表项不再进行老化或者删除操作,如果未对设备使能“MAC刷新ARP”功能,此时由于设备中保存的ARP表项没有得到及时刷新,可能导致用户业务中断。因此建议执行命令mac-address update arp,使能MAC刷新ARP功能。