技術(shù)分享 交換機知識之生成樹協(xié)議
STP(Spanning Tree Protocol,生成樹協(xié)議)是根據(jù)IEEE 802.1D 標準建立的,用于在局域網(wǎng)中消除數(shù)據(jù)鏈路層物理環(huán)路的協(xié)議。運行該協(xié)議的設備通過彼此交互信息發(fā)現(xiàn)網(wǎng)絡中的環(huán)路,并有選擇的對某些端口進行阻塞,最終將環(huán)路網(wǎng)絡結(jié)構(gòu)修剪成無環(huán)路的樹型網(wǎng)絡結(jié)構(gòu),從而防止報文在環(huán)路網(wǎng)絡中不斷增生和無限循環(huán),避免設備由于重復接收相同的報文所造成的報文處理能力下降的問題發(fā)生。
STP采用的協(xié)議報文是BPDU(Bridge Protocol Data Unit,橋協(xié)議數(shù)據(jù)單元),也稱為配置消息,BPDU中包含了足夠的信息來保證設備完成生成樹的計算過程。STP即是通過在設備之間傳遞BPDU來確定網(wǎng)絡的拓撲結(jié)構(gòu)。
BPDU格式及字段說明
要實現(xiàn)生成樹的功能,交換機之間傳遞BPDU報文實現(xiàn)信息交互,所有支持STP協(xié)議的交換機都會接收并處理收到的報文。該報文在數(shù)據(jù)區(qū)里攜帶了用于生成樹計算的所有有用信息。
標準生成樹的BPDU幀格式及字段說明:
Protocol identifier: 協(xié)議標識
Version: 協(xié)議版本
Message type: BPDU類型
Flag: 標志位
Root ID: 根橋ID,由兩字節(jié)的優(yōu)先級和6字節(jié)MAC地址構(gòu)成
Root path cost: 根路徑開銷
Bridge ID: 橋ID,表示發(fā)送BPDU的橋的ID,由2字節(jié)優(yōu)先級和6字節(jié)MAC地址構(gòu)成
Port ID: 端口ID,標識發(fā)出BPDU的端口
Message age: BPDU生存時間
Maximum age: 當前BPDU的老化時間,即端口保存BPDU的最長時間
Hello time: 根橋發(fā)送BPDU的周期
Forward delay: 表示在拓撲改變后,交換機在發(fā)送數(shù)據(jù)包前維持在監(jiān)聽和學習狀態(tài)的時間
STP的基本概念
橋ID(Bridge Identifier):橋ID是橋的優(yōu)先級和其MAC地址的綜合數(shù)值,其中橋優(yōu)先級是一個可以設定的參數(shù)。橋ID越低,則橋的優(yōu)先級越高,這樣可以增加其成為根橋的可能性。
根橋(Root Bridge):具有最小橋ID的交換機是根橋。請將環(huán)路中所有交換機當中最好的一臺設置為根橋交換機,以保證能夠提供最好的網(wǎng)絡性能和可靠性。
指定橋(Designated Bridge):在每個網(wǎng)段中,到根橋的路徑開銷最低的橋?qū)⒊蔀橹付?,?shù)據(jù)包將通過它轉(zhuǎn)發(fā)到該網(wǎng)段。當所有的交換機具有相同的根路徑開銷時,具有最低的橋ID的交換機會被選為指定橋。
根路徑開銷(Root Path Cost):一臺交換機的根路徑開銷是根端口的路徑開銷與數(shù)據(jù)包經(jīng)過的所有交換機的根路徑開銷之和。根橋的根路徑開銷是零。
橋優(yōu)先級(Bridge Priority):是一個用戶可以設定的參數(shù),數(shù)值范圍從0到32768。設定的值越小,優(yōu)先級越高。交換機的橋優(yōu)先級越高,才越有可能成為根橋。
根端口(Root Port):非根橋的交換機上離根橋最近的端口,負責與根橋進行通信,這個端口到根橋的路徑開銷最低。當多個端口具有相同的到根橋的路徑開銷時,具有最高端口優(yōu)先級的端口會成為根端口。
指定端口(Designated Port):指定橋上向本交換機轉(zhuǎn)發(fā)數(shù)據(jù)的端口。
端口優(yōu)先級(Port Priority):數(shù)值范圍從0到255,值越小,端口的優(yōu)先級就越高。端口的優(yōu)先級越高,才越有可能成為根端口。
路徑開銷(Path Cost):STP協(xié)議用于選擇鏈路的參考值。STP協(xié)議通過計算路徑開銷,選擇較為“強壯”的鏈路,阻塞多余的鏈路,將網(wǎng)絡修剪成無環(huán)路的樹型網(wǎng)絡結(jié)構(gòu)。
生成樹基本概念的組網(wǎng)示意圖如圖所示。交換機A、B、C三者順次相連,經(jīng)STP計算過后,交換機A被選為根橋,端口2和端口6之間的線路被阻塞。
橋:交換機A為整個網(wǎng)絡的根橋;交換機B是交換機C的指定橋。
端口:端口3和端口5分別為交換機B和交換機C的根端口;端口1和端口4分別為交換機A和交換機B的指定端口;端口6為交換機C的阻塞端口。

STP定時器
聯(lián)絡時間(Hello Time):
數(shù)值范圍從1秒到10秒。是指根橋向其它所有交換機發(fā)出BPDU數(shù)據(jù)包的時間間隔,用于交換機檢測鏈路是否存在故障。
老化時間(Max. Age):
數(shù)值范圍從6秒到40秒。如果在超出老化時間之后,還沒有收到根橋發(fā)出的BPDU數(shù)據(jù)包,那么交換機將向其它所有的交換機發(fā)出BPDU數(shù)據(jù)包,重新計算生成樹。
傳輸時延(Forward Delay):
數(shù)值范圍從4秒到30秒。是指交換機的端口狀態(tài)遷移所用的時間。
當網(wǎng)絡故障引發(fā)生成樹重新計算時,生成樹的結(jié)構(gòu)將發(fā)生相應的變化。但是重新計算得到的新配置消息無法立刻傳遍整個網(wǎng)絡,如果端口狀態(tài)立刻遷移的話,可能會產(chǎn)生暫時性的環(huán)路。為此,生成樹協(xié)議采用了一種狀態(tài)遷移的機制,新的根端口和指定端口開始數(shù)據(jù)轉(zhuǎn)發(fā)之前要經(jīng)過2倍的傳輸時延,這個延時保證了新的配置消息已經(jīng)傳遍整個網(wǎng)絡。
STP模式的BPDU的優(yōu)先級比較原則
假定有兩條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的計算過程
初始狀態(tài):每臺交換機在初始時會生成以自己為根橋的BPDU,根路徑開銷為0,指定橋ID為自身設備ID,指定端口為本端口。
最優(yōu)BPDU的選擇:每臺交換機都向外發(fā)送自己的BPDU,同時也會收到其它交換機發(fā)送的BPDU。比較過程如下表所述:
根橋的選擇:通過交換配置消息,設備之間比較根橋ID,網(wǎng)絡中根橋ID 最小的設備被選為根橋。
根端口、指定端口的選擇過程如下表所述:

RSTP
RSTP(Rapid Spanning Tree Protocol,快速生成樹協(xié)議)是優(yōu)化版的STP,他大大縮短了端口進入轉(zhuǎn)發(fā)狀態(tài)的延時,從而縮短了網(wǎng)絡最終達到拓撲穩(wěn)定所需要的時間。RSTP的端口狀態(tài)實現(xiàn)快速遷移的前提如下:

根端口的端口狀態(tài)快速遷移的條件是:本設備上舊的根端口已經(jīng)停止轉(zhuǎn)發(fā)數(shù)據(jù),而且上游指定端口已經(jīng)開始轉(zhuǎn)發(fā)數(shù)據(jù)。
指定端口的端口狀態(tài)快速遷移的條件是:指定端口是邊緣端口或者指定端口與點對點鏈路相連。如果指定端口是邊緣端口,則指定端口可以直接進入轉(zhuǎn)發(fā)狀態(tài);如果指定端口連接著點對點鏈路,則設備可以通過與下游設備握手,得到響應后即刻進入轉(zhuǎn)發(fā)狀態(tài)。
RSTP的基本概念
邊緣端口(Edge Port):直接與終端相連而不是與其它交換機相連的端口。
點對點鏈路:是兩臺交換機之間直接連接的鏈路。
MSTP
MSTP(Multiple Spanning Tree Protocol,多生成樹協(xié)議)是在STP和RSTP的基礎上,根據(jù)IEEE協(xié)會制定的802.1S標準建立的,他既可以快速收斂,也能使不同VLAN的流量沿各自的路徑轉(zhuǎn)發(fā),從而為冗余鏈路提供了更好的負載分擔機制。
MSTP的特點如下:
MSTP通過VLAN-實例映射表,把VLAN和生成樹聯(lián)系起來,將多個VLAN捆綁到一個實例中,并以實例為基礎實現(xiàn)負載均衡。
MSTP把一個生成樹網(wǎng)絡劃分成多個域,每個域內(nèi)形成多棵內(nèi)部生成樹,各個生成樹之間彼此獨立。
MSTP在數(shù)據(jù)轉(zhuǎn)發(fā)過程中實現(xiàn)VLAN 數(shù)據(jù)的負載分擔。
MSTP 兼容STP 和RSTP。
MSTP的基本概念
MST域(Multiple Spanning Tree Region,多生成樹域):由具有相同域配置和相同Vlan-實例映射關(guān)系的交換機所構(gòu)成。
IST(Internal Spanning Tree,內(nèi)部生成樹):MST域內(nèi)的一棵生成樹。
CST(Common Spanning Tree,公共生成樹):連接網(wǎng)絡內(nèi)所有MST域的單生成樹。
CIST(Common and Internal Spanning Tree,公共和內(nèi)部生成樹):連接網(wǎng)絡內(nèi)所有設備的單生成樹,由IST和CST共同構(gòu)成。
MSTP基本概念的組網(wǎng)圖如圖所示。

MSTP的基本原理
MSTP將整個網(wǎng)絡劃分為多個MST域,各個域之間通過計算生成CST;域內(nèi)則通過計算生成多棵生成樹,每棵生成樹都被稱為是一個多生成樹實例。MSTP同STP一樣,使用BPDU進行生成樹的計算,只是BPDU中攜帶的是MSTP的配置信息。
MSTP模式的BPDU優(yōu)先級比較原則
假定有兩條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報文,可將端口狀態(tài)劃分為以下四種:
轉(zhuǎn)發(fā):接收并轉(zhuǎn)發(fā)數(shù)據(jù),接收并發(fā)送BPDU報文,進行地址學習。
學習:不接收或轉(zhuǎn)發(fā)數(shù)據(jù),接收并發(fā)送BPDU報文,進行地址學習。
阻塞:不接收或轉(zhuǎn)發(fā)數(shù)據(jù),接收但不發(fā)送BPDU報文,不進行地址學習。
斷開:物理鏈路斷開。
端口角色
MSTP的端口角色分為以下幾種:
根端口:到根橋的路徑開銷最低,負責向根橋方向轉(zhuǎn)發(fā)數(shù)據(jù)的端口。
指定端口:負責向下游網(wǎng)段或設備轉(zhuǎn)發(fā)數(shù)據(jù)的端口。
Master端口:連接MST域到總根的端口,位于整個域到總根的最短路徑上。
替換端口:根端口和Master端口的備份端口。
備份端口:指定端口的備份端口。
禁用端口:物理鏈路斷開的端口。


















