一、 MSTP產生背景
IEEE 于2002年發布的802.1S標準定義了MSTP
RSTP和STP 缺點:
同一局域網內所有的vlan共享一個生成樹,無法在vlan間實現數據流量的負載均衡;
鏈路利用率低,被阻塞的冗余鏈路不承載任何流量,造成了帶寬的浪費,還可能造成部分vlan報文無法轉發。
MSTP:MSTP兼容STP和RSTP,既可以快速收斂,又能使不同VLAN的流量沿各自的路徑轉發,從而為冗余鏈路提供了更好的負載分擔機制。
二、 MSTP基本概念
1.MSTP網絡層次結構
MSTP不僅涉及多個MSTI(生成樹實例),而且還可劃分多個MST域(MST Region,也稱為MST區域)??偟膩碚f,一個MSTP網絡可以包含一個或多個MST域,而每個MST域中又可包含一個或多個MSTI。組成每個MSTI的是其中運行STP/RSTP/MSTP的交換設備,是這些交換設備經MSTP協議計算后形成的樹狀網絡。
2.MSTP域
同一MSTP域設備的特點
都啟動MSTP
具有相同的域名
具有相同的VLAN到生成樹實例映射配置
具有相同的MSTP修訂級別配置
一個MSTP網絡可以存在多個MST域,各MST域之間在物理上直接或間接相連。用戶可以通過MSTP配置命令把多臺交換設備劃分在同一個MST域內。
3. MSTI 多生成樹實例
MSTI是指MST域內的生成樹。一個MST域內可以通過MSTP生成多棵生成樹,各棵生成樹之間彼此獨立。一個MSTI可以與一個或者多個VLAN對應,但一個VLAN只能與-個MSTI對應。
4.VLAN映射表
VLAN映射表是MST域的屬性,描述了VLAN和MST域中對應MSTI之間的映射關系。也就是把那些VLAN分別加入哪個MSTI中。
5.IST內部生成樹
IST是各個MST域內部的一棵生成樹,是僅針對具體的MST域來計算的。但它是一個特殊的MSTI,其MSTIID為0,即IST通常稱為MSTI0。每個MST域中只有一個IST,包括對應MST域中所有互聯的交換機。
6. CST公共生成樹
CST:是連接整個MSTP網絡內所有MST域的一棵單生成樹,是針對整個MSTP網絡來計算的,每個網絡中只有一個CST,每個MST域中的IST是整個MSTP網絡CIST在對應MST與中的一個片段
7.CIST公共和內部生成樹
CIST是通過STP或RSTP協議計算生成的,連接整個MSTP網絡內所有交換機的單生成樹,由IST和CST共同構成。這里要注意了,上面介紹的CST是連接交換網絡中所有MST域的單生成樹,而此處的CIST則是連接交換網絡內的所有交換機的單生成樹。即每個MSTP網絡中也只有一個CIST。交換網絡中的所有MST域的IST和CST一起構成一棵完整的生成樹,也就是這里的CIST。
8.SST
構成SST(生成樹)有兩種情況
運行STP或RSTP生成樹協議的交換機只屬于一個生成樹
MST與中只有一個交換機,這個交換機構成了生成樹,如上圖的B0區域
9.總根
總根是CIST生成樹的根橋,通常是交換網絡中最上層的交換機,上圖中的總根是A0域中的IST生成樹的根,一個MSTP網絡只有一個總根
10. 根域
在MSTP網絡中,每MST域都有一個特殊的IST實例,以及許多MSTI實例,所以域根(Regional Root)又分為IST域根和MSTI域根。
各個MST域中的IST生成樹中舉例CIST總根舉例最近的交換機是IST域根,總根所在MST域的IST域根就是總根。
MSTI的域根是對應生成樹實例的樹根,域中不同的MSTI有各自的域根。而且,MST域內各棵生成樹的拓撲不同,域根也可能不同。
三、MSTP端口角色
MSTP端口角色相比RSTP中多一個主端口(master port ),根端口、指定端口、Alternate 端口、Backup端口和邊緣端口這五種主要端口角色的作用與RSTP協議中對應的端口角色定義完全相同。
與RSTP相同,在MSTP中除了邊緣端口外,其他端口都參與MSTP的計算過程,同一端口在不同生成樹中擔任不同角色
Master端口
Master端口是MST域和總根相連的所有路徑中最短路徑上的端口,它是交換機上連接MST域到總根的端口。Master端口是域中的報文去往總根的必經之路。Master端口是特殊域邊緣端口,Master 端口在CST/CIST上的角色是根端口,在其他各實例上的角色都是Master。在圖中,交換設備S1、S2、S3、S4和它們之間的鏈路構成一個MST域,SI交換設備的端口AP1在域內的所有端口中到總根的路徑開銷最小,所以API為Master端口。
域邊緣端口
域邊緣端口是指位于MST域的邊緣并連接其他MST域或SST的端口。進行MSTP計算時,域邊緣端口在MSTI上的角色和CIST實例的角色保持一致。即如果邊緣端口在CIST實例上的角色是Master端口(連接域到總根的端口),則它在域內所有MSTI上的角色也是Master端口。在圖中,AP1是域邊緣端口,它在CIST上的角色是Master端口,則API在MST域內所有生成樹實例上的角色都是Master端口。
四、MSTP的端口狀態與收斂機制
端口角色端口狀態 | 根端口/Master端口 | 指定端口 | 域邊緣端口 | Aiternate端口 | Backup端口 |
---|---|---|---|---|---|
Forwarding | √ | √ | √ | - | - |
Leaning | √ | √ | √ | - | - |
Discarding | √ | √ | √ | √ | √ |
MSTP的收斂機制與RSTP是完全一樣的。
五、 MSTP 拓撲計算原理
MSTP將整個層網絡劃分為多個MST域,把每個域視為一個節點。各個MST域之間按照STP或者RSTP協議算法進行計算并生成CST(是單生成樹);在一個MST域內則是通過MSTP協議算法計算生成若干個MSTI(是多生成樹),其中實例0被稱為IST。MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成樹橋協議數據單元)作為生成樹計算的依據。MSTBPDU報文用來計算生成樹的拓撲、維護網絡拓撲以及傳達拓撲變化記錄。
5.1 MSTP 向量優先級
優先級向量名 | 說明 |
---|---|
根橋ID | 根橋ID用于選擇CIST中的根橋。在BPDU中對應的網橋ID,計算公式為:Priority(l6bits)+MAC(48bits) |
外部路徑開銷(ERPC) | 從MST域根到達總根的路徑開銷。MST域內所有交換機上保存的外部路徑開銷相同。若CIST根橋在域中,則域內所有交換機上保存的外部路徑開銷為0 |
域根ID | 也就是通常所說的MSTI樹根,域根ID用于選擇MSTI中的樹根。它也是通過網橋ID來選舉的,計算公式為:Priority(l6bits)+ MAC(48bits) |
內部路徑開銷(IRPC) | 本交換機到達域根橋的路徑開銷。域邊緣端口保存的內部路徑開銷值大于(優先級越低)非域邊緣端口保存的內部路徑開銷 |
指定橋 | CIST或MSTI實例的指定橋是本交換機通往域根的最鄰近的上游交換機。如果本交換機就是總根或域根,則指定橋為自己 |
指定端口 | 指定橋上與本交換機根端口相連的端口就是指定端口。其端口ID(Port ID)=Priority(8位)+端口號(8位)。 |
接收端口 | 端口優先級必須是16的整數倍接收到BPDU報文的端口。其端口ID(Port ID)= Priority(8位)+端口號(8位)。端口優先級必須是16的整數倍 |
?
最小向量擁有最高優先級:比較規則如下
首先,比較根橋ID。
如果根橋ID相同,再比較外部路徑開銷。
如果外部路徑開銷還相同,再比較域根ID.
如果域根ID仍然相同,再比較內部路徑開銷。
如果內部路徑仍然相同,再比較指定橋ID。
如果指定橋ID仍然相同,再比較指定端口ID。
如果指定端口ID還相同,再比較接收端口ID。
5.2 CIST 的計算
經過配置消息交換比較后,首先在整個網絡中選擇一個優先級最高的交換機作為CIST的樹根,然后在每個MST域內通過MSTP協議算法計算生成IST;同時MSTP將每個MST域作為單臺交換機對待,通過STP或者RSTP協議算法在MST域間計算生成CST。
CST和IST構成了整個交換機網絡的CIST。
5.3 MSTI計算
在MST域內,MSTP根據VLAN和生成樹實例的映射關系,針對不同的VLAN生成不同的生成樹實例
特點:
每個MSTI獨立計算自己的生成樹,互不干擾。
每個MSTI的生成樹計算方法與RSTP基本相同。
每個MSTI的生成樹可以有不同的根,不同的拓撲。
每個MSTI在自己的生成樹內發送BPDU。
每個MSTI的拓撲通過命令配置決定(不是自動生成的)。
每個端口在不同MSTI上的生成樹參數可以不同。
每個端口在不同MSTI上的角色、狀態可以不同。
5.4 MSTI 生成樹算法實現
在一開始時,每臺交換機的各個端口會生成以自身交換機為根橋的配置消息,其中根路徑開銷為0,指定橋ID為自身交換機ID,指定端口為本端口。每臺交換機都向外:發送自己的配置消息,并在接收到其他配置消息后進行如下處理。
(1)當端口收到比自身的配置消息優先級低(優先級的比較就是根據前面介紹的向量優先級比較規則進行的)的配置消息時,交換機把接收到的配置消息丟棄,對該端口的配置消息不作任何處理。
(2)當端口收到比本端口配置消息優先級高的配置消息時,交換機把接收到的配置消息中的內容替換該端口的配置消息中的內容:然后交換機將該端的配置消 息和交換機上的其他端口的配置消息進行比較,選出最優的配置消息。
計算生成樹的步驟如下:
選舉根橋。此步是通過比較所有交換機發送的配置消息的樹根ID,樹根ID值最小的交換機為CIST根橋,或者MST域根橋。
選舉非根橋上的根端口。每臺非根橋把接收到最優配置消息的那個端口定為自身交換機的根端口。
選舉指定端口。在這一步又分為以下兩個子步驟:
首先,交換機根據根端口的配置消息和根端口的路徑開銷,為每個端口計算一個標準的指定端口配置消息:用樹根ID替換為根端口配置消息中的樹根ID;用根路徑開銷替換為根端口配置消息中的根路徑開銷加上根端口的路徑開銷:用指定橋ID替換為自身交換機的ID:用指定端口ID替換為自身端口ID。
然后,交換機對以上規則計算出來的配置消息和對應端口上原來的配置消息進行比較。如果端口上原來的配置消息更優,則交換機將此端口阻塞,端口的配置消息不變,并且此端口將不再轉發數據,只接收配置消息(相當于根端口);如果通過以上替換計算出來的配置消息比端口上原來的配置消息更優,則交換機就將該端口設置為指定端口,端口上的配置消息替換成通過以上替換計算出來的配置消息,并周期性向外發送。
在MSTI生成樹拓撲收斂后,無論非根橋是否接收到根橋傳來的信息都按照Hello定時器周期性發送BPDU。如果一一個端口連續3個Hello時間(這個是缺省的設置)接收不到指定橋(也就是它所連接的上-級交換機)送來的BPDU,那么該交換機認為與此鄰居之間的鏈路失敗。
5.5 MSTP 對拓撲變化的處理
在MSTP中檢測拓撲是否發生了變化的標準是根據–個非邊緣端口的狀態是否遷移到Forwarding狀態,如果是遷移到了Forwarding狀態,則會發生拓撲變化。
交換機一旦檢測到拓撲發生變化,進行如下處理。
為本交換機的所有非邊緣指定端口啟動一個TC While Timer(該計時器值是Hello Time的兩倍),并在這個時間內,清空這些端口上學來的MAC地址。如果是根端口上有狀態變化,則啟動根端口。
發生狀態變化的這些端口向外發送TC BPDU,其中的TC置位,直到TC While Timer超時。根端口總是要發送這種TC BPDU。
其他交換機接收到TC BPDU,進行如F處理。
清空所有端口學來的MAC地址,收到TC BPDU的端口除外。
為所有自己的非邊緣指定端口和自己的根端口啟動TC While計時器,重復上述過程。
六、 MSTP BPDU 報文
4中BPDU 的比較
?
名稱 | 版本 | 類型 |
---|---|---|
配置BPDU | 0 | 0X00 |
RST BPDU | 2 | 0X02 |
MST BPDU | 3 | 0X02 |
TCN BPDU | 0 | 0X80 |
MST BPDU 報文結構如下圖,無論是域內的MST BPDU 還是域間的 MST BPDU,前36字節和 RST bpdu是相同的,從第37 字節開始是 MSTP專有字段
?
MSTP BPDU 字段說明
?
MSTP BPDU報文格式可配置功能目前MSTP的BPDU報文存在兩種格式。
dotls:IEEE802.1s規定的報文格式。
legacy:華為私有協議報文格式。
華為交換機支持自動識別報文格式的功能,支持自動識別模式
[Huawei-GigabitEthernet0/0/1]stp?compliance?? ??auto????Protocol?type?is?auto ??dot1s???Protocol?type?is?802.1s ??legacy??Protocol?type?is?legacy 編輯:黃飛
?
評論
查看更多