STP(Spanning Tree Protocol,生成樹協(xié)議)是根據(jù)IEEE 802.1D 標(biāo)準(zhǔn)建立的,用于在局域網(wǎng)中消除數(shù)據(jù)鏈路層物理環(huán)路的協(xié)議。運(yùn)行該協(xié)議的設(shè)備通過彼此交互信息發(fā)現(xiàn)網(wǎng)絡(luò)中的環(huán)路,并有選擇的對(duì)某些端口進(jìn)行阻塞,最終將環(huán)路網(wǎng)絡(luò)結(jié)構(gòu)修剪成無環(huán)路的樹型網(wǎng)絡(luò)結(jié)構(gòu),從而防止報(bào)文在環(huán)路網(wǎng)絡(luò)中不斷增生和無限循環(huán),避免設(shè)備由于重復(fù)接收相同的報(bào)文所造成的報(bào)文處理能力下降的問題發(fā)生。
STP采用的協(xié)議報(bào)文是BPDU(Bridge Protocol Data Unit,橋協(xié)議數(shù)據(jù)單元),也稱為配置消息,BPDU中包含了足夠的信息來保證設(shè)備完成生成樹的計(jì)算過程。STP即是通過在設(shè)備之間傳遞BPDU來確定網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。
BPDU格式及字段說明
要實(shí)現(xiàn)生成樹的功能,交換機(jī)之間傳遞BPDU報(bào)文實(shí)現(xiàn)信息交互,所有支持STP協(xié)議的交換機(jī)都會(huì)接收并處理收到的報(bào)文。該報(bào)文在數(shù)據(jù)區(qū)里攜帶了用于生成樹計(jì)算的所有有用信息。
標(biāo)準(zhǔn)生成樹的BPDU幀格式及字段說明:
Protocol identifier: 協(xié)議標(biāo)識(shí)
Version: 協(xié)議版本
Message type: BPDU類型
Flag: 標(biāo)志位
Root ID: 根橋ID,由兩字節(jié)的優(yōu)先級(jí)和6字節(jié)MAC地址構(gòu)成
Root path cost: 根路徑開銷
Bridge ID: 橋ID,表示發(fā)送BPDU的橋的ID,由2字節(jié)優(yōu)先級(jí)和6字節(jié)MAC地址構(gòu)成
Port ID: 端口ID,標(biāo)識(shí)發(fā)出BPDU的端口
Message age: BPDU生存時(shí)間
Maximum age: 當(dāng)前BPDU的老化時(shí)間,即端口保存BPDU的最長時(shí)間
Hello time: 根橋發(fā)送BPDU的周期
Forward delay: 表示在拓?fù)涓淖兒?,交換機(jī)在發(fā)送數(shù)據(jù)包前維持在監(jiān)聽和學(xué)習(xí)狀態(tài)的時(shí)間
STP的基本概念
橋ID(Bridge Identifier):橋ID是橋的優(yōu)先級(jí)和其MAC地址的綜合數(shù)值,其中橋優(yōu)先級(jí)是一個(gè)可以設(shè)定的參數(shù)。橋ID越低,則橋的優(yōu)先級(jí)越高,這樣可以增加其成為根橋的可能性。
根橋(Root Bridge):具有最小橋ID的交換機(jī)是根橋。請(qǐng)將環(huán)路中所有交換機(jī)當(dāng)中最好的一臺(tái)設(shè)置為根橋交換機(jī),以保證能夠提供最好的網(wǎng)絡(luò)性能和可靠性。
指定橋(Designated Bridge):在每個(gè)網(wǎng)段中,到根橋的路徑開銷最低的橋?qū)⒊蔀橹付颍瑪?shù)據(jù)包將通過它轉(zhuǎn)發(fā)到該網(wǎng)段。當(dāng)所有的交換機(jī)具有相同的根路徑開銷時(shí),具有最低的橋ID的交換機(jī)會(huì)被選為指定橋。
根路徑開銷(Root Path Cost):一臺(tái)交換機(jī)的根路徑開銷是根端口的路徑開銷與數(shù)據(jù)包經(jīng)過的所有交換機(jī)的根路徑開銷之和。根橋的根路徑開銷是零。
橋優(yōu)先級(jí)(Bridge Priority):是一個(gè)用戶可以設(shè)定的參數(shù),數(shù)值范圍從0到32768。設(shè)定的值越小,優(yōu)先級(jí)越高。交換機(jī)的橋優(yōu)先級(jí)越高,才越有可能成為根橋。
根端口(Root Port):非根橋的交換機(jī)上離根橋最近的端口,負(fù)責(zé)與根橋進(jìn)行通信,這個(gè)端口到根橋的路徑開銷最低。當(dāng)多個(gè)端口具有相同的到根橋的路徑開銷時(shí),具有最高端口優(yōu)先級(jí)的端口會(huì)成為根端口。
指定端口(Designated Port):指定橋上向本交換機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)的端口。
端口優(yōu)先級(jí)(Port Priority):數(shù)值范圍從0到255,值越小,端口的優(yōu)先級(jí)就越高。端口的優(yōu)先級(jí)越高,才越有可能成為根端口。
路徑開銷(Path Cost):STP協(xié)議用于選擇鏈路的參考值。STP協(xié)議通過計(jì)算路徑開銷,選擇較為“強(qiáng)壯”的鏈路,阻塞多余的鏈路,將網(wǎng)絡(luò)修剪成無環(huán)路的樹型網(wǎng)絡(luò)結(jié)構(gòu)。
生成樹基本概念的組網(wǎng)示意圖如圖所示。交換機(jī)A、B、C三者順次相連,經(jīng)STP計(jì)算過后,交換機(jī)A被選為根橋,端口2和端口6之間的線路被阻塞。
橋:交換機(jī)A為整個(gè)網(wǎng)絡(luò)的根橋;交換機(jī)B是交換機(jī)C的指定橋。
端口:端口3和端口5分別為交換機(jī)B和交換機(jī)C的根端口;端口1和端口4分別為交換機(jī)A和交換機(jī)B的指定端口;端口6為交換機(jī)C的阻塞端口。
STP定時(shí)器
聯(lián)絡(luò)時(shí)間(Hello Time):
數(shù)值范圍從1秒到10秒。是指根橋向其它所有交換機(jī)發(fā)出BPDU數(shù)據(jù)包的時(shí)間間隔,用于交換機(jī)檢測鏈路是否存在故障。
老化時(shí)間(Max. Age):
數(shù)值范圍從6秒到40秒。如果在超出老化時(shí)間之后,還沒有收到根橋發(fā)出的BPDU數(shù)據(jù)包,那么交換機(jī)將向其它所有的交換機(jī)發(fā)出BPDU數(shù)據(jù)包,重新計(jì)算生成樹。
傳輸時(shí)延(Forward Delay):
數(shù)值范圍從4秒到30秒。是指交換機(jī)的端口狀態(tài)遷移所用的時(shí)間。
當(dāng)網(wǎng)絡(luò)故障引發(fā)生成樹重新計(jì)算時(shí),生成樹的結(jié)構(gòu)將發(fā)生相應(yīng)的變化。但是重新計(jì)算得到的新配置消息無法立刻傳遍整個(gè)網(wǎng)絡(luò),如果端口狀態(tài)立刻遷移的話,可能會(huì)產(chǎn)生暫時(shí)性的環(huán)路。為此,生成樹協(xié)議采用了一種狀態(tài)遷移的機(jī)制,新的根端口和指定端口開始數(shù)據(jù)轉(zhuǎn)發(fā)之前要經(jīng)過2倍的傳輸時(shí)延,這個(gè)延時(shí)保證了新的配置消息已經(jīng)傳遍整個(gè)網(wǎng)絡(luò)。
STP模式的BPDU的優(yōu)先級(jí)比較原則
假定有兩條BPDU X和Y,則:
如果X的根橋ID小于Y的根橋 ID,則X優(yōu)于Y
如果X和Y的根橋ID相同,但X的根路徑開銷小于Y,則X優(yōu)于Y
如果X和Y的根橋ID和根路徑開銷相同,但X的橋ID小于Y,則X優(yōu)于Y
如果X和Y的根橋ID、根路徑開銷和橋ID相同,但X的端口ID小于Y,則X優(yōu)于Y
STP的計(jì)算過程
初始狀態(tài):每臺(tái)交換機(jī)在初始時(shí)會(huì)生成以自己為根橋的BPDU,根路徑開銷為0,指定橋ID為自身設(shè)備ID,指定端口為本端口。
最優(yōu)BPDU的選擇:每臺(tái)交換機(jī)都向外發(fā)送自己的BPDU,同時(shí)也會(huì)收到其它交換機(jī)發(fā)送的BPDU。比較過程如下表所述:
RSTP
RSTP(Rapid Spanning Tree Protocol,快速生成樹協(xié)議)是優(yōu)化版的STP,他大大縮短了端口進(jìn)入轉(zhuǎn)發(fā)狀態(tài)的延時(shí),從而縮短了網(wǎng)絡(luò)最終達(dá)到拓?fù)浞€(wěn)定所需要的時(shí)間。RSTP的端口狀態(tài)實(shí)現(xiàn)快速遷移的前提如下:
根端口的端口狀態(tài)快速遷移的條件是:本設(shè)備上舊的根端口已經(jīng)停止轉(zhuǎn)發(fā)數(shù)據(jù),而且上游指定端口已經(jīng)開始轉(zhuǎn)發(fā)數(shù)據(jù)。
指定端口的端口狀態(tài)快速遷移的條件是:指定端口是邊緣端口或者指定端口與點(diǎn)對(duì)點(diǎn)鏈路相連。如果指定端口是邊緣端口,則指定端口可以直接進(jìn)入轉(zhuǎn)發(fā)狀態(tài);如果指定端口連接著點(diǎn)對(duì)點(diǎn)鏈路,則設(shè)備可以通過與下游設(shè)備握手,得到響應(yīng)后即刻進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
RSTP的基本概念
邊緣端口(Edge Port):直接與終端相連而不是與其它交換機(jī)相連的端口。
點(diǎn)對(duì)點(diǎn)鏈路:是兩臺(tái)交換機(jī)之間直接連接的鏈路。
MSTP
MSTP(Multiple Spanning Tree Protocol,多生成樹協(xié)議)是在STP和RSTP的基礎(chǔ)上,根據(jù)IEEE協(xié)會(huì)制定的802.1S標(biāo)準(zhǔn)建立的,他既可以快速收斂,也能使不同VLAN的流量沿各自的路徑轉(zhuǎn)發(fā),從而為冗余鏈路提供了更好的負(fù)載分擔(dān)機(jī)制。
MSTP的特點(diǎn)如下:
MSTP通過VLAN-實(shí)例映射表,把VLAN和生成樹聯(lián)系起來,將多個(gè)VLAN捆綁到一個(gè)實(shí)例中,并以實(shí)例為基礎(chǔ)實(shí)現(xiàn)負(fù)載均衡。
MSTP把一個(gè)生成樹網(wǎng)絡(luò)劃分成多個(gè)域,每個(gè)域內(nèi)形成多棵內(nèi)部生成樹,各個(gè)生成樹之間彼此獨(dú)立。
MSTP在數(shù)據(jù)轉(zhuǎn)發(fā)過程中實(shí)現(xiàn)VLAN 數(shù)據(jù)的負(fù)載分擔(dān)。
MSTP 兼容STP 和RSTP。
MSTP的基本概念
MST域(Multiple Spanning Tree Region,多生成樹域):由具有相同域配置和相同Vlan-實(shí)例映射關(guān)系的交換機(jī)所構(gòu)成。
IST(Internal Spanning Tree,內(nèi)部生成樹):MST域內(nèi)的一棵生成樹。
CST(Common Spanning Tree,公共生成樹):連接網(wǎng)絡(luò)內(nèi)所有MST域的單生成樹。
CIST(Common and Internal Spanning Tree,公共和內(nèi)部生成樹):連接網(wǎng)絡(luò)內(nèi)所有設(shè)備的單生成樹,由IST和CST共同構(gòu)成。
MSTP基本概念的組網(wǎng)圖如圖所示。
MSTP的基本原理
MSTP將整個(gè)網(wǎng)絡(luò)劃分為多個(gè)MST域,各個(gè)域之間通過計(jì)算生成CST;域內(nèi)則通過計(jì)算生成多棵生成樹,每棵生成樹都被稱為是一個(gè)多生成樹實(shí)例。MSTP同STP一樣,使用BPDU進(jìn)行生成樹的計(jì)算,只是BPDU中攜帶的是MSTP的配置信息。
MSTP模式的BPDU優(yōu)先級(jí)比較原則
假定有兩條MSTP的BPDU X和Y,則:
如果X的總根ID小于Y的總根ID,則X優(yōu)于Y
如果X和Y的總根ID相同,但X的外部路徑開銷小于Y,則X優(yōu)于Y
如果X和Y的總根ID和外部路徑開銷相同,但X的域根ID小于Y的域根ID,則X優(yōu)于Y
如果X和Y的總根ID、外部路徑開銷和域根ID相同,但X的內(nèi)部路徑開銷小于Y,則X優(yōu)于Y
如果X和Y的總根ID、外部路徑開銷、域根ID和內(nèi)部路徑開銷相同,但X的橋ID小于Y,則X優(yōu)于Y
如果X和Y的總根ID、外部路徑開銷、域根ID、內(nèi)部路徑開銷和橋ID均相同,但X的端口ID小于Y,則X優(yōu)于Y
端口狀態(tài)
MSTP中,根據(jù)端口是否轉(zhuǎn)發(fā)數(shù)據(jù)和如何處理BPDU報(bào)文,可將端口狀態(tài)劃分為以下四種:
轉(zhuǎn)發(fā):接收并轉(zhuǎn)發(fā)數(shù)據(jù),接收并發(fā)送BPDU報(bào)文,進(jìn)行地址學(xué)習(xí)。
學(xué)習(xí):不接收或轉(zhuǎn)發(fā)數(shù)據(jù),接收并發(fā)送BPDU報(bào)文,進(jìn)行地址學(xué)習(xí)。
阻塞:不接收或轉(zhuǎn)發(fā)數(shù)據(jù),接收但不發(fā)送BPDU報(bào)文,不進(jìn)行地址學(xué)習(xí)。
斷開:物理鏈路斷開。
端口角色
MSTP的端口角色分為以下幾種:
根端口:到根橋的路徑開銷最低,負(fù)責(zé)向根橋方向轉(zhuǎn)發(fā)數(shù)據(jù)的端口。
指定端口:負(fù)責(zé)向下游網(wǎng)段或設(shè)備轉(zhuǎn)發(fā)數(shù)據(jù)的端口。
Master端口:連接MST域到總根的端口,位于整個(gè)域到總根的最短路徑上。
替換端口:根端口和Master端口的備份端口。
備份端口:指定端口的備份端口。
禁用端口:物理鏈路斷開的端口。