網絡協議中STP根橋的選舉

  在L2網絡(數據鏈路層)中,爲避免某臺網絡設備故障導致網絡中斷,常常會使鏈路冗餘,如下圖所示:
           這裏寫圖片描述
  當某一鏈路故障或單臺交換機故障時,網絡通信不會因此中斷。但由此引入另一個問題–橋接環,即當所有設備、鏈路都是正常的時候,由主機1發給主機2的報文將在兩臺設備(5,6)之間形成廣播風暴。原理是L2交換機在收到報文時,若找不到目的Mac將在除了接受端口外的其他端口廣播,而3、4只是中繼器,當主機2的應答報文因爲各種原因沒有到達交換機5、6時,原報文將在網絡內無限的廣播下去。
  爲解決橋接環的問題,出現了生成樹協議:Spanning Tree Protocol。其核心思想是,先在網絡中的所有交換機中選擇一個根節點。其他交換機中,將到根節點花費最短的端口成爲根端口,只有根端口允許學習報文mac地址並轉發,非根端口禁止轉發,這樣網絡中的所有交換機構成一個樹形結構,網絡內的報文交換都是沿着樹形轉發,可避免環路的產生。原理我都懂,但是今天看書時,突然對網絡拓撲中所有交換機節點選取根節點的實現感興趣了。協議只定義了主要思想和接口,具體實現是由各大網絡設備商自己倒騰的。百度一下,網上也是一堆的1、2、3,都是隻拿協議說事。忍不住好奇,想着如果自己實現,該怎麼弄,聲明以下想法未經實踐驗證。

前提:

  1. 每個設備都不知道整個網絡拓撲,最初設備只知道自己。
  2. 根據STP協議的定義,網絡設備可以通過週期發送BPDU報文,也能收到和解析BPDU報文
  3. 協議定義根橋由優先級和mac比較後判斷,這些信息在BPDU報文中攜帶。
  4. BPDU報文不同於LLDP報文,通過設備後會繼續轉發

根橋選舉:

假定網絡中有4臺交換機參與選舉(爲簡化,直接以其序號表明判斷後的結果,序號越小,優先級越高)
每隔一段時間,設備都是將自己認爲的根橋信息通過BPDU報文廣播出去,如果從某一個端口收到的BPDU報文優先級高於本設備記錄的根橋信息,會停止發送BPDU,若一段時間(20s)後不再收到更優的BPDU,將繼續發送BPDU。
        這裏寫圖片描述
        
        這裏寫圖片描述
由上可以看到網絡中所有設備都認爲設備1爲根橋,這時會有一個問題,設備1何時判斷自己成爲了根橋,並開始發送hello報文。
假設當收到其他設備發送的BPDU報文,且BPDU報文中認爲1是根橋時,這時設備1斷定自己是根橋。由上圖看,當其他設備收到比記錄的根橋優先級高的BPDU報文時,設備更新根橋信息,並停止發送BPDU報文,任由高優先級的報文傳遍整網(在20s時間內),當期間由收到比記錄的根橋優先級更高的BPDU報文時,更新根橋信息,BPDU報文再傳回設備1,此時設備1斷定自己是根橋,沒有問題,但在特殊的有環路的網絡中,此方法不太合適,個人認爲等待20s時間過後的第二波BPDU報文(待確認信息)更可靠,而且需要牢記的是,在根橋沒有選出來時,STP還沒有工作,此時的BPDU報文也會形成廣播風暴。
理解不深,留坑待填。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章