本次部落客要介紹MSTP原理與配置。
MSTP 多生成樹協定,可以通過這個協定生成多個樹,而不是單一的一顆樹了。
RSTP在STP基礎上進行了改進,實作了網絡拓撲快速收斂。但由于區域網路内所有的VLAN共享一棵生成樹,是以被阻塞後鍊路将不承載任何流量,無法在VLAN間實作資料流量的負載均衡,進而造成帶寬浪費。為了彌補STP和RSTP的缺陷,IEEE于2002年釋出的802.1s标準定義了MSTP。MSTP相容STP和RSTP,既可以快速收斂,又提供了資料轉發的多個備援路徑,在資料轉發過程中實作VLAN資料的負載均衡。
單生成樹的弊端 - 部分VLAN路徑不通
如下圖所示,網絡中有SWA、SWB、SWC三台交換機。配置VLAN2通過兩條上行鍊路,配置VLAN3隻通過一條上行鍊路。為了解決VLAN2的環路問題,需要運作生成樹。在運作單個生成樹的情況下,假設SWC與SWB相連的端口成為預備端口(Discarding狀态),那麼VLAN3的路徑就會被斷開,無法上行到SWB。

單生成樹的弊端 - 無法實作流量分擔
如下圖所示,為了實作流量分擔,需要配置兩條上行鍊路為Trunk鍊路,允許通過所有VLAN;SWA和SWB之間的鍊路也配置為Trunk鍊路,允許通過所有VLAN。将VLAN2的三層接口配置在SWA上,将VLAN3的三層接口配置在SWB上。
我們希望VLAN2和VLAN3分别使用不同的鍊路上行到相應的三層接口,但是如果連接配接到SWB的端口成為預備端口(Alternate Port)并處于Discarding狀态,則VLAN2和VLAN3的資料都隻能通過一條上行鍊路上行到SWA,這樣就不能實作流量分擔。
單生成樹的弊端 - 次優二層路徑
如下圖所示, SWC 與 SWA 和 SWB 相連的鍊路配置為 Trunk 鍊路,允許通過所有 VLAN ; SWA 與 SWB 之間的鍊路也配置為 Trunk 鍊路,允許通過所有 VLAN 。 運作單個生成樹之後,環路被斷開, VLAN2 和 VLAN3 都直接上行到 SWA 。 在 SWA 上配置 VLAN2 的三層接口,在 SWB 上配置 VLAN3 的三層接口,那麼, VLAN3 到達三層接口的路徑就是次優的。
在之前的内容裡,我們了解到,為了解決交換網絡中環路的問題,有了STP協定,後來為了解決STP收斂太慢的問題,有了RSTP(快速生成樹協定),對于STP和RSTP來說,都是把交換網絡中的裝置組建成了一顆單生成樹,通過以上的内容我們發現, 單生成樹有時候會造成部分vlan路徑不通、無法實作流量分擔以及次優路徑等問題,那麼MSTP慢慢就開始進入了工程師的視野。
多生成樹執行個體解決單生成樹弊端
lMST域内可以生成多棵生成樹,每棵生成樹都稱為一個MSTI (多生成樹執行個體)。MSTI之間彼此獨立,且每個MSTI的計算過程基本與RSTP的計算過程相同。
如下圖所示,圖中紅色的部分是多生成樹執行個體1的部分,對于這個執行個體1來說,是包含vlan2的,對于vlan3和vlan4是包含在執行個體2裡面的,對于執行個體1和執行個體2來說在邏輯上阻塞掉的端口是不一樣的。
多生成樹協定即 MSTP ( Multiple Spanning Tree Protocol )。 MST 域是多生成樹域( Multiple Spanning Tree Region ),由交換網絡中的多台交換裝置以及它們之間的網段所構成。同一個 MST 域的裝置具有下列特點: 都啟動了 MSTP 。 具有相同的域名。 具有相同的 VLAN 到生成樹執行個體映射配置。 具有相同的 MSTP 修訂級别配置。 一個 MST 域内可以生成多棵生成樹,每棵生成樹都稱為一個 MSTI ,每個 MSTI 都使用單獨的 RSTP 算法,計算單獨的生成樹。 每個 MSTI ( MST Instance )都有一個辨別( MSTID ), MSTID 是一個兩位元組的整數。 VRP 平台支援 16 個 MST Instance , MSTID 取值範圍是 0 ~ 15 ,預設所有 VLAN 映射到 MST Instance 0 。 VLAN 映射表是 MST 域的屬性,它描述了 VLAN 和 MSTI 之間的映射關系, MSTI 可以與一個或多個 VLAN 對應,但一個 VLAN 隻能與一個 MSTI 對應。 MSTP 相容 STP 和 RSTP ,既可以快速收斂,又提供了資料轉發的各個備援路徑,在資料轉發過程中實作 VLAN 資料的負載均衡。
所謂生成樹執行個體就是多個VLAN的一個集合。通過将多個VLAN捆綁到一個執行個體,可以節省通信開銷和資源占用率。MSTP各個執行個體拓撲的計算互相獨立,在這些執行個體上可以實作負載均衡。可以把多個相同拓撲結構的VLAN映射到一個執行個體裡,這些VLAN在端口上的轉發狀态取決于端口在對應MSTP執行個體的狀态。 如圖所示,MSTP通過設定VLAN映射表(即VLAN和MSTI的對應關系表),把VLAN和MSTI聯系起來。每個VLAN隻能對應一個MSTI,即同一VLAN的資料隻能在一個MSTI中傳輸,而一個MSTI可能對應多個VLAN。 經計算,最終生成兩棵生成樹: MSTI1以S4為根交換裝置,轉發VLAN2的封包。 MSTI2以S6為根交換裝置,轉發VLAN3的封包。 這樣所有VLAN内部可以互通,同時不同VLAN的封包沿不同的路徑轉發,實作了負載分擔。
交換網絡内所有 MST 域的一棵生成樹。如果把每個 MST 域看作是一個節點, CST就是這些節點通過STP或RSTP協定計算生成的一棵生成樹。 内部生成樹IST(Internal Spanning Tree)是各MST域内的一棵生成樹。 IST 是一個特殊的 MSTI , MSTI 的 ID 為 0 ,通常稱為 MSTI0 。 SST(Single Spanning Tree):運作STP或RSTP的交換裝置隻能屬于一個生成樹 ; MST 域中隻有一個交換裝置,這個交換裝置構成單生成樹。 所有MST域的IST加上CST就構成一棵完整的生成樹,即CIST。 域根( Regional Root) 分為 IST 域根和 MSTI 域根。 IST 域根如圖 1 所示,在 MST 域中 IST 生成樹中距離總根最近的交換裝置是 IST 域根。 一個 MST 域内可以生成多棵生成樹,每棵生成樹都稱為一個 MSTI 。 MSTI 域根是每個多生成樹執行個體的樹根。如圖 3 所示,域中不同的 MSTI 有各自的域根。 總根是 CIST(Common and Internal Spanning Tree) 的根橋。如圖 1 中的 S1。 主橋( Master Bridge )也就是 IST Master ,它是域内距離總根最近的交換裝置。如圖 1 中的黃色交換機。如果總根在 MST 域中,則總根為該域的主橋。 端口角色:同 RSTP , MSTP 中定義了根端口、指定端口、 Alternate 端口、 Backup 端口和邊緣端口。
端口狀态:同RSTP,MSTP定義的端口狀态有Forwarding, Learning, Discarding。
MSTP拓撲計算
CIST 的計算 經過比較配置消息後,在整個網絡中選擇一個優先級最高的交換裝置作為 CIST 的樹根。在每個 MST 域内 MSTP 通過計算生成 IST ;同時 MSTP 将每個 MST 域作為單台交換裝置對待,通過計算在 MST 域間生成 CST 。 CST 和 IST 構成了整個交換裝置網絡的 CIST 。 MSTI 的計算 在 MST 域内, MSTP 根據 VLAN 和生成樹執行個體的映射關系,針對不同的 VLAN 生成不同的生成樹執行個體。每棵生成樹獨立進行計算,計算過程與 STP 計算生成樹的過程類似。 MSTP 對拓撲變化的處理 MSTP 拓撲變化處理與 RSTP 拓撲變化處理過程類似。 MSTI 的特點: 每個 MSTI 獨立計算自己的生成樹,互不幹擾。 每個 MSTI 的生成樹計算方法與 STP 基本相同。 每個 MSTI 的生成樹可以有不同的根,不同的拓撲。 每個 MSTI 在自己的生成樹内發送 BPDU 。 每個 MSTI 的拓撲通過指令配置決定。 每個端口在不同 MSTI 上的生成樹參數可以不同。 每個端口在不同 MSTI 上的角色、狀态可以不同。 l 在運作 MSTP 協定的網絡中,一個 VLAN 封包将沿着如下路徑進行轉發: 在 MST 域内,沿着其對應的 MSTI 轉發。 在 MST 域間,沿着 CST 轉發。
MSTP快速收斂機制
除支援RSTP所支援的普通P/A (Proposal/Agreement)機制外,MSTP還支援增強方式的P/A機制。
如上圖所示,在 MSTP 中, P/A 機制工作過程如下: 1. 上遊裝置發送 Proposal 封包,請求進行快速遷移。下遊裝置接收到後,把與上遊裝置相連的端口設定為根端口,并阻塞所有非邊緣端口。 2. 上遊裝置繼續發送 Agreement 封包。下遊裝置接收到後,根端口轉為 Forwarding 狀态。 3. 下遊裝置回應 Agreement 封包。上遊裝置接收到後,把與下遊裝置相連的端口設定為指定端口,指定端口進入 Forwarding 狀态。 預設情況下,華為資料通信裝置使用增強的快速遷移機制。如果華為資料通信裝置和其他制造商的裝置進行互通,而其他制造商的裝置 P/A 機制使用普通的快速遷移機制,此時,可在華為資料通信裝置上通過設定 P/A 機制為普通的快速遷移機制,進而實作華為資料通信裝置和其他制造商的裝置進行互通。
MSTP配置實作
為實作分别屬于不同VLAN的PC通路Internet的流量能夠進行負載均衡,可采用MSTP來實作,VLAN1~10為一組,VLAN11~20為另一組。
如下圖所示:
配置思路: 配置 MST 域并建立多執行個體,實作流量的負載分擔。 在 MST 域内,配置各執行個體的根橋與備份根橋。 修改各執行個體中某端口的路徑開銷值,實作将該端口阻塞。 與終端裝置相連的端口配置成為邊緣端口,加快收斂。 資料準備: 域名為 RG1 。 執行個體為 MSTI1 和 MSTI2 。 執行個體 MSTI1 的根橋為 SWA ,備份根橋為 SWB ;執行個體 MSTI2 的根橋為 SWB ,備份根橋為 SWA 。 執行個體 MSTI1 和執行個體 MSTI2 的阻塞口的路徑開銷值修改為 200000 。 VLAN 号是 1 ~ 20 。
PC1所屬VLAN為10,PC2所屬VLAN為20。
檢視SWC上的配置
<SWC>dis cu
#
sysname SWC
#
vlan batch 2 to 20
#
stp region-configuration 進入MST域視圖
region-name RG1 配置MST域的域名
instance 1 vlan 1 to 10 配置多生成樹執行個體和VLAN的映射關系
instance 2 vlan 11 to 20
active region-configuration 激活MST域的配置,使域名、VLAN映射表和MSTP修訂級别生效。如果不執行本操作,以上配置的域名、VLAN映射表和MSTP修訂級别無法生效。
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
stp instance 2 cost 200000
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 10
stp edged-port enable
#
檢視SWD上的配置
<SWD>dis cu
#
sysname SWD
#
vlan batch 2 to 20
#
stp region-configuration
region-name RG1
instance 1 vlan 1 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface MEth0/0/1
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
stp instance 1 cost 200000 修改開銷為200000
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 20
stp edged-port enable
#
檢視SWA上的配置
<SWA>dis cu
#
sysname SWA
#
vlan batch 2 to 20
#
stp instance 1 root primary 在執行個體1裡面,SWA是根橋
stp instance 2 root secondary
#
stp region-configuration
region-name RG1
instance 1 vlan 1 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
檢視SWB上的配置:
<SWB>dis cu
#
sysname SWB
#
vlan batch 2 to 20
#
stp instance 1 root secondary
stp instance 2 root primary 執行個體2裡面,SWB為根橋
#
stp region-configuration
region-name RG1
instance 1 vlan 1 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
配置完成之後,檢視SWA,SWB,SWC以及SWD的接口狀态,如下圖所示:
總結:
[SwitchA] stp region-configuration \\進入MST域視圖
[SwitchA-mst-region] region-name RG1 \\配置MST域的域名
[SwitchA-mst-region] instance 1 vlan 2 to 10 \\配置多生成樹執行個體和VLAN的映射關系
[SwitchA-mst-region] instance 2 vlan 11 to 20
[SwitchA-mst-region] active region-configuration \\激活MST域的配置,使域名、VLAN映射表和MSTP修訂級别生效
[SwitchA] stp instance 1 root primary \\配置目前裝置為根橋裝置
[SwitchA] stp instance 2 root secondary \\配置目前交換裝置為備份根橋裝置
[SwitchA] stp pathcost-standard legacy \\配置SwitchA的端口路徑開銷值的計算方法為華為計算方法
[SwitchA] stp enable \\在SwitchA上啟動MSTP