一、 MSTP協(xié)議
MSTP是一個共有的生成樹協(xié)議,在實(shí)際生產(chǎn)環(huán)境中得到廣泛的應(yīng)用。
傳統(tǒng)的生成樹只運(yùn)行一個實(shí)例,且收斂速度慢,RSTP再傳統(tǒng)STP基礎(chǔ)上通過改進(jìn)達(dá)到了加速網(wǎng)絡(luò)拓?fù)涫諗康哪康模且廊淮嬖谌毕荨S捎?STP和RSTP再整個局域網(wǎng)中,所有的VLAN共享一個生成樹實(shí)例,因此無法實(shí)現(xiàn)基于VLAN的負(fù)載均衡,網(wǎng)絡(luò)環(huán)境穩(wěn)定狀態(tài)下備份鏈路始終不能轉(zhuǎn)發(fā)數(shù)據(jù)流量,造成帶寬的浪費(fèi)。
MSTP(Multiple Spanning tree Algorithm and protocol)是多生成樹技術(shù),允許在一個交換環(huán)境中運(yùn)行多個生成樹,每個生成樹稱為一個實(shí)例(instance)。實(shí)例時間的生成樹彼此獨(dú)立,如一個實(shí)例下的阻塞接口在另一個實(shí)例上可能是一個轉(zhuǎn)發(fā)端口。和Cisco私有的PVST技術(shù)不同,MSTP允許多個vlan運(yùn)行一個生成樹實(shí)例,相比較Cisco的PVST技術(shù),這是一個優(yōu)勢,因為在Cisco交換機(jī)中,運(yùn)行PVST技術(shù),是一個實(shí)例一棵樹,實(shí)例越多,生成樹越多,交換機(jī)維護(hù)這些生成樹,也是需要消耗硬件資源及網(wǎng)絡(luò)開銷的。大部分情況下,運(yùn)行多個生成樹實(shí)例的好處就在于鏈路的負(fù)載分擔(dān),但是當(dāng)只有一條冗余鏈路時,運(yùn)行兩個生成樹實(shí)例完全可以實(shí)現(xiàn)負(fù)載均衡,同時又能節(jié)約系統(tǒng)開銷。
上圖網(wǎng)絡(luò)環(huán)境中存在兩個生成樹實(shí)例,不同實(shí)例的根網(wǎng)橋再不同物理交換機(jī)上,不但可以實(shí)現(xiàn)負(fù)載分擔(dān),而且不會因為過多的實(shí)例而占用系統(tǒng)資源。
MSTP將環(huán)路網(wǎng)絡(luò)修剪成一個無環(huán)的樹形網(wǎng)絡(luò),避免廣播風(fēng)暴的產(chǎn)生,同時還提供了數(shù)據(jù)轉(zhuǎn)發(fā)的多個冗余路徑,在數(shù)據(jù)轉(zhuǎn)發(fā)過程中實(shí)現(xiàn)VLAN數(shù)據(jù)的負(fù)載均衡。MSTP還兼容STP和RSTP。
MSTP把一個交換網(wǎng)絡(luò)劃分成多個域,每個域內(nèi)形成多棵生成樹,生成樹之間彼此獨(dú)立。每棵生成樹稱為一個多生成樹實(shí)例(Multiple spanning tree instance,MSTI),每個域稱為一個MST域。
MSTP通過設(shè)置VLAN映射表(即VLAN和MSTI的對應(yīng)關(guān)系表),把VLAN和MSTI聯(lián)系起來。每個VLAN只能對應(yīng)一個MSTI,即同一VLAN的數(shù)據(jù)只能在一個MSTI中傳輸,而一個MSTI可以對應(yīng)多和VLAN。如上圖所示,instance 1對應(yīng)vlan 10,instance 2對應(yīng)vlan 20,S1為MSTI1的根交換機(jī),S2為MSTI2的根交換機(jī),instance 1阻塞S2與S3之間鏈路,instance 2阻塞S1與S3之間鏈路,可以充分利用網(wǎng)絡(luò)帶寬,有效避免資源浪費(fèi)。
二、MSTP的基本原理是什么?
在MSTP中,通過把整個互聯(lián)的二層網(wǎng)絡(luò)劃分成若干個域。在域內(nèi),把其中的vlan分成若干組,每組具有相同的拓?fù)浣Y(jié)構(gòu),然后定義若干個MSTI,并把這些生成樹實(shí)例和不同的vlan映射起來。
所謂實(shí)例就是多個vlan的一個集合。通過將多個vlan映射到一個實(shí)例,可以節(jié)省通信開銷和資源占用率。MSTP各個實(shí)例拓?fù)涞挠嬎阆嗷オ?dú)立,在這些實(shí)例上可以實(shí)現(xiàn)負(fù)載均衡。可以把多個相同拓?fù)浣Y(jié)構(gòu)的vlan映射到同一個實(shí)例里,這些vlan在接口上的轉(zhuǎn)發(fā)狀態(tài)取決于接口在對應(yīng)MSTP實(shí)例的狀態(tài)。
如果僅僅是為了防止廣播風(fēng)暴等環(huán)路問題,運(yùn)行CST(CST也是一種生成樹協(xié)議,關(guān)于CST技術(shù)自行查閱相關(guān)資料,這里不敘述了)已經(jīng)足夠。運(yùn)行多實(shí)例的主要目的在于使其負(fù)載分擔(dān)鏈路負(fù)載。所以運(yùn)行的生成樹實(shí)例數(shù)量一般取決于冗余線路的數(shù)量,如果只有一條冗余鏈路,那么最好運(yùn)行兩個實(shí)例。如果有兩條冗余鏈路,那么運(yùn)行三個實(shí)例將是最好的選擇,并盡可能保證每個實(shí)例中流量相差不大。
1、 MSTP的網(wǎng)絡(luò)層次
一個二層交換網(wǎng)絡(luò)可以劃分多個MST域(多生成樹域),每個生成樹域可以劃分多個MSTI,每個實(shí)例中可以映射多個vlan。
如上圖中的MSTP網(wǎng)絡(luò)包含3個MST域,分別是A、B、C。每個MST域中包含一個或多個MSTI。MST域B中包含兩個MSTI,分別是instance 1和instance 2。instance 1和vlan 1-5映射,instance 2和vlan 6-10映射。
2、 MST域
MST域是多生成樹域,由局域網(wǎng)中的多臺交換機(jī)及他們之間的網(wǎng)段構(gòu)成。一個局域網(wǎng)可以存在多個MST域,各MST域之間在物理上直接相連。用戶可以通過MSTP配置命令把多臺交換機(jī)劃分在同一個MST域內(nèi)。MST域中的交換機(jī)都啟用了MSTP,配置了相同的域名及vlan映射表(VLAN映射表是MST域的屬性,它描述了VLAN和MSTI之間的映射關(guān)系)。
3、MSTI
一個MST域內(nèi)可以運(yùn)行多個MSTI,MSTI之間彼此獨(dú)立,MSTI可以與一個或者多個VLAN對應(yīng),但一個VLAN只能與一個MSTI對應(yīng)。
4、端口角色
MSTP中的端口角色主要有根端口,指定端口 ,預(yù)備端口,備份端口和邊緣端口。除邊緣端口外其他端口角色都參與MSTP的計算過程。同一端口在不同的MSTI中可以擔(dān)任不同的角色。
根端口:非根交換機(jī)上到根交換機(jī)開銷最小的端口就是該交換機(jī)的根端口,根端口能夠轉(zhuǎn)發(fā)數(shù)據(jù)流量到根交換機(jī)。下圖中的P3、P4和P8為根端口。
指定端口:該交換機(jī)向下游交換機(jī)發(fā)送BPDU(一種橋協(xié)議數(shù)據(jù)單元,用來交換網(wǎng)橋ID、根路徑成本等信息,用來選舉交換機(jī)端口角色)或者數(shù)據(jù)流量的端口。在下圖中,P1、P2和P6為指定端口(當(dāng)S3優(yōu)先級高于S2時)。
邊緣端口:位于網(wǎng)絡(luò)最邊緣處,不參與生成樹計算,一般連接非交換機(jī)設(shè)備,如終端服務(wù)器、PC、路由器等。
預(yù)備端口:從轉(zhuǎn)發(fā)數(shù)據(jù)流量的角度來看,預(yù)備端口提供了到達(dá)根交換機(jī)的一條備份鏈路,其接口狀態(tài)為阻塞,不轉(zhuǎn)發(fā)數(shù)據(jù)流量,當(dāng)根端口被阻塞時,預(yù)備端口將成為新的根端口。在下圖中P5為預(yù)備端口。
備份端口:當(dāng)同一臺交換機(jī)的兩個端口互相連接時就存在一個環(huán)路(聚合鏈路除外),此時,交換機(jī)就會將其中一個端口阻塞,備份端口就是被阻塞的那個端口。從發(fā)送BPDU來看,備份端口就是由于學(xué)習(xí)到本設(shè)備上其他端口發(fā)送的BPDU而被阻塞的端口。從轉(zhuǎn)發(fā)數(shù)據(jù)流量來看,備份端口作為指定端口的備份,提供了一條從根交換機(jī)到非根交換機(jī)的備份鏈路,在下圖中,P7就是備份端口。
5、MSTP的端口狀態(tài)
Forwarding(轉(zhuǎn)發(fā)狀態(tài)):在這種狀態(tài)下,端口即轉(zhuǎn)發(fā)用戶流量,又接收/發(fā)送BPDU報文。
Learning(學(xué)習(xí)狀態(tài)):這是一種過渡狀態(tài),在Learning狀態(tài)下交換機(jī)會根據(jù)收到的用戶流量,學(xué)習(xí)mac地址表,但不轉(zhuǎn)發(fā)用戶流量,所以稱為學(xué)習(xí)狀態(tài)。Learning狀態(tài)的端口接收/發(fā)送BPDU報文,不轉(zhuǎn)發(fā)用戶流量。
Discarding(阻塞狀態(tài)):在這種狀態(tài)下,端口只接收BPDU報文。
三、 MSTP的保護(hù)功能
在面對一些二層生成樹攻~擊時,下面四個技術(shù)可以增加生成樹的安全性。
1、 BPDU保護(hù)
在交換機(jī)上,通常將直接與用戶終端(如PC機(jī))或服務(wù)器等非交換機(jī)設(shè)備相連的端口配置為邊緣接口,以實(shí)現(xiàn)這些端口的快速收斂,正常情況下,這些端口是不會接收到BPDU。如果有人偽造BPDU惡意攻~擊交換機(jī),當(dāng)這些端口收到BPDU時,交換機(jī)會自動將這些端口設(shè)置為非邊緣端口,并重新進(jìn)行生成樹計算,從而引起網(wǎng)絡(luò)震蕩。
啟用BPDU保護(hù)功能后,如果接口收到BPDU報文,那么該接口將被自動關(guān)閉,從而避免了后續(xù)的攻~擊及由此帶來的網(wǎng)絡(luò)震蕩。
配置命令如下:
[LSW1]stp bpdu-protection #開啟BPDU保護(hù)
2、 根保護(hù)
由于網(wǎng)絡(luò)管理人員失誤或人為惡意攻 擊,網(wǎng)絡(luò)中的合法交換機(jī)端口可能會收到優(yōu)先級更高的BPDU,這將使目前網(wǎng)絡(luò)中的根失去根地位,之后將重新計算生成樹,引起網(wǎng)絡(luò)震蕩,還有可能將網(wǎng)絡(luò)流量從高速鏈路上轉(zhuǎn)移到低俗鏈路中,造成網(wǎng)絡(luò)擁塞。為了防止這種情況出現(xiàn),交換機(jī)提供根保護(hù)功能。根保護(hù)功能通過維持指定端口的角色來保護(hù)根交換機(jī)的地位。配置了根保護(hù)功能的端口,在所有實(shí)例上的端口角色都保持為指定端口。當(dāng)端口接收到優(yōu)先級更高的BPDU時,端口角色不會變?yōu)榉侵付ǘ丝冢沁M(jìn)入偵聽狀態(tài),不再轉(zhuǎn)發(fā)報文。經(jīng)過足夠長的時間,如果端口一直沒有再收到優(yōu)先級較高的BPDU,端口會恢復(fù)到原來的正常狀態(tài)。
配置命令如下:
[LSW1]in g0/0/1 #進(jìn)入指定端口 [LSW1-GigabitEthernet0/0/1]stp root-protection #開啟根保護(hù)
3、 環(huán)路保護(hù)
根端口和其他阻塞端口狀態(tài)會周期性地接收來自上游交換機(jī)(在本博文的第三張配圖中,R1就是R2和R3的上游交換機(jī),R4就是R2和R3的下游交換機(jī))的BPDU。當(dāng)鏈路擁塞或者單向鏈路故障時,這些端口無法接收來自上游交換機(jī)的BPDU,交換機(jī)會重新選擇根端口。原先的根端口會轉(zhuǎn)變?yōu)橹付ǘ丝冢鹊淖枞丝跁w移到轉(zhuǎn)發(fā)狀態(tài),從而造成交換網(wǎng)絡(luò)中可能產(chǎn)生環(huán)路。環(huán)路保護(hù)功能會抑制這種環(huán)路產(chǎn)生。在啟動了環(huán)路保護(hù)功能后,如果根端口收不到來自上游的BPDU,根端口會被設(shè)置進(jìn)入阻塞狀態(tài);而阻塞端口則會一直保持在阻塞狀態(tài),不轉(zhuǎn)發(fā)報文,從而不會在網(wǎng)絡(luò)中形成環(huán)路 。
配置命令如下:
[LSW1]in g0/0/1 #進(jìn)入根端口 [LSW1-GigabitEthernet0/0/1]stp loop-protection #啟用環(huán)路保護(hù)功能
4、 TC保護(hù)
交換機(jī)在接收到TC-BPDU報文后,會執(zhí)行MAC地址表項和ARP表項的刪除操作,如果有人偽造TC-BPDU報文惡意攻~擊交換機(jī),交換機(jī)短時間內(nèi)會收到很多TC-BPDU報文,頻繁的刪除操作會給交換機(jī)造成很大的負(fù)擔(dān),給網(wǎng)絡(luò)的穩(wěn)定性帶來很大的隱患,啟用TC保護(hù)功能后,在固定的時間內(nèi),MSTP進(jìn)程處理TC類型BPDU報文的次數(shù)可配置。如果在固定的時間內(nèi),MSTP進(jìn)程收到TC類型的BPDU報文數(shù)量大于配置的閾值,那么MSTP進(jìn)程只會處理閾值指定的次數(shù)。對于其他超出閾值的TC類型BPDU報文,定時器到期后,MSTP進(jìn)程對其統(tǒng)一處理一次。這樣可以避免頻繁地刪除MAC地址表項和ARP表項,從而達(dá)到保護(hù)交換機(jī)的目的。
配置命令如下:
[LSW1]stp tc-protection threshold 3 #指定閾值為3。
四、 簡單配置MSTP
實(shí)驗環(huán)境:
三臺交換機(jī),兩天終端PC,交換機(jī)開啟MSTP協(xié)議,區(qū)域名稱HUAWEI,修訂版本級別為1。分別建立MSTI1和MSTI2,VLAN10映射到MSTI1,VLAN20映射到MSTI2,MSTI1的根網(wǎng)橋在S1上,MSTI2的根網(wǎng)橋在S2上。VLAN10中的客戶端地址為10.1.10.1,VLAN20中的客戶端地址為10.1.20.1。利用MSTP實(shí)現(xiàn)VLAN10和VLAN20的互訪,并且VLAN10的流量通過路徑S3→S1→R1到達(dá)網(wǎng)關(guān),VLAN20的流量通過路徑S3→S2→R1到達(dá)網(wǎng)關(guān)。
拓?fù)鋱D如下:
推薦步驟:
- 配置客戶端和路由器的IP地址
- 配置VLAN及Trunk
- 配置MSTP
- 驗證
操作步驟:
- 配置客戶端和路由器的IP地址
R1
[R1]INT G0/0/0 #進(jìn)入接口 [R1-GigabitEthernet0/0/0]ip add 10.1.10.254 24 #配置IP地址 [R1-GigabitEthernet0/0/0]int g0/0/1 #進(jìn)入接口 [R1-GigabitEthernet0/0/1]ip add 10.1.20.254 24 #配置IP地址 [R1-GigabitEthernet0/0/1]quit #保存退出
- 配置VLAN及Trunk
S1
[S1]vlan batch 10 20 #批量創(chuàng)建vlan [S1]int g0/0/2 #進(jìn)入接口 [S1-GigabitEthernet0/0/2]port link-type trunk #配置為trunk模式 [S1-GigabitEthernet0/0/2]port trunk allow-pass vlan all #配置承載所以vlan通信 [S1-GigabitEthernet0/0/2]int g0/0/1 #進(jìn)入接口 [S1-GigabitEthernet0/0/1]port link-type trunk #配置為trunk [S1-GigabitEthernet0/0/1]port trunk allow-pass vlan all #配置承載所有vlan通信 [S1-GigabitEthernet0/0/1]int g0/0/3 #進(jìn)入接口 [S1-GigabitEthernet0/0/3]port hybrid untagged vlan 10 #轉(zhuǎn)發(fā)數(shù)據(jù)移除vlan 10的標(biāo)識 [S1-GigabitEthernet0/0/3]port hybrid pvid vlan 10 #配置PVID為vlan 10 [S1-GigabitEthernet0/0/3]quit #保存退出
S2
[S2]vlan batch 10 20 [S2]int g0/0/2 [S2-GigabitEthernet0/0/2]port link-type trunk [S2-GigabitEthernet0/0/2]port trunk allow-pass vlan all [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 hybrid [S2-GigabitEthernet0/0/3]port hybrid untagged vlan 20 #轉(zhuǎn)發(fā)數(shù)據(jù)移除vlan 20的標(biāo)識 [S2-GigabitEthernet0/0/3]port hybrid pvid vlan 20 #配置PVID為vlan 20 [S2-GigabitEthernet0/0/3]quit
S3
[S3]vlan batch 10 20 #批量創(chuàng)建vlan [S3]int eth0/0/3 #進(jìn)入接口 [S3-Ethernet0/0/3]port link-type access #接口配置為access模式 [S3-Ethernet0/0/3]port default vlan 10 #vlan 10加入接口 [S3-Ethernet0/0/3]int eth 0/0/4 #進(jìn)入接口 [S3-Ethernet0/0/4]port link-type access #接口配置為access模式 [S3-Ethernet0/0/4]port default vlan 20 #vlan 20加入接口 [S3-Ethernet0/0/4] int eth0/0/1 #進(jìn)入接口 [S3-Ethernet0/0/1]port link-type trunk #接口配置為trunk模式 [S3-Ethernet0/0/1]port trunk allow-pass vlan all #承載所以vlan通信 [S3-Ethernet0/0/1]int e0/0/2 #進(jìn)入接口 [S3-Ethernet0/0/2]port link-type trunk #接口配置為trunk模式 [S3-Ethernet0/0/2]port trunk allow-pass vlan all #承載所有vlan通信 [S3-Ethernet0/0/2]quit #保存并退出
- 配置MSTP
S1
[S1]stp mode mstp #開啟生成樹(將交換機(jī)配置成MSTP模式) [S1]stp region-configuration #進(jìn)入到stp配置模式 [S1-mst-region]region-name HUAWEI #配置stp域名 [S1-mst-region]revision-level 1 #配置stp版本為1 [S1-mst-region]instance 1 vlan 10 #將vlan 10添加到stp實(shí)例1中 [S1-mst-region]instance 2 vlan 20 #將vlan 20添加到stp實(shí)例2中 [S1-mst-region]active region-configuration #激活生成樹實(shí)例 (必須激活,否則無效) [S1-mst-region]quit #保存并退出 [S1]stp instance 1 root primary #配置為實(shí)例1的根網(wǎng)橋 [S1]stp instance 2 root secondary #配置為實(shí)例2的備份根網(wǎng)橋
S2
[S2]stp mode mstp #開啟生成樹(將交換機(jī)配置成MSTP模式) [S2]stp region-configuration #進(jìn)入到stp配置模式 [S2-mst-region]region-name HUAWEI #配置stp域名 [S2-mst-region]revision-level 1 #配置stp版本為1 [S2-mst-region]instance 1 vlan 10 #將vlan 10添加到stp實(shí)例1中 [S2-mst-region]instance 2 vlan 20 #將vlan 20添加到stp實(shí)例2中 [S2-mst-region]active region-configuration #激活生成樹實(shí)例 (必須激活,否則無效) [S2-mst-region]quit [S2]stp instance 1 root secondary #配置為實(shí)例1的備份根網(wǎng)橋 [S2]stp instance 2 root primary #配置為實(shí)例2的根網(wǎng)橋
S3
[S3]stp mode mstp #開啟生成樹(將交換機(jī)配置成MSTP模式) [S3]stp region-configuration #進(jìn)入到stp配置模式 [S3-mst-region]region-name HUAWEI #配置stp域名 [S3-mst-region]revision-level 1 #配置stp版本為1 [S3-mst-region]instance 1 vlan 10 #將vlan 10添加到stp實(shí)例1中 [S3-mst-region]instance 2 vlan 20 #將vlan 20添加到stp實(shí)例2中 [S3-mst-region]active region-configuration #激活生成樹實(shí)例 (必須激活,否則無效) [S3-mst-region]quit
- 驗證
驗證中可以看出,instance 1中的Ethernet0/0/2和instance 2中的Ethernet0/0/1處于阻塞狀態(tài),同時,兩個實(shí)例之間互相獨(dú)立,彼此不受影響。