STP 生成樹原理
【STP的介紹】
STP的全稱是spanning-tree protocol。STP協議是一個二層的鏈路管理協議,它在提供鏈路冗餘的同時防止網絡產生環路。STP協議(Spanning tree protocol)的本質就是實如今交換網絡中鏈路的備份和負載的分擔.STP是生成樹協議,主要功能是從拓撲中清除第2層環路。
【BPUD與生成樹原理分析】
一。BPDU裏有什麼?
二。每一個字段作什麼用?
協議ID和版本號:目前都是0,表示的是這是個STP協議。
BPDU類型:表示的是配置BPDU仍是TCN的BPDU。
標誌域:第一位和最後一位有用到,用來表示這是一個拓撲變動幀,仍是拓撲變動確認幀。
根網橋ID:
路徑成本:4個字節,計算到根橋的路徑成本。
橋ID:8個字節。由2個字節優先級和6個字節MAC地址構成。2個字節裏前4bits表示優先級,後12bits表示擴展位(vlan數)。默認優先級是32768,最大是65535。
端口ID:由優先級加端口出廠編號構成,優先級能夠修改,可是通常不推薦修改。
消息老化時間:
消息壽命:消息最多存活時間。
hello時間:默認是兩秒,能夠修改。
轉發延遲:默認是15秒,能夠修改。
實例圖分析:
實驗環境:在宿舍用wireshark抓的包。
先看1的部分:看到目的MAC地址是01:80:c2:00:00:00,這是個組播地址。
再看2的STP部分:
協議標識和版本都是0.
類型:是配置BPDU。
根標識:這裏優先級是0。(不是很清楚,或許是被改過了)
路徑開銷是:220020 (這個是累加的)
橋ID:優先級32768。
端口標識:0x800e
消息老化時間:3
hello 時間是2s。
轉發延遲是15s。
三。BPDU裏的字段怎麼用? (生成樹的原理)
浩哥說:「咱們只看BPDU」。
如今就看看怎麼用BPDU來解釋STP原理。
首先看幾個術語:
根橋:具有最小橋ID的交換機。
根路徑開銷:一臺交換機的根路徑開銷是根端口的路徑開銷與數據包通過的全部交換機的根路徑開銷之和。根橋的根路徑開銷是零。
根端口:每臺交換機都有一個根端口,這個端口到根橋的路徑開銷最低。一旦多個端口具備相同的到根橋的路徑開銷時,那麼具備最低的端口ID的纔會成爲根端口。
指定端口:爲每一個交換LAN網段選定的轉發端口。
如今正式開始:
用一個拓撲圖來講明:(這是NA時聰哥引覺得豪的拓撲)
假設:他們的優先級默認都同樣,都是32768.
帶寬都同樣,是
100M
的。
1.根橋的選舉:
在交換機開機後,每一個接口都會發送出BPDU信息,將本身的橋ID填入根網橋ID字段,而後進行協商。發現別人的橋ID比本身大,就把根網橋換成別人的,如此迭代到根網橋選出爲止。這裏協商後根網橋爲:sw1。由於他的mac地址最小。(二層取小,三層取大原則)。
總結:一個VLAN裏只有一個根網橋。
2.根端口的選舉:
根網橋選舉後,只有根網橋會發送BPDU信息,其它交換機不會發送,可是會轉發BPDU信息。首先從接受到的BPDU中查看cost of path字段,將本身到鏈路的開銷加上裏面的BPDU的值,造成新的cost of path值傳出去。例如:sw2和sw3,sw2從1口看到BPDU中cost of
path的值是0,由於是根橋發來的,因爲本身知道本身的接口是
100M
的,因此將19加上0等於19,填入那個字段。同理sw3的1口也同樣。這時候sw2和sw3分別各從1口收到的BPDU的開銷值都是19.如今來分析sw2上2口的鏈路開銷值。2口的cost of path的值爲19加上sw3的19,便是38.同理分析sw2和sw3的其它接口,因此sw2和sw3選擇1口做爲根端口。
若是開銷值同樣,就比較發送BPDU的橋ID。例如:sw4的端口1和2,因爲到根網橋的鏈路開銷同樣,因此如今比較發送BPDU的橋ID,從1口接受到發送的橋ID比較小,因此1是根端口。
若是開銷值和發送BPDU的橋ID都同樣,那就比較發送BPDU端口ID字段。例如sw5中1和2端口,因爲BPDU是sw4發送過來的,因此看sw4的端口號,3比4小,因此和3相連的sw5端口2是根端口(注意這裏不是端口1,由於要看發送BPDU的端口號)。
總結:一個交換機只有一個根端口。
3.指定端口的選舉。
1)根橋上的端口都是指定端口。(根橋要向外發BPDU和數據,因此必定端口必定都是指定端口)
2)根端口對應的都是指定端口。
3)其餘的選擇跟選根端口的原則基本同樣。可是第二步,開銷值同樣時,選擇橋ID的時候不同。
這裏的橋ID是本交換機的橋ID。其實指的也是發送BPDU的橋ID。
例如:sw2和sw3的2端口,由於選擇的指定端口是用來轉發BPDU的,因此比較後,sw2的橋ID比較低,成爲指定端口。
總結:一個網段上,只有一個指定端口。
4.非指定端口。
除了上述說的,剩下的端口就是非指定端口,也就是要被阻塞掉的端口。
【小小總結】
STP防止環路的機制是將某些端口阻塞掉,。選根端口,就是選路徑,選指定端口就是決定要在網段上要將兩個口的哪一個口給阻塞掉,從而達到目的。
關於STP的目的是防環路仍是爲了冗餘的理解:
STP是爲了更好地冗餘。兩個方面來理解:
1)環路產生的緣由的是冗餘。
2)後面發展RSTP,MSTP都不單單是爲了防環路,若是是的話,802.1D就能夠了。引用第一段的話,STP協議的本質就是實如今交換網絡中鏈路的備份和負載的分擔,也就是爲了更好的冗餘。
友情提示:
1.根據發送的BPDU來判斷,只有根網橋才能發送BPDU。
2.理解根端口和指定端口的區別,根端口是用來接受BPDU信息,而指定端口是用來轉發BPDU等信息的,一個是接受方,一個是發送方,因此當鏈路開銷同樣時,在選擇指定端口和根端口時候是相反的。
最後囉唆一下,「咱們只看BPDU「。 浩哥這話真是經典。
二〇〇九年八月六日
wzhj132