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所有的概念,更方便理解吧。
BPDU報文
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
對比是按照從左往右的順序,值小者為優,給個報文的圖直觀一些
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內容會忽略。
閱讀更多 大千世界0 的文章