1. 程式人生 > 實用技巧 >生成樹的執行機制

生成樹的執行機制

一、冗餘會產生什麼問題

clip_p_w_picpath002

如上圖所示:

1.廣播風暴:當所有裝置剛加電執行,此時PC需要向伺服器傳送資料,那麼,PC需要傳送ARP廣播請求伺服器的MAC地址,由於交換機沒有儲存任何MAC地址,所以交換機的第一步學習PC的源MAC地址,再將目標MAC泛洪出去,首先SW1從介面1泛洪該幀,經由網段1到達SW2的介面1,由於是廣播播,SW2從2介面泛洪該幀,最終會到達SW1.其次,再SW1將幀從介面泛洪的同時,也從介面2泛洪該幀經由網段2到達SW2,SW2也泛洪該廣播幀,最後,因為這個幀是廣播幀,會持續迴圈,造成廣播風暴。

2.多幀複製:假設PC和SW2有儲存伺服器的MAC地址,而SW1沒有儲存,當PC傳送一個單播幀到伺服器,SW1會將該幀泛洪,而SW2知道伺服器連線在SW2的哪個埠,所以SW2只會將幀傳送到伺服器而不泛洪。那麼,SW1會從介面1和介面2分別傳送該幀,SW2會從網段1 和網段2接收到該幀的兩個複製。

3.MAC地址表不穩定:PC向伺服器傳送資料,SW2會分別從介面1 和介面2收到源MAC為PC的MAC地址,所以先是介面1學習到MAC PC,接著又會介面2 學習到MAC PC,造成MAC地址表的不穩定。

二、生成樹的作用:用於二層有冗餘鏈路的情況下防止環路

三、生成樹的BPDU

BPDU(Bridge Protocol Data Unit)

·STP的各種選舉是通過交換BPDU報文來實現的,BPDU是直接封裝在乙太網幀中的。

·對於參與STP的所有SW,它們都通過資料訊息的交換來獲取網路中其他SW的資訊,這種訊息就被稱為BPDU。

·BPDU是直接封裝在二層的協議,其MAC地址最後封裝數為:00。(01:80:c2:00:00:00)

·BPDU的功能:
1.選舉根橋
2.確定冗餘路徑的位置
3.通過阻塞特定埠來避免環路
4.通告網路的拓撲變更
5.監控生成樹的狀態

·BPDU每2S由根橋傳送一次。
最初的網路,每個SW都認為自己是根橋,都會發送BPDU,比較Lowest BID,選舉出一個根橋,此時就只有根橋傳送BPDU。非根橋只進行轉發。

BPDU分兩種型別:
1、配置BPDU--通常由根網橋以週期性間隔發出,包括了STP引數,用於進行各種選舉。
2、TCN(topology change notification 拓撲變更通告)BPDU--這種BPDU是當交換機檢測到拓撲發生變更時所產生。

三、生成樹的角色:根橋、指定網橋、根埠、指定埠、非根非指定埠

要弄清楚這些角色,首先要搞清楚它們是怎麼選舉出來的。兩個原則:一是搶佔式,如果誰條件最優,誰成為指定的角色;二是小者優先,不論是優先順序還是MAC,小的能夠獲得到指定角色。這和OSPF的DR選舉剛好是相反的。

1.根橋的選舉:每個STP網路只有一臺根橋,根橋的所有介面都是指定埠

BID小者優先,在整個二層網路中進行選擇。因為三層的鏈路的冗餘可以通過三層的協議來防止環路,不依賴於STP。

根橋的選舉是比較橋ID的,橋ID由橋優先順序與MAC地址組成,先比較優先順序,再比較MAC地址。優先順序取值0-65535,預設值32768.

在裝置都執行STP的伊始,每臺支援STP的交換機都會參與,且會認為自己的根橋,都發送配置BPDU,把傳送者ID和根橋ID都置為本交換機的。然後所有交換機都能收到其他交換機發送過來的配置BPDU,一個組播幀。所有交換機都會把BID最小的那臺交換機置成根橋

手工影響根橋的選舉:

spanning-tree [vlan 1] priority 0-61440 ,如果不帶vlan這個引數,表示對所有vlan都生效

2.根埠的選舉:每臺非根交換機都選擇一個離根最近的埠成為根埠。

1.比較最低的根橋ID

2.比較本交換機到根橋最低COST值的埠

3.比較傳送BTDU給本交換機的鄰接交換機的BID,如果本交換機在生成樹的網路中連線有多臺指定交換機(離根橋近的交換機)

4.比較傳送BTDU給本交換機的鄰接交換機的PORT ID,較小的優先

port ID:由介面優先順序與埠編號組成,優先順序預設值為128,埠編號就是物理介面編號加1,小的埠編號優先。

spanning-tree vlan 1 port-priority 0-240

3.指定埠選舉:每個網段(鏈路級)只有一個埠成為指定埠

1.比較最低的根橋ID

2.比較鏈路兩端的介面到根橋的cost值,小者優先

3.比較鏈路兩端的交換機的BID,如果有較小BID的交換機的介面優先

4.比較鏈路兩端的交換機的port ID,如果有較小埠ID的交換機的介面優先成為指定埠

4.cost值的計算

從根橋的指定埠發出的BPDU的值為0,然後下游交換機收到BPDU,會加上收到BPDU的介面的cost值,再向下游傳送。也就是說cost值是計算入介面的值的累加。

5.小結:很多初學者可能分不清怎麼樣選舉根埠與指定埠,因為書上寫的都是最低的傳送者BID與最低的埠ID。讓我們無所適從。

四、LAB:接下來我們就可以做一個簡單的實驗了

clip_p_w_picpath004

如上圖所示,交換機的優先順序與介面優先順序都是預設的,所有鏈路都是100M,cost值為19.求根橋、根埠、指定埠與阻塞埠

1.根橋:依照選舉原則,SW1的BID較小,成為根。比較過程:首先比較三臺交換機的優先順序,都是32768,不能得出結果,所以比較MAC地址,SW1有較小的MAC成為根

2.根埠:每臺交換機上離根cost值最小的埠。

SW2的f0/1到達根的cost值為19,因為它收到從根發出來的cost為0的BPDU,加上本身介面的cost,得出結果為19。

SW2的f0/2,收到SW3轉發的COST 為19的BPDU,加上f0/2的cost,為38. 所以SW2選擇F0/1為根埠,同理,SW3選擇f0/3 為根埠

3.指定埠:每網段一個指定埠

根橋的所有埠都是指定埠,因為它們到達根的cost為0.那麼SW2與SW3連線的f0/2這條鏈路需要選擇一個指定埠

首先比較cost值,兩邊到達根橋的cost值相同,都為38.所以接下來比較BID

因為SW2的BID較小,所以SW2的連線埠f0/2成為該網段的指定埠。

4.因為SW3的f0/2埠不是根埠,也是不鏈路的指定埠,那麼這隻能處於阻塞狀態

上圖的驗證,可以使用GNS搭建一個簡單的拓撲,按照1 2 3,三臺3640的機器。預設情況下,SW1的MAC是cc00,依次向上為cc01。

如果有四臺交換機,或者多條冗餘鏈路,依照上面介紹的原則,也可以快速獲得結果。如果大家發現我講述的STP選舉有問題,請大家指正。

轉載於:https://blog.51cto.com/liu008qing/555409