1、冗餘會產生什麼問題服務器
如上圖所示:網絡
1.廣播風暴:當全部設備剛加電運行,此時PC須要向服務器發送數據,那麼,PC須要發送ARP廣播請求服務器的MAC地址,因爲交換機沒有存儲任何MAC地址,因此交換機的第一步學習PC的源MAC地址,再將目標MAC泛洪出去,首先SW1從接口1泛洪該幀,經由網段1到達SW2的接口1,因爲是廣播播,SW2從2接口泛洪該幀,最終會到達SW1.其次,再SW1將幀從接口泛洪的同時,也從接口2泛洪該幀經由網段2到達SW2,SW2也泛洪該廣播幀,最後,由於這個幀是廣播幀,會持續循環,形成廣播風暴。ide
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地址表的不穩定。spa
2、生成樹的做用:用於二層有冗餘鏈路的狀況下防止環路blog
3、生成樹的BPDU接口
BPDU(Bridge Protocol Data Unit)ip
·STP的各類選舉是經過交換BPDU報文來實現的,BPDU是直接封裝在以太網幀中的。get
·對於參與STP的全部SW,它們都經過數據消息的交換來獲取網絡中其餘SW的信息,這種消息就被稱爲BPDU。it
·BPDU是直接封裝在二層的協議,其MAC地址最後封裝數爲:00。(01:80:c2:00:00:00)
·BPDU的功能:
1.選舉根橋
2.肯定冗餘路徑的位置
3.經過阻塞特定端口來避免環路
4.通告網絡的拓撲變動
5.監控生成樹的狀態
·BPDU每2S由根橋發送一次。
最初的網絡,每一個SW都認爲本身是根橋,都會發送BPDU,比較Lowest BID,選舉出一個根橋,此時就只有根橋發送BPDU。非根橋只進行轉發。
BPDU分兩種類型:
一、配置BPDU--一般由根網橋以週期性間隔發出,包括了STP參數,用於進行各類選舉。
二、TCN(topology change notification 拓撲變動通告)BPDU--這種BPDU是當交換機檢測到拓撲發生變動時所產生。
3、生成樹的角色:根橋、指定網橋、根端口、指定端口、非根非指定端口
要弄清楚這些角色,首先要搞清楚它們是怎麼選舉出來的。兩個原則:一是搶佔式,若是誰條件最優,誰成爲指定的角色;二是小者優先,不管是優先級仍是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。讓咱們無所適從。
4、LAB:接下來咱們就能夠作一個簡單的實驗了
如上圖所示,交換機的優先級與接口優先級都是默認的,全部鏈路都是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選舉有問題,請你們指正。