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