網路(四)之STP生成樹的原理及演算法

2021-10-02 17:20:24 字數 3259 閱讀 9490

續上篇的vtp,這篇我們主要講一下交換機本身做冗餘而又要防止廣播風暴的形成而自帶的一種協議,還是和以前的一樣,本篇主要講述思科裝置的stp原理與演算法,當然其他廠商的裝置也是一樣,只是思科的裝置有的一些特殊的功能。

stp(spanning tree protocol)是生成樹協議的英文縮寫,可應用於計算機網路中樹形拓撲結構建立,主要作用是防止網橋網路中的冗餘鏈路形成環路工作。但某些特定因素會導致stp失敗,要排除故障可能非常困難,這取決於網路設計 [1] 。生成樹協議適合所有廠商的網路裝置,在配置上和體現功能強度上有所差別,但是在原理和應用效果是一致的。

stp的基本原理是,通過在交換機之間傳遞一種特殊的協議報文,網橋協議資料單元(bridge protocol data unit,簡稱bpdu),來確定網路的拓撲結構。bpdu有兩種,配置bpdu(configuration bpdu)和tcn bpdu。前者是用於計算無環的生成樹的,後者則是用於在二層網路拓撲發生變化時產生用來縮短mac表項的重新整理時間的(由預設的300s縮短為15s)。

spanning tree protocol(stp)是在ieee 802.1d 文件中定義,該協議的原理是按照樹的結構來構造網路拓撲,消除網路中的環路,避免由於環路的存在而造成廣播風暴問題。

以上面的拓撲為例,在拓撲設計中我們可能為了做冗餘,而形成了環路,以switch1為例,倘若沒有配置stp,pc0對pc1發包,經過switch1,會從f0/2和f0/3口出去,傳送到switch0,switch會將包發回switch1,造成環路,從而形成廣播風暴,從而無法正常上網,也對交換機破壞較大。而做stp話,交換機會將switch0上的f0/1口阻塞掉,從而讓switch1資料報從f0/3走。至於為什麼阻塞掉的是switch0上的f0/1口,下面我們講解一下stp的選舉規則。

1.橋id(bridge identification):每一台執行stp的交換機都擁有乙個唯一的橋id,橋id共8byte,包含16bit的橋優先順序(bridge priority),和48bit的橋mac位址,其中橋優先順序佔橋id的高16bit,而mac位址佔據其餘的48bit。

2.根橋(root bridge):stp最主要的作用之一是在網路中計算出一棵無環的「樹」,這棵樹一旦形成,網路中的無環拓撲也就形成了。對於這棵樹而言,樹根是非常重要的,而根橋就相當於這棵樹的樹根。

3.開銷(cost)與根路徑開銷(root path cost,rpc):每乙個啟用了stp的介面都維護者乙個cost值,介面的cost主要用於計算rpc,也就是計算到達根的開銷。介面的預設cost除了與其速率、工作模式有關,還與交換機使用的stp cost計算方法有關。

4.介面id(port identification):執行stp的交換機使用介面id來標識每個介面,介面id主要用於在特定場景下選舉指定介面。介面長度為16bit,由兩部分組成,其中高4bit是介面優先順序,低12bit是介面編號。

選舉條件:

1.開銷

2.橋id(橋優先順序+mac)

3.埠id(埠優先順序+埠派生碼)

選舉規則:

1.根橋上的埠都是指定埠

2.每個非根橋有且只有一根埠

3.一條鏈路路上有且只有乙個指定埠

4.跟埠對應指定埠

5.選不上跟埠或者指定埠的將會被阻塞

1.在整個網路中,先選出根橋,可以通過比較交換機的優先順序和mac位址大小,越小的越優先。

2.在每個非根橋上選舉根埠(有且只有乙個),可以通過比較開銷值,達到根橋開銷越小的埠就是根埠。

3.在每條鏈路選舉指定埠,每條鏈路有乙個指定埠。可以通過比較介面的優先順序和mac,越小的就是指定埠。

4.剩下的埠就是堵塞埠了。

以上面的拓撲為例,第一步,先選根橋,檢視交換機的優先順序與mac

從圖上可以看出,優先順序一樣,但是比較一下mac位址,可以選出switch2是根橋。

第二步,在每乙個非根橋上選舉根埠,也是檢視上面那個圖,從圖中我們可以看出,switch1到switch2(根橋)的開銷是19,從f0/3口出去,而switch0則從f0/2口到達switch2(根橋)的開銷也是19,很明顯開銷最小,所以可以選出switch0的f0/2是根埠,switch1的f0/3的介面是根埠。當我們不知道開銷的時候可以根據下圖的速率來計算。

第三步,選舉指定埠,我們知道,根橋上的介面都指定埠,那麼以上面的拓撲為例,現在只差switch1的f0/2口與switch0的f0/1口這條鏈路沒有選舉埠。這道拓撲的話其實看mac很明顯得出switch1比較小。所以switch的f0/2就是指定埠了。

第四步,剩下的switch0的f0/1口就是阻塞埠了。

上面的拓撲其實很簡單,這裡只是講解一下解題思路,讓我們對stp演算法有個充分的了解。

到這裡,可能有同學問了,我們搭建好交換機,它就已經給我們配置好stp了。為什麼我們還要去算它呢,其實,在我們只有清楚了他的演算法,那麼我們在設計其拓撲我們就更能夠隨心所欲了,比如在設計冗餘結構的時候,兩條路線都夠自由的**流量,而不會造成資源的浪費。講到這,就不得不提一下思科的pvst。pvst是解決在虛擬區域網上處理生成樹的cisco特有解決方案。pvst為每個虛擬區域網執行單獨的生成樹例項.

以上面拓撲為例,很明顯我們配置完成,阻塞埠就是switch1的f/2口了,這樣子,無論是vlan2,還是vlan3 之間的pc訪問,都是走下面的那條線路。上面的鏈路就單單起乙個冗餘的作用了,這樣很明顯資源造成浪費。而假如我們修改其vlan3的優先順序,讓vlan3走上面的鏈路,這樣資源和冗餘都能做到了。

具體配置:

switch(config)#spanning-tree vlan 3 priority 28672 (優先順序改小)

使上面的switch1選舉為根橋,從而改變阻塞埠。

很明顯,配置後之後阻塞埠的燈也亮了,從而實現vlan3之間走上面的鏈路。這裡我就不做測試了,有興趣的同學就試做一下。

stp是交換機中的乙個難點,但也是重點,只要搞清楚其選舉規則,很容易就能理解了。下一期就開始講路由器了,有興趣的同學可以持續關注。

網路 STP(生成樹協議)原理與配置

rstp快速生產樹協議 mstp多例項生成樹 stp spanning tree protocol 是生成樹協議的英文縮寫,可應用於計算機網路中樹形拓撲結構建立,主要作用是防止網橋網路中的冗餘鏈路形成環路工作。但某些特定因素會導致stp失敗,要排除故障可能非常困難,這取決於網路設計 生成樹協議適合所...

網路協議之 STP生成樹協議學習心得

為了解決單點故障的問題,提出冗餘的概念,但是又產生了新的問題 環路 表現形式為 1 mac位址表抖動 2 多幀複製 3 廣播風暴先了解幾個概念 brige id 簡稱bid 即網橋id 網橋id代表在當前環境下的唯一一台交換機 組成 1 優先順序,代表乙個交換機的優先程度,越小越優先 2 mac位址...

網路協議之STP 生成樹協議 選舉過程

生成樹協議的定義 生成樹演算法的網橋協議stp spanning tree protocol 它通過生成生成樹保證乙個已知的網橋在網路拓撲中沿乙個環動態工作。網橋與其他網橋交換bpdu訊息來監測環路,然後關閉選擇的網橋介面取消環路,統指ieee802 1生成樹協議標準和早期的數字裝置合作生成樹協議,...