前面提到的STP協議以及Cisco的私有協議PVST+都屬於單生成樹(SST)協議,也就是對於支持多VLAN的設備只能運行單一的生成樹。能夠參考博文:Cisco設備二層交換技術——STP協議詳解服務器
MSTP是IEEE 802.1s中提出的一種STP和VLAN結合使用的新協議,它既繼承了RSTP端口快速遷移的優勢,又解決了RSTP中不一樣VLAN必須運行在同一棵生成樹上的問題。接下來咱們詳細瞭解一下MSTP協議。網絡
MSTP協議是一個公有的生成樹協議,在實際生產環境中獲得了普遍的應用。負載均衡
傳統的生成樹只能運行一個實例,且收斂速度慢,RSTP在傳統STP基礎上經過改進達到了加速網絡拓補收斂的目的,可是目前依然存在一些缺陷。因爲STP和RSTP在整個局域網中,全部的VLAN共享一個生成樹實例,所以沒法實現基於VLAN的負載均衡,網絡環境穩定狀態下備份鏈路始終不能轉發數據流量,形成帶寬的浪費!如圖:
當交換機S1爲根網橋時,S2和S3之間的鏈路將處於阻塞狀態,不能轉發任何流量。即便網絡出現擁塞時,S2和S3之間的鏈路也不能夠被使用,形成資源的浪費!ide
學過Cisco的朋友都知道Cisco的PVST技術是一種基於VLAN的生成樹技術。每一個VLAN運行一個生成樹,能夠重複使用全部的鏈路,可是當企業生產環境中,有不少VLAN(好比100個VLAN時),交換網絡中就須要運行100多個生成樹實例,從而將大量佔用交換設備的硬件資源及網絡開銷。oop
PVST和MSTP的比較圖:
學習
下面詳細介紹一下——MSTP測試
MSTP是多生成樹技術,容許在一個交換環境中運行多個生成樹,每一個生成樹成爲一個實例。實例之間的生成樹彼此獨立,好比一個實例下的阻塞接口在另外一個實例中多是轉發接口。和PVST不一樣的是:MSTP容許多個VLAN運行一個生成樹實例。大部分狀況下,運行多個生成樹實例的好處就在於鏈路的負載分擔,可是當只有一個冗餘鏈路時,運行兩個生成樹實例徹底能夠實現負載均衡,同時又能節約系統開銷。如圖:
現實企業環境中,網絡環境中運行多個實例是很是常見的狀況。由於這樣能夠實現:不一樣實例的根網橋在不一樣物理交換機上,不但能夠實現負載分擔,並且不會由於過多的實例而佔用系統資源。ui
MSTP將環形網絡修剪成一個無環的樹形網絡,避免廣播風暴的發生,同時還提供了數據轉發的多個冗餘路徑,在數據轉發過程當中實現VLAN數據的負載均衡。MSTP還兼容STP和RSTP。3d
MSTP把一個交換網絡劃分紅多個域,每一個域內造成多棵生成樹,生成樹之間彼此獨立。每棵生成樹成爲一個多生成樹實例(MSTI),每一個域稱爲一個MST域。code
MSTP經過設置VLAN映射表,把VLAN和MSTI聯繫起來。每一個VLAN只能對應一個MSTI,即同一VLAN的數據只能在一個MSTI中傳輸,而一個MSTI能夠對應多個VLAN。這樣就能夠充分的利用網絡帶寬,有效避免資源浪費!
在MSTP中。經過把整個互聯的二層以太網劃分紅若干域。在域內,把其中的VLAN分紅若干組,每組具備相同的拓補結構,而後定義若干MSTI,並把這些生成樹實例和不一樣的VLAN映射起來!
所謂實例就是多個VLAN的一個集合。經過將多個VLAN映射到一個實例,能夠節省通訊開銷和資源佔用率。MSTP各個實例拓補的計算相互獨立,在這些實例上能夠實現負載均衡。能夠把多個相同拓補結構的VLAN映射到一個實例中,這些VLAN在接口上的轉發狀態取決於接口在對應MSTP實例的狀態。
若是僅僅是爲了防止廣播風暴等環路問題,運行CST已經能夠實現。運行多實例的主要目的在於使其負載分擔鏈路負載。因此運行的生成樹實例數量通常取決於冗餘線路的數量,若是隻有一條冗餘線路,那麼最好運行兩個實例。若是有兩條冗餘鏈路,那麼運行三個實例將是最好的選擇,並儘量保證每一個實例中流量相差不大。
一個二層交換網絡能夠劃分多個MSTP域,每一個生成樹域能夠劃分紅多個MSTI,每一個實例中能夠映射多個VLAN。爲了讓朋友更加詳細的瞭解,請看下圖:
圖中的MSTP網絡中包含3個MST域,分別是A、B、C,每一個MST域中包含一個或多個MSTI。以MSTP域B爲例,包含兩個MSTI,分別是Instance1和Instance2。Instance1和VLAN1~5映射;Instance2和VLAN6~10映射。
MST域是多生成樹域,由局域網中的多臺交換機及它們之間的網段構成。一個局域網能夠存在多個MST域,各MST域之間在物理上直接或間接相連。用戶能夠經過MSTP配置命令把多臺交換機劃分在同一個MST域內。MST域中的交換機都啓用了MSTP,配置相同的域名及VLAN映射表。
一個MST域內能夠運行多個MSTI,MSTI之間彼此獨立,MSTI能夠與一個或者多個VLAN對應。但一個VLAN只能與一個MSTI對應。
爲了更好的理解端口的角色,請看下圖:
MSTP中的角色主要有如下幾種:
根端口:非根交換機上到根交換機開銷最小的端口就是該交換機的根端口。根端口可以轉發數據流量到根交換機;圖中P三、P四、P8爲根端口。
指定端口:該交換機向下遊交換機發送BPDU或者數據流量的端口;圖中的P一、P二、P6(R3優先級高於R2)端口爲指定端口。
邊緣端口:位於網絡最邊緣處,不參與生成樹計算,通常做爲鏈接非交換機設備;如終端服務器、PC等。
預備端口:從轉發流量的角度來看,預備端口提供了到達根交換機的一個備份鏈路。其接口狀態爲阻塞,不轉發數據流量。當根端口被阻塞時,預備端口將成爲新的根端口,主要是爲了備份根端口;圖中P5爲預備端口。
備份端口:當同一臺交換機的兩個端口互相鏈接時就會造成一個環路,此時交換機會將其中一個端口堵塞,備份端口就是被堵塞的端口;從發送BPDU來看,備份端口就是因爲學習到本設備上的其餘端口發送的BPDU而被堵塞的端口;從轉發用戶流量來看,備份端口做爲指定端口的備份,提供了一條從根交換機到葉節點(非根交換機)的備份鏈路;主要是備份指定端口;圖中P7爲指定端口。
MSTP中的端口角色除了邊緣端口外,其餘端口角色都參與MSTP的計算過程。同一端口在不一樣的MSTI能夠擔任搞不一樣的角色。
MSTP的端口有如下三種:
- Forwarding:在這種狀態下,端口既轉發用戶流量,又接收/發送BPDU報文,稱爲轉發狀態;
- Learning:這是一種過渡狀態。在Learning狀態下,交換機會根據收到的用戶流量,學習MAC地址表,但不轉發用戶流量,因此稱爲學習狀態。Learning狀態的端口接收/發送BPDU報文,但不轉發用戶流量;
- Discarding:在這種狀態下,端口只接收BPDU報文,稱爲丟棄狀態;
在交換機上,一般將直接與用戶終端或文件服務器等非交換機設備相連的端口配置爲邊緣端口,以實現這些端口的快速收斂。正常狀況下,這些端口不會收到BPDU。若是有人僞造BPDU惡意操做交換機,當這些端口接收到BPDU是,交換機會自動將這些端口設置爲非邊緣端口,並從新進行生成樹計算,從而引發網絡震盪。
啓用BPDU保護功能後,若是接口收到BPDU報文,那麼該接口將被自動shutdown,從而避免了後續的非法操做及由此帶來的網絡震盪。配置的命令以下:
[SW1]stp bpdu-protection //啓用BPDU保護
因爲管理失誤或人爲惡意操做,網絡中的合法交換機的端口可能會接收到優先級更高的BPDU,這將使目前網絡中的根失去根的地位,以後將從新計算生成樹,引發網絡震盪,還有可能形成網絡擁塞。爲了防止以上狀況的發生,交換機提供根保護功能。根保護功能維持端口的角色來保護根交換機的地位。配置了根保護功能的端口,在全部實例上的端口角色都保持爲指定端口。當端口收到優先級更高的BPDU時,端口的角色不會變爲非指定端口,而是進入偵聽狀態,再也不轉發報文。通過足夠長的時間,若是端口一直沒有再收到優先級較高的BPDU,端口則會恢復本來的正常狀態。配置命令以下:
[SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]stp root-protection //開啓根保護功能
根端口和其餘阻塞端口狀態會週期性地接收來自上游交換機的BPDU。當鏈路擁塞或者單向鏈路故障時,這些端口沒法接收來自上游交換機的BPDU,交換機會從新選擇根端口。原先的根端口會轉變爲指定端口,而原先阻塞的端口會變成轉發狀態,從而形成交換網絡中可能產生環路。環路保護功能會抑制這種環路的產生。在啓動了環路保護功能後,若是根端口收不到來自上游的BPDU,根端口會被設置進入阻塞狀態;而阻塞端口則會一直保持在阻塞狀態,再也不轉發報文,從而不會在網絡中造成環路。收到拓補變動的BPDU時,端口才會被激活。配置命令以下:
[SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]stp loop-protection //啓用環路保護功能
交換機在接收到TC-BPDU報文後,會執行MAC地址表項和ARP表項的刪除操做。若是有人僞造TC-BPDU報文非法操做交換機,交換機短期內會收到不少TCP-BPDU報文,頻繁的刪除操做會給設備形成很大的負擔,給網絡的穩定帶來很大的隱患,啓用TC保護功能後,在單位時間內,MSTP進程收到TC類型BPDU報文的數量大於配置的閾值,那麼MSTP進程只會處理閾值指定的次數。對於其餘超出閾值的TC類型BPDU報文,定時器到期後,MSTP進程只對其統一處理一次,這樣能夠避免頻繁的刪除MAC地址表項和ARP表項,從而達到保護交換機的目的。配置命令以下:
[SW1]stp tc-protection threshold 3 //啓用TC保護,並設置的閾值爲3
1.全部交換機啓用MSTP協議,區域名稱改成huawei,修改版本級別爲1;
2.利用MSTP協議VLAN10和VLAN20的互訪;
3.VLAN10的流量走向:PC1→S3→S1→R1;
4.VLAN20的流量走向:PC2→S3→S2→R1;
配置客戶端地址過程過程略!配置路由器地址以下:
[R1]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 10.1.10.254 24 [R1-GigabitEthernet0/0/1]int g0/0/0 [R1-GigabitEthernet0/0/2]ip add 10.1.20.254 24 //華爲設備接口默認是開啓的,也可使用undo shutdown開啓一下!
本次實驗中,客戶機與交換機鏈接口爲Access接口,二層交換機與交換機鏈接口爲Trunk接口,二層交換機和路由器鏈接口爲Hybrid接口。常識:路由器不能夠識別帶VLAN標籤的數據幀。
S1的配置以下:
[S1]vlan batch 10 20 [S1]int g0/0/2 [S1-GigabitEthernet0/0/2]port link-type hybrid [S1-GigabitEthernet0/0/2]port hybrid untagged vlan 10 [S1-GigabitEthernet0/0/2]port hybrid pvid vlan 10 [S1-GigabitEthernet0/0/2]int g0/0/1 [S1-GigabitEthernet0/0/1]port link-type trunk [S1-GigabitEthernet0/0/1]port trunk allow-pass vlan all [S1-GigabitEthernet0/0/1]int g0/0/3 [S1-GigabitEthernet0/0/3]port link-type trunk [S1-GigabitEthernet0/0/3]port trunk allow-pass vlan all //基礎指令這裏就不介紹什麼意思了!
S2的配置以下:
[S2]vlan batch 10 20 [S2]int g0/0/2 [S2-GigabitEthernet0/0/2]port link-type hybrid [S2-GigabitEthernet0/0/2]port hybrid untagged vlan 20 [S2-GigabitEthernet0/0/2]port hybrid pvid vlan 20 [S2-GigabitEthernet0/0/2]int g0/0/1 [S2-GigabitEthernet0/0/1]port link-type trunk [S2-GigabitEthernet0/0/1]port trunk allow-pass vlan all [S2-GigabitEthernet0/0/1]int g0/0/3 [S2-GigabitEthernet0/0/3]port link-type trunk [S2-GigabitEthernet0/0/3]port trunk allow-pass vlan all
S3的配置以下:
[S3]vlan batch 10 20 [S3]int g0/0/1 [S3-GigabitEthernet0/0/1]port link-type trunk [S3-GigabitEthernet0/0/1]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/1]int g0/0/2 [S3-GigabitEthernet0/0/2]port link-type trunk [S3-GigabitEthernet0/0/2]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/2]int g0/0/3 [S3-GigabitEthernet0/0/3]port link-type access [S3-GigabitEthernet0/0/3]port default vlan 10 [S3-GigabitEthernet0/0/3]int g0/0/4 [S3-GigabitEthernet0/0/4]port link-type access [S3-GigabitEthernet0/0/4]port default vlan 20
根據實驗要求,實驗命令以下:
S1的配置以下:
[S1]stp mode mstp //將交換機配置成MSTP模式 [S1]stp region-configuration //進入MSTP配置模式 [S1-mst-region]region-name huawei //配置域名爲huawei [S1-mst-region]revision-level 1 //配置版本等級爲1 [S1-mst-region]instance 1 vlan 10 //將VLAN10加入實例1中 [S1-mst-region]instance 2 vlan 20 //將VLAN20加入實例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 [S2]stp region-configuration [S2-mst-region]region-name huawei [S2-mst-region]revision-level 1 [S2-mst-region]instance 1 vlan 10 [S2-mst-region]instance 2 vlan 20 [S2-mst-region]active region-configuration [S2]stp instance 1 root secondary [S2]stp instance 2 root primary //命令與S1基本類似,這裏就很少說了!
S3的配置以下:
[S3]stp mode mstp [S3]stp region-configuration [S3-mst-region]region-name huawei [S3-mst-region]revision-level 1 [S3-mst-region]instance 1 vlan 10 [S3-mst-region]instance 2 vlan 20 [S3-mst-region]active region-configuration
在S3上使用一下命令查看效果!
[S3]display stp brief //查看STP接口角色及狀態信息 MSTID Port Role STP State Protection 0 GigabitEthernet0/0/1 DESI FORWARDING NONE 0 GigabitEthernet0/0/2 DESI 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時,g0/0/2接口阻塞 1 GigabitEthernet0/0/3 DESI FORWARDING NONE 2 GigabitEthernet0/0/1 ALTE DISCARDING NONE //運行實例2時,g0/0/1接口阻塞 2 GigabitEthernet0/0/2 ROOT FORWARDING NONE 2 GigabitEthernet0/0/4 DESI FORWARDING NONE
能夠自行驗證效果!PC1和PC2是能夠通訊的,無論任何交換機之間任意一條線路故障,也不會影響通訊(模擬線路故障後,稍微等一下再測試通訊)!
———————— 本文至此結束,感謝閱讀 ————————