天天看點

STP和RSTP的總結

基礎概念:

BID:8位元組,16位的優先級和48位MAC位址組成,高16位的優先級分成兩段(前4位是優先級;後12位是系統擴充ID,STP和RSTP取值為0,MST取值為Instance号),在選舉根橋時,橋ID越小越優先。預設的橋優先級為32768。 stp root primary,将優先級配置為0 , stp root secondary,将優先級配置為4096.

端口ID: 2位元組,端口優先級1位元組,端口号1位元組,但在配置時端口優先級僅能配置高4位,後12位當成端口号。預設的端口優先級為128。 在生成樹計算時,PID小的會被選舉為指定端口

端口成本:華為交換機,預設使用的是802.1T的成本格式,在華為交換機有三種成本格式,切換指令 stp pathcost-standard {dot1d-1998|dot1t|legacy},802.1t取值最線性。

802.1d 802.1t 華為實作
10M 100 2,000,000 200,000
100M 19 200
1000M 4 20,000 20
10G 2 2000
40G 1 500

在計算過程中先确定根橋,然後的根端口,再是指定端口及其他端口資訊。

在STP中,如果發生拓撲變化,需要觸發TCN BPDU的發送,那麼故障點所在的網橋向根端口發送TCN BPDU,上遊交換機收到以後,會回應一個TCA置位的配置BPDU,以用來确認收到TCN BPDU,并向根端口轉發,直到根橋,根橋也會回應TCA置位的BPDU進行确認,然後,根橋會發送TC置位的配置BPDU,用于通知下遊交換機清空MAC表。

在監聽狀态的過程中,網橋将處理它所接收的BPDU。對于作為指定端口和根端口的端口,它們将在15秒(轉發延遲)之後過渡到學習狀态。

轉發延遲:轉發延遲是在監聽狀态和學習狀态所停留的時間,預設為15秒。

最大壽命:MaxAge控制網橋端口儲存配置BPDU資訊的最大時間長度。預設是20秒。

STP:生成樹協定,用于二層防環路。

如果在有實體環路的情況下,沒有運作STP,會導緻什麼問題:1. 多幀複制  2. MAC位址表振蕩  3. 廣播風暴導緻環路  (具體可參見思科教程)

一、 端口狀态

802.1D的端口狀态

端口狀态 目的 說明
Forwarding 端口既轉發使用者流量,也處理BPDU封包 隻有根端口或者指定端口才能進入轉發狀态
Learning 裝置會根據收到的使用者流量建構MAC位址表,但不轉發使用者流量 過渡狀态,增加Learning狀态防止臨時環路
Listening 确定端口角色,将選出根橋、根端口和指定端口 過渡狀态
Blocking 端口僅僅接收并處理BPDU,不轉發使用者流量 阻塞端口的最終狀态
Disable 端口不處理BPDU封包,不轉發使用者流量 端口處在非操作狀态

802.1W端口狀态

802.1D 802.1W 是否參與生成樹計算 是否學習MAC位址
Discarding

二、端口角色

在802.1D中,根端口、指定端口、非根非指定端口

在802.1W中,根端口、指定端口、替代端口、備份端口

DP端口對端的端口是AP或者RP,而不是BP。

1. 根端口:交換機上收到最優BPDU的端口,是到根橋最近的端口。BPDU使用{根橋ID,到根橋的成本,鄰居交換機網橋ID,鄰居交換機的PortID}描述到根橋的拓撲資訊。

在計算時,先比較根橋ID,再比較到根橋的成本,如果到根橋的成本一緻,再比較指定橋ID

非根交換機有一個根端口;根交換機沒有根端口,都是指定端口;在拓撲計算時,先算根端口,再算其他端口角色;802.1D STP模式,根端口從确定角色到進入轉發狀态需要等待2個Foward-Delay。

2. 指定端口:一個網段裡通告BPDU的端口為指定端口,擁有該端口的交換機是指定交換機。通過指定交換機轉發過來的BPDU由網段上其他RP/AP等端口接收。

每一個網段隻有一個DP端口,負責轉發到根橋的流量; DP端口的最終狀态是轉發狀态,但對于進入轉發狀态所需時間,如果是STP模式,則需等待2個Forward-delay。

PS:選擇指定端口時,也可以按{根橋ID,到根橋的成本,發送者網橋ID,發送者的PortID}來計算,不過在計算一個網段的指定端口時,它這個發送者網橋ID和發送者端口ID應該站在網段的角度來看,也可以了解為哪個交換機發出的BPDU優,哪個交換機所在的最優端口就是DP。

3. Alternate端口:備用端口,它是RP的備用端口,處于Disarding狀态。它所屬的交換機不是端口所連接配接網段的指定交換機。

4. Backup端口:備份端口,它是DP的備份端口,處于Discarding狀态。它所屬的交換機是所連網段的指定交換機,但這個端口不是最優端口,它的PID沒有DP的優。

說明:BP、AP、RP端口都是接收BPDU的端口,DP是發送BPDU的端口,AP端口是處在百指定交換機上的阻塞端口,同時,AP端口也是本交換機RP端口的備份。而BP端口則是出現在指定交換機上的阻塞端口,同是也是相同網段上DP端口的備份,即DP端口失效後,BP端口會成為新的DP端口。

三、各種時間

PS: 修改各種時間,需要在根橋上操作,其他交換機使用根交換機的計時器工作

1. Hello時間:根交換機産生的BPDU的通告時間間隔,它用于充當裝置間檢測鍊路的Keep Alive,也用來傳遞STP計算所需的拓撲資訊。

2. Forward Delay:裝置狀态遷移的延遲時間。鍊路故障會引發網絡重新進行生成樹的計算,生成樹的結構将發生相應的變化。不過重新計算得到的新拓撲資訊無法立即傳到整個網絡,此時若立即選出根端口和指定端口并置于資料轉發的狀态,則可能會出現臨時的環路。是以STP使用了一種狀态遷移機制,要求新選出的根端口和指定端口要經過2位Forwarding Delay後,才能進入轉發狀态。這個時延足夠保證新的配置消息能傳遍整個網絡,全網都執行免環的計算,環路不會發生。 Forward Delay計時器是指一個端口遷移到轉發狀态前處于Discarding和Learning狀态的各自持續時間,預設是15秒。即Discarding狀态持續15秒,随後的Learning狀态也持續15秒。在這兩種狀态下端口會處于阻塞資料狀态,計時器逾時後,這個端口才進入轉發狀态。

3. Max-age: 802.1D算法中定義端口可以緩存收到的最好BPDU,這份BPDU的最大老化時間就是Max Age,預設時間20秒。 802.1D規範定義:“如果端口接收到的BPDU内包含的配置消息優于端口上儲存的配置消息,則端口上原來儲存的配置消息被新收到的配置消息替代。端口同時更新交換裝置儲存的全局配置消息。反之,新收到的BPDU被丢棄。” 運作STP協定的網絡中非根橋裝置接收配置BPDU封包後,封包中Message Age和Max Age會進行比較:

如果Message Age小于等于Max Age,則該非根橋裝置繼續轉發配置BPDU封包 #Message Age,每經過1跳,值加1,根發出來的值為0

如果Message Age大于Max Age,則該配置BPDU封包将被老化。該非根橋裝置直接丢棄該配置BPDU,可以認為網絡直徑過大,導緻根橋連接配接失敗。

華為交換機不再使用MaxAge來決定端口角色變化需等待的逾時時間。目前,華為交換機STP/RSTP實作中,若收到次的BPDU,端口會立即處理并計算新的端口角色。若接收不到BPDU,端口角色也會在至少3個Hello間隔後重新計算 ,整個過程 Max Age不再參與。 (Max Age在TCN的35秒時有用到。)

四、 選舉

1. 根橋: 橋ID最小的成為根橋

2. 根端口:根橋ID,到根橋的Cost值,發送者的橋ID,發送者的PID (這裡的發送者是上遊鄰居)

3. 指定端口: 根橋ID,到根橋的Cost值,發送者的橋ID,發送者的PID (這裡的發送者是自己)

五、 收斂

在标準的802.1D,如果是AP收到了次優BPDU,需要等待Maxage逾時,才會回應本地緩存的最優BPDU給對端,是以收斂需要50S

在标準的802.1D,如果是DP收到了次優BPDU,不需要等待MaxAge逾時,立即回應本地緩存的最優BPDU,是以收斂需要30S

在标準的的802.1D中,如果鍊路故障,隻有在交換機丢失根端口的情況下,才會認為自己為根,将所有端口置為DP-Discarding,并向外發送配置BPDU。

在标準的802.1D中,如果鍊路故障,指定端口丢失,該交換機有Backup端口,需要等待MaxAge過期,才能重新計算端口角色,并在2倍轉發延遲後,進入轉發狀态,是以收斂需要50秒。

華為的實作:

1. 在華為的STP實作中,若目前交換機有AP端口,則RP端口失效時,最好的AP端口會立即成為RP端口,而不需要重新計算角色。

2. 在華為的STP實作中,如果一個AP端口收到了次優BPDU,它不需要等待MaxAge逾時,而是直接将最優BPDU回送給對端交換機。

3. 在華為的STP實作中,如果DP失效,交換機有BP,需要等待3倍Hello時間(3*2*3=18秒),端口角色重新計算,再等待2倍轉發延遲,再收斂。

六、 802.1D的TCN過程

  • 在網絡拓撲發生變化後,下遊裝置會不間斷地向上遊裝置發送TCN BPDU封包。TCN從RP端口發出,間隔2S,不受根交換機Hello時間的影響。
  • 上遊裝置收到下遊裝置發來的TCN BPDU封包後,隻有指定端口處理TCN BPDU封包。其他端口也有可能收到TCN BPDU封包,但不會處理。
  • 上遊裝置會把配置BPDU封包中的Flags的TCA位置1,然後發送給下遊裝置,充當收到TCN的确認,否則下遊裝置會一直發送TCN BPDU封包。
  • 上遊裝置重複該過程,把TCN BPDU繼續向其RP端口發送,直至從上遊收到TCA置位的配置BPDU。
  • TCN BPDU會一直向上發送,直到根橋(根橋的第一個包,TCA置位,TC置位)
  • 根橋知道網絡中有拓撲變化後,根橋把配置BPDU封包中的Flags的TC置位後發送,TC置位的配置BPDU會泛洪到全網,收到的華為交換機會直接删除橋MAC位址表項。
  • 根橋持續發送TC置位的BPDU,時間為Forward-delay+MaxAge的時間,為35秒。

說明:

  • TCN BPDU封包主要用來向上遊裝置乃至根橋通知拓撲變化,由感覺到故障的交換機發出
  • TCA置位的配置BPDU封包主要是上遊裝置用來告知下遊裝置已經知道拓撲變化,通知下遊裝置立即停止發送TCN BPDU
  • TC置位的配置BPDU封包主要是上遊裝置用來告知下遊裝置拓撲發生變化,以使下遊裝置删除橋MAC位址表項,進而降低資料通信中斷時間

在802.1D的STP中,發生拓撲變更,由感覺到拓撲變化的交換機,從根端口向上遊發出TCN BPDU,上遊交換機收到後,回應TCA置位的配置BPDU,告訴下遊不再發送TCN,并且上遊也會同時向其上遊發送TCN,這樣直到根橋。根橋收到後,第一個包,回TCA置位和TC置位的配置BPDU,後續回TC置位的配置BPDU,這種TC置位的意思是告訴下遊,網絡拓撲發生改變了,清空MAC表吧。這種TC置位的配置BPDU一共發送35秒,約17個。

标準STP下,什麼時候發送TCN: 資料來源(CCNP BCMSN)

  • 對于處于轉發和監控狀态的端口,它過渡到阻塞狀态(鍊路故障的情況)
  • 端口進入轉發狀态,并且網橋已擁有指定端口。
  • 非根橋在它的指定端口接收到TCN(傳播TCN被發送)

而華為的實作: 隻有當端口進入轉發狀态,并且網橋已經擁有指定端口,才會發送TCN,換句話說,鍊路Down,不會觸發TCN。

七、802.1W的拓撲變更機制

在RSTP中,隻有當非邊緣端口進入轉發狀态的時候,才能導緻拓撲變更。與802.1D不同的是,連接配接丢失不會産生拓撲變更。

拓撲變更過程:

  • 為本交換裝置的所有非邊緣指定端口和根端口啟動一個TC While Timer,該計時器值是Hello Time的兩倍。在這個時間内,清空所有端口上學習到的MAC位址。

同時,由非邊緣指定端口和根端口向外發送RST BPDU,其中TC置位。一旦TC While Timer逾時,則停止發送RST BPDU。

  • 其他交換裝置接收到RST BPDU後,清空所有端口學習到MAC位址,除了收到RST BPDU的端口。然後也為自己所有的非邊緣指定端口和根端口啟動TC While Timer,重複上述過程。

八、 RSTP是如何實作快速收斂的?是否需要等待Hold Time逾時

快速收斂是建立在點到點的鍊路,使用P/A機制進行快速收斂的。如果是共享鍊路類型,則使用802.1D的方式進行收斂。

P/A機制僅用于在DP和RP之間的協商,進行快速轉發;如果下遊交換機通過BPDU進行計算,該鍊路上的端口不是RP,而是AP,則不能進入快速轉發,該鍊路上的DP和AP都需要經過兩個Forward Delay的時延才能進入轉發狀态,即跟802.1D是一樣的。

處于DP/Discarding的端口,如果是點到點的鍊路,會在BPDU的Flags字段中,将Agreement字段置1。在進行P/A協商時,如果交換機認為在這個網段上,自己是指定端口,會将Proposal位置位,直到端口進入轉發狀态。

AP端口在收到Proposal置位的BPDU,不回應,不處理,等待2倍Forward Delay後,進入轉發狀态。

Proposal置位的配置BPDU,隻有DP端口在Discarding和Learning狀态下才會發送,當DP在Forwarding狀态下,是不發送Proposal置位的BPDU的。

802.1W的快速收斂機制:

  • RP端口的快速切換機制,當RP端口消失時,AP端口立即成為RP端口并立即進入轉發狀态
  • DP端口主動P/A協商進入到Forwarding狀态(鍊路是點到點的全雙工,下遊端口是RP的情況)
  • 至少3個Hello間隔收不到BPDU時,端口角色便發生重新計算;收到次優BPDU後,端口角色也立即重新計算。
  • Edge Port:端口UP後,如果被設定為邊緣端口,可立即進入轉發狀态。

總結:

華為在802.1D的實作上,做了一些改變,标準的802.1D,當一個阻塞端口收到次優BPDU,需要等待Maxage逾時,才會重新計算,需要50秒收斂。華為的AP端口收到次優BPDU會立即将Best的BPDU進行回應,30秒可收斂。

在802.1D,指定端口收到了次優BPDU,會立即回應Best的BPDU,收斂時間為30秒。

标準的802.1D中,鍊路故障和網橋已有指定端口而另外的端口進入轉發狀态都會觸發TCN,而華為的實作中鍊路故障不會觸發TCN。

在802.1W中,通過在點對點鍊路進行P/A協商,以及AP收到次收BPDU立即回應加速收斂。

在運作802.1W的網絡中,以及華為802.1D的實作中,如果端口收不到BPDU,會等待Hold Time(3倍Hello時間)後,再重新計算,華為的Hold time是18秒,因為它3倍的時間因子。再進行收斂。如果符合802.1W的快速收斂,則快速收斂,否則按802.1D的标準收斂。

802.1W的點到點鍊路,指全雙工的直連鍊路,如果不是直連的,可能會引發環路。

華為交換機上,運作802.1D時,如果鍊路出現變化,隻有在端口(狀态UP)收不到BPDU時,才會等待Hold Time逾時,然後過渡到轉發狀态,需要大約48秒;其他情況下是30S收斂,因為它的AP收到次優BPDU,也會立即回應Best BPDU。