为了解决二层网络的环路问题,引入了STP协议族,但是由于恶意***及STP协议族本身的固有瑕疵,仍存在一些问题,这些问题导致了网络的环路和拥塞,为了解决这些问题,主要有根保护,环路保护,BPDU保护和TC 保护等方法。
本文通过整理华为Hex文档,结合自身理解,对生成树网络中的防护机制进行总结,以便日后故障处理。
1 根保护
在二层网络中,我们往往希望网络结构是稳定的或者相对稳定的,因此在STP协议族中,我们希望一旦根桥被选中,除非其出现故障无法正常转发数据,否则其应该是相对稳定不变的。
而如果网络中接入一台优先级更高的交换设备或者网络中出现了恶意***,网络中的合法根桥极有可能因收到优先级更高的RST BPDU而失去根桥地位,进而触发二层网络拓扑结构显著变更,出现大规模的生成树重新计算现象,导致网络拥塞。
为了防止这种情况的发生,可以通过在指定端口上启用根保护功能,使根桥的端口角色只能保持为指定端口。一旦指定端口收到了更优的RST BPDU,端口状态将进入discarding 状态,不再转发报文,一般经过两个forward delay时间,端口没有再收到优先级更高的RST BPDU,就会恢复到正常的forwarding状态。
根保护功能的实现是通过主动阻塞自身的指定端口实现的,虽然会牺牲短暂的forward delay 时间,但相比于网络拥塞,这些牺牲是值得的,划算的。
配置命令
system-view
interface {dp}
stp root-protection
2 环路保护
在运行RSTP的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的RST BPDU来维持的。而如果因为链路拥塞或者单向链路故障导致这些端口无法收到上游交换设备的RST BPDU时,这些端口的端口角色和端口状态就会主动进行改变,如根端口变为指定端口,阻塞端口进入转发状态。从而导致网络中产生环路。
如图所示,当BP2-CP1之间的链路发生拥塞时,DC由于根端口CP1在超时时间内无法收到来自DB的RST BPDU,根端口CP1成为指定端口,alternate端口CP2进入转发状态,成为根端口,形成了环路。
为了解决此问题,需要在根端口或者alternate端口启动环路保护功能。如果根端口或者alternate端口长时间无法收到来自上游设备的RST BPDU时,就会向网管发出通知信息,并且,根端口也会进入discarding状态,角色切换为指定端口,不转发报文。这样就不会在网络中形成环路。直到其再一次收到上游设备发来的RST BPDU,才恢复成原来的状态。
缺省情况下,端口的环路保护功能处于关闭状态。同时,已经配置了根保护功能的端口,不可以配置环路保护功能。
配置命令
system-view
interface {rp&ap}
stp loop-protection
3 BPDU保护
在二层网络内,一般将接入交换设备的端口配置成为边缘端口。正常情况下,边缘端口不会收到RST BPDU。
边缘端口不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口。
如果有人伪造RST BPDU恶意***交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
配置命令
system-view
stp bpdu-protection
缺省情况下,交换设备的BPDU保护功能处于禁用状态。
4 TC保护
交换设备在接收到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意***交换设备时,交换设备短时间内会收到很多TC BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
启用防TC-BPDU报文***功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的。
配置命令
system-view
stp tc-protection interval interval-value//配置设备处理阈值指定数量的拓扑变化报文所需的时间。缺省情况下,设备处理最大数量的拓扑变化报文所需的时间是Hello Time。
stp tc-protection threshold threshold//配置交换设备在收到TC类型BPDU报文后,单位时间内,处理TC类型BPDU报文并立即刷新转发表项的阈值。缺省情况下,设备在指定时间内处理拓扑变化报文的最大数量是1。
配置后,在stp tc-protection interval指定的时间内,设备只会处理stp tc-protection threshold指定数量的拓扑变化报文,对于其他的报文会延迟处理,所以可能会影响生成树的收敛速度。例如,时间设定为10秒,阈值设定为5,则设备收到拓扑变化报文后,在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理。