1. 程式人生 > >傳統STP、快速STP、MSTP的總結和比較

傳統STP、快速STP、MSTP的總結和比較

mode 技術 狀態 watermark 就是 名稱 pdu pan 有一個

一、 BPDU類型

1. 傳統生成樹:包括了兩種BPDU,一種是配置BPDU,一種是TCNBPDU,配置BPDU由根橋每Hello時間發出;TCN BPDU由感知到拓撲發生變更的網橋從根端口發送出去。 配置BPDU中的Flag包括了兩個字段,第7位是TCA,第0位是TC, TCA置位的配置BPDU表示一臺上遊交換機收到下遊發過來的TCN,進行的回復,確認知道拓撲改變了, TC置位的BPDU由根橋發出,告知全網拓撲發生了變更,通知所有交換機將MAC表的老化時間改成15秒。

2. 快速生成樹:只有一種BPDU,叫RST BPDU,它的BPDU類型有變更為0X02;它的Flag中的8位全部都使用了,Topology Change Ack、Agreement、Forwarding、Learning、Port Role(2位)、Proposal、Topology Change。

3. MSTP:MSTP的BPDU中,有一個MST Exension的字段,它包括了CIST的相關信息以及每個MSTI的相關信息,每個MSTI的內容相當於RST BPDU中的內容。

傳統生成樹抓包:

技術分享圖片

快速生成樹抓包:

技術分享圖片

MSTP抓包:

技術分享圖片


二、 收斂

1. 傳統STP:30-50秒

A. 直接鏈路失效(鏈路DOWN),如果失效鏈路一頭交換機失效的端口是根端口,並且該交換機有預備端口,那麽收斂時間是30S; 如果失效鏈路一頭交換機失效的端口是根端口,它沒有預備端口,只有指定端口,那麽收斂時間是50S。 為什麽這裏會有一個20秒的差別? 交換機丟失根端口,會發送以自己為根的配置BPDU,如果在鏈路斷開以前,本端的接口是AP,對端是DP,本端發送的次優BPDU,對端DP收到以後,會立即回應最優BPDU,所以不必要等待20秒超時; 如果在鏈路斷開以前,本端的接口是DP,對端是AP,那麽本端發送以自己為根的次優BPDU以後,對端的原AP端口需要等待20秒超時才會進行回應,所以需要50秒。

B. 間接鏈路失效(HUB鏈路、或者BPDU被過濾等):需要等待20S的超時時間,需要50S收斂。

2. 快速生成樹:被定義為幾秒內可以收斂

A. 選舉新的根端口:選舉新的根端口,不會存在環路風險,所以新的根端口可以直接進入轉發狀態。

B. 邊緣端口:邊緣端口用於連接主機等設備,不會引起環路風險,由管理員手工進行配置。所以不參與STP的計算,可立即進入轉發狀態。

C. P/A機制:在點對點的鏈路上,DP會發起P/A的同步機制,即上遊交換機在DP發送Proposal置位的BPDU,下遊交換機收到的端口如果是RP,則會進行同步過程,會將本交換機的其他處於轉發狀態的端口置為Discarding狀態,並將RP置轉發狀態;同時會發送Agreement置位的BPDU給上遊;這樣就完成了一輪的同步; 下遊交換機會再向DP發起P/A同步過程。

D. 接收次級BPDU不用等待Max_age超時,和傳統STP不同,不管是AP還是DP,只要接收到了次級BPDU,會立即進行端口角色的運算; 3倍Hello時間超時,如果在2倍Hello時間接收不到BPDU,就會老化這個BPDU並進行STP的運算。

E. 在P/A協商失敗或者共享鏈路上,需要按傳統STP的方法等待2倍轉發延遲才能收斂。


三、TCN

1. 傳統STP:端口由不轉發到轉發,或者由轉發到不轉發都認為發生了拓撲變更。

A. 由感知到拓撲發生變化的交換機從根端口持續發出TCN BPDU;

B. 上遊交換機收到TCN BPDU以後,會回應一個TCA置位的配置BPDU;(只有指定端口會處理)

C. 感知到拓撲發生變化的交換機收到上遊交換機的TCA置位的BPDU後,不再發送TCN BPDU;

D. 上遊交換機從自己的根端口方向傳播TCN BPDU;

E. 這個過程一級一級上傳到根橋;

F. 當根橋知道拓撲發生變更以後,會發送TC置位的配置BPDU,泛洪到全網;根橋會持續發送TC置位的配置BPDU,這個時間是Max age + Forwarding delay的時間;

G. 收到TC置位的下遊交換機會將MAC地址的老化時間從300S改到15S;

在華為設備上: 配置傳統STP,只有當端口從不轉發過渡到轉發狀態才會產生TCN,端口DOWN不會觸發TCN; 當交換機收到TC置位的BPDU以後,不是將MAC老化時間改為15秒,而是直接清空MAC地址表。

2. RSTP:非邊緣端口進入轉發狀態才會定義為拓撲發生了變更(連接丟失不產生TCN,端口進入 阻塞狀態不產生TCN)。

A. 由感知拓撲發生變化的交換機產生通知,該交換機將TC置位的BPDU,向非邊緣的DP、RP擴散

B. 為轉發端口開啟TC While計時器,時長是2倍Hello時間(TC While超時則停止發送TC置位的BPDU)

C. 清空除邊緣端口以外的其他端口的MAC地址表

D. 鄰居交換機接收到TC置位的BPDU後:清除所有端口上學習到的MAC地址(接收拓撲變更的端口除外), 啟動TC Whilie計時器,並且在非邊緣的指定端口和根端口發送TC置位的BPDU。通過這種方法擴散到全網。


四、端口狀態

1. 傳統STP包括了五種端口狀態

A. Disabled: 端口未啟用時,處於此狀態。

B. Listening: 參與STP運算,選舉端口角色,接收發送BPDU,不學習MAC,不轉發數據幀

C. Learning:接收發送BPDU,學習MAC地址,不轉發數據幀

D. Forwarding:接收發送BPDU,學習MAC地址,轉發數據幀

E. Blocking:接收但不發送BPDU,不學習MAC地址,不轉發數據幀

2. RSTP:

A. 摒棄了Disabled、Listening、Blocking三種狀態

B. 增加了Discarding狀態:這個端口狀態不學習MAC地址,不轉發數據幀,參與STP的運算。


五、端口角色

1. 傳統生成樹

A. 根端口:每個根橋選舉一個根端口,該端口去往根橋的Cost最低;

B. 指定端口:每個網段(鏈路)選舉一個指定端口,它在這個網段上是最優的。轉發本網段去往根橋的數據,轉發從交換機方向發往所連接的網段的數據。

C. 阻塞端口:被阻塞的端口,在STP中,除了根端口和指定端口,其他的端口都屬於阻塞端口(華為在傳統STP也存在DP、BP)

2. 快速生成樹:定義了新的端口角色

A. Alternate Port:當一個端口能收到其他交換機發過來的配置BPDU,並且處於被阻塞狀態,它就是預備端口。它是根端口競爭失敗的端口,是根端口的備份。

B. Backup Port:如果一個端口能收到本交換機發過來的配置BPDU,並且在這個網段上不是最優的端口,則當選為備份端口,備份端口是指定端口的備份。

3. MSTP:定義了新的端口角色

A. 域邊緣端口:處於Region邊界的端口,邊緣端口的鏈路對端是另一個Region。

B. Master端口:在非CIST根橋所在區域中的IST的根端口,在其他實例裏稱為Master端口。它是一個Region裏去往CIST根橋Cost最小的端口。


六、基本配置

1. 全局開關

開啟STP: stp enable

關閉STP: stp disabled | undo stp enable

2. 時間因子:華為特有的一個值,用於Hello超時,標準的協議裏沒有這個時間因子,華為定義默認為3

stp timer-factor <1-10>

3. 修改Hello時間: stp time hello <100-1000>,默認是200,單位是厘秒,即2S,這個值不建議進行修改,同理可以修改轉發延遲和最大老化時間

4. 傳統STP

stp mode stp

3. 快速STP

stp mode rstp

4. 多生成樹:處於同一個region的交換機,其配置ID必須相同,配置ID包括三個參數:區域名稱、修訂版本號以及映射關系。MSTP在交換消息的時候,會傳遞配置ID的MD5值,如果匹配則認為在一個Region,如果不匹配則認為不是一個Region。在配置完成以後,需要激活配置,MSTP才可以生效。

stp region-configration

region-name CDE

revision-level 10

instance 2 vlan 10

instance 3 vlan 20

active redion-configration

傳統STP、快速STP、MSTP的總結和比較