組網圖形
MSTP簡介
- 乙太網交換網路中為了進行鏈路備份,提高網路可靠性,通常會使用冗餘鏈路。但是使用冗餘鏈路會在交換網路上產生環路,引發廣播風暴以及MAC地址表不穩定等故障現象,從而導致使用者通訊質量較差,甚至通訊中斷。為解決交換網路中的環路問題,提出了生成樹協議STP(Spanning Tree Protocol)。STP(Spanning Tree Protocol)是用來解決網路中環路問題的協議。執行該協議的裝置通過彼此互動資訊而發現網路中的環路,並對某些埠進行阻塞以消除環路。
- 與眾多協議的發展過程一樣,生成樹協議也是隨著網路的發展而不斷更新的,從最初的IEEE 802.1D中定義的STP到IEEE 802.1W中定義的快速生成樹協議RSTP(Rapid Spanning Tree Protocol),再到最新的IEEE 802.1S中定義的多生成樹協議MSTP(Multiple Spanning Tree Protocol)。
- 生成樹協議中,MSTP相容RSTP、STP,RSTP相容STP。三種生成樹協議的比較如表1所示。
生成樹協議 |
特點 |
應用場景 |
---|---|---|
STP |
|
無需區分使用者或業務流量,所有VLAN共享一棵生成樹。 |
RSTP(詳情見例項) |
|
|
MSTP |
|
需要區分使用者或業務流量,並實現負載分擔。不同的VLAN通過不同的生成樹轉發流量,每棵生成樹之間相互獨立。 |
組網需求
- 在一個複雜的網路中,由於冗餘備份的需要,網路規劃者一般都傾向於在裝置之間部署多條物理鏈路,其中一條作為主用鏈路,其他作為備份鏈路。這樣就難免會形成環路,若網路中存在環路,可能會引起廣播風暴和MAC表項被破壞。為此,可以在網路中部署MSTP協議預防環路。MSTP可阻塞二層網路中的冗餘鏈路,將網路修剪成樹狀,達到消除環路的目的。
- 如圖1所示,SwitchA、SwitchB、SwitchC和SwitchD都執行MSTP。為實現VLAN2~VLAN10和VLAN11~VLAN20的流量負載分擔,MSTP引入了多例項。MSTP可設定VLAN對映表,把VLAN和生成樹例項相關聯。
配置思路
- 在處於環形網路中的交換裝置上配置MSTP基本功能。
- 配置保護功能,實現對裝置或鏈路的保護。例如:在各例項的根橋裝置指定埠配置根保護功能。
- 配置裝置的二層轉發功能。
說明:
裝置配置根保護功能後,如果根橋和備份根橋之間的鏈路down了,則配置根保護的埠狀態會因為根保護功能生效直接變成discarding狀態。
為了提高可靠性,建議根橋和備份根橋之間的鏈路繫結Eth-Trunk。
操作步驟
- 配置MSTP基本功能
a.配置SwitchA、SwitchB、SwitchC和SwitchD到域名為RG1的域內,建立例項MSTI1和例項MSTI2
# 配置例項1的根橋SwitchA的MST域。
1 <HUAWEI> system-view 2 [HUAWEI] sysname SwitchA 3 [SwitchA] stp region-configuration 4 [SwitchA-mst-region] region-name RG1 //配置域名為RG1。 5 [SwitchA-mst-region] instance 1 vlan 2 to 10 //將VLAN 2至VLAN 10對映到例項1上。 6 [SwitchA-mst-region] instance 2 vlan 11 to 20 //將VLAN 11至VLAN 20對映到例項2上。 7 [SwitchA-mst-region] active region-configuration //啟用MST域的配置。 8 [SwitchA-mst-region] quit
# 配置例項2的根橋SwitchB的MST域。
1 <HUAWEI> system-view 2 [HUAWEI] sysname SwitchB 3 [SwitchB] stp region-configuration 4 [SwitchB-mst-region] region-name RG1 //配置域名為RG1。 5 [SwitchB-mst-region] instance 1 vlan 2 to 10 //將VLAN 2至VLAN 10對映到例項1上。 6 [SwitchB-mst-region] instance 2 vlan 11 to 20 //將VLAN 11至VLAN 20對映到例項2上。 7 [SwitchB-mst-region] active region-configuration //啟用MST域的配置。 8 [SwitchB-mst-region] quit
# 配置接入交換機SwitchC的MST域。
1 <HUAWEI> system-view 2 [HUAWEI] sysname SwitchC 3 [SwitchC] stp region-configuration 4 [SwitchC-mst-region] region-name RG1 //配置域名為RG1。 5 [SwitchC-mst-region] instance 1 vlan 2 to 10 //將VLAN 2至VLAN 10對映到例項1上。 6 [SwitchC-mst-region] instance 2 vlan 11 to 20 //將VLAN 11至VLAN 20對映到例項2上。 7 [SwitchC-mst-region] active region-configuration //啟用MST域的配置。 8 [SwitchC-mst-region] quit
# 配置接入交換機SwitchD的MST域。
1 <HUAWEI> system-view 2 [HUAWEI] sysname SwitchD 3 [SwitchD] stp region-configuration 4 [SwitchD-mst-region] region-name RG1 //配置域名為RG1。 5 [SwitchD-mst-region] instance 1 vlan 2 to 10 //將VLAN 2至VLAN 10對映到例項1上。 6 [SwitchD-mst-region] instance 2 vlan 11 to 20 //將VLAN 11至VLAN 20對映到例項2上。 7 [SwitchD-mst-region] active region-configuration //啟用MST域的配置。 8 [SwitchD-mst-region] quit
b.在域RG1內,配置MSTI1與MSTI2的根橋與備份根橋
配置MSTI1的根橋與備份根橋
# 配置SwitchA為MSTI1的根橋。
1 [SwitchA] stp instance 1 root primary
# 配置SwitchB為MSTI1的備份根橋。
1 [SwitchB] stp instance 1 root secondary
配置MSTI2的根橋與備份根橋
# 配置SwitchB為MSTI2的根橋。
1 [SwitchB] stp instance 2 root primary
# 配置SwitchA為MSTI2的備份根橋。
1 [SwitchA] stp instance 2 root secondary
c.配置例項MSTI1和MSTI2中將要被阻塞埠的路徑開銷值大於預設值
說明:
•埠路徑開銷值取值範圍由路徑開銷計算方法決定,這裡選擇使用華為計算方法為例,配置例項MSTI1和MSTI2中將被阻塞埠的路徑開銷值為20000。
•同一網路內所有交換裝置的埠路徑開銷應使用相同的計算方法。
# 配置例項1的根橋SwitchA的埠路徑開銷。
1 [SwitchA] stp pathcost-standard legacy
# 配置例項2的根橋SwitchB的埠路徑開銷。
1 [SwitchB] stp pathcost-standard legacy
# 配置接入交換機SwitchC的埠路徑開銷,將埠GE0/0/2在例項MSTI2中的路徑開銷值配置為20000。
1 [SwitchC] stp pathcost-standard legacy 2 [SwitchC] interface gigabitethernet 0/0/2 3 [SwitchC-GigabitEthernet0/0/2] stp instance 2 cost 20000 4 [SwitchC-GigabitEthernet0/0/2] quit
# 配置接入交換機SwitchD的埠路徑開銷,將埠GE0/0/2在例項MSTI1中的路徑開銷值配置為20000。
1 [SwitchD] stp pathcost-standard legacy 2 [SwitchD] interface gigabitethernet 0/0/2 3 [SwitchD-GigabitEthernet0/0/2] stp instance 1 cost 20000 4 [SwitchD-GigabitEthernet0/0/2] quit
d.使能MSTP,實現破除環路
裝置全域性使能MSTP
# 在SwitchA/B/C/D上啟動MSTP。
1 [SwitchA] stp enable 2 3 [SwitchB] stp enable 4 5 [SwitchC] stp enable 6 7 [SwitchD] stp enable
將與終端相連的埠設定為邊緣埠並使能埠的BPDU報文過濾功能
# 配置SwitchC埠GE0/0/1設定為邊緣埠並使能埠的BPDU報文過濾功能。
1 [SwitchC] interface gigabitethernet 0/0/1 2 [SwitchC-GigabitEthernet0/0/1] stp edged-port enable 3 [SwitchC-GigabitEthernet0/0/1] stp bpdu-filter enable 4 [SwitchC-GigabitEthernet0/0/1] quit
# 配置SwitchD埠GE0/0/1設定為邊緣埠並使能埠的BPDU報文過濾功能。
1 [SwitchD] interface gigabitethernet 0/0/1 2 [SwitchD-GigabitEthernet0/0/1] stp edged-port enable 3 [SwitchD-GigabitEthernet0/0/1] stp bpdu-filter enable 4 [SwitchD-GigabitEthernet0/0/1] quit
- 配置保護功能,如在各例項的根橋裝置的指定埠配置根保護功能
# 在例項1根橋SwitchA埠GE0/0/1上啟動根保護。
1 [SwitchA] interface gigabitethernet 0/0/1 2 [SwitchA-GigabitEthernet0/0/1] stp root-protection 3 [SwitchA-GigabitEthernet0/0/1] quit
# 在例項2根橋SwitchB埠GE0/0/1上啟動根保護。
1 [SwitchB] interface gigabitethernet 0/0/1 2 [SwitchB-GigabitEthernet0/0/1] stp root-protection 3 [SwitchB-GigabitEthernet0/0/1] quit
- 配置處於環網中的裝置的二層轉發功能
在交換裝置SwitchA、SwitchB、SwitchC和SwitchD上建立VLAN2~20
1 [SwitchA] vlan batch 2 to 20 2 3 [SwitchB] vlan batch 2 to 20 4 5 [SwitchC] vlan batch 2 to 20 6 7 [SwitchD] vlan batch 2 to 20
將交換裝置上接入環路中的埠加入VLAN
# 將例項1的根橋SwitchA埠GE0/0/1加入VLAN。
1 [SwitchA] interface gigabitethernet 0/0/1 2 [SwitchA-GigabitEthernet0/0/1] port link-type trunk 3 [SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 2 to 20 4 [SwitchA-GigabitEthernet0/0/1] quit
# 將例項1的根橋SwitchA埠Eth-Trunk1加入VLAN。
1 [SwitchA] interface Eth-Trunk 1 2 [SwitchA-Eth-Trunk1] trunkport gigabitethernet 0/0/2 3 [SwitchA-Eth-Trunk1] trunkport gigabitethernet 0/0/3 4 [SwitchA-Eth-Trunk1] port link-type trunk 5 [SwitchA-Eth-Trunk1] port trunk allow-pass vlan 2 to 20 6 [SwitchA-Eth-Trunk1] quit
# 將例項2的根橋SwitchB埠GE0/0/1加入VLAN。
1 [SwitchB] interface gigabitethernet 0/0/1 2 [SwitchB-GigabitEthernet0/0/1] port link-type trunk 3 [SwitchB-GigabitEthernet0/0/1] port trunk allow-pass vlan 2 to 20 4 [SwitchB-GigabitEthernet0/0/1] quit
# 將例項2的根橋SwitchB埠Eth-Trunk1加入VLAN。
1 [SwitchB] interface Eth-Trunk 1 2 [SwitchB-Eth-Trunk1] trunkport gigabitethernet 0/0/2 3 [SwitchB-Eth-Trunk1] trunkport gigabitethernet 0/0/3 4 [SwitchB-Eth-Trunk1] port link-type trunk 5 [SwitchB-Eth-Trunk1] port trunk allow-pass vlan 2 to 20 6 [SwitchB-Eth-Trunk1] quit
# 將接入交換機SwitchC埠GE0/0/1加入VLAN。
1 [SwitchC] interface gigabitethernet 0/0/1 2 [SwitchC-GigabitEthernet0/0/1] port link-type access 3 [SwitchC-GigabitEthernet0/0/1] port default vlan 2 4 [SwitchC-GigabitEthernet0/0/1] quit
# 將接入交換機SwitchC埠GE0/0/2加入VLAN。
1 [SwitchC] interface gigabitethernet 0/0/2 2 [SwitchC-GigabitEthernet0/0/2] port link-type trunk 3 [SwitchC-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 to 20 4 [SwitchC-GigabitEthernet0/0/2] quit
# 將接入交換機SwitchC埠GE0/0/3加入VLAN。
1 [SwitchC] interface gigabitethernet 0/0/3 2 [SwitchC-GigabitEthernet0/0/3] port link-type trunk 3 [SwitchC-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 to 20 4 [SwitchC-GigabitEthernet0/0/3] quit
# 將接入交換機SwitchD埠GE0/0/1加入VLAN。
1 [SwitchD] interface gigabitethernet 0/0/1 2 [SwitchD-GigabitEthernet0/0/1] port link-type access 3 [SwitchD-GigabitEthernet0/0/1] port default vlan 11 4 [SwitchD-GigabitEthernet0/0/1] quit
# 將接入交換機SwitchD埠GE0/0/2加入VLAN。
1 [SwitchD] interface gigabitethernet 0/0/2 2 [SwitchD-GigabitEthernet0/0/2] port link-type trunk 3 [SwitchD-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 to 20 4 [SwitchD-GigabitEthernet0/0/2] quit
# 將接入交換機SwitchD埠GE0/0/3加入VLAN。
1 [SwitchD] interface gigabitethernet 0/0/3 2 [SwitchD-GigabitEthernet0/0/3] port link-type trunk 3 [SwitchD-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 to 20 4 [SwitchD-GigabitEthernet0/0/3] quit
- 驗證配置結果
說明:
本配置舉例以例項1和例項2為例,因此不用關注例項0中埠的狀態。
# 在例項1的根橋SwitchA上執行display stp brief命令,檢視埠狀態和埠的保護型別,結果如下:
1 [SwitchA] display stp brief 2 MSTID Port Role STP State Protection 3 0 GigabitEthernet0/0/1 DESI FORWARDING ROOT 4 0 Eth-Trunk1 DESI FORWARDING NONE 5 1 GigabitEthernet0/0/1 DESI FORWARDING ROOT 6 1 Eth-Trunk1 DESI FORWARDING NONE 7 2 GigabitEthernet0/0/1 DESI FORWARDING ROOT 8 2 Eth-Trunk1 ROOT FORWARDING NONE
在MSTI1中,由於SwitchA是根橋,SwitchA的埠Eth-Trunk1和GE0/0/1成為指定埠。在MSTI2中,SwitchA的埠GE0/0/1成為指定埠,埠Eth-Trunk1成為根埠。
# 在例項2的根橋SwitchB上執行display stp brief命令,結果如下:
1 [SwitchB] display stp brief 2 MSTID Port Role STP State Protection 3 0 GigabitEthernet0/0/1 DESI FORWARDING ROOT 4 0 Eth-Trunk1 ROOT FORWARDING NONE 5 1 GigabitEthernet0/0/1 DESI FORWARDING ROOT 6 1 Eth-Trunk1 ROOT FORWARDING NONE 7 2 GigabitEthernet0/0/1 DESI FORWARDING ROOT 8 2 Eth-Trunk1 DESI FORWARDING NONE
在MSTI2中,由於SwitchB是根橋,埠GE0/0/1和Eth-Trunk1在MSTI2中成為指定埠。在MSTI1中,SwitchB的埠GE0/0/1成為指定埠,埠Eth-Trunk1成為根埠。
# 在接入交換機SwitchC上執行display stp interface brief命令,結果如下:
1 [SwitchC] display stp interface gigabitethernet 0/0/3 brief 2 MSTID Port Role STP State Protection 3 0 GigabitEthernet0/0/3 ROOT FORWARDING NONE 4 1 GigabitEthernet0/0/3 ROOT FORWARDING NONE 5 2 GigabitEthernet0/0/3 ROOT FORWARDING NONE
1 [SwitchC] display stp interface gigabitethernet 0/0/2 brief 2 MSTID Port Role STP State Protection 3 0 GigabitEthernet0/0/2 DESI FORWARDING NONE 4 1 GigabitEthernet0/0/2 DESI FORWARDING NONE 5 2 GigabitEthernet0/0/2 ALTE DISCARDING NONE
SwitchC的埠GE0/0/3在MSTI1和MSTI2中為根埠。SwitchC的另一個埠GE0/0/2,在MSTI2中被阻塞,在MSTI1中被計算為指定埠。
# 在接入交換機SwitchD上執行display stp interface brief命令,結果如下:
1 [SwitchD] display stp interface gigabitethernet 0/0/3 brief 2 MSTID Port Role STP State Protection 3 0 GigabitEthernet0/0/3 ROOT FORWARDING NONE 4 1 GigabitEthernet0/0/3 ROOT FORWARDING NONE 5 2 GigabitEthernet0/0/3 ROOT FORWARDING NONE
1 [SwitchD] display stp interface gigabitethernet 0/0/2 brief 2 MSTID Port Role STP State Protection 3 0 GigabitEthernet0/0/2 ALTE DISCARDING NONE 4 1 GigabitEthernet0/0/2 ALTE DISCARDING NONE 5 2 GigabitEthernet0/0/2 DESI FORWARDING NONE
SwitchD的埠GE0/0/3在MSTI1和MSTI2中為根埠。SwitchD的另一個埠GE0/0/2,在MSTI1中被阻塞,在MSTI2中被計算為指定埠。