STP协议中的四种端口状态
判断端口角色的例题:
STP ----端口状态
禁用:协议启动前的状态
这路需要讨论的两种情况:
[Huawei]undo stp enable — 禁用设备的stp协议
[Huawei-GigabitEthernet0/0/1]undo stp enable — 禁用对应接口的stp协议
这里牵扯到一个二层设备和三层设备在利用OSPF协议建立邻居关系的时候,有一点小问题,不能建立邻居关系是因为二层设备运行了stp协议阻塞了端口,防止环路,但是OSPF有自己的放环机制,所以就要关闭对应接口的STP协议
所以在对于二层设备连接三层设备时,建立关闭相应接口的stp协议
阻塞:在这个状态中,只能收BPDU,但是不能发送,当然也不能发送数据包
阻塞状态作用,所有运行STP协议的接口最先进入的状态,为了避免此时协议刚刚运行,还没有彻底收敛,就出现了环路,所以将所有的接口先进行阻塞。
在初次收敛(也就是在拓扑中第一次使用STP协议),因为这个时候所有的设备的接口都是阻塞的状态,这样所有的设备都处于一个只能收收BPDU的状态,不能发送。导致拓扑中并没有BPDu报文的传输,所以这里有一个最大寿命时间(也就是状态死亡时间,20s),如果20s内都没有收到任何的BPDU报文,那么就会视作根桥故障后转为侦听状态,变为主动发送BPDU报文的设备
默认存在时间为20s,后转为侦听状态。(因为根网桥一般为2s一发,因为10次传输都没收到的话,就是有问题了)
侦听:(进行角色选举的状态)
这里类似于逻辑断开,可以正常收发BPDU,但是不能收发相应的数据包
这个状态是STP进行角色选举的过程,一旦被选举成为根端口或者指定端口,就会转成下一个状态,非指定端口的话,会直接转为阻塞状态
这里的选举会有一个15s的选举时间,因为在一部分设备选举成功后,另外一部分设备才刚刚启动,如果选举时间过短,这样可能会导致临时环路,所以设置一个15s的选举时间,让整个拓扑中的所有设备都能进行参加选举,进行BPDU报文的交互。
AI举例:
如果STP中侦听状态的选举时间过短,确实有可能导致环路问题。以下通过一个简单的网络拓扑示例来说明:
假设一个网络中有三台交换机SW1、SW2和SW3,它们相互连接形成一个冗余链路的网络拓扑,如下所示:
SW1/ \/ \SW2 SW3
-
正常选举过程(选举时间合适):
- 在正常情况下,STP开始运行,交换机之间通过交换BPDU(Bridge Protocol Data Unit)来选举根桥、确定端口角色等。
- 假设SW1的Bridge ID最优,被选举为根桥。SW2和SW3会分别根据到根桥(SW1)的路径开销来确定根端口和指定端口。
- SW2到SW1的链路开销为10,SW2到SW3再到SW1的链路开销为20(假设每条链路开销为10)。因此,SW2会选择直接连接SW1的端口作为根端口,SW3同样会选择直接连接SW1的端口作为根端口。
- 而SW2和SW3之间连接的端口,会有一个被选举为指定端口,另一个被阻塞,假设SW2与SW3连接的端口为指定端口,SW3与SW2连接的端口被阻塞,这样网络形成了无环的拓扑结构,数据能够正常转发。
-
选举时间过短的情况:
- 若侦听状态的选举时间过短,比如只有1秒。
- 一开始,各交换机都宣称自己是根桥并发送BPDU。由于选举时间短,可能在第一秒内,SW2只收到了SW3发送的BPDU,且SW3在这个BPDU中宣称自己是根桥(因为信息还未充分交换)。
- SW2根据这瞬间接收到的信息,在1秒的选举时间结束后,错误地认为SW3是根桥,并选择连接SW3的端口作为根端口。
- 同时,SW3也可能因为类似原因,在短时间内只收到SW2宣称自己是根桥的BPDU,也错误地选择连接SW2的端口作为根端口。
- 这样一来,SW2和SW3之间原本应该有一个端口被阻塞以防止环路的情况没有发生,两条链路都处于转发状态,从而形成了环路。
- 例如,当有一个广播帧进入网络时,它会在SW2和SW3之间不断循环转发,导致广播风暴,严重影响网络性能,最终使网络无法正常工作。
所以,选举时间过短,交换机无法全面、准确地收集网络拓扑信息,可能做出错误的端口角色选举决策,进而引发网络环路问题。
学习:可以收数据包,但是不能发送数据包
也可以正常收发BPDU
这个设计主要是想起到一个优化的作用,让各个交换机,记录本设备对应PC端的MAC地址信息,形成初步的MAC地址表。这样在下一步的转发中,就能优化一些垃圾广播报文的数据,优化带宽。在学习状态中,默认一般持续15s,所以说这种状态是一种理想化的想法,因为在实际过程中,15s的时间作用不大。
转发:
进行正常的数据包的转发,和BPDU报文的收发
首次收敛
STP首次收敛至少需要50s才能完成收敛,收敛速度很慢:
阻塞 20s
侦听 15s
学习 15s