STP(Spanning Tree Protocol)


STP生成樹協議

 

問題

為了提高網絡的可用性,需要進行冗余和備份。但是冗余路徑會產生環路

環路會導致以下問題

  • 廣播風暴:由於交換機會對廣播、多播、和未知目標MAC的單播包進行泛洪,在存在環路的情況下,很短的時間內就會產生風暴

  • 多幀拷貝MAC地址表不穩定:當交換機剛剛啟動時,MAC地址表是空的,所以,所有的單播幀都會進行泛洪操作。但是如果存在環路的話,交換機在特定情況下,會從不同的接口收到相同的MAC地址,這樣的話,MAC地址表將不穩定

STP(spanning tree protocal,IEEE802.1D)就是通過軟件防止環路的產生,通過邏輯的禁用接口,使得環路在邏輯上不存在;當線路出現故障時,將禁用的接口啟用,使得網絡能夠發揮物理冗余路徑帶來的高可用性

STP協議的工作原理

STP協議的原則如下:

  1. 每個廣播域中只有一個根網橋,根網橋的接口都是指定接口
  2. 每一個非根網橋上都有一個根接口,根接口就是到達根網橋最近(帶寬最高,開銷最小)的接口
  3. 每個網段中只有一個指定接口(發送方的橋ID較小的,或者端口優先級較小,或者端口ID較小的)
  4. 非指定接口不使用

假如上圖的Switch X是根網橋,那么它的兩個接口都是指定接口;Switch Y是非根網橋,由於100BASE的帶寬更高,所以Switch Y上面的接口是根接口;上下兩個segement中,s1和s2都已經有指定接口了,所以Switch Y下面的接口既不是根接口,也不是指定接口,那么將其阻斷。

上述的過程是交換機通過STP協議和交換BPDU(Bridge Protocol Data Unit)橋接協議數據單元,自動協商得到的。BPDU每2秒鍾發送一次。

BPDU的數據結構

Root ID(8Bytes):根網橋ID,每個交換機通過橋ID進行標識,橋ID由橋優先級+MAC地址組成(64個字節)。橋優先級的默認值為32768,最大值為65535。橋ID最小的為根網橋

Cost of path(4Bytes):接口的Cost值,端口速率對應的開銷值如下:

Bridge ID(8Bytes):本網橋(交換機)的橋ID

Port ID(2Bytes):端口編號

Hellotime(2Bytes):BPDU間隔發送時間,默認為2秒

Max age:詳見下面

Forward delay:詳見下面

上述四個字段,在交換機交換BPDU的過程中就能夠協商出結果。

在STP協議故障轉移過程中,交換機接口狀態有如下四個狀態

當某個指定接口出現故障時,需要將原先的非指定接口轉為指定接口。如何檢測故障呢?

一種情況是,直接端口故障,交換機能夠立即得知這樣的故障,則將Blocking的非指定接口立即切換到Listening狀態

另一種情況是,線路故障,交換機無法直接檢測到,此時通過BPDU檢測。正常情況下兩台交換機之間會每兩秒鍾收到對方的BPDU,如果在Max age時間后,仍然無法收到BPDU的話,需要進行重選舉,將原先Blocking的非指定接口,切換到Listening狀態。

Listening狀態持續Forward Delay時間,這段時間后,選舉完成。之后進入Learning狀態,交換機在該端口上進行學習MAC地址,但是不轉發數據,以防止對未知單播幀的廣播,這個時間持續Forward Delay時間;最后進入正常的Forwarding狀態

一般情況下根據超時時間的設置,最長有可能需要經過30-50秒,STP協議才能重新選舉完成

總結:

  • Blocking:非指定接口的狀態,即不轉發數據也不學習MAC地址
  • Forwarding:指定接口或根接口,轉發數據和學習MAC地址
  • Listening:進入重選舉的狀態
  • Learning:重選舉完成后,進入MAC地址學習,但不轉發數據

下面是一個例子

  1. SWR的網橋優先級最小,所以SWR為根網橋,其接口為指定接口
  2. SWA、SWD的上面的兩個接口到SWR的開銷最小(都是19),所以都是根接口;同理,可以得到SWB和SWC的根接口
  3. SWA和SWD下面的端口都是其各自segement的指定接口(每個segment有且只有一個指定接口)
  4. SWB和SWC組成的segement還沒有指定接口,此時由於SWB的橋優先級較小,所以SWB側的接口為指定接口,而SWC側的接口即為非指定接口,進入Blocking狀態

PortFast

如果終端設備直接連接在交換機上,也需要等待30秒的話,會出現問題,比如DHCP超時。所以,可以配置交換機的接口為PortFast模式,PortFast的接口不會介入STP選舉的過程,不需要等待30秒的選舉過程。但是不能用在Trunck接口上,因為如果用在Trunck接口上啟用PortFast,交換機之間無法進行STP選舉,極易產生環路。所以PortFast一般只用在直連終端的“接入接口”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM