華為設(shè)備二層交換技術(shù)ˉ多生成樹MSTP(華為交換機 生成樹)
前面提到的STP協(xié)議以及Cisco的私有協(xié)議PVST+都屬于單生成樹(SST)協(xié)議,也就是對于支持多VLAN的設(shè)備只能運行單一的生成樹。可以參考博文:Cisco設(shè)備二層交換技術(shù)——STP協(xié)議詳解
MSTP是IEEE 802.1s中提出的一種STP和VLAN結(jié)合使用的新協(xié)議,它既繼承了RSTP端口快速遷移的優(yōu)點,又解決了RSTP中不同VLAN必須運行在同一棵生成樹上的問題。接下來我們詳細了解一下MSTP協(xié)議。
MSTP協(xié)議是一個公有的生成樹協(xié)議,在實際生產(chǎn)環(huán)境中得到了廣泛的應(yīng)用。
一、MSTP概述
傳統(tǒng)的生成樹只能運行一個實例,且收斂速度慢,RSTP在傳統(tǒng)STP基礎(chǔ)上通過改進達到了加速網(wǎng)絡(luò)拓補收斂的目的,但是目前依然存在一些缺陷。由于STP和RSTP在整個局域網(wǎng)中,所有的VLAN共享一個生成樹實例,因此無法實現(xiàn)基于VLAN的負載均衡,網(wǎng)絡(luò)環(huán)境穩(wěn)定狀態(tài)下備份鏈路始終不能轉(zhuǎn)發(fā)數(shù)據(jù)流量,造成帶寬的浪費!如圖:
當(dāng)交換機S1為根網(wǎng)橋時,S2和S3之間的鏈路將處于阻塞狀態(tài),不能轉(zhuǎn)發(fā)任何流量。即使網(wǎng)絡(luò)出現(xiàn)擁塞時,S2和S3之間的鏈路也不可以被使用,造成資源的浪費!
學(xué)過Cisco的朋友都知道Cisco的PVST技術(shù)是一種基于VLAN的生成樹技術(shù)。每個VLAN運行一個生成樹,可以重復(fù)使用所有的鏈路,但是當(dāng)企業(yè)生產(chǎn)環(huán)境中,有很多VLAN(比如100個VLAN時),交換網(wǎng)絡(luò)中就需要運行100多個生成樹實例,從而將大量占用交換設(shè)備的硬件資源及網(wǎng)絡(luò)開銷。
PVST和MSTP的比較圖:
下面詳細介紹一下——MSTP
MSTP是多生成樹技術(shù),允許在一個交換環(huán)境中運行多個生成樹,每個生成樹成為一個實例。實例之間的生成樹彼此獨立,比如一個實例下的阻塞接口在另一個實例中可能是轉(zhuǎn)發(fā)接口。和PVST不同的是:MSTP允許多個VLAN運行一個生成樹實例。大部分情況下,運行多個生成樹實例的好處就在于鏈路的負載分擔(dān),但是當(dāng)只有一個冗余鏈路時,運行兩個生成樹實例完全可以實現(xiàn)負載均衡,同時又能節(jié)約系統(tǒng)開銷。如圖:
現(xiàn)實企業(yè)環(huán)境中,網(wǎng)絡(luò)環(huán)境中運行多個實例是非常常見的情況。因為這樣可以實現(xiàn):不同實例的根網(wǎng)橋在不同物理交換機上,不但可以實現(xiàn)負載分擔(dān),而且不會因為過多的實例而占用系統(tǒng)資源。
MSTP將環(huán)形網(wǎng)絡(luò)修剪成一個無環(huán)的樹形網(wǎng)絡(luò),避免廣播風(fēng)暴的發(fā)生,同時還提供了數(shù)據(jù)轉(zhuǎn)發(fā)的多個冗余路徑,在數(shù)據(jù)轉(zhuǎn)發(fā)過程中實現(xiàn)VLAN數(shù)據(jù)的負載均衡。MSTP還兼容STP和RSTP。
MSTP把一個交換網(wǎng)絡(luò)劃分成多個域,每個域內(nèi)形成多棵生成樹,生成樹之間彼此獨立。每棵生成樹成為一個多生成樹實例(MSTI),每個域稱為一個MST域。
MSTP通過設(shè)置VLAN映射表,把VLAN和MSTI聯(lián)系起來。每個VLAN只能對應(yīng)一個MSTI,即同一VLAN的數(shù)據(jù)只能在一個MSTI中傳輸,而一個MSTI可以對應(yīng)多個VLAN。這樣就可以充分的利用網(wǎng)絡(luò)帶寬,有效避免資源浪費!
二、MSTP的基本原理
在MSTP中。通過把整個互聯(lián)的二層以太網(wǎng)劃分成若干域。在域內(nèi),把其中的VLAN分成若干組,每組具有相同的拓補結(jié)構(gòu),然后定義若干MSTI,并把這些生成樹實例和不同的VLAN映射起來!
所謂實例就是多個VLAN的一個集合。通過將多個VLAN映射到一個實例,可以節(jié)省通信開銷和資源占用率。MSTP各個實例拓補的計算相互獨立,在這些實例上可以實現(xiàn)負載均衡。可以把多個相同拓補結(jié)構(gòu)的VLAN映射到一個實例中,這些VLAN在接口上的轉(zhuǎn)發(fā)狀態(tài)取決于接口在對應(yīng)MSTP實例的狀態(tài)。
如果僅僅是為了防止廣播風(fēng)暴等環(huán)路問題,運行CST已經(jīng)可以實現(xiàn)。運行多實例的主要目的在于使其負載分擔(dān)鏈路負載。所以運行的生成樹實例數(shù)量一般取決于冗余線路的數(shù)量,如果只有一條冗余線路,那么最好運行兩個實例。如果有兩條冗余鏈路,那么運行三個實例將是最好的選擇,并盡可能保證每個實例中流量相差不大。
1.MSTP的網(wǎng)絡(luò)層次
一個二層交換網(wǎng)絡(luò)可以劃分多個MSTP域,每個生成樹域可以劃分成多個MSTI,每個實例中可以映射多個VLAN。為了讓朋友更加詳細的了解,請看下圖:
圖中的MSTP網(wǎng)絡(luò)中包含3個MST域,分別是A、B、C,每個MST域中包含一個或多個MSTI。以MSTP域B為例,包含兩個MSTI,分別是Instance1和Instance2。Instance1和VLAN15映射;Instance2和VLAN610映射。
2.MST域
MST域是多生成樹域,由局域網(wǎng)中的多臺交換機及它們之間的網(wǎng)段構(gòu)成。一個局域網(wǎng)可以存在多個MST域,各MST域之間在物理上直接或間接相連。用戶可以通過MSTP配置命令把多臺交換機劃分在同一個MST域內(nèi)。MST域中的交換機都啟用了MSTP,配置相同的域名及VLAN映射表。
3.MSTI
一個MST域內(nèi)可以運行多個MSTI,MSTI之間彼此獨立,MSTI可以與一個或者多個VLAN對應(yīng)。但一個VLAN只能與一個MSTI對應(yīng)。
4.端口角色
為了更好的理解端口的角色,請看下圖:
MSTP中的角色主要有以下幾種:**根端口:**非根交換機上到根交換機開銷最小的端口就是該交換機的根端口。根端口能夠轉(zhuǎn)發(fā)數(shù)據(jù)流量到根交換機;圖中P3、P4、P8為根端口。**指定端口:**該交換機向下游交換機發(fā)送BPDU或者數(shù)據(jù)流量的端口;圖中的P1、P2、P6(R3優(yōu)先級高于R2)端口為指定端口。**邊緣端口:**位于網(wǎng)絡(luò)最邊緣處,不參與生成樹計算,一般作為連接非交換機設(shè)備;如終端服務(wù)器、PC等。**預(yù)備端口:**從轉(zhuǎn)發(fā)流量的角度來看,預(yù)備端口提供了到達根交換機的一個備份鏈路。其接口狀態(tài)為阻塞,不轉(zhuǎn)發(fā)數(shù)據(jù)流量。當(dāng)根端口被阻塞時,預(yù)備端口將成為新的根端口,主要是為了備份根端口;圖中P5為預(yù)備端口。**備份端口:**當(dāng)同一臺交換機的兩個端口互相連接時就會形成一個環(huán)路,此時交換機會將其中一個端口堵塞,備份端口就是被堵塞的端口;從發(fā)送BPDU來看,備份端口就是由于學(xué)習(xí)到本設(shè)備上的其他端口發(fā)送的BPDU而被堵塞的端口;從轉(zhuǎn)發(fā)用戶流量來看,備份端口作為指定端口的備份,提供了一條從根交換機到葉節(jié)點(非根交換機)的備份鏈路;主要是備份指定端口;圖中P7為指定端口。
MSTP中的端口角色除了邊緣端口外,其他端口角色都參與MSTP的計算過程。同一端口在不同的MSTI可以擔(dān)任搞不同的角色。
5.MSTP的端口狀態(tài)
MSTP的端口有以下三種:
Forwarding:在這種狀態(tài)下,端口既轉(zhuǎn)發(fā)用戶流量,又接收/發(fā)送BPDU報文,稱為轉(zhuǎn)發(fā)狀態(tài);
Learning:這是一種過渡狀態(tài)。在Learning狀態(tài)下,交換機會根據(jù)收到的用戶流量,學(xué)習(xí)MAC地址表,但不轉(zhuǎn)發(fā)用戶流量,所以稱為學(xué)習(xí)狀態(tài)。Learning狀態(tài)的端口接收/發(fā)送BPDU報文,但不轉(zhuǎn)發(fā)用戶流量;
Discarding:在這種狀態(tài)下,端口只接收BPDU報文,稱為丟棄狀態(tài);
三、MSTP的保護功能
1.BPDU保護
在交換機上,通常將直接與用戶終端或文件服務(wù)器等非交換機設(shè)備相連的端口配置為邊緣端口,以實現(xiàn)這些端口的快速收斂。正常情況下,這些端口不會收到BPDU。如果有人偽造BPDU惡意操作交換機,當(dāng)這些端口接收到BPDU是,交換機會自動將這些端口設(shè)置為非邊緣端口,并重新進行生成樹計算,從而引起網(wǎng)絡(luò)震蕩。
啟用BPDU保護功能后,如果接口收到BPDU報文,那么該接口將被自動shutdown,從而避免了后續(xù)的非法操作及由此帶來的網(wǎng)絡(luò)震蕩。配置的命令如下:
[SW1]stp bpdu-protection
//啟用BPDU保護
12
2.根保護
由于管理失誤或人為惡意操作,網(wǎng)絡(luò)中的合法交換機的端口可能會接收到優(yōu)先級更高的BPDU,這將使目前網(wǎng)絡(luò)中的根失去根的地位,之后將重新計算生成樹,引起網(wǎng)絡(luò)震蕩,還有可能造成網(wǎng)絡(luò)擁塞。為了防止以上情況的發(fā)生,交換機提供根保護功能。根保護功能維持端口的角色來保護根交換機的地位。配置了根保護功能的端口,在所有實例上的端口角色都保持為指定端口。當(dāng)端口收到優(yōu)先級更高的BPDU時,端口的角色不會變?yōu)榉侵付ǘ丝冢沁M入偵聽狀態(tài),不再轉(zhuǎn)發(fā)報文。經(jīng)過足夠長的時間,如果端口一直沒有再收到優(yōu)先級較高的BPDU,端口則會恢復(fù)原本的正常狀態(tài)。配置命令如下:
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]stp root-protection
//開啟根保護功能
123
3.環(huán)路保護
根端口和其他阻塞端口狀態(tài)會周期性地接收來自上游交換機的BPDU。當(dāng)鏈路擁塞或者單向鏈路故障時,這些端口無法接收來自上游交換機的BPDU,交換機會重新選擇根端口。原先的根端口會轉(zhuǎn)變?yōu)橹付ǘ丝冢茸枞亩丝跁兂赊D(zhuǎn)發(fā)狀態(tài),從而造成交換網(wǎng)絡(luò)中可能產(chǎn)生環(huán)路。環(huán)路保護功能會抑制這種環(huán)路的產(chǎn)生。在啟動了環(huán)路保護功能后,如果根端口收不到來自上游的BPDU,根端口會被設(shè)置進入阻塞狀態(tài);而阻塞端口則會一直保持在阻塞狀態(tài),不再轉(zhuǎn)發(fā)報文,從而不會在網(wǎng)絡(luò)中形成環(huán)路。收到拓補變更的BPDU時,端口才會被激活。配置命令如下:
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]stp loop-protection
//啟用環(huán)路保護功能
123
4.TC保護
交換機在接收到TC-BPDU報文后,會執(zhí)行MAC地址表項和ARP表項的刪除操作。如果有人偽造TC-BPDU報文非法操作交換機,交換機短時間內(nèi)會收到很多TCP-BPDU報文,頻繁的刪除操作會給設(shè)備造成很大的負擔(dān),給網(wǎng)絡(luò)的穩(wěn)定帶來很大的隱患,啟用TC保護功能后,在單位時間內(nèi),MSTP進程收到TC類型BPDU報文的數(shù)量大于配置的閾值,那么MSTP進程只會處理閾值指定的次數(shù)。對于其他超出閾值的TC類型BPDU報文,定時器到期后,MSTP進程只對其統(tǒng)一處理一次,這樣可以避免頻繁的刪除MAC地址表項和ARP表項,從而達到保護交換機的目的。配置命令如下:
[SW1]stp tc-protection threshold 3
//啟用TC保護,并設(shè)置的閾值為3
12
四、MSTP的相關(guān)配置
1.案例環(huán)境如下:
2.案例要求
1.所有交換機啟用MSTP協(xié)議,區(qū)域名稱改為huawei,修改版本級別為1;2.利用MSTP協(xié)議VLAN10和VLAN20的互訪;3.VLAN10的流量走向:PC1→S3→S1→R1;4.VLAN20的流量走向:PC2→S3→S2→R1;
3.案例實施
(1)配置客戶端及路由器IP地址
配置客戶端地址過程過程略!配置路由器地址如下:
[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
//華為設(shè)備接口默認是開啟的,也可以使用undo shutdown開啟一下!
12345
(2)配置VLAN及Trunk
本次實驗中,客戶機與交換機連接口為Access接口,二層交換機與交換機連接口為Trunk接口,二層交換機和路由器連接口為Hybrid接口。常識:路由器不可以識別帶VLAN標(biāo)簽的數(shù)據(jù)幀。
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
//基礎(chǔ)指令這里就不介紹什么意思了!
123456789101112
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
1234567891011
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
12345678910111213
(3)配置MSTP
根據(jù)實驗要求,實驗命令如下:
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的備根
12345678910111213141516171819
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基本相似,這里就不多說了!
12345678910
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
1234567
(4)驗證
在S3上使用一下命令查看效果!
[S3]display stp brief
//查看STP接口角色及狀態(tài)信息
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
123456789101112131415
可以自行驗證效果!PC1和PC2是可以通信的,不管任何交換機之間任意一條線路故障,也不會影響通信(模擬線路故障后,稍微等一下再測試通信)!