一文帶你了解生成樹協(xié)議STP
STP,全稱Spanning Tree Protocol,它是開放系統(tǒng)互聯(lián)OSI模型中第二層“數(shù)據(jù)鏈路層”最主要的協(xié)議之一。
圖片
生成樹協(xié)議誕生的背景
在以太網(wǎng)交換網(wǎng)絡(luò)中,為了提高網(wǎng)絡(luò)可靠性,通常會(huì)使用冗余鏈路。但使用冗余鏈路在交換網(wǎng)絡(luò)中會(huì)產(chǎn)生環(huán)路,導(dǎo)致廣播風(fēng)暴、MAC地址表不穩(wěn)定等故障現(xiàn)象,從而影響用戶通信質(zhì)量。STP 協(xié)議的作用就是通過阻塞冗余鏈路的端口,在交換網(wǎng)絡(luò)中防止環(huán)路的產(chǎn)生。
生成樹協(xié)議發(fā)展歷程
STP協(xié)議最初由IEEE在1989年發(fā)布的IEEE 802.1D標(biāo)準(zhǔn)中定義。STP協(xié)議的缺點(diǎn)是收斂時(shí)間長(zhǎng),因此 IEEE 在2004年發(fā)布了IEEE 802.1w 標(biāo)準(zhǔn),定義了快速生成樹協(xié)議 (Rapid Spanning Tree Protocol)。RSTP 協(xié)議的收斂時(shí)間比STP協(xié)議快得多,但仍然存在一些缺點(diǎn)。
為了解決STP和RSTP的缺點(diǎn),在IEEE 802.1s的標(biāo)準(zhǔn)中再次定義了多生成樹協(xié)議 (Multiple Spanning Tree Protocol)。MSTP協(xié)議可以為不同VLAN創(chuàng)建不同的生成樹,從而提高網(wǎng)絡(luò)的性能和可靠性。
STP、PVST、PVST+、RSTP 和 MSTP 之間的關(guān)系如下:
- STP 是生成樹協(xié)議的基礎(chǔ),PVST、PVST+、RSTP 和 MSTP 都是基于 STP 協(xié)議的改進(jìn)。
- PVST 和 PVST+ 是 Cisco 公司對(duì) STP 協(xié)議的改進(jìn),可以為不同的 VLAN 創(chuàng)建不同的生成樹。
- RSTP 是 STP 協(xié)議的改進(jìn),收斂時(shí)間更短。
- MSTP 是 STP 協(xié)議的改進(jìn),可以為不同 VLAN 創(chuàng)建不同的生成樹,并且具有更好的性能和可靠性。
具體來說,STP 協(xié)議是單生成樹協(xié)議 (Single Spanning Tree),它為整個(gè)網(wǎng)絡(luò)創(chuàng)建一個(gè)生成樹。STP 協(xié)議的缺點(diǎn)是收斂時(shí)間長(zhǎng),因此 Cisco 公司開發(fā)了 PVST 和 PVST+ 協(xié)議。PVST 和 PVST+ 協(xié)議都是基于 STP 協(xié)議的,但它們可以為不同的 VLAN 創(chuàng)建不同的生成樹。這可以提高網(wǎng)絡(luò)的性能和可靠性,但也增加了網(wǎng)絡(luò)管理的復(fù)雜性。
RSTP 協(xié)議是快速生成樹協(xié)議 (Rapid Spanning Tree),它可以縮短STP協(xié)議的收斂時(shí)間。RSTP協(xié)議的缺點(diǎn)是仍然是單生成樹協(xié)議,它不能完全解決STP協(xié)議的缺點(diǎn)。
MSTP 協(xié)議是多生成樹協(xié)議 (Multiple Spanning Tree),它可以為不同 VLAN 創(chuàng)建不同的生成樹。因此,MSTP 協(xié)議是目前最先進(jìn)的生成樹協(xié)議。
生成樹協(xié)議的原理
STP執(zhí)行一種被稱為STA(Spanning-Tree Algorithm,生成樹算法)的算法,通過判斷網(wǎng)絡(luò)中存在環(huán)路的地方并阻斷冗余鏈路。為了找到冗余鏈路, STA在網(wǎng)絡(luò)中選擇一個(gè)參考點(diǎn),然后確定到該參考點(diǎn)的冗余路徑,這個(gè)參考點(diǎn)通常被稱為生成樹的根。如果STA發(fā)現(xiàn)存在冗余路徑,那么它將選擇到達(dá)根的最優(yōu)路徑(通常是開銷最小的路徑),同時(shí)阻斷所有其他冗余路徑。如果最優(yōu)路徑發(fā)生故障,那么之前被阻塞的端口將被激活,生成新的最優(yōu)路徑并參與數(shù)據(jù)的轉(zhuǎn)發(fā)。為了進(jìn)一步說明生成樹是怎樣建立無環(huán)路徑的,我們先熟悉一些STP名詞:
根橋:生成樹的“樹根”,橋id最小的交換機(jī)。
非根交換機(jī):除了根橋,其它的都是非根交換機(jī)。
根端口:離根橋最近的端口。每一個(gè)非根交換機(jī)都有一個(gè)根端口。
指定端口:除了根端口,所有參與數(shù)據(jù)轉(zhuǎn)發(fā)的端口都是指定端口。根橋上所有的端口都是指定端口。
非根非指定端口:被阻塞的端口,也是我們理解的冗余鏈路的端口。
路徑開銷:到達(dá)根橋的過程中端口cost值的累計(jì)。端口cost值越小,路徑開銷越小,對(duì)應(yīng)的路徑就更優(yōu)。
橋ID:是由橋優(yōu)先級(jí)和橋MAC地址構(gòu)成。
端口ID:是由端口優(yōu)先級(jí)和端口號(hào)構(gòu)成。
STP的選舉過程
一、選舉1個(gè)根網(wǎng)橋
每個(gè)VLAN中只能有1個(gè)網(wǎng)橋擔(dān)當(dāng)根網(wǎng)橋。在根網(wǎng)橋上,所有的端口都擔(dān)當(dāng)指定端口。指定端口不僅能夠發(fā)送和接收流量,還可以發(fā)送和接收配置消息或BPDU。根網(wǎng)橋是所有交換機(jī)用來確定網(wǎng)絡(luò)中是否存在環(huán)路的參考點(diǎn)。通過交換BPDU,交換機(jī)就知道誰(shuí)的橋ID最小,誰(shuí)就是根橋。
二、選擇所有非根網(wǎng)橋的根端口
根端口能夠發(fā)送和接收流量。如果非根網(wǎng)橋擁有到達(dá)根網(wǎng)橋的多條等價(jià)路徑,那么非根網(wǎng)橋?qū)⑦x擇連接到最低網(wǎng)橋ID的端口。如果等價(jià)路徑的所有網(wǎng)橋ID都是相同的,那么非根網(wǎng)橋?qū)⑦x擇具有最低端口ID(端口ID是局部有效的配置)的端口。
三、選擇各個(gè)網(wǎng)段的指定端口
在各個(gè)網(wǎng)段中,STP在網(wǎng)橋上建立一個(gè)指定端口,它到達(dá)根網(wǎng)橋的路徑開銷最低。如果出現(xiàn)路徑開銷相等的情況,那么橋ID就派上用場(chǎng)了。如果相同網(wǎng)橋上多個(gè)端口的開銷也相同,那么具有最低優(yōu)先級(jí)的端口將被選為指定端口。如果端口優(yōu)先級(jí)也相同,那么哪個(gè)端口的號(hào)最小就是誰(shuí)。記?。荷蓸鋮f(xié)議中都是選最低(最小)的,不管是ID、優(yōu)先級(jí)還是端口號(hào)。非根非指定端口只能夠接收流量,但不能參與轉(zhuǎn)發(fā),就是為了避免環(huán)路。
STP 協(xié)議會(huì)不斷地監(jiān)控網(wǎng)絡(luò)拓?fù)?,并根?jù)需要調(diào)整邏輯樹。如果網(wǎng)絡(luò)拓?fù)浒l(fā)生變化,STP 可能會(huì)將某些鏈路從活動(dòng)狀態(tài)更改為阻塞狀態(tài),或者將某些鏈路從阻塞狀態(tài)更改為活動(dòng)狀態(tài)。
日常配置STP的注意事項(xiàng)
為了能夠在分布層和接入層的交換機(jī)之間轉(zhuǎn)發(fā)流量,我們通常選擇位于中心位置的交換機(jī)或核心交換機(jī)作為主根網(wǎng)橋,這些交換機(jī)具有充足的CPU資源和交換能力。在主根網(wǎng)橋或當(dāng)前根網(wǎng)橋發(fā)生故障的時(shí)候,將選擇備份或輔助根網(wǎng)橋。這種選擇過程應(yīng)當(dāng)提前規(guī)劃好,確保:即使主根網(wǎng)橋發(fā)生故障,新的根網(wǎng)橋仍然位于中心位置,并且具有接管主交換機(jī)角色的足夠CPU資源和交換能力。在生產(chǎn)網(wǎng)絡(luò)中,一般要求備份根網(wǎng)橋和主交換機(jī)具有相同的能力。如果滿足上述要求,即使主根網(wǎng)橋發(fā)生故障,網(wǎng)絡(luò)性能也不會(huì)受到太大的影響。