RSTP快速收斂(Cisco實現)

1.標準STP收斂

1.1 端口角色變遷

1RP放棄當前端口角色

①成爲non-DP

此時直接進入Blocking狀態,並不用等待

②成爲DP

此時端口狀態將保持forwarding,並不用等待

2DP放棄當前端口角色

RP放棄端口角色時相同

3non-DP決定成爲RPDP

此時將從Blocking狀態進入Listening,在2Forward Delay之後進入forwarding

1.2 收到Inferior BPDU

1DP收到Inferior BPDU

觸發發送BPDU,同步下游設備

2RP收到Inferior BPDU

忽略

3non-DP收到Inferior BPDU

忽略

實際上,當RPnon-DP收到來自指定橋的InferiorBPDU時,是發生間接鏈路故障的信號,但標準STP對其置之不理(除非開啓BackboneFast

可見:

標準STP收斂慢的根本原因在於

①端口狀態轉換是依賴計時器的

Blocking狀態端口欲成爲RPDP時需要等待收斂

③不能及時發現網絡拓撲的變化(除非配置Cisco增強特性)


2.RSTP快速收斂

2.1 針對情況

RSTP針對STP中會造成緩慢收斂的地方進行了優化,而原本STP能夠實現快速收斂的地方並未做改動

如上圖所示,原先網絡中SW1爲根橋,如果此時修改優先級而導致SW3成爲了新的根橋,則在RSTP中的收斂過程與STP中將完全一致

SW3成爲根橋,fa0/2放棄RP角色,成爲DP,端口狀態維持forwarding

SW3發送BPDU,同步其它設備

SW2fa0/3收到superior BPDU,重新進行STP選舉,fa0/3放棄DP成爲RP,端口狀態維持forwarding

fa0/1放棄RP,成爲DP,端口狀態維持forwarding

SW2向下遊發送BPDU

SW1收到superior BPDU,重新進行STP選舉,fa0/2放棄DP成爲RP,端口狀態維持forwarding

以上收斂在瞬間即可完成

2.2 限制

Link Type必須爲point-to-point,否則將無法實現快速收斂特性

如果Link Typeshared,則在RSTP看來拓撲是類似於上圖所示,超過2臺參與RSTP的交換機接入在同一segment

由於RSTPproposal/agreement在設計時是針對兩臺設備間的,因此在BPDU中無法指明propose或者agree的對象,在多臺設備接入時,將會導致混亂

2.3 實現機制

Proposal/AgreementSynchronization


3.RSTP端口變化概述

3.1 Discarding端口決定成爲RP

1概述

STP中,阻塞端口欲成爲RP,則需要經過至少30 s的收斂時間,而RSTP中,端口決定成爲RP時,可以直接進入Forwarding狀態

導致Discarding端口決定成爲RP共有三種可能:

①本地通過修改相關參數導致RP改變

RP失效或發生直接鏈路故障

Discarding端口收到BPDU導致RP改變

2本地修改參數

此時,端口確定成爲RP後,直接進入Forwarding狀態,並且開啓同步機制

3RP失效或發生直接鏈路故障

Altn Port成爲RP,直接進入Forwarding狀態,並且開啓同步機制

4收到BPDU而導致RP改變

此時端口同樣直接進入Forwarding狀態,但是對於同步機制是否開啓有如下判斷

①如果該BPDU開啓proposal bit,則本地在RP確定後開啓同步機制

②如果BPDU未開啓proposal bit,則本地不會開啓同步機制

3.2 Discarding端口決定成爲DP

RSTP中,爲了加快收斂,引入了Proposal/Agreement機制,此時DP並不立即進入Forwarding狀態,而是與鄰居進行協商,協商通過則立即進入Forwarding

注意:

如果端口狀態放棄RP而成爲DP,此時發送的BPDU中不會開啓proposal bit


4.Synchronization

4.1 爲何需要同步機制

對於生成樹而言,確定DP是防止環路產生的關鍵,同步機制通過阻塞所有期望成爲DP的端口,防止網絡拓撲發生改變時,可能導致的環路

4.2 何時進行同步

①收到BPDU with proposal而產生新的RP,且本地存在non-edge DP

②本地通過修改STP相關參數而導致RP發生改變,且存在non-edgeDP

RP收到BPDU with proposal,且同意該上游端口爲DP

④發生間接鏈路故障時,Altn Port成爲新的RP

注意:

如果收到的BPDU中未開啓proposal,而由此產生了新的RP,此時是不會開啓同步機制的

產生新的DP時(例如收到BPDU後,本地Altn Port被選舉爲DP)不會開啓同步機制

DP收到BDPU withproposal,且同意的話,該端口狀態將直接被置爲Discarding,不會開啓同步機制

4.3 如何進行同步

阻塞所有non-edge DP


5.Proposal/Agreement

5.1 如何體現

BPDUflags中,有2bits分別用於表示proposal以及agreement

5.2 何時開啓proposal

Discarding狀態端口決定成爲DP,由此可見,發送BPDUwith proposal的端口期望能成爲DP

5.3 接收設備如何處理

1Altn Port收到BPDU withproposal

①認同

無響應,Altn Port並不會發送BPDU with agreement

②不認同

a.Altn Portsegment中最優的,因此決定成爲DP,發送BPDU with proposal

b.是一個來自指定橋的InferiorBPDU,發生間接鏈路故障

2RP收到BPDU withproposal

①認同

a.確定當前交換機上各個端口的角色

b.開啓同步機制,阻塞所有non-edgeDP

c.確定各個端口的狀態——此時如果是新產生RP,該RP將直接進入Forwarding

d.RP發送BPDU withagreement

e.所有non-edge DP向下遊發送BPDU witch proposal

②不認同

a.是一個來自指定橋的InferiorBPDU,發生間接鏈路故障

注意:

Discarding端口如果期望成爲RP,則將直接進入forwarding狀態


6.Indirection Failure in RSTP

6.1 何時發生間接鏈路故障

STP開啓BackboneFast時相同,當RPDiscarding端口收到Inferior BPDU時,說明出現了間接鏈路故障

6.2 故障處理

1RP收到Inferior BPDU

Inferior BPDU rcv on RP from DesignatedBridge

Indirection failure has happened                //the old local RP has lostconnection to RootBridge


if(there is AltnPort)

Best BPDU rcv on AltnPort          //local device can reach RootBridge from the AltnPort

AltnPort bdecomes the new RP

the elder RP will become DP       //此前的指定橋由於失去了到根橋的連接,此時反而成爲了當前設備看來的下游設備,原RP變成DP,向其提供到根橋的連接

run synchronization


else if(there is no AltnPort)

elect new RootBridge                   //the local device has lostconnection to RootBridge

2Discarding端口收到InferiorBPDU

Discarding端口決定成爲DP

then

②發送BPDU with proposal bit

注意:

不像RP收到Inferior BPDU那樣還要等待Discarding端口收到Best BPDU,由於當前設備存在RP,此時認爲到根橋的連接完好

3DP收到Inferior BPDU

相比於STP觸發發送BPDURSTPDP收到Inferior BPDU時將會對其忽略


7.案例

7.1 出現新的DPRP

如圖所示,所有STP相關參數(除了cost)均爲默認值,System ID與設備編號一致,SW1System ID最小,各個端口cost10

因此,當生成樹網絡收斂完畢後,SW1成爲根橋;SW2fa0/1RPfa0/3DPSW3fa0/1RPfa0/2Altn Portfa0/4DP……

1修改SW2橋優先級

此時如果增大SW2Bridge Priority,將導致在SW2SW3所在的segment內,SW2fa0/3變成Altn PortSW3fa0/2成爲DP

①由於優先級值增大,SW2 BID依然劣於當前的Root ID,因此交換機角色並不會改變,端口狀態同樣不變

SW3收到SW2發送的BPDU,當前的Discarding端口決定成爲DP,發送BPDU withproposal

注意:

此時SW3上並不會出現同步現象,即fa0/4並不會被阻塞

SW2收到BPDU witch proposal bit,由於該BPDU更優,因此DP將放棄該端口角色,而成爲Altn Port,端口立即被阻塞,完成收斂

注意:

SW2fa0/3由於立即被阻塞,不會發送BPDU with agreement

SW3fa0/2在經過2Forward Delay之後,才完成收斂

2SW2將橋優先級改回默認值

SW2在修改優先級後,由於之前fa0/3是下游端口,保留有BestBPDU,此時可以直接通過比較發現SW2在該segment內更優,因此Discarding端口在收到SW3BPDU之前就已經決定成爲DP,並且發送BPDU withproposal

SW3收到BPDU,由於該BPDU更優,因此本地直接將端口阻塞,收斂完畢(同樣不會發送BPDU withagreement

SW2fa0/32Forward Delay之後,完成收斂

3SW2fa0/1cost修改爲1

SW2SW3之間,SW2通告的BPDURoot Path Cost變小,但是由於SW2已經是指定橋了,因此端口角色、狀態都不會變化

4SW3fa0/2cost修改爲1

此時在SW3上產生了一條距離根橋更近的路徑,fa0/2將成爲RP,而fa0/1將變成Altn Port

SW3上,RP發生了改變,STP確定各個端口的角色,fa0/2RPfa0/1Altn Portfa0/3DP

SW3開啓同步機制,fa0/3被阻塞

SW3確定各個端口的狀態,fa0/2直接進入Forwardingfa0/1Blockingfa0/3由於期望成爲DP,發送BPDU with proposal

SW4收到BPDU with proposal後,由於接收端口是RP,因此響應BPDU withagreement

SW3收到BPDU with agreement,確定DP端口狀態爲Forwarding

7.2 出現新根橋


如上圖所示,當生成樹拓撲發生改變時,STPRSTP的應對策略將有所不同:

SW4通過修改橋優先級,成爲新的根橋

STP收斂步驟

RSTP收斂步驟

SW4

SW4BID參數優於當前RID,成爲新的根橋

SW4所有端口將成爲DP

因此fa0/2直接由RP轉到DP

fa0/3Blocking轉爲Listening

SW4的所有端口在2xForward  Delay後達到穩定


SW3

SW3收到SW4BPDU,原先根橋被抑制

fa0/4成爲新的RP,端口狀態依然爲forwarding

fa0/1以及fa0/2都有成爲DP的潛力,因而

fa0/2進入listening狀態

fa0/1RP變爲DP,維持forwarding

fa0/2收到來自SW2BPDU,選舉後,將fa0/2阻塞

fa0/1在選舉中勝出,維持forwarding

SW3的所有端口在fa0/2被阻塞後達到穩定


SW2

①收到SW4BPDU,原先根橋被抑制

fa0/4成爲新的RP,端口狀態依然爲forwarding

fa0/1以及fa0/3都有成爲DP的潛力,因而

fa0/1RP變爲DP,維持forwarding

fa0/3維持forwarding

SW2的所有端口在收到SW4BPDU後即可達到穩定


SW1

①收到來自上游的BPDU,根橋發生改變

②根據接收到的BPDUfa0/2DP轉爲RP,維持forwarding

fa0/3在選舉中失敗,被阻塞

SW1的所有端口在收到來自SW2SW3BPDU

並確定端口角色後達到穩定


整個STP網絡在30 s後完成收斂

限制因素在於SW4fa0/3不得不從listening開始收斂

SW4

SW4BID參數優於當前RID,成爲新的根橋

SW4所有端口將成爲DP

fa0/2直接由RP轉到DP

fa0/3由於之前處於discarding狀態

fa0/3發送的BPDU中開啓proposal bit

SW4的所有端口在fa0/3收到agreement後達到穩定


SW3

SW3fa0/4收到BPDU,原先根橋被抑制,

fa0/4成爲新的RP,端口狀態依然爲forwarding

③開啓同步機制,阻塞將成爲DPfa0/1

fa0/2由於原本就處於discarding狀態,因此維持阻塞

④同步完畢,從fa0/4發送BPDU,開啓agreement bit

以上過程由於不受計時器限制,因此實際執行時速度很快

fa0/2以及fa0/1發送的BPDU中,開啓proposal bit

⑥由於SW2沒有開啓同步機制,因此其DP無需agreement

SW2發給SW3BPDU中並不開啓proposal

SW2由於收到superior  BPDU,將fa0/3阻塞

⑦由於SW1處發生了狀況,此時SW3fa0/1一直收不到agreement

經過2xForward Delay後進入forwarding

SW3上的所有端口在fa0/1收斂完畢後達到穩定


SW2

①收到SW4BPDU,原先根橋被抑制

由於SW4fa0/2BPDU不帶有proposal

同步機制不會被開啓

SW2根據BPDUfa0/4成爲新的RP,其它端口均爲DP

fa0/1fa0/3維持forwarding狀態

SW2的所有端口在收到SW4BPDU後即可達到穩定


SW1

SW1首先收到來自SW3BPDU

原先根橋被抑制

fa0/3將成爲RP,由於BPDU中帶有proposal bit

SW1開啓同步機制

fa0/2被阻塞

fa0/2收到來自SW2BPDU,其中proposal bit沒有開啓

④由於fa0/2收到的BPDU更優,RP發生改變

fa0/3由於已經收到了來自SW3BPDU

此時該端口不再認爲自己將成爲DP

又由於proposal bit沒有開啓,因此fa0/3不會進行同步

fa0/3處於discarding狀態,且不會向上遊發送agreement

SW1的所有端口在收到來自SW2BPDU後達到穩定


整個STP網絡在30 s後完成收斂

限制因素在於SW3fa0/1不得不等待2Forward Delay

可見:

RSTP的收斂速度並不總快於STP

本例中導致RSTP收斂需要30 s,主要是因爲proposal/agreement機制與STP標準收斂同時進行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章