STP 生成樹原理【
STP 的介紹】STP的全稱是spanning-tree protocol。STP協(xié)議是一個二層的鏈路管理協(xié)議,它在提供鏈路冗余的同時防止網(wǎng)絡(luò)產(chǎn)生環(huán)路。STP協(xié)議(Spanning tree protocol)的本質(zhì)就是實(shí)現(xiàn)在交換網(wǎng)絡(luò)中鏈路的備份和負(fù)載的分擔(dān).STP是 生成樹協(xié)議,主要功能是從拓?fù)渲星宄?/font>2層 環(huán)路。【 BPUD 與生成樹原理分析】一。BPDU里有什么?二。每個字段做什么用? 協(xié)議ID和版本號:目前都 是0,表示的是這是個STP協(xié)議。 BPDU類型:表示的是配置BPDU還是TCN的BPDU。 標(biāo)志域:第一位和最后一位有用到,用來表示這是一個拓?fù)渥兏鼛?,還是拓?fù)渥兏_認(rèn) 幀。 根網(wǎng)橋ID: 路徑成本:4個字節(jié),計(jì)算 到根橋的路徑成本。 橋ID:8個字節(jié)。由2個字節(jié)優(yōu)先級和6個字節(jié)MAC地址構(gòu)成。2個字節(jié)里前4bits表示優(yōu)先級,后12bits表示擴(kuò)展位(vlan數(shù))。默認(rèn)優(yōu)先級是32768,最大是65535。 端口ID:由優(yōu)先級加端口 出廠編號構(gòu)成,優(yōu)先級可以修改,但是一般不推薦修改。 消息老化時間: 消息壽命:消息最多存活時間。 hello時間:默認(rèn)是兩秒,可以修改。 轉(zhuǎn)發(fā)延遲:默認(rèn)是15秒, 可以修改。 實(shí)例圖分析: 實(shí)驗(yàn)環(huán)境:在宿舍用wireshark抓的包。 先看1的部分:看到目的MAC地址是01:80:c2:00:00:00,這是個組播地址。 再看2的STP部分: 協(xié)議標(biāo)識和版本都是0. 類型:是配置BPDU。 根標(biāo)識:這里優(yōu)先級是0。(不是很清楚,或許是被改過了) 路徑開銷是:220020 (這 個是累加的) 橋ID:優(yōu)先級32768。 端口標(biāo)識:0x800e 消息老化時間:3 hello 時間是2s。 轉(zhuǎn)發(fā)延遲是15s。 三。BPDU里的字段怎么 用? (生成樹的原理) 浩哥說:“我們只看BPDU”。 現(xiàn)在就看看怎么用BPDU來 解釋STP原理。 首先看幾個術(shù)語: 根橋:具有最小橋ID的 交換機(jī)。 根路徑開銷:一臺交換機(jī)的根路徑開銷是根端口的路徑開銷與數(shù)據(jù)包經(jīng)過的所有交換機(jī)的根路徑開銷之和。根橋的根路徑開銷是零。 根端口:每臺交換機(jī)都有一個根端口,這個端口到根橋的路徑開銷最低。一旦多個端口具有相同的到根橋的路徑開銷時,那么具有最低的端口ID的才會成為根端口。 指定端口:為每個交換LAN網(wǎng)段選定的轉(zhuǎn)發(fā)端口。 現(xiàn)在正式開始: 用一個拓?fù)鋱D來說明:(這是NA時聰哥引以為豪的拓?fù)洌?/font> 假設(shè):他們的優(yōu)先級默認(rèn)都一樣,都是32768. 帶寬都一樣,是100M的。 1.根橋的選舉: 在交換機(jī)開機(jī)后,每個接口都會發(fā)送出BPDU信息,將自己的橋ID填入根網(wǎng)橋ID字段,然后進(jìn)行協(xié)商。發(fā)現(xiàn)別人的橋ID比自己大,就把根網(wǎng)橋換成別人 的,如此迭代到根網(wǎng)橋選出為止。這里協(xié)商后根網(wǎng)橋?yàn)椋?/font>sw1。因?yàn)樗?/font>mac地址最小。(二層取小,三層取大原則)。 總結(jié):一個VLAN里只有一個根網(wǎng)橋。 2.根端口的選舉: 根網(wǎng)橋選舉后,只有根網(wǎng)橋會發(fā)送BPDU信 息,其它交換機(jī)不會發(fā)送,但是會轉(zhuǎn)發(fā)BPDU信息。首先從接受到的BPDU中查看cost of path字段,將自己到鏈路的開銷加上里面的BPDU的值,形成新的cost of path值傳出去。例如:sw2和sw3,sw2從1口看到BPDU中cost of path的值是0,因?yàn)槭?根橋發(fā)來的,由于自己知道自己的接口是100M的,所以將19加上0等于19, 填入那個字段。同理sw3的1口也一樣。這 時候sw2和sw3分別各從1口收到的BPDU的開銷值都是19.現(xiàn)在來分析sw2上2口的鏈路開銷值。2口的cost of path的值為19加上sw3的19,即是38.同理分析sw2和sw3的其它接口,所以sw2和sw3選擇1口 作為根端口。 如果開銷值一樣,就比較發(fā)送BPDU的橋ID。例如:sw4的端口1和2, 由于到根網(wǎng)橋的鏈路開銷一樣,所以現(xiàn)在比較發(fā)送BPDU的橋ID,從1口接受到發(fā)送的橋ID比較小,所以1是根端口。 如果開銷值和發(fā)送BPDU的 橋ID都一樣,那就比較發(fā)送BPDU端口ID字段。例如sw5中1和2端口,由于BPDU是sw4發(fā)送過來的,所以看sw4的端口號,3比4小, 所以和3相連的sw5端口2是根端口(注意這里不是端口1,因?yàn)橐窗l(fā)送BPDU的端口號)。 總結(jié):一個交換機(jī)只有一個根端口。 3.指定端口的選舉。 1)根橋上的端口都是指定端口。(根橋要向外發(fā)BPDU和數(shù)據(jù),所以一定端口一定都是指定端口) 2)根端口對應(yīng)的都是指定端口。 3)其他的選擇跟選根端口的原則基本一樣。但是第二步,開銷值一樣時,選擇橋ID的時候不一樣。 這里的橋ID是本交換機(jī)的 橋ID。其實(shí)指的也是發(fā)送BPDU的橋ID。 例如:sw2和sw3的2端口,因?yàn)檫x擇的指定端口是用來轉(zhuǎn)發(fā)BPDU的,所以比較后,sw2的橋ID比較低,成為指定端口。 總結(jié):一個網(wǎng)段上,只有一個指定端口。 4.非指定端口。 除了上述說的,剩下的端口就是非指定端口,也就是要被阻塞掉的端口。 【小小總結(jié)】 STP防止環(huán)路的機(jī)制是將某些端口阻塞掉,。選根端口,就是選路徑,選指定端口就 是決定要在網(wǎng)段上要將兩個口的哪個口給阻塞掉,從而達(dá)到目的。 關(guān)于STP的目的是 防環(huán)路還是為了冗余的理解: STP是為了更好地冗余。兩個方面來理解: 1)環(huán)路產(chǎn)生的原因的是冗余。 2)后面發(fā)展RSTP,MSTP都不僅僅是為了防環(huán)路,如果是的話,802.1D就可以了。引用第一 段的話,STP協(xié)議的本質(zhì)就是實(shí)現(xiàn)在交換網(wǎng)絡(luò) 中鏈路的備份和負(fù)載的分擔(dān),也就是為了更好的冗余。 友情提示: 1.根據(jù)發(fā)送的BPDU來判斷,只有根網(wǎng)橋才能發(fā)送BPDU。 2.理解根端口和指定端口的區(qū)別,根端口是用來接受BPDU信息,而指定端口是用來轉(zhuǎn)發(fā)BPDU等信息的,一個是接受方, 一個是發(fā)送方,所以當(dāng)鏈路開銷一樣時,在選擇指定端口和根端口時候是相反的。 最后啰唆一下,“我們只看BPDU“。 浩哥這話真是經(jīng)典。(責(zé)任編輯:admin) |
|