生成樹協議STP、RSTP和MSTP原理的理解(下)

STP/RSTP的缺陷

RSTP在STP基礎上進行了改進,實現了網絡拓撲快速收斂。但RSTP和STP還存在同一個缺陷:由於局域網內所有的VLAN共享一棵生成樹,因此無法在VLAN間實現數據流量的負載均衡,鏈路被阻塞後將不承載任何流量,還有可能造成部分VLAN的報文無法轉發。

mstp基本思想

基於實例(Instance)計算出多棵生成樹,每個實例都會生成自己的生成樹,並且每個實例可以包含一個或多個VLAN,每一個VLAN只能映射到一個實例。交換機可以通過配置多個實例,實現不同VLAN組之間的負載分擔。

基本概念解釋

MST域是一個具有相同域名、修訂級別和摘要信息的網橋或交換機構成的集合,一個域可以包含多個實例。

域名,本域的名稱,MSTP中每一個域都有一個獨一無二的名稱,配置不同域名會被認為屬於不同的域。

修訂級別,目前保留,默認為0。

配置摘要,由網橋的vlan和實例映射關係生成的長度為16字節的HMAC-MD5簽名。

IST是MST域內的一顆生成樹,每顆生成樹對應一個實例。實例號為0,一定存在的

MSTI是多生成樹實例,實例號從1開始,為0的實例號是IST

MSTI域根,是每一個MSTI實例上優先級最高的網橋

CST(公共生成樹)是網絡內所有MST域通過計算得到的一棵樹。

CIST(公共和內部生成樹)是整個網絡所有設備經過生成樹計算得到的一棵樹。由IST和CST共同構成。

CIST總根,是整個網絡中優先級最高的橋,是CIST的根橋。

CIST域根,IST的根橋即為CIST的域根,是MST域內距離總根最近的橋,也稱為Master橋。

端口角色

相較RSTP,橋的角色上,MSTP增加了Master橋。端口角色上,增加了域邊界端口以及Master端口。根端口、指定端口、Alternate端口、Backup端口定義和RSTP一樣。

IST(實例號為0網絡)中距離總根最近的橋為Master橋,該橋為IST的根,Master橋指向總根(整個網絡中優先級最高的橋)的端口為Master端口。

MST域內網橋和其他MST域或STP/RSTP網橋相連的端口稱為域邊界端口,Master端口也是域邊界端口。

如下圖創建了三個區域,暫時都只有IST(實例0),優先級和MAC都是我編的,然後下圖標註了MSTP所有的概念,更方便理解吧。


生成樹協議STP、RSTP和MSTP原理的理解(下)

BPDU報文


生成樹協議STP、RSTP和MSTP原理的理解(下)

BPDU Type:0x02

BPDU flags:CIST標誌字段

Root Identifier:CIST總根交換機ID

Root Path Cost:CIST外部路徑開銷,指從本交換機所屬的MST域到CIST根交換機的累計路徑開銷。

Bridge Identifier:CIST的域根交換機ID(每個域距離根橋最近的交換機,域根並不是只有一個,每個域都有一個域根,很多資料上也稱為CIST域根,我理解一半天),即IST Master的ID。如果總根在這個域內,那麼域根交換機ID就是總根交換機ID。

Port Identifier:CIST的指定端口ID(當前報文的上游交換機發送端口)

Version 3 Length:表示MST專有字段的長度,用於接收到BPDU後進行校驗。

MST Config ID:格式選擇字符固定為0x00。

MST Config name:域名

MST Config revision:修訂級別,為0

MST Config digest:配置摘要

CIST Internal Root Path Cost:CIST內部路徑開銷,表示發送此BPDU的網橋到達CIST域根的路徑開銷。

CIST Bridge Identifier:發送此BPDU的網橋ID

CIST Remaining hops:CIST剩餘跳數,限制MST域的規模,從域根開始,BPDU每經過一個網橋,跳數就減一,網橋會丟棄收到的跳數為0的BPDU,從而限制MST域的規模。默認為20

MSTI配置信息中的內容只在各自實例中有效,且每個實例中這些字段值是獨立的

MSTI flag:一個字節,從第一位到第七位的定義和RSTP相同,第八位為Master標誌位

Region Root:表示該實例的域根ID

Internal root path cost:表示發送此BPDU的網橋到達MSTI域根的路徑開銷

Bridge Identifier priority:表示發送此BPDU的網橋,即指定橋的優先級,其中高4位為優先級位,第四位固定為0

Port Identifier priority:表示發送此BPDU的端口的優先級,其中高4位為優先級位,第四位固定為0

Remaining hops:表示BPDU在該MST實例中的剩餘跳數。

優先級向量

MSTP計算可以分為CIST和MSTI計算兩部分

CIST優先級向量

用於計算生成CIST生成樹和CST生成樹,總根,域根等

{CIST總根ID、外部路徑開銷、域根ID、內部路徑開銷、指定交換設備ID、指定端口ID、接收端口ID}

再次注意(不要被弄暈了)

外部路徑開銷是當前域的Master橋到總根的路徑開銷

內部路徑開銷是當前交換機到當前域根的路徑開銷

指定交換設備ID就是發送這個報文的交換機的ID

指定端口ID就是發送這個報文的交換機的端口ID

對比是按照從左往右的順序,值小者為優,給個報文的圖直觀一些


生成樹協議STP、RSTP和MSTP原理的理解(下)

MSTI優先級向量用於計算生成區域內的生成樹和端口狀態等,計算範圍僅限區域內

{域根ID、內部路徑開銷、指定交換設備ID、指定端口ID、接收端口ID}

MSTP計算方法

每個BPDU既包含CIST計算所需的信息,也包含MSTI計算所需要的信息。

計算生成樹時候和RSTP類似,在進行CST計算時,會把MST域看做邏輯上的一個網橋,網橋ID為IST域根的ID也就是Master橋ID(距離總根最近的橋)。

當網橋收到BPDU並判斷不是同一個域後,不會解析MST專有字段的信息。

初始時每個網橋都認為自己是總根,發送以自己為總根、域根和指定橋的BPDU。

計算端口角色和交換機角色過程與RSTP相同。

CST(公共生成樹)的計算過程

需要對比的優先級向量為{總根、外部路徑開銷、域根、指定端口ID、接收端口ID},因為生成CST時候把相同的域當做一個網橋了,網橋ID為MST域的Master橋ID,所以自然無需對比內部路徑開銷和指定橋ID了。

初始時,每個域根向其他域根發送以自己為總根的BPDU。

確定“根網橋”(一個域看成一個網橋),也是CIST的總根。

確定端口角色“根端口”也就是一個域的Master端口,“根端口”的網橋也就是域根。

確定指定端口、Alternate端口或者Backup端口。

阻塞域之間的Alternate端口和Backup端口。

IST(內部生成樹)和MSTI(內部生成樹實例)的計算過程

經過CST的計算生成了域內的根橋(即Master橋)

所需要比較的優先級向量為MSTI優先級向量,即{域根ID、內部路徑開銷、指定交換設備ID、指定端口ID、接收端口ID}

域內網橋通過比較內部路徑開銷來確定根端口。

通過比較BPDU的優先級確定指定端口、Alternate端口或者Backup端口。

阻塞IST上的Alternate端口和Backup端口。

MSTP與RSTP交互

RSTP網橋收到MSTP的BPDU時,會將MSTP的BPDU報文裡的CIST總根ID,外部路徑開銷,域根ID,指定端口ID分別與RSTP的BPDU報文裡的根橋ID,根橋開銷,指定橋ID,指定端口ID對應。

MSTP網橋收到RSTP的BPDU時,會將RSTP的BPDU報文裡的根橋ID,根橋開銷,指定橋ID,指定端口ID分別與MSTP的BPDU報文裡的CIST總根ID,外部路徑開銷,域根ID,指定端口ID對應。

P/A快速收斂機制

MSTP支持RSTP的快速收斂機制,但有不同點。詳細的可以看上面的RSTP的P/A機制,這裡只寫區別。

RSTP是上游交換機指定端口發送Proposal置位的BPDU,下游網橋執行同步操作之後回應Agreement置位的BPDU,上游網橋收到Agreement置位的BPDU後其指定端口可以立即進入轉發狀態。

MSTP是上游交換機指定端口發送Proposal置位和Agreement置位的BPDU,下游網橋收到BPDU後執行同步操作然後回應Agreement置位的BPDU,上游網橋收到Agreement置位的BPDU後其指定端口可以立即進入轉發狀態。

補充

MSTP和實例相關的講的較少,因為同一個MST域中可以有多個實例,每個實例可以運行通過一個或n個VLAN,但是一個VLAN只能存在一個實例中,然後每個實例都會各自生成生成樹,除了IST(實例為0)的根節點是Master橋,其餘實例都是按照RSTP類似方法計算出各自實例自己的根橋,指定橋,根端口和指定端口的。

MSTP因為有多個實例,每個端口上對實例的狀態可能不一樣,比如在實例1端口為根端口,實例2上這個端口為指定端口,所以會出現端口既會發BPDU報文也會收BPDU報文。

拓撲改變的處理和RSTP相同。

MSTP比RSTP就是多了分區域多實例,細化看,每個實例運行的都是RSTP。

RSTP和MSTP啟動時簡單介紹

當一臺交換設備啟動RSTP和MSTP時候,會默認自己為根橋,且所有使能RSTP或者MSTP的端口都為指定端口Discarding狀態,這樣就會觸發P/A快速機制,當一個指定端口發送P/A機制報文沒收到對端發送過來的回覆報文,則需要經過2倍的Forward delay時間才能到轉發態。假如下游有一個交換設備同時開啟了RSTP或者MSTP,則都會發送P/A機制報文,收到報文後兩個指定端口會對比報文確定自己的角色從而繼續P/A快速機制。P/A會阻塞除邊緣端口和根端口外的其他所有端口,端口兩兩進行這種操作從而生成整個生成樹。

MSTP啟動時,多個實例都會在互不干擾的生成對應的生成樹,類似多線程一樣。

MSTP收到其他區域報文時候,只會對比CIST的信息,MIST內容會忽略。


分享到:


相關文章: