在組網(wǎng)中,很可能會(huì)出現(xiàn)環(huán)路或者稱(chēng)冗余鏈路,為避免形成廣播風(fēng)暴,需要一種方法來(lái)避免形成環(huán)路,并且在主鏈路故障中斷時(shí)候,可以將冗余鏈路自動(dòng)切換為轉(zhuǎn)發(fā)狀態(tài),以恢復(fù)網(wǎng)絡(luò)的連通性。生成樹(shù)協(xié)議(STP、RSTP、MSTP)就可以實(shí)現(xiàn)這樣的功能。
STP(802.1D,Spanning Tree Protocol,生成樹(shù)協(xié)議)
基本思想
將網(wǎng)絡(luò)的拓?fù)湫藜魹闃?shù)形拓?fù)?,拓?fù)鋱D形狀與一棵樹(shù)相似,這樣就不會(huì)產(chǎn)生環(huán)路了。
在每個(gè)運(yùn)行STP協(xié)議的設(shè)備上依據(jù)一定的準(zhǔn)則選舉出一個(gè)樹(shù)根節(jié)點(diǎn)作為網(wǎng)絡(luò)中的根橋,其他節(jié)點(diǎn)為非樹(shù)根節(jié)點(diǎn)。
每一個(gè)非樹(shù)根節(jié)點(diǎn),會(huì)選擇最優(yōu)的路徑和根橋相連,每個(gè)非樹(shù)根節(jié)點(diǎn)上位于最優(yōu)路徑的端口,為該非樹(shù)根節(jié)點(diǎn)的根端口。
如果非樹(shù)根節(jié)點(diǎn)存在冗余鏈路,則會(huì)對(duì)相應(yīng)端口進(jìn)行阻塞
基本概念介紹
根橋(Root Bridge):是整個(gè)生成樹(shù)的根節(jié)點(diǎn),所有網(wǎng)橋中優(yōu)先級(jí)最高的橋。
指定橋(Designate Bridge):負(fù)責(zé)一個(gè)物理段(相對(duì)于兩個(gè)網(wǎng)橋而言是一個(gè)物理段)上數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)的橋。
根端口(Root Port):指一個(gè)網(wǎng)橋上距離跟橋最近的端口。根橋上沒(méi)有根端口,只有非根橋上有且僅有一個(gè)根端口。
指定端口(Designate Port):指定橋上的端口,就是用于轉(zhuǎn)發(fā)生成樹(shù)信息報(bào)文的端口。根橋上全是指定端口。
候補(bǔ)端口(Alternate Port):用來(lái)為根端口或指定端口做備份的端口,即為最終需要阻塞的端口。
橋ID(Bridge ID):每一個(gè)運(yùn)行STP協(xié)議的網(wǎng)橋都會(huì)有一個(gè)橋ID,用于在網(wǎng)絡(luò)中唯一標(biāo)識(shí)一個(gè)橋,由橋優(yōu)先級(jí)和橋MAC地址組成,橋優(yōu)先級(jí)占2字節(jié),橋MAC地址占6個(gè)字節(jié)。橋優(yōu)先級(jí)只能是4096的整數(shù)倍,最大為61440,默認(rèn)為32768。
路徑開(kāi)銷(xiāo)(Path Cost):STP中每條鏈路都具有開(kāi)銷(xiāo)值,默認(rèn)的開(kāi)銷(xiāo)值取決于鏈路的帶寬,帶寬越大,開(kāi)銷(xiāo)越小。例如IEEE標(biāo)準(zhǔn)的開(kāi)銷(xiāo),鏈路速度為10Gbps開(kāi)銷(xiāo)為2,速度為100Mbps時(shí)開(kāi)銷(xiāo)為19,速度為10Mbps時(shí)候開(kāi)銷(xiāo)為100。
BPDU(Bridge Protocol Data Unit,橋協(xié)議數(shù)據(jù)單元):用于網(wǎng)橋之間傳遞BPDU來(lái)交互協(xié)議信息。BPDU分為配置BPDU和TCN BPDU。配置BPDU用來(lái)進(jìn)行生成樹(shù)的計(jì)算和維護(hù)生成樹(shù)拓?fù)涞膱?bào)文。TCN BPDU是當(dāng)拓?fù)浣Y(jié)構(gòu)改變時(shí)候,用來(lái)通知相關(guān)橋設(shè)備網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化的報(bào)文。
BPDU報(bào)文分析
Protocol Identifier:固定為0x0000,表示是生成樹(shù)協(xié)議
Protocol Version Identifier:協(xié)議版本號(hào),STP版本號(hào)為0x00
BPDU Type:配置BPDU類(lèi)型為0x00,TCN BPDU類(lèi)型為0x80
Flags:由8位組成,最低位為T(mén)C標(biāo)志位,最高位為T(mén)CA標(biāo)志位,其他6位保留。當(dāng)拓?fù)浣Y(jié)構(gòu)變化時(shí)候,下游網(wǎng)橋?qū)?huì)從根端口發(fā)送TCN BPDU報(bào)文,TC標(biāo)志位置為1,上游網(wǎng)橋收到后進(jìn)行相應(yīng)處理,回復(fù)配置BPDU報(bào)文,TCA標(biāo)志位置為1.
Root Identifier:根橋ID,包含優(yōu)先級(jí)和MAC地址,標(biāo)識(shí)網(wǎng)絡(luò)中的根橋。
Root Path Cost:根路徑開(kāi)銷(xiāo),指從發(fā)送該配置BPDU的網(wǎng)橋到根網(wǎng)橋的最小路徑開(kāi)銷(xiāo),是所有鏈路開(kāi)銷(xiāo)的代數(shù)和。
Bridge Identifier:發(fā)送該配置BPDU的網(wǎng)橋ID,即該指定橋的ID。
Port Identifier:發(fā)送該配置BPDU的網(wǎng)橋的發(fā)送端口ID。
Message Age:從根橋生成配置BPDU開(kāi)始,到當(dāng)前時(shí)間為止配置BPDU的存活時(shí)間。
Max Age:配置BPDU存活的最大時(shí)間。
Hello Time:根橋生成并發(fā)送配置BPDU的周期,默認(rèn)為2s
Forward Delay:配置BPDU傳播到全網(wǎng)的最大時(shí)延,默認(rèn)為15s
接口狀態(tài)
狀態(tài)名稱(chēng) | 狀態(tài)描述 |
禁用(Disable) | 不能收發(fā)BPDU,也不能收發(fā)數(shù)據(jù)幀 |
阻塞(Blocking) | 該接口被STP阻塞。不能發(fā)送BPDU,但是會(huì)持續(xù)偵聽(tīng)BPDU。不能收發(fā)數(shù)據(jù)幀 |
偵聽(tīng)(Listening) | 表明STP初步認(rèn)定該接口為根接口或指定接口,但STP還在計(jì)算過(guò)程中,可以收發(fā)BPDU,但不能收發(fā)數(shù)據(jù)幀,也不能進(jìn)行MAC地址學(xué)習(xí) |
學(xué)習(xí)(Learning) | 會(huì)偵聽(tīng)業(yè)務(wù)數(shù)據(jù)幀,但不能轉(zhuǎn)發(fā)數(shù)據(jù)幀,并可以學(xué)習(xí)MAC |
轉(zhuǎn)發(fā)(Forwarding) | 正常收發(fā)數(shù)據(jù)幀,也會(huì)進(jìn)行BPDU處理,只有根端口或指定端口才能進(jìn)行轉(zhuǎn)發(fā)態(tài) |
當(dāng)交換機(jī)的一個(gè)接口被激活后,該接口會(huì)從禁用狀態(tài)自動(dòng)進(jìn)入阻塞狀態(tài)。阻塞狀態(tài)的接口如果被選舉為根接口或者指定接口,那么它將從阻塞狀態(tài)進(jìn)入偵聽(tīng)狀態(tài),并在偵聽(tīng)狀態(tài)停留15s(轉(zhuǎn)發(fā)延遲時(shí)間),為了讓STP完成整個(gè)網(wǎng)絡(luò)的計(jì)算。15s后如果還是根接口或者是指定接口,就會(huì)進(jìn)入學(xué)習(xí)狀態(tài),因?yàn)榇藭r(shí)交換機(jī)沒(méi)有學(xué)習(xí)到任何MAC地址,這個(gè)狀態(tài)也要停留15秒,之后才會(huì)變成轉(zhuǎn)發(fā)態(tài)。
計(jì)算過(guò)程
確定跟橋
每一個(gè)交換機(jī)啟動(dòng)stp服務(wù),都會(huì)認(rèn)為自己是跟橋,并向外發(fā)送以自己為根橋的配置BPDU報(bào)文。
交換機(jī)接收到BPDU報(bào)文,會(huì)和自己的橋ID對(duì)比,橋ID由優(yōu)先級(jí)和mac地址組成,先比較優(yōu)先級(jí),優(yōu)先級(jí)相同,再比較mac地址,值越小就會(huì)認(rèn)為更優(yōu)。比如接收到BPDU報(bào)文的root id為8192-0000.0000.0001,自己的橋id為32768-0000.0000.0002,因?yàn)橄缺容^優(yōu)先級(jí),優(yōu)先級(jí)8192優(yōu)于32768,則認(rèn)為自己不是根橋,就不發(fā)送認(rèn)為自己是根橋的BPDU了,并通過(guò)接收到的BPDU報(bào)文更新自身的配置BPDU。直到網(wǎng)絡(luò)中所有的交換機(jī)都達(dá)成一致,認(rèn)為某一個(gè)交換機(jī)為根橋,根橋的選舉結(jié)束,從而確認(rèn)唯一根橋。
確定端口角色
當(dāng)確認(rèn)自己本身不是根橋的同時(shí)就開(kāi)始確認(rèn)端口角色了。
確定根端口
當(dāng)一個(gè)交換機(jī)多個(gè)接口同時(shí)接收到了根橋發(fā)來(lái)的配置BPDU報(bào)文,會(huì)獲取Root Path Cost,也就是根路徑開(kāi)銷(xiāo),與接收端口的鏈路開(kāi)銷(xiāo)相加,得到此端口到根橋的根路徑開(kāi)銷(xiāo),對(duì)比,根路徑開(kāi)銷(xiāo)值最小的作為根端口。
如果根路徑開(kāi)銷(xiāo)相同,對(duì)比BPDU報(bào)文中的Bridge Identifier,也就是發(fā)送該BPDU報(bào)文指定橋的ID,ID小的作為根端口。
如果指定橋ID也相同,則對(duì)比Port Identifier,發(fā)送口的端口ID,ID小的作為根端口
確定指定端口和Alternate備份端口
當(dāng)確定根端口后,會(huì)將通過(guò)自己從根端口收到的BPDU報(bào)文計(jì)算生成的配置BPDU報(bào)文與非根端口接收到的配置BPDU進(jìn)行比較,依次對(duì)比根路徑開(kāi)銷(xiāo)、指定橋和端口id,自己計(jì)算產(chǎn)生的BPDU優(yōu)于接收到的,則將此接收到的端口設(shè)置為指定端口,否則設(shè)置為Alternate端口(即阻塞起來(lái))。
拓?fù)浣Y(jié)構(gòu)發(fā)生改變時(shí)
當(dāng)有端口斷開(kāi)或新網(wǎng)橋加入時(shí),拓?fù)浒l(fā)生了改變,就會(huì)使用到TCN BPDU報(bào)文,目的是讓STP能快速的收斂。
產(chǎn)生BPDU報(bào)文的條件:
網(wǎng)橋上有端口轉(zhuǎn)變?yōu)镕orwarding轉(zhuǎn)發(fā)狀態(tài),且該網(wǎng)橋至少包含一個(gè)指定端口。
網(wǎng)橋上有端口從Forwarding狀態(tài)或Learning狀態(tài)轉(zhuǎn)變?yōu)锽locking狀態(tài)。
拓?fù)涓淖儠r(shí)候STP處理步驟:
會(huì)從該發(fā)生變化的交換機(jī)的根端口發(fā)送TCN BPDU報(bào)文
上游交換機(jī)收到TCN BPDU報(bào)文,會(huì)將下一個(gè)配置BPDU報(bào)文中的TCA置為1,發(fā)送給下游交換機(jī),來(lái)確保通往根橋的鏈路有效性
重復(fù)1,2步驟,直到根橋交換機(jī)收到TCN BPDU報(bào)文,并將下一個(gè)配置BPDU報(bào)文中的TC置為1,發(fā)送給下游所有的交換機(jī),各網(wǎng)橋收到TC置為1的配置BPDU報(bào)文后,會(huì)將MAC地址老化時(shí)間縮短為15秒
STP的不足
為避免環(huán)路,每一個(gè)端口在確認(rèn)為根端口或指定端口后仍需要等待30s才能進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
對(duì)于網(wǎng)絡(luò)中有大量主機(jī)時(shí)候,頻繁上下線會(huì)導(dǎo)致頻繁發(fā)送TCN BPDU報(bào)文,導(dǎo)致網(wǎng)橋MAC地址老化時(shí)間長(zhǎng)期為15s。
RSTP(802.1W,Rapid Spanning Tree Protocol,快速生成樹(shù)協(xié)議)
STP與RSTP區(qū)別概要
STP | RSTP | |
端口狀態(tài) | 禁用、阻塞、偵聽(tīng)、學(xué)習(xí)、轉(zhuǎn)發(fā) | 丟棄、學(xué)習(xí)、轉(zhuǎn)發(fā) |
端口角色 | 根端口、指定端口、備份端口(Alternate) | 根端口、指定端口、根備份端口(Alternate)、指定端口備份端口(Backup) |
BPDU |
協(xié)議版本號(hào)為0x00 配置BPDU類(lèi)型為0x00,TCN BPDU類(lèi)型為0x80 |
協(xié)議版本號(hào)為0x02 類(lèi)型為0x02 使用Flags字段的全部8位 最后增加了Versionl Length字段 |
STP與RSTP的接口狀態(tài)對(duì)應(yīng)關(guān)系
STP的接口狀態(tài) | RSTP的接口狀態(tài) |
禁用(Disabled) | 丟棄(Discarding) |
阻塞(Blocking) | |
偵聽(tīng)(Listening) | |
學(xué)習(xí)(Learning) | 學(xué)習(xí)(Learning) |
轉(zhuǎn)發(fā)(Forwarding) | 轉(zhuǎn)發(fā)(Forwarding) |
RSTP端口會(huì)在Discarding狀態(tài)完成角色的確定,當(dāng)端口確定為根端口或指定端口后,經(jīng)過(guò)Forward Delay時(shí)間會(huì)進(jìn)入Learning狀態(tài),比STP就少一個(gè)Forward Delay時(shí)間,并且有P/A快速機(jī)制,可以直接從Discarding直接到Forwarding狀態(tài)。不是根端口或指定端口就會(huì)維持Discarding狀態(tài)。
端口角色
根端口和指定端口角色的定義和STP相同,就不說(shuō)了。
較STP新增了兩個(gè)端口概念,替代接口和備份接口。但同樣都是阻塞起來(lái)的,只是為了指定端口出故障時(shí)可以快速收斂。
替代接口(Alternate)
可以理解為根接口的備份接口,是由于收到了其他設(shè)備發(fā)送的BPDU且優(yōu)于自身所要發(fā)送的BPDU從而被阻塞的接口。當(dāng)根端口進(jìn)入阻塞狀態(tài)時(shí),會(huì)選擇優(yōu)先級(jí)最高的替代接口作為新的根端口。當(dāng)對(duì)端端口是Forwarding狀態(tài),則可以立即進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
備份接口(Backup)
一臺(tái)設(shè)備上收到了自己所發(fā)送的BPDU從而被阻塞的接口。
如圖,LSW2上的GE 0/0/3阻塞,因?yàn)槭鞘盏搅薒SW3的BPDU報(bào)文,形成了環(huán)路,且收到的BPDU報(bào)文比自己的優(yōu),從而阻塞,就變成了替代接口。而LSW2上的GE 0/0/5,因?yàn)槭盏降氖亲约喊l(fā)送過(guò)來(lái)的BPDU報(bào)文且端口id較大被阻塞,從而變成備份接口。
BPDU報(bào)文
與STP BPDU相比較
Protocol Version Identifier為2
BPDU Type為0x02,表示為RST BPDU
BPDU flags使用全部的8位
在報(bào)文的最后增加了Versionl Length字段,值為0,表示本BPDU中不包含Versionl內(nèi)容。
最高位和最低位TCA和TC與STP相同。Agreement(同意)及Proposal(提議)用于RSTP的P/A機(jī)制,會(huì)大大提高RSTP的收斂速度。Port Role(接口角色)兩個(gè)bit位,01表示根接口,10表示替代接口,11表示指定接口,00保留。Forwarding(轉(zhuǎn)發(fā))和Learning(學(xué)習(xí))用于表示該RST BPDU發(fā)送接口的接口狀態(tài)。
RSTP與STP不同,在網(wǎng)絡(luò)穩(wěn)定后,STP的非根橋之會(huì)轉(zhuǎn)發(fā)根橋發(fā)來(lái)的BPDU報(bào)文,而RSTP無(wú)論是非根橋還是根橋都會(huì)周期性的發(fā)送BPDU。
在STP中只有在指定端口收到低優(yōu)先級(jí)的配置BPDU時(shí)才會(huì)立即回應(yīng)(發(fā)送自己計(jì)算的配置BPDU報(bào)文),阻塞狀態(tài)端口不會(huì)對(duì)低優(yōu)先級(jí)的配置BPDU做出回應(yīng)。
在RSTP中,指定端口或阻塞狀態(tài)的端口收到低優(yōu)先級(jí)的RST BPDU,也可以立即對(duì)其做出回應(yīng)。
P/A快速收斂機(jī)制
當(dāng)網(wǎng)絡(luò)中增加新的鏈路或故障鏈路恢復(fù)時(shí),鏈路兩端必有一個(gè)端口的角色是指定端口,在STP中,該指定端口需要等待30s才能進(jìn)入Forwarding狀態(tài)。
P/A機(jī)制是指定端口可以通過(guò)與對(duì)端網(wǎng)橋進(jìn)行一次握手,即可快速進(jìn)入轉(zhuǎn)發(fā)狀態(tài),無(wú)需任何定時(shí)器。
前提條件是必須是點(diǎn)到點(diǎn)的鏈路。
當(dāng)新鏈路連接時(shí)候,鏈路兩端的端口初始都為指定端口并處于阻塞的狀態(tài)。
當(dāng)指定端口處于Discarding和Learning狀態(tài)時(shí),所發(fā)送的BPDU中的Proposal位將被置為1,端口的角色位11,是指定端口。(都是指定端口發(fā)的喲)
收到Proposal置位的RST BPDU報(bào)文后,交換機(jī)會(huì)判斷接收端口是否為根端口,如果是根端口,會(huì)進(jìn)行同步過(guò)程,同步過(guò)程是阻塞除邊緣端口(直接與用戶(hù)終端相連,沒(méi)有連接到其他交換機(jī)或者網(wǎng)橋,一般需要手動(dòng)配置為邊緣端口,可以忽略Forward Delay時(shí)間直接進(jìn)入Forwarding狀態(tài),無(wú)時(shí)延)之外的所有端口,為了消除本交換機(jī)產(chǎn)生環(huán)路的可能。
完成同步過(guò)程后,根端口進(jìn)入轉(zhuǎn)發(fā)狀態(tài)并從根端口回發(fā)Agreement置為1的RST BPDU報(bào)文,內(nèi)容復(fù)制收到的Proposal置為的RST BPDU報(bào)文,唯一不同的就是Flags字段的Agreement也置為1。
收到Agreement置1的BPDU報(bào)文后,該接口會(huì)立即進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
同步過(guò)程阻塞的接口也會(huì)繼續(xù)往下進(jìn)行這個(gè)過(guò)程。
如果指定端口發(fā)出Proposal置位的BPDU后沒(méi)有收到Agreement BPDU報(bào)文,則該端口需要等待30s(兩個(gè)延遲時(shí)間)才會(huì)進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
拓?fù)涓淖兲幚?/p>
在STP中,端口變?yōu)镕orwarding狀態(tài)或從Forwarding變?yōu)锽locking狀態(tài)均會(huì)觸發(fā)拓?fù)涓淖兲幚磉^(guò)程,而RSTP只在非邊緣端口轉(zhuǎn)為Forwarding狀態(tài)時(shí)才會(huì)觸發(fā)處理過(guò)程。
當(dāng)交換機(jī)由非邊緣端口轉(zhuǎn)變?yōu)镕orwarding狀態(tài)時(shí),網(wǎng)橋會(huì)在兩倍的Hello Time時(shí)間內(nèi)向根端口以及指定端口發(fā)送TC置位為1的RST BPDU,同時(shí)清除這些端口學(xué)習(xí)到的MAC地址。
其他交換機(jī)收到TC置位的RST BPDU時(shí)候,會(huì)清除接收TC報(bào)文的端口以及邊緣端口之外的其余端口MAC地址,并同樣會(huì)在兩倍的Hello Time時(shí)間內(nèi)向根端口以及指定端口發(fā)送TC置位為1的RST BPDU報(bào)文。
交換機(jī)收到TC置位的RST BPDU后不需要在Max Age+Forward Delay時(shí)間內(nèi)將MAC地址老化時(shí)間設(shè)置為Forward Delay,而是直接清除端口MAC地址,重新進(jìn)行學(xué)習(xí),從而實(shí)現(xiàn)更快的收斂。
注:本人使用華為模擬器,拓?fù)涓淖兪盏酵負(fù)涓淖兊膱?bào)文,并沒(méi)有立即清除端口mac,好像是一個(gè)Foreard Delay時(shí)間后才清除mac。
RSTP和STP的兼容
當(dāng)運(yùn)行RSTP的交換機(jī)連續(xù)3次接收到配置BPDU時(shí)候,認(rèn)為改端口和STP相連,該端口將切換到STP協(xié)議運(yùn)行。
MSTP(802.1S,Multiple Spanning Tree Protocol,多生成樹(shù)協(xié)議)
基本思想
基于實(shí)例(Instance)計(jì)算出多棵生成樹(shù),每個(gè)實(shí)例都會(huì)生成自己的生成樹(shù),并且每個(gè)實(shí)例可以包含一個(gè)或多個(gè)VLAN,每一個(gè)VLAN只能映射到一個(gè)實(shí)例。交換機(jī)可以通過(guò)配置多個(gè)實(shí)例,實(shí)現(xiàn)不同VLAN組之間的負(fù)載分擔(dān)。
基本概念解釋
MST域是一個(gè)具有相同域名、修訂級(jí)別和摘要信息的網(wǎng)橋或交換機(jī)構(gòu)成的集合,一個(gè)域可以包含多個(gè)實(shí)例。
域名,本域的名稱(chēng),MSTP中每一個(gè)域都有一個(gè)獨(dú)一無(wú)二的名稱(chēng),配置不同域名會(huì)被認(rèn)為屬于不同的域。
修訂級(jí)別,目前保留,默認(rèn)為0。
配置摘要,由網(wǎng)橋的vlan和實(shí)例映射關(guān)系生成的長(zhǎng)度為16字節(jié)的HMAC-MD5簽名。
IST是MST域內(nèi)的一顆生成樹(shù),每顆生成樹(shù)對(duì)應(yīng)一個(gè)實(shí)例。實(shí)例號(hào)為0,一定存在的
MSTI是多生成樹(shù)實(shí)例,實(shí)例號(hào)從1開(kāi)始,為0的實(shí)例號(hào)是IST
MSTI域根,是每一個(gè)MSTI實(shí)例上優(yōu)先級(jí)最高的網(wǎng)橋
CST(公共生成樹(shù))是網(wǎng)絡(luò)內(nèi)所有MST域通過(guò)計(jì)算得到的一棵樹(shù)。
CIST(公共和內(nèi)部生成樹(shù))是整個(gè)網(wǎng)絡(luò)所有設(shè)備經(jīng)過(guò)生成樹(shù)計(jì)算得到的一棵樹(shù)。由IST和CST共同構(gòu)成。
CIST總根,是整個(gè)網(wǎng)絡(luò)中優(yōu)先級(jí)最高的橋,是CIST的根橋。
CIST域根,IST的根橋即為CIST的域根,是MST域內(nèi)距離總根最近的橋,也稱(chēng)為Master橋。
端口角色
相較RSTP,橋的角色上,MSTP增加了Master橋。端口角色上,增加了域邊界端口以及Master端口。根端口、指定端口、Alternate端口、Backup端口定義和RSTP一樣。
IST(實(shí)例號(hào)為0網(wǎng)絡(luò))中距離總根最近的橋?yàn)镸aster橋,該橋?yàn)镮ST的根,Master橋指向總根(整個(gè)網(wǎng)絡(luò)中優(yōu)先級(jí)最高的橋)的端口為Master端口。
MST域內(nèi)網(wǎng)橋和其他MST域或STP/RSTP網(wǎng)橋相連的端口稱(chēng)為域邊界端口,Master端口也是域邊界端口。
如下圖創(chuàng)建了三個(gè)區(qū)域,暫時(shí)都只有IST(實(shí)例0),優(yōu)先級(jí)和MAC都是我編的,然后下圖標(biāo)注了MSTP所有的概念,更方便理解吧。
BPDU報(bào)文
BPDU Type:0x02
BPDU flags:CIST標(biāo)志字段
Root Identifier:CIST總根交換機(jī)ID
Root Path Cost:CIST外部路徑開(kāi)銷(xiāo),指從本交換機(jī)所屬的MST域到CIST根交換機(jī)的累計(jì)路徑開(kāi)銷(xiāo)。
Bridge Identifier:CIST的域根交換機(jī)ID(每個(gè)域距離根橋最近的交換機(jī),域根并不是只有一個(gè),每個(gè)域都有一個(gè)域根,很多資料上也稱(chēng)為CIST域根,我理解一半天),即IST Master的ID。如果總根在這個(gè)域內(nèi),那么域根交換機(jī)ID就是總根交換機(jī)ID。
Port Identifier:CIST的指定端口ID(當(dāng)前報(bào)文的上游交換機(jī)發(fā)送端口)
Version 3 Length:表示MST專(zhuān)有字段的長(zhǎng)度,用于接收到BPDU后進(jìn)行校驗(yàn)。
MST Config ID:格式選擇字符固定為0x00。
MST Config name:域名
MST Config revision:修訂級(jí)別,為0
MST Config digest:配置摘要
CIST Internal Root Path Cost:CIST內(nèi)部路徑開(kāi)銷(xiāo),表示發(fā)送此BPDU的網(wǎng)橋到達(dá)CIST域根的路徑開(kāi)銷(xiāo)。
CIST Bridge Identifier:發(fā)送此BPDU的網(wǎng)橋ID
CIST Remaining hops:CIST剩余跳數(shù),限制MST域的規(guī)模,從域根開(kāi)始,BPDU每經(jīng)過(guò)一個(gè)網(wǎng)橋,跳數(shù)就減一,網(wǎng)橋會(huì)丟棄收到的跳數(shù)為0的BPDU,從而限制MST域的規(guī)模。默認(rèn)為20
MSTI配置信息中的內(nèi)容只在各自實(shí)例中有效,且每個(gè)實(shí)例中這些字段值是獨(dú)立的
MSTI flag:一個(gè)字節(jié),從第一位到第七位的定義和RSTP相同,第八位為Master標(biāo)志位
Region Root:表示該實(shí)例的域根ID
Internal root path cost:表示發(fā)送此BPDU的網(wǎng)橋到達(dá)MSTI域根的路徑開(kāi)銷(xiāo)
Bridge Identifier priority:表示發(fā)送此BPDU的網(wǎng)橋,即指定橋的優(yōu)先級(jí),其中高4位為優(yōu)先級(jí)位,第四位固定為0
Port Identifier priority:表示發(fā)送此BPDU的端口的優(yōu)先級(jí),其中高4位為優(yōu)先級(jí)位,第四位固定為0
Remaining hops:表示BPDU在該MST實(shí)例中的剩余跳數(shù)。
優(yōu)先級(jí)向量
MSTP計(jì)算可以分為CIST和MSTI計(jì)算兩部分
CIST優(yōu)先級(jí)向量
用于計(jì)算生成CIST生成樹(shù)和CST生成樹(shù),總根,域根等
{CIST總根ID、外部路徑開(kāi)銷(xiāo)、域根ID、內(nèi)部路徑開(kāi)銷(xiāo)、指定交換設(shè)備ID、指定端口ID、接收端口ID}
再次注意(怕你已經(jīng)被弄暈了),
外部路徑開(kāi)銷(xiāo)是當(dāng)前域的Master橋到總根的路徑開(kāi)銷(xiāo)
內(nèi)部路徑開(kāi)銷(xiāo)是當(dāng)前交換機(jī)到當(dāng)前域根的路徑開(kāi)銷(xiāo)
指定交換設(shè)備ID就是發(fā)送這個(gè)報(bào)文的交換機(jī)的ID
指定端口ID就是發(fā)送這個(gè)報(bào)文的交換機(jī)的端口ID
對(duì)比是按照從左往右的順序,值小者為優(yōu),給個(gè)報(bào)文的圖直觀一些
MSTI優(yōu)先級(jí)向量用于計(jì)算生成區(qū)域內(nèi)的生成樹(shù)和端口狀態(tài)等,計(jì)算范圍僅限區(qū)域內(nèi)
{域根ID、內(nèi)部路徑開(kāi)銷(xiāo)、指定交換設(shè)備ID、指定端口ID、接收端口ID}
MSTP計(jì)算方法
每個(gè)BPDU既包含CIST計(jì)算所需的信息,也包含MSTI計(jì)算所需要的信息。
計(jì)算生成樹(shù)時(shí)候和RSTP類(lèi)似,在進(jìn)行CST計(jì)算時(shí),會(huì)把MST域看做邏輯上的一個(gè)網(wǎng)橋,網(wǎng)橋ID為IST域根的ID也就是Master橋ID(距離總根最近的橋)。
當(dāng)網(wǎng)橋收到BPDU并判斷不是同一個(gè)域后,不會(huì)解析MST專(zhuān)有字段的信息。
初始時(shí)每個(gè)網(wǎng)橋都認(rèn)為自己是總根,發(fā)送以自己為總根、域根和指定橋的BPDU。
計(jì)算端口角色和交換機(jī)角色過(guò)程與RSTP相同。
CST(公共生成樹(shù))的計(jì)算過(guò)程
需要對(duì)比的優(yōu)先級(jí)向量為{總根、外部路徑開(kāi)銷(xiāo)、域根、指定端口ID、接收端口ID},因?yàn)樯蒀ST時(shí)候把相同的域當(dāng)做一個(gè)網(wǎng)橋了,網(wǎng)橋ID為MST域的Master橋ID,所以自然無(wú)需對(duì)比內(nèi)部路徑開(kāi)銷(xiāo)和指定橋ID了。
初始時(shí),每個(gè)域根向其他域根發(fā)送以自己為總根的BPDU。
確定“根網(wǎng)橋”(一個(gè)域看成一個(gè)網(wǎng)橋),也是CIST的總根。
確定端口角色“根端口”也就是一個(gè)域的Master端口,“根端口”的網(wǎng)橋也就是域根。
確定指定端口、Alternate端口或者Backup端口。
阻塞域之間的Alternate端口和Backup端口。
IST(內(nèi)部生成樹(shù))和MSTI(內(nèi)部生成樹(shù)實(shí)例)的計(jì)算過(guò)程
經(jīng)過(guò)CST的計(jì)算生成了域內(nèi)的根橋(即Master橋)
所需要比較的優(yōu)先級(jí)向量為MSTI優(yōu)先級(jí)向量,即{域根ID、內(nèi)部路徑開(kāi)銷(xiāo)、指定交換設(shè)備ID、指定端口ID、接收端口ID}
域內(nèi)網(wǎng)橋通過(guò)比較內(nèi)部路徑開(kāi)銷(xiāo)來(lái)確定根端口。
通過(guò)比較BPDU的優(yōu)先級(jí)確定指定端口、Alternate端口或者Backup端口。
阻塞IST上的Alternate端口和Backup端口。
MSTP與RSTP交互
RSTP網(wǎng)橋收到MSTP的BPDU時(shí),會(huì)將MSTP的BPDU報(bào)文里的CIST總根ID,外部路徑開(kāi)銷(xiāo),域根ID,指定端口ID分別與RSTP的BPDU報(bào)文里的根橋ID,根橋開(kāi)銷(xiāo),指定橋ID,指定端口ID對(duì)應(yīng)。
MSTP網(wǎng)橋收到RSTP的BPDU時(shí),會(huì)將RSTP的BPDU報(bào)文里的根橋ID,根橋開(kāi)銷(xiāo),指定橋ID,指定端口ID分別與MSTP的BPDU報(bào)文里的CIST總根ID,外部路徑開(kāi)銷(xiāo),域根ID,指定端口ID對(duì)應(yīng)。
P/A快速收斂機(jī)制
MSTP支持RSTP的快速收斂機(jī)制,但有不同點(diǎn)。詳細(xì)的可以看上面的RSTP的P/A機(jī)制,這里只寫(xiě)區(qū)別。
RSTP是上游交換機(jī)指定端口發(fā)送Proposal置位的BPDU,下游網(wǎng)橋執(zhí)行同步操作之后回應(yīng)Agreement置位的BPDU,上游網(wǎng)橋收到Agreement置位的BPDU后其指定端口可以立即進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
MSTP是上游交換機(jī)指定端口發(fā)送Proposal置位和Agreement置位的BPDU,下游網(wǎng)橋收到BPDU后執(zhí)行同步操作然后回應(yīng)Agreement置位的BPDU,上游網(wǎng)橋收到Agreement置位的BPDU后其指定端口可以立即進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
補(bǔ)充
MSTP和實(shí)例相關(guān)的講的較少,因?yàn)橥粋€(gè)MST域中可以有多個(gè)實(shí)例,每個(gè)實(shí)例可以運(yùn)行通過(guò)一個(gè)或n個(gè)VLAN,但是一個(gè)VLAN只能存在一個(gè)實(shí)例中,然后每個(gè)實(shí)例都會(huì)各自生成生成樹(shù),除了IST(實(shí)例為0)的根節(jié)點(diǎn)是Master橋,其余實(shí)例都是按照RSTP類(lèi)似方法計(jì)算出各自實(shí)例自己的根橋,指定橋,根端口和指定端口的。
MSTP因?yàn)橛卸鄠€(gè)實(shí)例,每個(gè)端口上對(duì)實(shí)例的狀態(tài)可能不一樣,比如在實(shí)例1端口為根端口,實(shí)例2上這個(gè)端口為指定端口,所以會(huì)出現(xiàn)端口既會(huì)發(fā)BPDU報(bào)文也會(huì)收BPDU報(bào)文。
拓?fù)涓淖兊奶幚砗蚏STP相同。
MSTP比RSTP就是多了分區(qū)域多實(shí)例,細(xì)化看,每個(gè)實(shí)例運(yùn)行的都是RSTP。
RSTP和MSTP啟動(dòng)時(shí)簡(jiǎn)單介紹
當(dāng)一臺(tái)交換設(shè)備啟動(dòng)RSTP和MSTP時(shí)候,會(huì)默認(rèn)自己為根橋,且所有使能RSTP或者M(jìn)STP的端口都為指定端口Discarding狀態(tài),這樣就會(huì)觸發(fā)P/A快速機(jī)制,當(dāng)一個(gè)指定端口發(fā)送P/A機(jī)制報(bào)文沒(méi)收到對(duì)端發(fā)送過(guò)來(lái)的回復(fù)報(bào)文,則需要經(jīng)過(guò)2倍的Forward delay時(shí)間才能到轉(zhuǎn)發(fā)態(tài)。假如下游有一個(gè)交換設(shè)備同時(shí)開(kāi)啟了RSTP或者M(jìn)STP,則都會(huì)發(fā)送P/A機(jī)制報(bào)文,收到報(bào)文后兩個(gè)指定端口會(huì)對(duì)比報(bào)文確定自己的角色從而繼續(xù)P/A快速機(jī)制。P/A會(huì)阻塞除邊緣端口和根端口外的其他所有端口,端口兩兩進(jìn)行這種操作從而生成整個(gè)生成樹(shù)。
MSTP啟動(dòng)時(shí),多個(gè)實(shí)例都會(huì)在互不干擾的生成對(duì)應(yīng)的生成樹(shù),類(lèi)似多線程一樣。
MSTP收到其他區(qū)域報(bào)文時(shí)候,只會(huì)對(duì)比CIST的信息,MIST內(nèi)容會(huì)忽略。
審核編輯:郭婷
-
交換機(jī)
+關(guān)注
關(guān)注
20文章
2610瀏覽量
99098
原文標(biāo)題:MSTP(802.1S,Multiple Spanning Tree Protocol,多生成樹(shù)協(xié)議)
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論