天天看点

H3C基础维护篇 - 揭秘STP Dispute保护机制

作者:生命的凯歌256124851

揭秘STP Dispute保护机制

H3C交换机基础维护篇

什么是Dispute

交换机端口的STP状态依靠不断接收上游交换机发送的BPDU报文来维持,当由于链路拥塞或者单向链路故障等问题,导致根端口收不到上游交换机的BPDU时,下游交换机会重新选择根端口,原来的根端口经过计算后会变为指定端口,而原来的阻塞端口经过计算后会变为根端口且迁移到转发状态,从而导致网络中产生环路,Dispute机制会抑制这种环路的产生。

Dispute机制默认在所有端口生效,当端口收到这样的BPDU报文:报文中携带指定端口角色和Learning/Forwarding状态并且报文中的优先级向量低于接收端口的优先级向量,此时 Dispute机制生效,接收该报文的端口被设置为Discarding状态,阻止网络形成环路。

文字描述较为复杂,下面我们通过一个小实验来说明Dispute机制。

实验说明Dispute

实验拓扑如下图所示,采用的设备包括三台交换机SW1、SW2和SW3。SW1与SW2相连接口为Trunk口,放通Vlan 1和Vlan 200。SW2和SW3相连接口为Access口,放通Vlan 200。

实验将分三种情况进行讨论,三种情况的区别在于中间设备是否全局开启STP功能,以及接口Vlan与Pvid配置的不同。

需要注意的是,交换机全局开启STP功能与否,将影响对BPDU报文的处理方式:

交换机全局开启STP功能时,会将接收的BPDU报文作为协议报文上送CPU处理。

交换机全局关闭STP功能时,会将接收的BPDU报文作为普通数据报文转发,即收到BPDU报文时根据配置打上Vlan标签,转发BPDU报文时进行Vlan标签拆除及Vlan检查等处理。

情况一:所有设备全局开启STP功能,BPDU报文收发正常,未触发Dispute。

H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制

按照图中配置完成后,在三台设备上分别执行display stp brief命令查看STP端口状态,可以看出SW1被选为了根桥设备,各设备的端口状态符合STP端口规则。

SW1的接口XGE1/0/16为根桥指定接口,该接口发送BPDU报文数有增长,但是接收BPDU报文数不变,符合根桥设备的指定接口只发送BPDU报文,不接收BPDU报文的原理:

H3C基础维护篇 - 揭秘STP Dispute保护机制

测试SW1和SW3两个设备之间可以互相Ping通,业务正常。

实验结论:在三台设备均全局开启STP功能的情况下,BPDU报文作为协议报文上送CPU处理,不进行接口Vlan检查。根桥持续发出BPDU报文,其他设备只接收不发出BDPU报文。三台设备收发BPDU报文正常,未触发Dispute。

情况二:关闭SW2的STP功能,且SW2的XGE1/0/3口未放通XGE1/0/45口的Pvid Vlan,导致BPDU报文单通,触发Dispute。

H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制

此时SW1依旧为根桥,但端口状态变为Discarding,端口非正常的原因是Dispute。SW3的根桥变为自身,XGE2/0/1口变为指定端口。测试SW1和SW3之间互Ping不通。

出现该现象的原因如下:当关闭SW2的STP功能后,BPDU报文在SW2上会被当做普通数据报文转发。由于SW2的XGE1/0/45口为Trunk且Pvid为1,从SW1发出的BPDU报文到达SW2的XGE1/0/45口后会被打上Vlan 1标签,带着Vlan 1标签的BPDU报文从SW2的XGE1/0/3口发出时会进行Vlan检查,而XGE1/0/3口为access口,只放通Vlan 200,因此检查不通过,该报文会在XGE1/0/3口被丢弃,从而无法到达SW3。

SW3在大约3个Hello-time时间内没收到根桥发来的BPDU后就会认为自己是根桥,将自身端口角色变为指定端口并开始发送以自己为根桥的BPDU报文。SW1与SW2之间的接口放通了Vlan 200,因此SW1可以接收到这个BPDU报文。SW1收到后将该BPDU报文的优先级与自身发出的BPDU报文优先级做比较,发现收到的报文优先级较低,因此触发Dispute保护功能,阻塞XGE1/0/16口,使其处于Discarding状态,从而无法Ping通SW3。

H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制

通过在SW1及SW3设备上debug stp packet来显示BPDU报文的收发情况,可以看到SW1既发送了BPDU报文,也接收到了来自SW3的低优先级BPDU报文,而SW3只有自身的BPDU报文发送,没有收到SW1发来的BPDU报文。

实验结论:SW2全局关闭了STP功能后,将BPDU报文作为普通数据报文处理,又由于两端接口Vlan及Pvid的配置差异,造成了BPDU报文单通的情况,从而触发Dispute机制。

情况三:关闭SW2的STP功能,且SW2的XGE1/0/3口放通XGE1/0/45口的Pvid Vlan,解除单通,Dispute消除。

H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制
H3C基础维护篇 - 揭秘STP Dispute保护机制

此时测试SW1与SW3之间互Ping恢复正常。这是因为SW2的XGE1/0/45 Pvid为200,SW1发出的BPDU报文到达SW2的XGE1/0/45口后被打上Vlan 200标签,从放通了Vlan 200的XGE1/0/3口发出时Vlan检查通过,XGE1/0/3口拆掉Vlan标签后发给SW3。这样SW3就可以正常收到根桥发来的BPDU报文,就不会认为自己是根桥了,也就不会发出低优先级BPDU报文,因此SW1的端口也就不会被Dispute了。

实验结论:即使关闭了中间设备的STP功能,BPDU报文被当作普通数据报文处理,但由于SW2的XGE1/0/3口放通了XGE1/0/45口的Pvid Vlan,不会产生BPDU报文单通情况,因此不会触发Dispute机制。

Dispute小结

1. 通过上述实验可知,触发Dispute机制的原因简单总结起来就是两个字:单通。

2. 导致单通的原因除了常见的配置问题以外,还有可能是链路拥塞或者单向链路故障等。

3. 设备上线之前需检查网络中相关设备的STP配置,避免触发Dispute机制。

4. H3C V5平台设备的STP功能不具有Dispute保护机制。

5. H3C V7平台设备的STP功能具有Dispute保护机制,特定情况下可以配置undo stp dispute-protection命令关闭Dispute保护功能,一般情况下不建议关闭。

继续阅读