華爲交換機之生成樹協議(MSTP)配置詳解

一、什麼是MSTP?
.
MSTP是一個共有的生成樹協議,在實際生產環境中得到廣泛的應用。
MSTP(Multiple Spanning tree Algorithm and protocol)是多生成樹技術,允許在一個交換環境中運行多個生成樹,每個生成樹稱爲一個實例(instance)。實例時間的生成樹彼此獨立,如一個實例下的阻塞接口在另一個實例上可能是一個轉發端口。和Cisco私有的PVST技術不同,MSTP允許多個vlan運行一個生成樹實例,相比較Cisco的PVST技術,這是一個優勢,因爲在Cisco交換機中,運行PVST技術,是一個實例一棵樹,實例越多,生成樹越多,交換機維護這些生成樹,也是需要消耗硬件資源及網絡開銷的。大部分情況下,運行多個生成樹實例的好處就在於鏈路的負載分擔,但是當只有一條冗餘鏈路時,運行兩個生成樹實例完全可以實現負載均衡,同時又能節約系統開銷,如下圖所示:
華爲交換機之生成樹協議(MSTP)配置詳解
上圖的網絡環境中存在兩個生成樹實例,不同實例的根網橋在不同的物理交換機上,不但可以實現負載分擔,而且不會因爲過多的實例而佔用系統資源。
.
MSTP將環路網絡修剪成一個無環的樹形網絡,避免廣播風暴的產生,同時還提供了數據轉發的多個冗餘路徑,在數據轉發過程中實現vlan數據的負載均衡。MSTP還兼容STP和RSTP。
.
MSTP把一個交換網絡劃分成多個域,每個域內形成多個生成樹,生成樹之間彼此獨立。每顆生成樹稱爲一個多生成樹實例(Multiple spanning tree instance,MSTI),每個域稱爲一個MST域。
.
MSTP通過設置vlan映射表(就是vlan和MSTI的對應關係表),把vlan和MSTP聯繫起來。每個vlan只能對應一個MSTI,即同一vlan的數據只能在一個MSTI中傳輸,而一個MSTI可以對應多個vlan。
.
二、MSTP的基本原理是什麼?
.
在MSTP中,通過把整個互聯的二層網絡劃分成若干個域。在域內,把其中的vlan分成若干組,每組具有相同的拓撲結構,然後定義若干個MSTI,並把這些生成樹實例和不同的vlan映射起來。
.
所謂實例就是多個vlan的一個集合。通過將多個vlan映射到一個實例,可以節省通信開銷和資源佔用率。MSTP各個實例拓撲的計算相互獨立,在這些實例上可以實現負載均衡。可以把多個相同拓撲結構的vlan映射到同一個實例裏,這些vlan在接口上的轉發狀態取決於接口在對應MSTP實例的狀態。
.
如果僅僅是爲了防止廣播風暴等環路問題,運行CST(CST也是一種生成樹協議,關於CST技術自行查閱相關資料,這裏不敘述了)已經足夠。運行多實例的主要目的在於使其負載分擔鏈路負載。所以運行的生成樹實例數量一般取決於冗餘線路的數量,如果只有一條冗餘鏈路,那麼最好運行兩個實例。如果有兩條冗餘鏈路,那麼運行三個實例將是最好的選擇,並儘可能保證每個實例中流量相差不大。
1、MSTP的網絡層次。
一個二層交換網絡可以劃分多個MST域(多生成樹域),每個生成樹域可以劃分多個MSTI,每個實例中可以映射多個vlan。
.
在下圖中的MSTP網絡包含3個MST域,分別是A、B、C。每個MST域中包含一個或多個MSTI。MST域B中包含兩個MSTI,分別是instance 1和instance 2。instance 1和vlan 1-5映射,instance 2和vlan 6-10映射。
華爲交換機之生成樹協議(MSTP)配置詳解
2、MST域。
MST域是多生成樹域,由局域網中的多臺交換機及它們之間的網段構成。一個局域網可以存在多個MST域。各MST域之間在物理上直接或間接相連。用戶可以通過MSTP配置命令把多臺交換機劃分在同一個MST域內,MST域中的交換機都啓用了MSTP,配置了相同的域名及vlan映射表(vlan映射表是MST域的屬性,它描述的是vlan和MSTI之間的映射關係)。
.
3、MSTI。
一個MST域內可以運行多個MSTI,MSTI之間彼此獨立,MSTI可以與一個或者多個vlan對應,但每個vlan只能與一個MSTI對應。(有沒有感覺有點像父子關係?哈哈,一個兒子只能有一個親爹,但一個爸爸可以有好多兒子)。
.
4、端口角色。
MSTP中的端口角色主要有根端口、指定端口、預備端口、備份端口和邊緣端口。除邊緣端口外,其他端口角色都參與MSTP的計算過程,同一端口在不同的MSTI中可以擔任不同的角色。(下面解釋下相關端口的作用,瞭解即可,因爲這些端口角色是由生成樹協議自動協商的,不需要人爲指定。)
華爲交換機之生成樹協議(MSTP)配置詳解

根端口:非根交換機上到根交換機開銷最小的端口就是該交換機的根端口,根端口能夠轉發數據流量到根交換機。上圖中的P3、P4和P8爲根端口。
指定端口:該交換機向下遊交換機發送BPDU(一種橋協議數據單元,用來交換網橋ID、根路徑成本等信息,用來選舉交換機端口角色)或者數據流量的端口。在上圖中,P1、P2和P6爲指定端口(當S3優先級高於S2時)。
邊緣端口:位於網絡最邊緣處,不參與生成樹計算,一般連接非交換機設備,如終端服務器、PC、路由器等。
預備端口:從轉發數據流量的角度來看,預備端口提供了到達根交換機的一條備份鏈路,其接口狀態爲阻塞,不轉發數據流量,當根端口被阻塞時,預備端口將成爲新的根端口。在上圖中P5爲預備端口。
備份端口:當同一臺交換機的兩個端口互相連接時就存在一個環路(聚合鏈路除外),此時,交換機就會將其中一個端口阻塞,備份端口就是被阻塞的那個端口。從發送BPDU來看,備份端口就是由於學習到本設備上其他端口發送的BPDU而被阻塞的端口。從轉發數據流量來看,備份端口作爲指定端口的備份,提供了一條從根交換機到非根交換機的備份鏈路,在上圖中,P7就是備份端口。

5、MSTP的端口狀態。

MSTP的端口狀態只有如下三種(瞭解端口狀態,纔可以熟練的排除生成樹故障):

  • forwarding:在這種狀態下,端口即轉發用戶流量,又接收/發送BPDU報文。
  • learning:這是一種過渡狀態。在該狀態下,交換機會根據收到的用戶流量,學習MAC地址表,但是不轉發用戶流量,所以稱爲學習狀態。learning狀態的端口接受/發送BPDU報文,不轉發用戶流量。
  • Discarding:在這種狀態下,端口只接收BPDU報文。

三、MSTP的保護功能。
在面對一些二層生成樹***時,下面四個技術可以增加生成樹的安全性。

1、BPDU保護
在交換機上,通常將直接與用戶終端(如PC機)或服務器等非交換機設備相連的端口配置爲邊緣接口,以實現這些端口的快速收斂,正常情況下,這些端口是不會接收到BPDU。如果有人僞造BPDU惡意交換機,當這些端口收到BPDU時,交換機會自動將這些端口設置爲非邊緣端口,並重新進行生成樹計算,從而引起網絡震盪。
.
啓用BPDU保護功能後,如果接口收到BPDU報文,那麼該接口將被自動關閉,從而避免了後續的
及由此帶來的網絡震盪。
.
配置命令如下:

[Huawei]stp bpdu-protection              #開啓BPDU保護

2、根保護
.
由於網絡管理人員失誤或人爲惡意攻n 擊,網絡中的合法交換機端口可能會收到優先級更高的BPDU,這將使目前網絡中的根失去根地位,之後將重新計算生成樹,引起網絡震盪,還有可能將網絡流量從高速鏈路上轉移到低俗鏈路中,造成網絡擁塞。爲了防止這種情況出現,交換機提供根保護功能。根保護功能通過維持指定端口的角色來保護根交換機的地位。配置了根保護功能的端口,在所有實例上的端口角色都保持爲指定端口。當端口接收到優先級更高的BPDU時,端口角色不會變爲非指定端口,而是進入偵聽狀態,不再轉發報文。經過足夠長的時間,如果端口一直沒有再收到優先級較高的BPDU,端口會恢復到原來的正常狀態。
.
配置命令:

[Huawei]in g0/0/1            #進入指定端口
[Huawei-GigabitEthernet0/0/1]stp root-protection              #開啓根保護

3、環路保護
.
根端口和其他阻塞端口狀態會週期性地接收來自上游交換機(在本博文的第三張配圖中,R1就是R2和R3的上游交換機,R4就是R2和R3的下游交換機)的BPDU。當鏈路擁塞或者單向鏈路故障時,這些端口無法接收來自上游交換機的BPDU,交換機會重新選擇根端口。原先的根端口會轉變爲指定端口,而原先的阻塞端口會遷移到轉發狀態,從而造成交換網絡中可能產生環路。環路保護功能會抑制這種環路產生。在啓動了環路保護功能後,如果根端口收不到來自上游的BPDU,根端口會被設置進入阻塞狀態;而阻塞端口則會一直保持在阻塞狀態,不轉發報文,從而不會在網絡中形成環路 。
.
配置命令:

[Huawei]in g0/0/1                #進入根端口
[Huawei-GigabitEthernet0/0/1]stp loop-protection              #啓用環路保護功能

4、TC保護
.
交換機在接收到TC-BPDU報文後,會執行MAC地址表項和ARP表項的刪除操作,如果有人僞造TC-BPDU報文惡意***交換機,交換機短時間內會收到很多TC-BPDU報文,頻繁的刪除操作會給交換機造成很大的負擔,給網絡的穩定性帶來很大的隱患,啓用TC保護功能後,在固定的時間內,MSTP進程處理TC類型BPDU報文的次數可配置。如果在固定的時間內,MSTP進程收到TC類型的BPDU報文數量大於配置的閾值,那麼MSTP進程只會處理閾值指定的次數。對於其他超出閾值的TC類型BPDU報文,定時器到期後,MSTP進程對其統一處理一次。這樣可以避免頻繁地刪除MAC地址表項和ARP表項,從而達到保護交換機的目的。
.
配置命令:

[Huawei]stp tc-protection threshold 3               #指定閾值爲3

四、MSTP的配置過程。
.
網絡環境如下:

華爲交換機之生成樹協議(MSTP)配置詳解
需求如下:

  • VLAN10和VLAN20互訪
  • VLAN10:S3->S1->R1
  • VLAN20:S3->S2->R1

實現思路:

1、配置PC及路由器的IP地址。
2、配置交換機的vlan及trunk。
3、交換機開啓MSTP協議,配置相同區域名稱。
4、交換機建立兩個實例,分別將vlan 10 和vlan 20加入到不同的實例中,併爲兩個實例指定不同的根網橋,實例1的根網橋在S1上,實例2的根網橋在S2上。

開始配置:
1、配置路由器IP地址(PC機的IP地址自行配置):

[R1]in g0/0/0
[R1-GigabitEthernet0/0/0]ip add 10.1.10.254 24
[R1-GigabitEthernet0/0/0]in g0/0/1
[R1-GigabitEthernet0/0/1]ip add 10.1.20.254 24
[R1-GigabitEthernet0/0/1]un shut    <!--接口默認爲開啓狀態,若爲關閉狀態,可使用該命令開啓-->

2、配置各個交換機的VLAN及Trunk:
.
我這裏將所有和客戶機連接的接口配置爲Access接口n,交換機和交換機連接的接口配置爲trunk接口n。交換機和路由器連接的接口配置爲Hybrid接口。
S1的配置如下:

[S1]vlan ba 10 20                     <!--創建vlan10 和vlan20-->
[S1]in g0/0/2                     <!--進入該接口-->
[S1-GigabitEthernet0/0/2]port link-type trunk                      <!--配置接口模式爲trunk-->
[S1-GigabitEthernet0/0/2]port trunk allow-pass vlan all           <!--放行所有vlan流量通過-->
[S1-GigabitEthernet0/0/2]in g0/0/1                      <!--進入該接口-->
[S1-GigabitEthernet0/0/1]port link-type trunk                      <!--配置接口模式爲trunk-->
[S1-GigabitEthernet0/0/1]port trunk allow-pass vlan all            <!--放行所有vlan流量通過-->
[S1-GigabitEthernet0/0/1]in g0/0/3                     <!--進入該接口-->
[S1-GigabitEthernet0/0/3]port link-type hybrid                <!--配置接口模式爲Hybrid-->
[S1-GigabitEthernet0/0/3]port hybrid untagged vlan 10 <!--將vlan 10 添加到該接口的untag列表-->
[S1-GigabitEthernet0/0/3]port hybrid pvid vlan 10             <!--配置接口PVID爲vlan 10-->

S2的配置如下:

[S2]vlan ba 10 20                     <!--創建vlan10 和vlan20-->
[S2]in g0/0/2                     <!--進入該接口-->
[S2-GigabitEthernet0/0/2]port link-type trunk                       <!--配置接口模式爲trunk-->
[S2-GigabitEthernet0/0/2]port trunk allow-pass vlan all           <!--放行所有vlan流量通過-->
[S2-GigabitEthernet0/0/2]in g0/0/1                     <!--進入該接口-->
[S2-GigabitEthernet0/0/1]port link-type trunk                      <!--配置接口模式爲trunk--> 
[S2-GigabitEthernet0/0/1]port trunk allow-pass vlan all           <!--放行所有vlan流量通過-->
[S2-GigabitEthernet0/0/1]in g0/0/3                     <!--進入該接口-->
[S2-GigabitEthernet0/0/3]port link-type hybrid                <!--配置接口模式爲Hybrid-->
[S2-GigabitEthernet0/0/3]port hybrid untagged vlan 20 <!--將vlan 12 添加到該接口的untag列表-->
[S2-GigabitEthernet0/0/3]port hybrid pvid vlan 20            <!--配置接口PVID爲vlan 20-->

S3的配置如下:

[S3]vlan ba 10 20                     <!--創建vlan10 和vlan20-->
[S3]in g0/0/3                     <!--進入該接口-->
[S3-GigabitEthernet0/0/3]port link-type access                 <!--配置接口模式爲access-->
[S3-GigabitEthernet0/0/3]port default vlan 10          <!--將接口添加到vlan 10中-->
[S3-GigabitEthernet0/0/3]in g0/0/4                     <!--進入該接口-->
[S3-GigabitEthernet0/0/4]port link-type access                <!--配置接口模式爲access-->
[S3-GigabitEthernet0/0/4]port default vlan 20           <!--將接口添加到vlan 20中-->
[S3-GigabitEthernet0/0/4]in g0/0/1                     <!--進入該接口-->
[S3-GigabitEthernet0/0/1]port link-type trunk                       <!--配置接口模式爲trunk-->
[S3-GigabitEthernet0/0/1]port trunk allow-pass vlan all           <!--放行所有vlan流量通過-->
[S3-GigabitEthernet0/0/1]in g0/0/2                     <!--進入該接口-->
[S3-GigabitEthernet0/0/2]port link-type trunk                      <!--配置接口模式爲trunk-->
[S3-GigabitEthernet0/0/2]port trunk allow-pass vlan all           <!--放行所有vlan流量通過-->

3、配置MSTP
.
上面的需求是要求vlan 10的客戶端通過S3和S1到達網關,vlan 20的客戶端通過S3和S2到達網關,從而實現鏈路的負載分擔。在接下來的配置中,把S1配置爲instance 1的根,而instance 1實例和vlan 10關聯,那麼vlan的流量因爲S2和S3之間的鏈路阻塞而通過左邊到達網關。同理,instance 2實例中配置S2爲根,並通過右邊到達網關。
S1的配置如下:

[S1]stp mo mstp                     <!--將交換機配置成MSTP模式--> 
[S1]stp region-configuration                       <!--進入MSTP配置模式-->
[S1-mst-region]region-name lv                     <!--配置域名爲“lv”-->
[S1-mst-region]revision-level 1                     <!--配置版本等級爲“1”-->
[S1-mst-region]instance 1 vlan 10                     <!--將vlan 10加入實例1中-->
[S1-mst-region]instance 2 vlan 20                     <!--將vlan 20加入實例2中-->
[S1-mst-region]active region-configuration                      <!--激活配置(必須配置)-->
[S1-mst-region]quit                     <!--退出配置模式-->
[S1]stp instance 1 root primary                      <!--配置此交換機爲實例1的主根-->
[S1]stp instance 2 root secondary                  <!--配置此交換機爲實例2的備根-->

S2的配置如下:

[S2]stp mode mstp                     <!--將交換機配置成MSTP模式--> 
[S2]stp region-configuration                        <!--進入MSTP配置模式-->
[S2-mst-region]region-name lv                     <!--配置域名爲“lv”-->
[S2-mst-region]revision-level 1                     <!--配置版本等級爲“1”-->
[S2-mst-region]instance 1 vlan 10                    <!--將vlan 10加入實例1中-->
[S2-mst-region]instance 2 vlan 20                    <!--將vlan 20加入實例2中-->
[S2-mst-region]active region-configuration                      <!--激活配置(必須配置)-->
[S2-mst-region]quit                    <!--退出配置模式-->
[S2]stp instance 1 root secondary                      <!--配置此交換機爲實例1的備根-->
[S2]stp instance 2 root primary                  <!--配置此交換機爲實例2的主根-->

S3的配置如下:

[S3]stp mode mstp                     <!--將交換機配置成MSTP模式--> 
[S3]stp region-configuration                        <!--進入MSTP配置模式-->
[S3-mst-region]region-name lv                     <!--配置域名爲“lv”-->
[S3-mst-region]revision-level 1                    <!--配置版本等級爲“1”-->
[S3-mst-region]instance 1 vlan 10                    <!--將vlan 10加入實例1中-->
[S3-mst-region]instance 2 vlan 20                   <!--將vlan 20加入實例2中-->
[S3-mst-region]active region-configuration                      <!--激活配置(必須配置)-->

4、驗證:
.
在S3上查看STP接口角色及狀態信息,結果如下(其中MSTID列表示實例):
.

[S3]dis stp brief              #查看STP接口角色及狀態信息
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE
   0    GigabitEthernet0/0/3        DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/4        DESI  FORWARDING      NONE
   1    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
   1    GigabitEthernet0/0/2        ALTE  DISCARDING      NONE
   1    GigabitEthernet0/0/3        DESI  FORWARDING      NONE
   2    GigabitEthernet0/0/1        ALTE  DISCARDING      NONE
   2    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE
   2    GigabitEthernet0/0/4        DESI  FORWARDING      NONE

可以看到實例 1中的GigabitEthernet0/0/2和實例 2中的GigabitEthernet0/0/1處於阻塞狀態。同時,兩個實例之間相互獨立,彼此不受影響。而且現在vlan 10中的客戶端可以和vlan 20中的客戶端進行通信。
.
5、總結:
.
從上面的配置中發現,若要將所有實例配置在同一個域中,只需要配置同樣的域名即可,但版本等級需一致,域中各個vlan對應的實例也需要一致。同一個生成樹實例中,只能有一個主根和備根。需要注意的是,生成樹協議無法實現互爲備份(即主設備宕機,備份設備立馬接替主設備的工作),它只能實現負載均衡,若需要實現互爲備份,還需要使用VRRP技術,該技術將在後續博文寫出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章