天天看點

生成樹協定(STP)

需求:實際網絡環境,實體環路可以提高網絡的可靠性,一條線路斷掉時,另一條線路仍然可以傳輸資料,交換網絡中,當交換機接收到一個未知目的位址的資料幀,交換機的操作是将這個資料幀廣播出去,存在的實體環路的交換網絡中,就會産生一個雙向的廣播環,甚至廣播風暴,導緻交換機低級。

實作了什麼效果:STP協定并不是斷掉實體環路,而是在邏輯上斷開環路,防止廣播風暴的産生

理論:    STP協定在邏輯上斷開網絡的環路,防止廣播風暴的産生,一旦正在使用的線路出現故障,邏輯上被斷開的線路又被連通,将繼續傳輸資料。

    交換網絡環路的産生

    網絡通信最初,pc1和pc2通過交換機相連,pc1的ARP條目中沒有pc2的MAC位址,根據ARP原理,PC2首先會發送一個ARP廣播請求給交換機sw1

    當sw1收到arp的廣播請求是,sw1會将廣播幀從除接收端之外的所有端口轉發出去。

    當sw2收到廣播幀時,同樣将廣播幀轉發,sw3收到廣播幀後,同樣将轉發。

        sw1,sw2,sw3會将廣播幀互相轉發,就在網絡中形成一個環路,而交換機之間并不不知道,将導緻廣播幀在這個環路中永遠循環下去。這種廣播風暴隻有在實體環路消失時才看可能停止

        STP(生成樹協定)就是把一個環形的結構改變成一個樹形的結構。STP協定就是用來将實體上存在環路的網絡,通過一種算法,在邏輯上阻塞一些端口,來生成一個邏輯上的樹形結構。

    生成樹算法即驗證

        選擇根網橋

            選擇根網橋的網橋ID,網橋ID是一個8位元組的字段,前2位元組的十進制數稱為網橋優先級,後6位元組是網橋的MAC位址

            網橋優先級用于衡量網橋在生成樹算法中優先級的十進制數,取值範圍0~65335,預設值為32768

            網橋ID中的MAC位址是交換機自身的MAC位址,可以使用show version指令在交換機版本中檢視交換機自身的MAC位址

            按照生成樹算法定義,比較某個STP參數的兩個取值時,值小的優先級越高。在選擇根網橋的時候,比較的方法是看哪台交換機的網橋ID值最小,優先級小的被選擇為根網橋;在網橋ID相同的情況,MAC位址小的為根網橋。

        選擇根端口

            根網橋後,網絡中的每台交換機必須和根網橋建立某種關聯,STP就開始選擇根端口。根端口存在非根網橋上,需要在每個非根網橋上選擇一個根端口

                選擇根端口是,依據的順序

                    到根網橋最低的根路徑成本

                    直連的網橋ID最小

                    端口ID最小

            根路徑成本是兩個網橋間的路徑上所有線路的成本之和,,也就是某個網橋到達根網橋的中間所有線路的路徑成本之和。

            路徑成本用來代表一條線路寬帶的大小,一條線路的帶寬越大,它傳輸資料的成本越低

            端口ID是一個2位元組的STP參數,有1位元組的端口優先級和1位元組的端口編号組成

        選擇指定端口

        網橋是交換機的前身,由于STP是在網橋基礎上開發,是以現在交換機的網絡中仍然沿用網橋。

            端口優先級是一個可配置的STP參數。    

            端口編号用于列舉各個端口的數字辨別符,基于IOS的交換機上,可以支援256個端口,端口編号表示端口号,但是端口号低的端口,端口編号也較小

            在STP選擇根端口時,首先比較交換機端口的根路徑成本,根路徑成本低的為根端口,當根路徑成本相同時,比較連接配接交換機的網橋ID值,選擇網橋ID值小的做為根端口,當網橋ID相同時,比較端口ID值,選擇較小的作為根端口。比較端口ID是,比較的是接收到的對端的端口ID值

            為了消除環路形成可能,STP進行最後的計算,在每一個網段上選擇一個指定端口,選擇指定端口的依據與根端口相同

                根路徑成本較低

                所在的交換機的網橋ID值較小

                端口ID值較小

            選擇指定端口時,首先比較同一網段上端口中根路徑成本最低的,也就是将到達根網橋最近的端口作為指定端口,當根路徑成本相同是,比較這個端口所在的交換機的網橋ID值,選擇一個網橋ID值小的交換機的端口作為指定端口,當網橋ID值相同是,幾個位于同一交換機上的端口是,比較端口ID值,選擇較小的作為指定端口。

            根網橋上的接口都是指定端口,因為根網橋上端口的根路徑成本為0

    生成樹算法驗證    

        根據網橋ID選擇根網橋,由于交換機為預設配置,所有優先級相同,都為32768,這種情況下選擇MAC位址最小的交換機為根網橋

        根據根路徑成本在非根網橋上選擇根端口。

        在每個網段上選擇指定端口,根網橋交換機的端口都為指定端口。

            檢視生成樹:show spanning-tree

    橋協定資料單元

        交換機之間根據網橋ID選擇根網橋,根據路徑成本等選擇根端口和指定端口。

        交換機之間通過BPDU(橋協定資料單元)來交換網橋ID,根路徑成本等資訊。交換機從端口發送出一個BPDU幀,使用該端口本身的MAC位址作為源位址。交換機本身并不知道它周圍是否還有其他的交換機存在。BPDU幀利用了一個STP多點傳播位址作為它的一個目的位址,使之能到達相鄰的,并處于STP偵聽狀态的交換機。每隔2s,便向所有的交換機端口發送一次BPDU封包,以便交換機能交換目前最新的拓撲資訊,并迅速識别和檢測其中的環路。

            BPDU的兩種類型

                配置BPDU,用于生成樹計算

                拓撲變更通告(用于通告網絡拓撲的變化)

            BPDU的封包字段

                BPDU中包含根網橋ID,根路徑成本,發送網橋ID,端口ID,計時器等

                    根網橋ID:由一個2位元組的優先級和一個6位元組網橋MAC位址組成,表明已經被標明為根網橋的裝置辨別

                    根路徑成本:說明這個BPDU從根網橋傳輸了多遠,成本多少。決定哪些端口将進行轉發,哪些端口将被阻塞

                    發送網橋ID:發送BPDU的網橋資訊,由網橋的優先級和網橋的MAC位址組成

                    端口ID:有一位元組的端口優先級和一位元組的端口編号組成

                    計時器:說明生成樹用多長時間能完成它的每項功能。功能包括封包老化時間,最大老化時間,通路時間和轉發延遲

            STP利用BPDU選擇根網橋的過程

                一台交換機啟動時,假定自己是根網橋,在BPDU封包中的根網橋ID字段填入自己的網橋ID,向外發送。

                交換機比較收到的BPDU封包中的根網橋ID與自己的網橋ID的值哪個更小,如果接受到的BPDU中的根網橋ID值小于自己的網橋ID值,則用接收到的根網橋ID替換現有的根網橋ID,并向外轉發。交換機仍然會繼續監聽其他交換機發來的BPDU,并繼續進行比較,隻要接收的BPDU中宣告的根網橋ID值小于目前存儲的根網橋ID值,則進行替換。一端時間後,當所有交換機互相接收了全部BPDU後,則能夠選擇出全網公認的唯一一個根網橋

                收斂後,如果有一台網橋ID值更小的交換機加入,首先把自己當作一個根網橋在網絡中通告,由于新交換機的網橋ID值的确更小,是以其他的交換機在比較一番後,就會把新的當作新的根網橋而記錄下來。

        STP的收斂

            STP運算過程中,交換機的每一個端口都必須依次經曆好幾種狀态。

本文轉自   宏強   51CTO部落格,原文連結:http://blog.51cto.com/tanhong/1904107

繼續閱讀