Rapid STP
RSTP/RPVST+
Edge Port是Rapid STP中的一個新的端口類型,它的作用相當於Port Fast,但如果該端口收到了BPDU,則它將直接轉換為普通端口。在Cisco設備中,邊緣端口的實現還是通過Port Fast關鍵字。
Rapid STP還添加了鏈路屬性這一概念,RSTP只能在點到點鏈路和邊緣端口啟用快速轉發(直接進入Forward模式),RSTP根據端口類型將會自動設定鏈路屬性,手工設定可以覆蓋自動配置的設定。
- Shared——半雙工模式自動配置
- Point to Point——全雙工模式自動配置
RSTP/RPVST+ Post States and Roles
快速生成樹的端口狀態只有三種:
- Forwarding
- 發送和接受用戶數據
- Learning
- 建立MAC地址表
- Discarding
- 對應的是Listening、Blocking、Disabled三種狀態
快速生成樹新增了兩種端口角色:
- Alternate
- 它提供了到達根交換機的備用路徑,默認情況為Blocking(Discarding)。
- Backup
- 它提供了到達同一網段的備用路徑,默認情況為Blocking(Discarding)。
BPDU in RSTP
在802.1D中,只有根交換機才能發送BPDU,通過其余的交換機向下中繼,由於這樣的形式,這就導致802.1D的收斂必須等待網絡平穩后才能進行。
RSTP使用802.1D的BPDU格式來實現向后兼容,但是在消息類型(Message Type)字段中使用了一些未使用的位。BPDU中的Version字段也被設置為2,來區分802.1D BPDU和RSTP BPDU。RSTP使用交互式的過程,以便交換機協商狀態的變化。
無論交換機有沒有收到來自根交換機的BPDU,BPDU都會根據Hello Time的間隔(默認2秒鍾)從所有端口發送BPDU。如果連續丟失3個BPDU時(6秒沒有收到BPDU),則交換機就能夠檢測到鄰居故障,相較於802.1D速度更快。
RSTP/RPVST+ Fast Converge
傳統的802.1D收斂速度慢主要是因為Timer多,時間長,才能安全地允許交換機端口轉發數據。
當交換機參與樹形拓撲時,RSTP使用不同的策略。當交換機首次加入拓撲或在現有拓撲中檢測到故障時,RSTP要求它根據端口類型做出轉發決策。
當交換機需要做出STP決策時,會與最近的鄰居進行握手,如果握手成功,則將不斷地向后進行握手直至抵達網絡邊緣。在握手過程中,交換機必須保障握手之前,不會引入循環。這通過同步過程來完成。
RSTP/RPVST+ Synchronization Process
非邊緣端口從Discarding狀態開始。在交換機交換BPDU之后,就能夠選舉出根橋。
如果一個端口收到了更好的BPDU,則該端口成為根端口。對於每一個非邊緣端口,交換機都會交換一個提議,即通過握手的方式來決定鏈路的每一端的狀態。
每台交換機都假定自己的端口都應成為指定端口,並向鄰居發送建議消息(Configuration BPDU)來建議這一事件。
-
如下圖,假設根交換機與交換機A新建立了連接,此時兩個交換機的端口都處於阻塞狀態(Discarding),直到它們收到對方的BPDU。
- 當一個指定端口在Discarding或Learning狀態時,它發出的BPDU中的Proposal位將會被置為1。
-
交換機A收到了更優的BPDU后會將P1調整為根端口。
-
交換機A開始同步,以確保交換機上的端口與最新收到的消息一致,如果滿足以下條件其一,則端口處於同步狀態:
- 端口處於阻塞狀態,也就是在拓撲中為Discarding狀態。
- 端口為邊緣端口。
-
在下圖中,P2與P4已經滿足條件,交換機A只需要將P3的狀態改為Blocking,並將其分配為Discarding角色。
-
那么現在交換機A的所有端口已處於同步狀態,交換機A可以解除P1端口的Blocking狀態,發送一條同意消息來回復根交換機。
- 這個消息是Proposal BPDU的副本,但修改了BPDU中Proposal Bit = 0 Agreement Bit = 1,這樣能夠讓根交換機區分出它收到的Agreement對應於哪個Proposal。
-
一旦P0端口收到該消息,它就立刻將端口狀態轉換為轉發狀態。
-
此時P3仍處於Discarding狀態,然后繼續向外轉發BPDU,向鄰居開始建立握手(同步過程),並嘗試快速切換到轉發狀態。
以上的這種機制是非常快的,因為它並不依賴任何計時器,這種握手方式以波的形式迅速地向網絡邊緣進行傳播,並且能在拓撲發生變化時迅速恢復連通性。同時也能夠兼容802.1D協議。
如果發送提議后沒有收到回應,它會慢慢進入轉發模式,並退回802.1D的生成樹模式。如果對端交換機不使用RSTP,或者對端交換機端口處於Blocking狀態,就可能發生以上的狀況。
RSTP/RPVST+ New Topology Change Mechanisms
在RSTP中,只有端口轉移到Forwarding狀態的非邊緣端口才會引起拓撲的變化。這與802.1D的生成樹正好相反,端口進入到Blocking狀態將不再被視為拓撲變化。當運行RSTP的交換機檢測到拓撲更改時,會發生以下情況。
- 如有必要,它將啟動TC While計時器,計時器的值約等於所有非邊緣端口和到根端口的Hello Time的兩倍。
- 只要該計時器在端口上運行,該端口發出的BPDU就會將TC bit置為1,在計數器為活動狀態的時候,根端口也會發出BPDU。
- 收到該BPDU的交換機,會刷新所有和這些端口關聯的MAC地址。
RSTP/RPVST+ Topology Change Propagation
當交換機從鄰居收到了TC bit置為1的BPDU時,會發生以下的情況。
- 它清除在其所有端口學習到的MAC地址,接受拓撲更改的端口除外。
- 它啟動了TC While計時器,並在所有指定端口和根端口發送了TC bit 置為1的BPDU。(RSTP不再使用特定的TCN BPDU,除非需要通知802.1D的交換機。)
這樣,TCN消息會很快充斥在整個網絡中,而且只用到了一步過程。實際上,拓撲更改的發起者會在整個網絡中傳播此消息,而802.1D只有根交換機才會這樣做。這種機制相較於802.1D快很多,無需根交換機,就可以將網絡的拓撲更改狀態保持在Max Age + Forward Delay秒。