生成树端口状态与收敛
Port States and Converge
STP Port States
? 当STP协议启用在交换机上时,每个端口都必须经历以下这些阶段。(仅限于802.1D,下述内容均为802.1D STP)
- Disabled——端口被关闭,它不会转发和接收数据。
- Blocking——端口被阻塞,它只能接收其他交换机发送的BPDU。
- Listening——端口被允许向其他交换机发送和接收BPDU,所以它能够执行STP的程序,如果端口失去了DP或RP的角色,它将会回到Blocking状态。
- Learning——端口被允许发送和接收BPDU,它还能够学习MAC地址并将MAC地址填充入MAC地址表。
- Forwarding——端口可以发送和接受数据帧、BPDU报文,该端口是STP拓扑中具有完全功能的端口。
文章图片
? 从Blocking状态进入Listening状态需要20秒,再从Listening进入Forwarding状态需要30秒,共需50秒。
? Loss of BPDU detected —— BPDU会在交换机端口保存20秒,若在20秒内没有收到BPDU或收到不同的BPDU,则端口开始计时20秒,并准备进入Listening状态。
STP Converge
文章图片
? 如上图,若交换机A与B之间链路失效,则共需要50秒进行收敛。
- 交换机C的F0/1端口将无法收到交换机A发送的BPDU,交换机B失去了Root Port,认定自己为根桥,重新发送BPDU。
- 交换机C的F0/1端口收到来自交换机B的BPDU,触发了Loss of BPDU detected,进入20秒计时。
- 15秒后进入Listening状态,再过15秒进入Learning状态,最后进入Forwarding状态,共50秒。
- 当交换机C失去了Root Port,其余端口只剩余一个Blocking端口,则该端口直接进入Listening状态,无需等待20秒。
- 那么从Listening状态进入Forwarding状态仅需30秒即可完成转换。
文章图片
STP Topology Change Mechanism ? 当一个交换机在网络中侦测到了拓扑变化,它会将这个事件通告给整个交换网络。然后通知每台交换机,将MAC地址表老化时间减少到Forward_Delay(默认为15秒)一段时间(Max_age+Forward_delay默认为20+15=35秒)。减少老化时间比直接清除MAC地址表更好,因为正在传输流量的主机不会被影响。
? 这种通告通过TCN BPDU分发到网络中。
? 那么如何定义拓扑变化?
- 一个端口从转发状态被关闭。(例如Blocking)
- 一个端口进入到转发状态,且该交换机有指定端口。(这说明这台交换机不再为独立模式)
- 交换机向根桥发送信息。
- 根桥发送信息到整个生成树。
? TCN BPDU是一个很简单的BPDU,它不包含交换机信息,只是随着hello_time发出。(但该hello_time均为本地配置,而不是指的是configuration BPDU的Hello Time)
? 交换机的指定端口通过收到一个带有Topology Change Acknowledgement(TCA)Configuration BPDU来确定上游交换机收到了TCN BPDU。通知拓扑更改的交换机不会停止发送TCN直到其上游交换机返回一个TCA,因此,即使上游交换机没有收到来自根桥的TCA,也会向通知拓扑更改的交换机发送TCA。
文章图片
? 一旦根桥知道了网络拓扑的变动,它就开始发送BPDU中TC bit = 1的Configuration BPDU。这样能网络中所有的交换机都能够知晓网络拓扑发生了变化,并将MAC地址表老化时间转换到forward_delay。
文章图片
STP Topology Change Case Study 如下图,当交换机A与交换机C之间的链路失效,交换机C由于没有根端口,则无法发出TCN,则交换机A作为根桥直接下发TCN。
文章图片
TCN Flood ? 当局域网中突然有大量端口状态的转变,则将会造成TCN与TC的洪泛,占用大量带宽,甚至可能影响业务的运行。
文章图片
推荐阅读
- LeetCode编程题解法汇总|力扣解法汇总606-根据二叉树创建字符串
- 数据结构与算法(十三)——红黑树1
- JAVA|Mybatis-plus 的代码生成器 Demo
- MyBatis-Plus|Springboot(使用IDEA自动生成java实体类Mysql逆向工程效率神器使用讲解)
- 分享|python画圣诞树【全网最全】
- JMeter(生成漂亮的多维度的HTML报告)
- 数据结构|PTA查找—二叉搜索树的删除操作
- 算法|PTA查找—构造二叉检索树
- 腾讯推出国内首个云原生成本优化开源项目 Crane
- 剑指Offer之Java算法习题精讲二叉搜索树与数组查找