一.STP定義
生成樹協(xié)議STP(Spanning Tree Protocol)將環(huán)形網(wǎng)絡(luò)修剪成為一個(gè)無環(huán)的樹型網(wǎng)絡(luò),避免報(bào)文在環(huán)形網(wǎng)絡(luò)中的增生和無限循環(huán)。
STP可以解決的問題
1.廣播風(fēng)暴——沒有STP,則網(wǎng)絡(luò)中會(huì)出現(xiàn)環(huán)路,一臺(tái)交換機(jī)若從接口收到一個(gè)廣播幀,那么交換機(jī)會(huì)將這個(gè)廣播幀從除收到這個(gè)廣播幀的接口外所有的接口發(fā)送,另一臺(tái)交換機(jī)若收到這個(gè)廣播幀,會(huì)以同樣的方法進(jìn)行泛洪,而這些數(shù)據(jù)幀就會(huì)一直在環(huán)路中傳輸,占用網(wǎng)絡(luò)資源。
2.重復(fù)幀傳輸——目的站點(diǎn)可能會(huì)收到同一數(shù)據(jù)幀的多份拷貝,可能會(huì)造成一些無法挽回的影響。
3.MAC地址表不穩(wěn)定——交換機(jī)從某一接口收到了數(shù)據(jù)幀A,因?yàn)橛协h(huán)路存在,又從另一接口收到了數(shù)據(jù)幀A的拷貝,這樣同一MAC地址就對(duì)應(yīng)了兩個(gè)接口存放在MAC表中,這一現(xiàn)象叫做漂移MAC地址。
二.STP的基本原理
交換機(jī)運(yùn)行該協(xié)議時(shí),通過彼此交互STP幀來發(fā)現(xiàn)網(wǎng)絡(luò)中的環(huán)路,并有選擇的對(duì)某個(gè)端口進(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)文造成處理能力下降,并在網(wǎng)絡(luò)的物理拓?fù)浒l(fā)生變化時(shí)重新建立STP樹。
三.STP的各類選舉
名詞引入
根橋
對(duì)于一個(gè)STP/RSTP網(wǎng)絡(luò),根橋有且只有一個(gè),它是整個(gè)網(wǎng)絡(luò)的邏輯中心,根據(jù)網(wǎng)絡(luò)拓?fù)涞淖兓?,根橋可能改變?/p>
網(wǎng)橋ID (BID)=橋優(yōu)先級(jí)+Mac
默認(rèn)優(yōu)先級(jí) 32768 8*4096
橋的MAC地址0016-0016-3333
BID= 8000-0016-0016-3333 8字節(jié)(兩字節(jié)優(yōu)先級(jí)六字節(jié)MAC地址) 16個(gè)十六進(jìn)制數(shù)
橋的MAC地址為交換機(jī)中網(wǎng)卡中MAC地址最小的
端口ID (PID)=端口優(yōu)先級(jí)+端口編號(hào)
默認(rèn)優(yōu)先級(jí) 128
PID(16位) = 端口優(yōu)先級(jí)(4位) + 端口號(hào)(12位)16個(gè)比特位組成
路徑開銷(RPC)
路徑開銷是STP/RSTP協(xié)議用于選擇鏈路的參考值。STP/RSTP協(xié)議通過計(jì)算路徑開銷,阻塞多余的鏈路,將網(wǎng)絡(luò)修剪成無環(huán)路的樹形網(wǎng)絡(luò)結(jié)構(gòu)。
在一個(gè)STP/RSTP網(wǎng)絡(luò)中,某端口到根橋累計(jì)的路徑開銷就是所經(jīng)過的各個(gè)橋上的各端口的開銷。
根交換機(jī)的端口的路徑開銷都為0
STP將一個(gè)環(huán)形網(wǎng)絡(luò)生成無環(huán)拓?fù)涞牟襟E:
1.選擇根橋——RootBridge每個(gè)廣播域只有一個(gè)根橋 2.選擇根端口——RootPorts 3.選擇指定端口——DesignatedPorts 4.網(wǎng)絡(luò)中冗余的接口將被阻止
根橋的選舉
過程:生成樹中只有一個(gè)交換機(jī)能夠成為根橋,首先交換機(jī)根據(jù)自己的STP邏輯拓?fù)?,向相鄰交換機(jī)發(fā)送HELLO BPDU,聲稱自己是根交換機(jī)。交換機(jī)將收到的HELLO BPDU進(jìn)行比較,選舉出最優(yōu)的BPDU。若收到的HELLO包的根ID比自身發(fā)出的HELLO包BID要優(yōu),則該交換機(jī)就會(huì)停止產(chǎn)生和發(fā)送HELLO包,即停止聲明自己是最優(yōu)的根,然后交換機(jī)開始轉(zhuǎn)發(fā)收到的更優(yōu)的BPDU。不斷經(jīng)過此過程,直到除根交換機(jī)之外,所有的交換機(jī)都將停止產(chǎn)生并發(fā)送自身的HELLO包。
選舉:
1.BID是不會(huì)重復(fù)的,通過比較BID選舉,優(yōu)選BID小的。
BID由優(yōu)先級(jí)+MAC地址組成。
2.首先比較優(yōu)先級(jí),優(yōu)先級(jí)越小越優(yōu)。
3.如果優(yōu)先級(jí)一樣,比較MAC地址,MAC地址越小越優(yōu)。
根端口的選舉——確定交換機(jī)和根橋之間工作的唯一性和最優(yōu)性
根端口用來與根橋之間進(jìn)行報(bào)文交換的端口,是到根橋工作路徑最優(yōu)的端口,一臺(tái)非根橋設(shè)備上只能有一個(gè)根端口。
過程: 選舉出根交換機(jī)之后,其他交換機(jī)需要確定他們各自唯一的根端口。
1.根交換機(jī)每隔HELLO計(jì)時(shí)器(默認(rèn)是2s),就會(huì)創(chuàng)建并發(fā)送一個(gè)HELLO,HELLO中的RBID(根橋的BID)和SBID(發(fā)送方BID)都設(shè)置為根ID,RPC設(shè)置為0,SPID設(shè)置為出端口的標(biāo)識(shí)符
2.每臺(tái)非根交換機(jī)在每個(gè)端口上收到一個(gè)BPDU后,就會(huì)將端口的RPC加到這個(gè)BPDU中,形成(Result BPDU)結(jié)果BPDU,交換機(jī)會(huì)比較所有的結(jié)果BPDU,收到最優(yōu)BPDU的端口將成為根端口
注意:
非根交換機(jī)在根端口上收到HELLO,在更新其完成的RPC,SBID,SPID和信息老化字段之后,會(huì)通過其他指定端口發(fā)送這個(gè)HELLO,非根交換機(jī)在其他端口上收到的HELLO只會(huì)被處理,不會(huì)被轉(zhuǎn)發(fā)。
交換機(jī)的根端口和阻塞端口總是不發(fā)送HELLO包的,因?yàn)樵谠摼W(wǎng)段中,對(duì)端鄰居的指定端口的HELLO包一定是本端優(yōu)先級(jí)要高的。
選舉:
根端口是非根橋交換機(jī)用來接收來自根橋交換機(jī)方向的BPDU,因此首先需要計(jì)算流量從根交換機(jī)到達(dá)非根交換機(jī)上的哪個(gè)端口開銷(Cost)最小,通俗點(diǎn)說就是,如果根交換機(jī)要發(fā)送BPDU到某臺(tái)非根交換機(jī),發(fā)送到該非根橋交換機(jī)的哪個(gè)端口最省時(shí)省力。
非根橋交換機(jī)上,哪個(gè)端口到根橋的開銷(確切來說,應(yīng)該是從根橋到達(dá)非根交換機(jī)的每個(gè)端口的開銷,這才是正確的方向)最小,開銷最小的端口,即為該非根交換機(jī)的根端口。
開銷越小越優(yōu)
如果到達(dá)根橋開銷一樣,此時(shí)再比較上一級(jí)(接收BPDU方向)發(fā)送者的橋ID。選出發(fā)送者橋ID最小的對(duì)應(yīng)的端口。
上行的BID越小越優(yōu)
如果上一級(jí)發(fā)送者橋ID也一樣,在比較發(fā)送端口的優(yōu)先級(jí)。選出優(yōu)先級(jí)最小的對(duì)應(yīng)的端口。
發(fā)送者PID越小越優(yōu)
如果發(fā)送端口優(yōu)先級(jí)也一樣,在比較發(fā)送端口的端口號(hào)(比如f0/0、f0/1)。
發(fā)送者端口號(hào)越小越優(yōu)
PS:比較過程中選出的端口為非根交換機(jī)上的根端口,該根端口主要用來接收來自根橋方向的BPDU。拓?fù)浒l(fā)生變化時(shí)也發(fā)送TCN。
指定端口的選舉——確定每個(gè)網(wǎng)段與根橋之間的的最優(yōu)唯一路徑
當(dāng)一個(gè)網(wǎng)段有兩條及兩條以上的路徑通往根橋時(shí)(該網(wǎng)段連接了不同的交換機(jī)或者該網(wǎng)段與同一交換機(jī)有多個(gè)接口),這時(shí)就必須確定出一個(gè)唯一的指定端口。
根橋的所有接口都是指定端口
網(wǎng)段中發(fā)送最優(yōu)BPDU的端口將成為指定端口
通過選舉的指定端口轉(zhuǎn)發(fā)來自根交換機(jī)的BPDU到其他非根交換機(jī)效率最高(其實(shí)根端口對(duì)端的端口肯定是指定端口)
當(dāng)指定端口所在鏈路發(fā)送故障時(shí),通過此指定端口所屬的交換機(jī)發(fā)送TCN到根交換機(jī)效率最高。cost小即效率高。
指定端口的重要作用還是為了考慮鏈路發(fā)生改變的情況。以此選指定端口可以只參考這條依據(jù):當(dāng)一條鏈路物理故障時(shí),通過鏈路兩端的哪個(gè)端口所屬交換機(jī)發(fā)回TCN到根橋的開銷最小,則那個(gè)端口就是這條鏈路的指定端口。(到根橋途中不要經(jīng)過該鏈路上的另一個(gè)端口)
選舉:
根橋上的所有端口都是指定端口。
每條鏈路上有兩個(gè)端口,那個(gè)端口到根橋的開銷最小,最小的是指定端口。
開銷最小
若開銷相同,則比較上行(靠近根橋的一側(cè))設(shè)備的BID,上行設(shè)備BID較小的端口作為根端口。
上行BID最小
若上行設(shè)備的BID相同,則比較上行設(shè)備的PID,較小的作為根端口。
上行PID最小
如果發(fā)送端口優(yōu)先級(jí)也一樣,在比較發(fā)送端口的端口號(hào)(比如f0/0、f0/1)。
發(fā)送者的端口號(hào)最小
阻塞備用端口
確定了根端口和指定端口后,交換機(jī)上剩余的非根端口和非指定端口統(tǒng)稱為備用端口。
四.STP報(bào)文
Configuration BPDU
①Configuration BPDU
在初始形成STP樹的過程中,各STP交換機(jī)都會(huì)周期性的(缺省為2s)主動(dòng)產(chǎn)生并發(fā)送Configuration BPDU。在STP樹形成后的穩(wěn)定期,只有根橋才會(huì)周期性的(缺省2S)主動(dòng)產(chǎn)生并發(fā)送BPDU,相應(yīng)地非根交換機(jī)會(huì)從自己的根端口周期性地接收到Configuration BPDU ,并立即觸發(fā)而產(chǎn)生自己的Configuration BPDU,且從自己的指定端口發(fā)送出去。這一過程看起來就像是根橋發(fā)出的Configuration BPDU 逐跳地經(jīng)過了其他的交換機(jī)。
STP和RSTP的配置BPDU的區(qū)別
1.在802.1D里,配置BPDU在生成樹初始化時(shí)由各Bridge自己生成,當(dāng)接收到更優(yōu)的BPDU時(shí),改用更優(yōu)的BPDU,當(dāng)STP域收斂時(shí),全網(wǎng)的配置BPDU都是由Root Bridge的配置BPDU。每臺(tái)Bridge都有可能修改BPDU的內(nèi)容,例如TCA標(biāo)記,開銷
2.在802.1W里該BPDU改為全部由Bridge自己生成,只是在Root ID里填上了已知Root Bridge 的Bridge ID 。配置BPDU由本機(jī)產(chǎn)生這點(diǎn)非常重要,這直接使得RSTP在拓?fù)渥兏鼤r(shí)無需等待Root Bridge的配置BPDU,即可刷新MAC表。
②TCN BPDU
TCNBPDU報(bào)文:拓?fù)涓淖兺ㄖCNBPDU報(bào)文只能由非根橋發(fā)出,通告給根橋。 TCABPDU報(bào)文:用于確認(rèn)接收到的TCNPBDU報(bào)文。 TCBPDU報(bào)文:只能由根橋發(fā)起,連續(xù)發(fā)送35s(MAXage+Forwardingdelay)。
非根橋收到TC BPDU報(bào)文后會(huì)將MAC地址的老化時(shí)間設(shè)置為15s,加速老化。
五.STP的拓?fù)渥兓?/p>
STP觸發(fā)拓?fù)涓淖儣l件:
一個(gè)端口從forwarding狀態(tài)過渡到disable或blocking狀態(tài)。 一個(gè)非根橋如果從指定端口接收到TCNBPDU包,需要向根橋裝發(fā)TCNBPDU包。 一個(gè)端口進(jìn)入轉(zhuǎn)發(fā)狀態(tài),并且本地已存在一個(gè)指端端口。
發(fā)生拓?fù)渥兏娜N情況
直接拓?fù)渥兏?br />
端口可以直接檢測到的變更。直接發(fā)送TCN BPDU給根橋,收斂時(shí)間大約是轉(zhuǎn)發(fā)延遲的兩倍。
間接拓?fù)渥兏?br />
鏈路狀態(tài)仍未UP,鏈路狀態(tài)正常但是數(shù)據(jù)傳輸出現(xiàn)了問題,端口無法直接識(shí)別。這種間接性的變更,拓?fù)洳粫?huì)直接發(fā)送變化,等到一端在計(jì)時(shí)器范圍內(nèi)沒有收到來自根橋的消息時(shí),才會(huì)通告拓?fù)渥兓?,因?yàn)橛?jì)時(shí)器的關(guān)系,要比直接拓?fù)渥兏諗恳?/p>
無意義拓?fù)渥兏?br />
終端關(guān)機(jī),連接到PC端的端口發(fā)送TCN BPDU,但不會(huì)影響其他交換機(jī)之間的通信,結(jié)果為所有交換機(jī)將關(guān)機(jī)主機(jī)的MAC地址從(CAM)表中抹去,所以可以在連接終端用戶的交換機(jī)端口上啟用PortFast特性。PortFast端口的up或down不會(huì)導(dǎo)致TCN消息的產(chǎn)生。
當(dāng)STP樹穩(wěn)定后,如果某條鏈路發(fā)生了改變,導(dǎo)致拓?fù)浒l(fā)生了改變,感知到拓?fù)渥兓慕粨Q機(jī)會(huì)以HELLO TIME為間隔向上游交換機(jī)發(fā)送TCN BPDU,直至收到來自上游的帶有TC為1的Configuration BPDU。上游交換機(jī)接收到TCN BPDU會(huì)通過指定端口回復(fù)TCA為1的Configuration BPDU。
一方面繼續(xù)向上游發(fā)送TCN BPDU,直到根橋接收到TCN BPDU根橋向各個(gè)端口通告帶有TC為1的 Configuration BPDU,通知所有交換機(jī)網(wǎng)路拓?fù)浒l(fā)生了變化。。交換機(jī)收到TC為1的Configuration BPDU后便意識(shí)到網(wǎng)絡(luò)拓?fù)湟呀?jīng)發(fā)生了變化,這說明自己的MAC表可能已經(jīng)不是正確的了,這時(shí)交換機(jī)會(huì)將自己的MAC地址老化周期(缺省為30S)縮短為Forward Delay的時(shí)間長度,以加速老化掉原來的地址表項(xiàng)。
例如,本來網(wǎng)橋A和根橋之間是沒有直連鏈路的,現(xiàn)在有了一條直連鏈路,該鏈路上兩個(gè)接口首先經(jīng)過20S的BPDU最大超時(shí)時(shí)長,隨后進(jìn)入Listening狀態(tài),可以發(fā)送和接收BPDU,此時(shí)比較之下A就會(huì)將與ROOT直連的端口變?yōu)楦丝冢ㄩ_銷較?。?,端口狀態(tài)由Blocking變?yōu)榱薋orwarding狀態(tài),拓?fù)浒l(fā)生改變,通過這條鏈路發(fā)送一個(gè)TCN BPDU給根橋,根橋接收到之后發(fā)送帶有 TC標(biāo)記的BPDU通告網(wǎng)絡(luò)內(nèi)其余交換機(jī)活動(dòng)拓?fù)浒l(fā)生改變,包括自己在內(nèi)的交換機(jī)加速老化MAC地址表。
什么時(shí)候STP收斂時(shí)間是30s,什么時(shí)候是50s?
RP (根端口(Root Port) )接口down時(shí),STP收斂為30S。
DP (指定端口(Designated Port) )接口down時(shí),STP收斂為50S。
六.STP的端口狀態(tài)
按狀態(tài)劃分端口共有五種,去能狀態(tài),阻塞狀態(tài),偵聽狀態(tài),學(xué)習(xí)狀態(tài),轉(zhuǎn)發(fā)狀態(tài)。
去能狀態(tài)(Disabled):端口無法接收和發(fā)送任何幀,端口處于down狀態(tài)。
阻塞狀態(tài)(Blocking):只能接收STP幀,不能發(fā)送STP幀,也不能轉(zhuǎn)發(fā)用戶數(shù)據(jù)幀。
偵聽狀態(tài)(Listening):可以接收并發(fā)送STP協(xié)議幀,但不能進(jìn)行MAC地址學(xué)習(xí),也不能轉(zhuǎn)發(fā)用戶數(shù)據(jù)幀。
學(xué)習(xí)狀態(tài)(Learning):可以接收并發(fā)送STP協(xié)議幀,也可以進(jìn)行MAC地址學(xué)習(xí)接收數(shù)據(jù)幀,不能轉(zhuǎn)發(fā)用戶數(shù)據(jù)幀
轉(zhuǎn)發(fā)狀態(tài)(Forward):可以接收并發(fā)送STP協(xié)議幀,可以進(jìn)行MAC地址學(xué)習(xí),可以轉(zhuǎn)發(fā)用戶數(shù)據(jù)幀。
七.STP的端口遷移
20s(Max age讓交換機(jī)都開機(jī)運(yùn)行STP的準(zhǔn)備時(shí)間)+15s(穩(wěn)定端口角色狀態(tài))+15s(學(xué)習(xí)MAC地址表)
過程:
交換機(jī)在同一時(shí)刻啟動(dòng)時(shí),各個(gè)交換機(jī)的端口立即從去能狀態(tài)變?yōu)樽枞麪顟B(tài),這個(gè)狀態(tài)只可以接收STP數(shù)據(jù)包,無法發(fā)送STP數(shù)據(jù)包。所以任何端口都收不到BPDU。經(jīng)過MAX AGE時(shí)間(默認(rèn)為20S)后,每臺(tái)交換機(jī)都會(huì)認(rèn)為自己是根橋,各個(gè)端口變?yōu)闉閭陕犇J剑梢园l(fā)送并接收數(shù)據(jù)包。
交換機(jī)的端口進(jìn)入監(jiān)聽模式后,開始發(fā)送自己的Configuration BPDU ,同時(shí)也接收來自其他交換機(jī)的Configuration BPDU。若交換機(jī)A接收到的來自交換機(jī)B的BPDU中的BID,比自身的BID小,則認(rèn)為交換機(jī)B為根橋,并將發(fā)送的Configuration BPDU中的根橋BID改為B交換機(jī)的BID。若交換機(jī)C接收到來自交換機(jī)B的BPDU中的BID,比自身要大,則還是認(rèn)為自身為根橋,并向來源方交換機(jī)B發(fā)送Configuration BPDU,交換機(jī)B就會(huì)知道,交換機(jī)C為根橋,重復(fù)至所有都同步即可。
交換機(jī)會(huì)將接收到根橋BID信息的端口設(shè)為根端口。同時(shí)通過比較BID,和PID,可以確定指定端口。
端口在經(jīng)過持續(xù)時(shí)間為Forward Delay(15S)的時(shí)間后,根端口和指定端口會(huì)進(jìn)入學(xué)習(xí)狀態(tài),其余端口會(huì)進(jìn)入Blocking狀態(tài)。
端口進(jìn)入Learning狀態(tài)后,在Forward Delay(15S)的時(shí)間內(nèi),在此時(shí)間內(nèi)交換機(jī)可以開始學(xué)習(xí)MAC地址與這些端口的映射關(guān)系,同時(shí)希望STP樹在這段時(shí)間內(nèi)能夠完全收斂。
然后端口會(huì)相繼進(jìn)入Forward狀態(tài),開始用戶數(shù)據(jù)幀的轉(zhuǎn)發(fā)工作。
八.STP端口特性
Portfast
功能:這個(gè)特性的功能就是讓一個(gè)阻塞的端口快速的進(jìn)入到轉(zhuǎn)發(fā)狀態(tài)。而不用經(jīng)過中間的監(jiān)聽和學(xué)習(xí)的狀態(tài),這樣的話,就減少了很多端口角色的轉(zhuǎn)換時(shí)間,也就減少了STP的收斂時(shí)間。
如果這個(gè)端口接收到BPDU的話,那么他就會(huì)進(jìn)入到error—disable狀態(tài)(相當(dāng)于阻塞的狀態(tài)),停止接收數(shù)據(jù)包。并且這種狀態(tài)會(huì)一直持續(xù)到“error—disable”設(shè)定的超時(shí)或者是進(jìn)行手動(dòng)干預(yù)。
應(yīng)用場景:一般是在Access接口上啟用,因?yàn)樵赥runk口上實(shí)現(xiàn)這個(gè)portfast特性,將存在產(chǎn)生橋接環(huán)路的危險(xiǎn)。
UpLinkFast
說明:當(dāng)鏈路或交換機(jī)故障時(shí),快速切換備份鏈路,加速選舉新的根端口,使備用的阻塞端口直接進(jìn)入轉(zhuǎn)發(fā)狀態(tài),而不經(jīng)歷監(jiān)聽與學(xué)習(xí)狀態(tài)。
功能:基于定義的上行鏈路組,在交換機(jī)中上行鏈路組由根端口和所有去往根橋的代替端口組成。如果上行端口發(fā)生故障,則上行鏈路組中開銷最小的端口將被開啟作為根端口。使用偽組播(偽組播地址代表所有連接根交換機(jī)的交換機(jī))的方式通過新的Forwarding端口向上游網(wǎng)絡(luò)通告自己所有的MAC地址,從主用鏈路故障到收斂通常不會(huì)超過1S。
Backbone Fast
說明:可以說這個(gè)特性是對(duì)UplinkFast 特性的一種補(bǔ)充。Uplinkfast特性可以對(duì)連接到交換機(jī)本身的鏈路出故障的時(shí)候,可以準(zhǔn)確的判斷出來,并且進(jìn)行快速的狀態(tài)轉(zhuǎn)換,但是他不能對(duì)間接的鏈路故障作出檢測并進(jìn)行修正。但是,Backbone Fast就可以。
在丟失根端口并且備份鏈路是采用不同的交換機(jī)情況中,這個(gè)特性就可以降低默認(rèn)的收斂時(shí)間。但是這個(gè)特性的正常運(yùn)作,需要網(wǎng)絡(luò)中的所有的交換機(jī)都啟用這個(gè)特性。
本質(zhì):快速接收次級(jí)BPDU,而減少20S的 MAX_AGE時(shí)間。
審核編輯:劉清
-
STP
+關(guān)注
關(guān)注
0文章
42瀏覽量
10242 -
RSTP
+關(guān)注
關(guān)注
0文章
7瀏覽量
993
原文標(biāo)題:網(wǎng)絡(luò)工程師必懂:STP/RSTP協(xié)議(一)
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論