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拓扑中具有完全功能的端口。

STP Timer

​ 从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秒。

​ 若交换机A与C之间链路失效,则只需要30秒进行收敛。

  • 当交换机C失去了Root Port,其余端口只剩余一个Blocking端口,则该端口直接进入Listening状态,无需等待20秒。
  • 那么从Listening状态进入Forwarding状态仅需30秒即可完成转换。

5 Minutes Down Time

​ 在下图的情况中,SW-B和SW-C链路失效,使PC-A到PC-B的路径发生改变,但SW-A的MAC地址表并未做出相应改变,依然将PC-B的MAC地址指向SW-B,致使数据无法转发,MAC地址表刷新时间为300秒,则有五分钟的时间导致网络为瘫痪状态。

STP Topology Change Mechanism

​ 当一个交换机在网络中侦测到了拓扑变化,它会将这个事件通告给整个交换网络。然后通知每台交换机,将MAC地址表老化时间减少到Forward_Delay(默认为15秒)一段时间(Max_age+Forward_delay默认为20+15=35秒)。减少老化时间比直接清除MAC地址表更好,因为正在传输流量的主机不会被影响。
​ 这种通告通过TCN BPDU分发到网络中。
​ 那么如何定义拓扑变化?

  • 一个端口从转发状态被关闭。(例如Blocking)
  • 一个端口进入到转发状态,且该交换机有指定端口。(这说明这台交换机不再为独立模式)

​ 通告的过程分为两步

  • 交换机向根桥发送信息。
  • 根桥发送信息到整个生成树。

STP Topology Change Notification Process

​ 在正常的情况下,交换机在根端口上只会收到来自根交换机的Configuration BPDU,而不会发送BPDU,为了实现上述的技术,引入了一种叫做Topology Change Notification(TCN)BPDU。因此,当网络拓扑发生变化时。交换机会在根端口上发送TCN BPDU。当指定端口接收到TCN BPDU,交换机会在自己的根端口生成一个BPDU向上转发,这个过程会持续到根交换机收到TCN为止。
​ 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的洪泛,占用大量带宽,甚至可能影响业务的运行。