一、 MSTP產(chǎn)生背景
IEEE 于2002年發(fā)布的802.1S標(biāo)準(zhǔn)定義了MSTP
RSTP和STP 缺點(diǎn):
同一局域網(wǎng)內(nèi)所有的vlan共享一個(gè)生成樹,無法在vlan間實(shí)現(xiàn)數(shù)據(jù)流量的負(fù)載均衡;
鏈路利用率低,被阻塞的冗余鏈路不承載任何流量,造成了帶寬的浪費(fèi),還可能造成部分vlan報(bào)文無法轉(zhuǎn)發(fā)。
MSTP:MSTP兼容STP和RSTP,既可以快速收斂,又能使不同VLAN的流量沿各自的路徑轉(zhuǎn)發(fā),從而為冗余鏈路提供了更好的負(fù)載分擔(dān)機(jī)制。
二、 MSTP基本概念
1.MSTP網(wǎng)絡(luò)層次結(jié)構(gòu)
MSTP不僅涉及多個(gè)MSTI(生成樹實(shí)例),而且還可劃分多個(gè)MST域(MST Region,也稱為MST區(qū)域)??偟膩碚f,一個(gè)MSTP網(wǎng)絡(luò)可以包含一個(gè)或多個(gè)MST域,而每個(gè)MST域中又可包含一個(gè)或多個(gè)MSTI。組成每個(gè)MSTI的是其中運(yùn)行STP/RSTP/MSTP的交換設(shè)備,是這些交換設(shè)備經(jīng)MSTP協(xié)議計(jì)算后形成的樹狀網(wǎng)絡(luò)。
2.MSTP域
同一MSTP域設(shè)備的特點(diǎn)
都啟動(dòng)MSTP
具有相同的域名
具有相同的VLAN到生成樹實(shí)例映射配置
具有相同的MSTP修訂級(jí)別配置
一個(gè)MSTP網(wǎng)絡(luò)可以存在多個(gè)MST域,各MST域之間在物理上直接或間接相連。用戶可以通過MSTP配置命令把多臺(tái)交換設(shè)備劃分在同一個(gè)MST域內(nèi)。
3. MSTI 多生成樹實(shí)例
MSTI是指MST域內(nèi)的生成樹。一個(gè)MST域內(nèi)可以通過MSTP生成多棵生成樹,各棵生成樹之間彼此獨(dú)立。一個(gè)MSTI可以與一個(gè)或者多個(gè)VLAN對(duì)應(yīng),但一個(gè)VLAN只能與-個(gè)MSTI對(duì)應(yīng)。
4.VLAN映射表
VLAN映射表是MST域的屬性,描述了VLAN和MST域中對(duì)應(yīng)MSTI之間的映射關(guān)系。也就是把那些VLAN分別加入哪個(gè)MSTI中。
5.IST內(nèi)部生成樹
IST是各個(gè)MST域內(nèi)部的一棵生成樹,是僅針對(duì)具體的MST域來計(jì)算的。但它是一個(gè)特殊的MSTI,其MSTIID為0,即IST通常稱為MSTI0。每個(gè)MST域中只有一個(gè)IST,包括對(duì)應(yīng)MST域中所有互聯(lián)的交換機(jī)。
6. CST公共生成樹
CST:是連接整個(gè)MSTP網(wǎng)絡(luò)內(nèi)所有MST域的一棵單生成樹,是針對(duì)整個(gè)MSTP網(wǎng)絡(luò)來計(jì)算的,每個(gè)網(wǎng)絡(luò)中只有一個(gè)CST,每個(gè)MST域中的IST是整個(gè)MSTP網(wǎng)絡(luò)CIST在對(duì)應(yīng)MST與中的一個(gè)片段
7.CIST公共和內(nèi)部生成樹
CIST是通過STP或RSTP協(xié)議計(jì)算生成的,連接整個(gè)MSTP網(wǎng)絡(luò)內(nèi)所有交換機(jī)的單生成樹,由IST和CST共同構(gòu)成。這里要注意了,上面介紹的CST是連接交換網(wǎng)絡(luò)中所有MST域的單生成樹,而此處的CIST則是連接交換網(wǎng)絡(luò)內(nèi)的所有交換機(jī)的單生成樹。即每個(gè)MSTP網(wǎng)絡(luò)中也只有一個(gè)CIST。交換網(wǎng)絡(luò)中的所有MST域的IST和CST一起構(gòu)成一棵完整的生成樹,也就是這里的CIST。
8.SST
構(gòu)成SST(生成樹)有兩種情況
運(yùn)行STP或RSTP生成樹協(xié)議的交換機(jī)只屬于一個(gè)生成樹
MST與中只有一個(gè)交換機(jī),這個(gè)交換機(jī)構(gòu)成了生成樹,如上圖的B0區(qū)域
9.總根
總根是CIST生成樹的根橋,通常是交換網(wǎng)絡(luò)中最上層的交換機(jī),上圖中的總根是A0域中的IST生成樹的根,一個(gè)MSTP網(wǎng)絡(luò)只有一個(gè)總根
10. 根域
在MSTP網(wǎng)絡(luò)中,每MST域都有一個(gè)特殊的IST實(shí)例,以及許多MSTI實(shí)例,所以域根(Regional Root)又分為IST域根和MSTI域根。
各個(gè)MST域中的IST生成樹中舉例CIST總根舉例最近的交換機(jī)是IST域根,總根所在MST域的IST域根就是總根。
MSTI的域根是對(duì)應(yīng)生成樹實(shí)例的樹根,域中不同的MSTI有各自的域根。而且,MST域內(nèi)各棵生成樹的拓?fù)洳煌蚋部赡懿煌?/p>
三、MSTP端口角色
MSTP端口角色相比RSTP中多一個(gè)主端口(master port ),根端口、指定端口、Alternate 端口、Backup端口和邊緣端口這五種主要端口角色的作用與RSTP協(xié)議中對(duì)應(yīng)的端口角色定義完全相同。
與RSTP相同,在MSTP中除了邊緣端口外,其他端口都參與MSTP的計(jì)算過程,同一端口在不同生成樹中擔(dān)任不同角色
Master端口
Master端口是MST域和總根相連的所有路徑中最短路徑上的端口,它是交換機(jī)上連接MST域到總根的端口。Master端口是域中的報(bào)文去往總根的必經(jīng)之路。Master端口是特殊域邊緣端口,Master 端口在CST/CIST上的角色是根端口,在其他各實(shí)例上的角色都是Master。在圖中,交換設(shè)備S1、S2、S3、S4和它們之間的鏈路構(gòu)成一個(gè)MST域,SI交換設(shè)備的端口AP1在域內(nèi)的所有端口中到總根的路徑開銷最小,所以API為Master端口。
域邊緣端口
域邊緣端口是指位于MST域的邊緣并連接其他MST域或SST的端口。進(jìn)行MSTP計(jì)算時(shí),域邊緣端口在MSTI上的角色和CIST實(shí)例的角色保持一致。即如果邊緣端口在CIST實(shí)例上的角色是Master端口(連接域到總根的端口),則它在域內(nèi)所有MSTI上的角色也是Master端口。在圖中,AP1是域邊緣端口,它在CIST上的角色是Master端口,則API在MST域內(nèi)所有生成樹實(shí)例上的角色都是Master端口。
四、MSTP的端口狀態(tài)與收斂機(jī)制
端口角色端口狀態(tài) | 根端口/Master端口 | 指定端口 | 域邊緣端口 | Aiternate端口 | Backup端口 |
---|---|---|---|---|---|
Forwarding | √ | √ | √ | - | - |
Leaning | √ | √ | √ | - | - |
Discarding | √ | √ | √ | √ | √ |
MSTP的收斂機(jī)制與RSTP是完全一樣的。
五、 MSTP 拓?fù)溆?jì)算原理
MSTP將整個(gè)層網(wǎng)絡(luò)劃分為多個(gè)MST域,把每個(gè)域視為一個(gè)節(jié)點(diǎn)。各個(gè)MST域之間按照STP或者RSTP協(xié)議算法進(jìn)行計(jì)算并生成CST(是單生成樹);在一個(gè)MST域內(nèi)則是通過MSTP協(xié)議算法計(jì)算生成若干個(gè)MSTI(是多生成樹),其中實(shí)例0被稱為IST。MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成樹橋協(xié)議數(shù)據(jù)單元)作為生成樹計(jì)算的依據(jù)。MSTBPDU報(bào)文用來計(jì)算生成樹的拓?fù)?、維護(hù)網(wǎng)絡(luò)拓?fù)湟约皞鬟_(dá)拓?fù)渥兓涗洝?/p>
5.1 MSTP 向量優(yōu)先級(jí)
優(yōu)先級(jí)向量名 | 說明 |
---|---|
根橋ID | 根橋ID用于選擇CIST中的根橋。在BPDU中對(duì)應(yīng)的網(wǎng)橋ID,計(jì)算公式為:Priority(l6bits)+MAC(48bits) |
外部路徑開銷(ERPC) | 從MST域根到達(dá)總根的路徑開銷。MST域內(nèi)所有交換機(jī)上保存的外部路徑開銷相同。若CIST根橋在域中,則域內(nèi)所有交換機(jī)上保存的外部路徑開銷為0 |
域根ID | 也就是通常所說的MSTI樹根,域根ID用于選擇MSTI中的樹根。它也是通過網(wǎng)橋ID來選舉的,計(jì)算公式為:Priority(l6bits)+ MAC(48bits) |
內(nèi)部路徑開銷(IRPC) | 本交換機(jī)到達(dá)域根橋的路徑開銷。域邊緣端口保存的內(nèi)部路徑開銷值大于(優(yōu)先級(jí)越低)非域邊緣端口保存的內(nèi)部路徑開銷 |
指定橋 | CIST或MSTI實(shí)例的指定橋是本交換機(jī)通往域根的最鄰近的上游交換機(jī)。如果本交換機(jī)就是總根或域根,則指定橋?yàn)樽约?/td> |
指定端口 | 指定橋上與本交換機(jī)根端口相連的端口就是指定端口。其端口ID(Port ID)=Priority(8位)+端口號(hào)(8位)。 |
接收端口 | 端口優(yōu)先級(jí)必須是16的整數(shù)倍接收到BPDU報(bào)文的端口。其端口ID(Port ID)= Priority(8位)+端口號(hào)(8位)。端口優(yōu)先級(jí)必須是16的整數(shù)倍 |
?
最小向量擁有最高優(yōu)先級(jí):比較規(guī)則如下
首先,比較根橋ID。
如果根橋ID相同,再比較外部路徑開銷。
如果外部路徑開銷還相同,再比較域根ID.
如果域根ID仍然相同,再比較內(nèi)部路徑開銷。
如果內(nèi)部路徑仍然相同,再比較指定橋ID。
如果指定橋ID仍然相同,再比較指定端口ID。
如果指定端口ID還相同,再比較接收端口ID。
5.2 CIST 的計(jì)算
經(jīng)過配置消息交換比較后,首先在整個(gè)網(wǎng)絡(luò)中選擇一個(gè)優(yōu)先級(jí)最高的交換機(jī)作為CIST的樹根,然后在每個(gè)MST域內(nèi)通過MSTP協(xié)議算法計(jì)算生成IST;同時(shí)MSTP將每個(gè)MST域作為單臺(tái)交換機(jī)對(duì)待,通過STP或者RSTP協(xié)議算法在MST域間計(jì)算生成CST。
CST和IST構(gòu)成了整個(gè)交換機(jī)網(wǎng)絡(luò)的CIST。
5.3 MSTI計(jì)算
在MST域內(nèi),MSTP根據(jù)VLAN和生成樹實(shí)例的映射關(guān)系,針對(duì)不同的VLAN生成不同的生成樹實(shí)例
特點(diǎn):
每個(gè)MSTI獨(dú)立計(jì)算自己的生成樹,互不干擾。
每個(gè)MSTI的生成樹計(jì)算方法與RSTP基本相同。
每個(gè)MSTI的生成樹可以有不同的根,不同的拓?fù)洹?/p>
每個(gè)MSTI在自己的生成樹內(nèi)發(fā)送BPDU。
每個(gè)MSTI的拓?fù)渫ㄟ^命令配置決定(不是自動(dòng)生成的)。
每個(gè)端口在不同MSTI上的生成樹參數(shù)可以不同。
每個(gè)端口在不同MSTI上的角色、狀態(tài)可以不同。
5.4 MSTI 生成樹算法實(shí)現(xiàn)
在一開始時(shí),每臺(tái)交換機(jī)的各個(gè)端口會(huì)生成以自身交換機(jī)為根橋的配置消息,其中根路徑開銷為0,指定橋ID為自身交換機(jī)ID,指定端口為本端口。每臺(tái)交換機(jī)都向外:發(fā)送自己的配置消息,并在接收到其他配置消息后進(jìn)行如下處理。
(1)當(dāng)端口收到比自身的配置消息優(yōu)先級(jí)低(優(yōu)先級(jí)的比較就是根據(jù)前面介紹的向量優(yōu)先級(jí)比較規(guī)則進(jìn)行的)的配置消息時(shí),交換機(jī)把接收到的配置消息丟棄,對(duì)該端口的配置消息不作任何處理。
(2)當(dāng)端口收到比本端口配置消息優(yōu)先級(jí)高的配置消息時(shí),交換機(jī)把接收到的配置消息中的內(nèi)容替換該端口的配置消息中的內(nèi)容:然后交換機(jī)將該端的配置消 息和交換機(jī)上的其他端口的配置消息進(jìn)行比較,選出最優(yōu)的配置消息。
計(jì)算生成樹的步驟如下:
選舉根橋。此步是通過比較所有交換機(jī)發(fā)送的配置消息的樹根ID,樹根ID值最小的交換機(jī)為CIST根橋,或者M(jìn)ST域根橋。
選舉非根橋上的根端口。每臺(tái)非根橋把接收到最優(yōu)配置消息的那個(gè)端口定為自身交換機(jī)的根端口。
選舉指定端口。在這一步又分為以下兩個(gè)子步驟:
首先,交換機(jī)根據(jù)根端口的配置消息和根端口的路徑開銷,為每個(gè)端口計(jì)算一個(gè)標(biāo)準(zhǔn)的指定端口配置消息:用樹根ID替換為根端口配置消息中的樹根ID;用根路徑開銷替換為根端口配置消息中的根路徑開銷加上根端口的路徑開銷:用指定橋ID替換為自身交換機(jī)的ID:用指定端口ID替換為自身端口ID。
然后,交換機(jī)對(duì)以上規(guī)則計(jì)算出來的配置消息和對(duì)應(yīng)端口上原來的配置消息進(jìn)行比較。如果端口上原來的配置消息更優(yōu),則交換機(jī)將此端口阻塞,端口的配置消息不變,并且此端口將不再轉(zhuǎn)發(fā)數(shù)據(jù),只接收配置消息(相當(dāng)于根端口);如果通過以上替換計(jì)算出來的配置消息比端口上原來的配置消息更優(yōu),則交換機(jī)就將該端口設(shè)置為指定端口,端口上的配置消息替換成通過以上替換計(jì)算出來的配置消息,并周期性向外發(fā)送。
在MSTI生成樹拓?fù)涫諗亢?,無論非根橋是否接收到根橋傳來的信息都按照Hello定時(shí)器周期性發(fā)送BPDU。如果一一個(gè)端口連續(xù)3個(gè)Hello時(shí)間(這個(gè)是缺省的設(shè)置)接收不到指定橋(也就是它所連接的上-級(jí)交換機(jī))送來的BPDU,那么該交換機(jī)認(rèn)為與此鄰居之間的鏈路失敗。
5.5 MSTP 對(duì)拓?fù)渥兓奶幚?/p>
在MSTP中檢測(cè)拓?fù)涫欠癜l(fā)生了變化的標(biāo)準(zhǔn)是根據(jù)–個(gè)非邊緣端口的狀態(tài)是否遷移到Forwarding狀態(tài),如果是遷移到了Forwarding狀態(tài),則會(huì)發(fā)生拓?fù)渥兓?br /> 交換機(jī)一旦檢測(cè)到拓?fù)浒l(fā)生變化,進(jìn)行如下處理。
為本交換機(jī)的所有非邊緣指定端口啟動(dòng)一個(gè)TC While Timer(該計(jì)時(shí)器值是Hello Time的兩倍),并在這個(gè)時(shí)間內(nèi),清空這些端口上學(xué)來的MAC地址。如果是根端口上有狀態(tài)變化,則啟動(dòng)根端口。
發(fā)生狀態(tài)變化的這些端口向外發(fā)送TC BPDU,其中的TC置位,直到TC While Timer超時(shí)。根端口總是要發(fā)送這種TC BPDU。
其他交換機(jī)接收到TC BPDU,進(jìn)行如F處理。
清空所有端口學(xué)來的MAC地址,收到TC BPDU的端口除外。
為所有自己的非邊緣指定端口和自己的根端口啟動(dòng)TC While計(jì)時(shí)器,重復(fù)上述過程。
六、 MSTP BPDU 報(bào)文
4中BPDU 的比較
?
名稱 | 版本 | 類型 |
---|---|---|
配置BPDU | 0 | 0X00 |
RST BPDU | 2 | 0X02 |
MST BPDU | 3 | 0X02 |
TCN BPDU | 0 | 0X80 |
MST BPDU 報(bào)文結(jié)構(gòu)如下圖,無論是域內(nèi)的MST BPDU 還是域間的 MST BPDU,前36字節(jié)和 RST bpdu是相同的,從第37 字節(jié)開始是 MSTP專有字段
?
MSTP BPDU 字段說明
?
MSTP BPDU報(bào)文格式可配置功能目前MSTP的BPDU報(bào)文存在兩種格式。
dotls:IEEE802.1s規(guī)定的報(bào)文格式。
legacy:華為私有協(xié)議報(bào)文格式。
華為交換機(jī)支持自動(dòng)識(shí)別報(bào)文格式的功能,支持自動(dòng)識(shí)別模式
[Huawei-GigabitEthernet0/0/1]stp?compliance?? ??auto????Protocol?type?is?auto ??dot1s???Protocol?type?is?802.1s ??legacy??Protocol?type?is?legacy 編輯:黃飛
?
評(píng)論