生成樹協議STP、RSTP和MSTP原理的理解(中)

RSTP(802.1W,Rapid Spanning Tree Protocol,快速生成樹協議)

STP與RSTP區別概要


生成樹協議STP、RSTP和MSTP原理的理解(中)

STP與RSTP的接口狀態對應關係


生成樹協議STP、RSTP和MSTP原理的理解(中)

RSTP端口會在Discarding狀態完成角色的確定,當端口確定為根端口或指定端口後,經過Forward Delay時間會進入Learning狀態,比STP就少一個Forward Delay時間,並且有P/A快速機制,可以直接從Discarding直接到Forwarding狀態。不是根端口或指定端口就會維持Discarding狀態。

端口角色

根端口和指定端口角色的定義和STP相同,就不說了。

較STP新增了兩個端口概念,替代接口和備份接口。但同樣都是阻塞起來的,只是為了指定端口出故障時可以快速收斂。

替代接口(Alternate)

可以理解為根接口的備份接口,是由於收到了其他設備發送的BPDU且優於自身所要發送的BPDU從而被阻塞的接口。當根端口進入阻塞狀態時,會選擇優先級最高的替代接口作為新的根端口。當對端端口是Forwarding狀態,則可以立即進入轉發狀態。

備份接口(Backup)

一臺設備上收到了自己所發送的BPDU從而被阻塞的接口。

如圖,SW2上的GE 0/0/2阻塞,因為是收到了其他交換機的BPDU報文,形成了環路,且收到的BPDU報文比自己的優,從而阻塞,就變成了替代接口。而SW2上的GE 0/0/4,因為收到的是自己發送過來的BPDU報文且端口id較大被阻塞,從而變成備份接口。


生成樹協議STP、RSTP和MSTP原理的理解(中)

BPDU報文


生成樹協議STP、RSTP和MSTP原理的理解(中)

與STP BPDU相比較

Protocol Version Identifier為2

BPDU Type為0x02,表示為RST BPDU

BPDU flags使用全部的8位

在報文的最後增加了Versionl Length字段,值為0,表示本BPDU中不包含Versionl內容。

最高位和最低位TCA和TC與STP相同。Agreement(同意)及Proposal(提議)用於RSTP的P/A機制,會大大提高RSTP的收斂速度。Port Role(接口角色)兩個bit位,01表示根接口,10表示替代接口,11表示指定接口,00保留。Forwarding(轉發)和Learning(學習)用於表示該RST BPDU發送接口的接口狀態。

RSTP與STP不同,在網絡穩定後,STP的非根橋才會轉發根橋發來的BPDU報文,而RSTP無論是非根橋還是根橋都會週期性的發送BPDU。

在STP中只有在指定端口收到低優先級的配置BPDU時才會立即回應(發送自己計算的配置BPDU報文),阻塞狀態端口不會對低優先級的配置BPDU做出回應。

在RSTP中,指定端口或阻塞狀態的端口收到低優先級的RST BPDU,也可以立即對其做出回應。

P/A快速收斂機制

Proposal/Agreement機制,其目的是使一個指定端口儘快進入Forwarding狀態。如圖所示,根橋S1和S2之間新添加了一條鏈路。在當前狀態下,S2的另外幾個端口p2是Alternate端口,p3是指定端口且處於Forwarding狀態,p4是邊緣端口。

RSTP和STP的兼容

當運行RSTP的交換機連續3次接收到配置BPDU時候,認為改端口和STP相連,該端口將切換到STP協議運行。


生成樹協議STP、RSTP和MSTP原理的理解(中)

新鏈路連接成功後,P/A機制協商過程如下:

  1. p0和p1兩個端口馬上都先成為指定端口,發送RST BPDU。
  2. S2的p1口收到更優的RST BPDU,馬上意識到自己將成為根端口,而不是指定端口,停止發送RST BPDU。
  3. S1的p0進入Discarding狀態,於是發送的RST BPDU中把Proposal和Agreement置1。
  4. S2收到根橋發送來的攜帶Proposal的RST BPDU,開始將自己的所有端口進入sync變量置位。
  5. p2已經阻塞,狀態不變;p4是邊緣端口,不參與運算;所以只需要阻塞非邊緣指定端口p3。
  6. 各端口的synced變量置位後,p2、p3進入Discarding狀態,p1進入Forwarding狀態並向S1返回Agreement位置位的回應RST BPDU。
  7. 當S1判斷出這是對剛剛發出的Proposal的回應,於是端口p0馬上進入Forwarding狀態。

拓撲改變處理

在STP中,端口變為Forwarding狀態或從Forwarding變為Blocking狀態均會觸發拓撲改變處理過程,而RSTP只在非邊緣端口轉為Forwarding狀態時才會觸發處理過程。

當交換機由非邊緣端口轉變為Forwarding狀態時,網橋會在兩倍的Hello Time時間內向根端口以及指定端口發送TC置位為1的RST BPDU,同時清除這些端口學習到的MAC地址。

其他交換機收到TC置位的RST BPDU時候,會清除接收TC報文的端口以及邊緣端口之外的其餘端口MAC地址,並同樣會在兩倍的Hello Time時間內向根端口以及指定端口發送TC置位為1的RST BPDU報文。

交換機收到TC置位的RST BPDU後不需要在Max Age+Forward Delay時間內將MAC地址老化時間設置為Forward Delay,而是直接清除端口MAC地址,重新進行學習,從而實現更快的收斂。

RSTP和STP的兼容

當運行RSTP的交換機連續3次接收到配置BPDU時候,認為改端口和STP相連,該端口將切換到STP協議運行。


分享到:


相關文章: