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的洪泛,佔用大量頻寬,甚至可能影響業務的執行。