stp/rstp/mstp詳解

一 stp

網絡的冗餘性設計主要包括兩個方面:關鍵設備冗餘,以及關鍵鏈路冗餘。

如何在保證網絡的冗餘性情況下,消除二層環路,是本章的重點。

Stp(生成樹協議)在802.1D中定義,RSTP(快速生成樹協議)在802.1w中定義,MSTP(多生成樹協議)在802.1s中定義。

1 STP基本概念

(1)     橋ID:每一臺運行STP的交換機都擁有一個唯一的橋ID,該值一共8byte,包含16bit的優先級(高16bit)和48bit的橋MAC地址。

(2)     根橋:STP的主要作用就是在整個交換網絡中計算出一顆無環的STP樹,其中樹根即根橋很重要,STP的一系列計算均已根橋爲參考點。一個交換網絡中只有一個根橋。網絡中最小橋ID的交換機將成爲根橋,其次比較的是MAC地址,MAC地址最小的交換機將成爲根橋。

(3)     開銷(Cost)與跟路徑開銷(Root Path Cost,RPC):每一個激活了Stp的接口都會維護一個Cost值,用來計算RPC。接口的缺省Cost除了與其速率,工作模式有關,還與交換機使用STP Cost計算方法有關。華爲交換機支持3種STP cost計算方法,分別爲IEEE802.1D-1998標準,IEEE802.1t標準,以及華爲的私有計算方法。

 

 

 

網絡中所有STP設備使用的Cost計算方法要一致。

2 STP的基本操作過程

STP通過4個步驟來保證網絡中不存在二層環路

(1)     在交換網絡中選出一個根橋(Root Bridge,RB)

對於一個交換網絡而言,正常情況下只會存在一個根橋,根橋的地位具有可搶佔性。

(2)     在每個非根橋上選取一個根接口(Root Port,RP)

在一個交換網絡中除了根橋,其他交換機都是非根橋,STP將爲每個非根橋選舉一個根接口,所謂根接口,實際上就是非根橋上所有接口中收到最優BPDU的接口,可以理解爲交換機在STP樹上朝向根橋的接口。非根橋可能會有一個或者多個接口接入同一個交換網絡,STP將在這些接口中選舉出一個根接口。STP收斂完成後,根橋依然會週期性的向網絡中發送BPDU,而非根橋則會週期性的在自己的根接口上收到BPDU,並沿着STP樹向下遊轉發。

(3)     選舉指定接口

STP會在每個網段中選舉一個指定接口,這個接口是該網段內所有接口中到達根橋的最優接口,此外指定接口還負責向該網段發送BPDU。對於非根橋而言,其所有接口中收到最有BPDU的接口將成爲該設備的根接口,隨後該非根橋設備使用自己接收的最有BPDU,爲本設備上的其他接口各計算一個BPDU,然後使用計算出來的BPDU與接口上所維護的BPDU進行(接口本身也會從網絡中收到BPDU並保存)比較,若前者更優,那麼該接口將成爲指定接口,並且其所保存的BPDU也被前者代替,交換機將新的BPDU從指定接口發送給下游交換機,若後者更優,那麼該接口將成爲非指定接口(非指定接口既不是根接口也不是指定接口)。

對於非根橋而言,根接口的選舉過程是非根橋將自己所接受到的所有BPDU進行比較,而指定接口的選舉過程則是非根橋用自己計算出的BPDU跟別的設備發過來的BPDU進行比較。

(4)     阻塞非指定接口,打破二層環路

經STP計算,如果交換機上的某個(或者某些)接口既不是根接口也不是指定接口(稱之爲非指定接口),那麼該接口將被STP阻塞,如此網絡中的二層環路就被打破了。被阻塞的非指定接不會發送BPDU報文,只會持續偵聽BPDU報文,更不會發送業務數據。

3 STP報文

BPDU有兩種:配置BPDU以及TCN BPDU。

BPDU報文直接封裝在以太網數據幀內,數據幀的目的MAC地址是組播MAC地址:0180-c200-0000

(1)     配置BPDU

在收斂過程中,每臺交換機都從自己激活了STP的接口向外發送配置BPDU。收斂完成後,只有根橋纔會週期性的發送配置BPDU(缺省週期爲2s),非根橋在自己的根接口上收到上游的配置BPDU後,立即被觸發產生自己的配置BPDU,然後從指定接口上發送出去。

 

 

 

(2)     TCN BPDU

TCN BPDU的格式非常簡單,只有上表中的協議ID,協議版本ID以及BPDU類型三個字段。TCN BPDU用於在網絡拓撲發生變化時向根橋通知變化的發生。當網絡拓撲發生變化時,遠離變化點的交換機無法直接感知變化的發生,其MAC地址表項也就無法快速刷新。故STP需要一種機制,用於在網絡拓撲發生變化時,促使全網交換機儘快老化自己的MAC地址表項。

1) TCN BPDU需要從發現拓撲變更的交換機傳遞到根橋,該報文會一級一級的通過上游交換機向上遊傳遞至根橋。

2) 上有交換機在收到下游交換機發送的TCN BPDU後,需要使用TCA比特位爲1的配置BPDU進行迴應,以確保TCN BPDU傳遞過程的可靠性。

3) 根橋收到TCN BPDU後,會向全網泛洪“標誌”字段中TC比特位被置爲1的配置BPDU,網絡中的交換機在收到該配置BPDU後,立即將其MAC地址表的老化時間從原有值調整爲一個較小值,以便MAC地址表項儘快刷新。

 

 

 

4 STP的時間參數

Hello Time(hello時間):運行STP的交換機發送配置BPDU時間間隔,缺省爲2s。如需要修改,必須在根橋上修改,修改完成後,所有非根橋都與根橋對其該時間。

Forward Delay(轉發延遲):運行STP的接口從偵聽狀態進入學習狀態,或從學習狀態進入轉發狀態的延遲時間,缺省爲15s。爲避免在生成樹收斂過程中形成臨時環路,STP定義了偵聽和學習兩種接口狀態,並要求接口從阻塞狀態進入轉發狀態前必須經歷這兩個狀態,而且分別在這兩個狀態停留一個轉發延遲時間。

Max Age(最大生存時間):BPDU的最大生存時間,也被稱爲BPDU的老化時間,缺省爲20s。

以非根橋的根接口爲例,該設備將爲所保存的來自上游的最有BPDU關聯一個最大生存時間,如果在BPDU達到最大生存時間之前,接口再一次收到BPDU,其最大生存時間將被重置,如果一直到過了最大生存時間還沒有收到新的BPDU,那麼該BPDU會被老化,設備會在接口上重新選擇最優BPDU,也就是重新進行根接口的選舉。

受限於這幾個時間參數的限制,一個STP口從阻塞狀態進入轉發狀態可能需要花費30-50s左右,期間網絡中的業務會受影響。

5 BPDU的比較原則

STP按照如下順序選擇出最優的BPDU

(1)     最小的根橋ID

(2)     最小的RPC

(3)     最小的網橋ID

(4)     最小的接口ID

第一條原則主要用於網絡中根橋選舉,後面的原則主要用於選舉根接口以及指定接口。

6 BPDU的交互與拓撲計算

 

 

 

初始情況下,交換網絡中的所有交換機都認爲自己是根橋,這些設備開始運行後從自己所有激活了STP的接口發送BPDU。如山圖示。(只展示BPDU中最重要的四個字段)

(1)     由於兩者均認爲自己是根橋,故他們在各自發送的BPDU中,根橋字段均爲自己的橋ID,RPC字段均爲0。網橋ID均爲該BPDU發送者的橋ID,接口ID均爲發送該BPDU的接口ID。

(2)     SW1和SW2都將收到來自對方的BPDU,接下來開始將對方的BPDU與自己接口上的BPDU進行比,該過程即爲根橋選舉。結果是SW1勝出。

(3)     接下來SW2將開始根接口選舉。由於SW2在G0/0/3和G0/0/4接口上收到的BPDU都比自己本地BPDU更優,因此使用對方的BPDU來更新本地的BPDU。然後SW2將比較自己所有接口上的BPDU,擁有最有BPDU的接口成爲根接口。

 

 

 

(4)     SW2根接口選舉出來後,它使用當前在根接口上保存的最優BPDU爲其他接口計算BPDU。如下圖示,G0/0/4當前保存在BPDU比SW2爲G0/0/4計算出來的BPDU更優,於是G0/0/4被認定爲非指定接口,被阻塞。

 

 

 

(5)     至此收斂完成

 

 

 

 

 

7 STP接口狀態

STP定義了五種接口狀態

 

 

 

 

 

 

 

二 RSTP

STP是一個比較老舊的標準,它收斂慢,端口狀態定義繁冗,對拓撲變化的感知依賴計時器。

RSTP即快速生成樹協議,他引入了新的接口角色,其中替代接口的引入使交換機在根接口失效時,可以立即獲得新的路徑到達根橋。引入P/A機制,使得指定接口被選舉產生後可以快速的進入轉發狀態,不用像STP一樣經歷轉發延遲時間。它還引入了邊緣接口概念,使交換機連接終端設備的接口在初始化之後可以立即進入轉發狀態。

1 RSTP接口角色

替代接口:可以理解爲根接口的備份,他是一臺設備上由於收到其他設備發送的BPDU從而被阻塞的接口。如果根接口發生故障,那麼替代接口將成爲新的根接口。

 

 

 

備份接口:備份接口是一臺設備上由於收到了自己所發送的BPDU從而被阻塞的接口。如果一臺交換機擁有多個接口接入同一個網段,並在這些接口中有一個被選爲該網段制定接口,那麼這些接口中的其他接口將被選舉爲備份接口,備份接口將作爲該網段到達根橋的冗餘接口,缺省爲丟棄狀態。

 

 

 

2 RSTP接口狀態

 

 

 

3 BPDU

RSTP的配置BPDU稱爲RST BPDU,格式與STP的配置BPDU大體相同,只是個別字段做了修改。對於RST BPDU來說,協議版本ID字段值爲0x02,BPDU類型字段值爲0x02。標誌字段共8bit,STP只使用了其中的最低和最高比特位,而RSTP將剩餘的6bit也使用上了。

 

 

 

Aggrement以及Proposal比特位用於RSTP的P/A機制。Port Role用於標識RST BPDU發送接口的接口角色,01表示根接口,10表示替代接口,11表示指定接口,00保留。Forwarding以及Learning用於表示該RST BPDU發送接口的接口狀態。

與STP不同的是,在RSTP中,無論是根橋還是非根橋,都會週期性的發送配置BPDU。也就是說對於非根橋而言,它不用在根接口上收到BPDU後才觸發產生自己的配置BPDU,而是自發的週期性的發送BPDU。

RSTP在BPDU的處理上的另一個改進是對於次優BPDU的處理。STP的指定接口在收到次優BPDU時,將立即發送自己的BPDU,STP的非指定接口在收到次優BPDU時他將等待接口所保存的BPDU老化之後,再重新計算新的BPDU,並將新的BPDU發送出去,這將導致20s的狀態遷移時間;在RSTP中,無論接口角色如何,只要接口接收到次優BPDU,便立即發送自己的BPDU,這使得RSTP收斂的更快。

4 邊緣接口

一個接口配置爲邊緣接口後,該接口依然會週期性的發送BPDU(可使用stp bpdu-filter enable命令,使用後接口不再發送BPDU,當其收到BPDU後也會忽略)。邊緣接口缺省不參與生成樹計算,當邊緣接口被激活之後,他可以立即切換到轉發狀態並開始收發業務流量,而不用經歷轉發延遲時間,另外邊緣接口的關閉或者激活不會觸發RSTP的拓撲變更。當某接口連接的是終端設備如服務器或者PC時,這些接口在啓動過之後不需要經歷狀態遷移或者是經歷轉發延遲,此時可以直接將這些接口配置爲邊緣接口。

5 P/A機制

RSTP通過P/A(Proposal/Agreement)機制來保證一個指定接口得以從丟棄狀態快速進入轉發狀態,從而加速生成樹收斂,它是一種握手機制。

 

 

 

如上圖示,網絡中運行的是RSTP,當SW1和SW2之間新增一條鏈路後。

(1)     SW1和SW2立即在各自接口上發送BPDU,初始時雙方均認爲自己是根橋,如圖10-25(一)。

(2)     經過BPDU交互後,SW1當選爲根橋。SW1的G0/0/1爲指定接口,SW2的G0/0/2爲根接口,該接口立即停止發送BPDU,都進入丟棄狀態。

(3)     接下來P/A機制將發生。由於SW1的G0/0/1接口爲指定接口且處於丟棄狀態,故SW1從G0/0/1發送Proposal置位的BPDU,如圖10-25(二)

(4)     SW2收到Proposal置位的BPDU後,立即啓動一個同步機制。此時RSTP的機制是確保指定接口(SW1的G0/0/1)可以快速進入轉發狀態,爲了達到這個目的必須確保該接口進入轉發狀態後網絡中無環路。故此時SW2要做的是先將本地所有非邊緣接口全部阻塞,然後大幅SW1他這裏不存在環路。

已經處於丟棄狀態的接口缺省已完成同步,而邊緣接口不參與該過程,除此之外,交換機處於轉發狀態的指定接口需要切換到丟棄狀態以便完成同步,如圖10-25(二)。

G0/0/3是邊緣接口,G0/0/4是非邊緣指定接口將進入丟棄狀態。

(5)     現在SW2的所有接口都已完成同步,本地接口已不存在環路,他立即將根接口G0/0/2切換到轉發狀態,並向SW1發送Agreement置位的BPDU。

(6)     SW1在收到Agreement置位的BPDU後,立即將G0/0/1切換到轉發狀態,此時PC1和PC2便可實現通信。

(7)     整個P/A過程非常快,另外由於SW2的指定接口G0/0/4仍處於丟棄狀態,因此該接口會向下遊交換機發起一個P/A過程,具體操作不再贅述。

 

6 保護功能

(1)     BPDU保護

當邊緣接口收到BPDU後,該接口立即變成一個普通RSTP接口,這個過程可能引發網絡中RSTP重新計算,從而對網絡產生影響。通過在交換機上激活BPDU保護功能可解決該問題。當交換機激活該功能後,如果邊緣接口收到BPDU,則交換機立即把接口關閉,同時觸發告警。

(2)     根保護

在一個RSTP網絡中,根橋的地位很重要。如果根橋發生變化,勢必導致RSTP重新計算。根橋是可搶佔的。部署根保護功能可保證根橋的穩定性。

在根橋的指定接口上激活根保護功能後,該接口如果收到更優的BPDU,則會忽略這些BPDU,並且將該接口切換到丟棄狀態,如果接口不再收到更優的BPDU,則過一段時間後(通常爲兩倍的轉發延遲時間),接口會自動恢復到轉發狀態。注意,根保護功能只有在指定接口上激活纔有效。

(3)     環路保護

對於交換機的根接口以及處於丟棄狀態的替代接口,當網絡正常時,這些接口會持續收到BPDU,而當網絡中出現鏈路單向故障(如光纖單通)或者網絡擁塞問題時,這些接口將無法持續收到BPDU,便會導致交換機重新計算RSTP,此時接口角色以及狀態便會發生改變,有可能會引入環路。使用環路保護功能可以規避該問題。

1) 在根接口上激活環路保護功能後,如果該接口長時間沒有收到BPDU,那麼交換機會重新選舉根接口並將該接口的角色調整爲指定接口,此時交換機會將該接口的狀態切換到丟棄狀態,從而避免環路產生。

2) 在替代接口上激活環路保護功能後,如果該接口長時間沒有收到BPDU,那麼交換機會將該接口的角色調整爲指定接口,但是將其狀態保持在丟棄狀態,從而避免環路。

(4)     拓撲變更保護

一個穩定的交換網絡是不會頻繁出現拓撲變更的,一旦網絡出現變更,TC BPDU將會泛洪到全網,這些TC BPDU將會觸發網絡中的交換機執行MAC地址表刪除操作。如果網絡極不穩定,導致TC BPDU頻繁泛洪,或者網絡中存在攻擊者發送大量TC BPDI攻擊網絡,那麼交換機的性能將受到極大影響。交換機激活拓撲變更保護後,將在單位時間(缺省2s)內只進行一定次數的TC BPDU處理,對超出部分,則必須等待一段時間後進行處理。

三 MSTP

背景:如下圖10-32所示。SW1,SW2,SW3都運行STP,後者RSTP,那麼無論網絡中存在多少個VLAN,這些VLAN都是用一顆相同的生成樹,也就是說STP,RSTP不會針對不同VLAN執行單獨的生成樹計算。如下圖示,所有流量均從SW3至SW1通過,而SW3,SW2這條鏈路幾乎不承載任何業務,這樣無法使資源得到有效的利用。

 

 

 

解決方法:IEEE 802.1s定義了MSTP(多實例生成樹)協議。該協議兼容STP以及RSTP。該協議不是基於VLAN,而是基於Instance(實例)運行的。所謂Instance,也即一個或多個VLAN的集合。可以將一個或多個VLAN映射到一個Instance,然後MSTP基於該Instance計算生成樹。基於Instance計算出的生成樹被稱爲MSTI(多生成樹實例),映射到同一個Instance的VLAN共享一顆生成樹。可以針對MSTI進行主根橋,次根橋,接口優先級或cost等相關配置。MSTP引入了域的概念,可以將一個大型交換網絡劃分成多個MST域(多生成樹域)。

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