爲了提升網絡的可用性,須要進行冗餘和備份。可是冗餘路徑會產生環路html
環路會致使如下問題網絡
廣播風暴
:因爲交換機會對廣播、多播、和未知目標MAC的單播包進行泛洪,在存在環路的狀況下,很短的時間內就會產生風暴多幀拷貝
、MAC地址表不穩定
:當交換機剛剛啓動時,MAC地址表是空的,因此,全部的單播幀都會進行泛洪操做。可是若是存在環路的話,交換機在特定狀況下,會從不一樣的接口收到相同的MAC地址,這樣的話,MAC地址表將不穩定STP
(spanning tree protocal,IEEE802.1D)就是經過軟件防止環路的產生,經過邏輯的禁用接口,使得環路在邏輯上不存在;當線路出現故障時,將禁用的接口啓用,使得網絡可以發揮物理冗餘路徑帶來的高可用性數據結構
STP協議的原則以下:學習
假如上圖的Switch X是根網橋,那麼它的兩個接口都是指定接口;Switch Y是非根網橋,因爲100BASE的帶寬更高,因此Switch Y上面的接口是根接口;上下兩個segement中,s1和s2都已經有指定接口了,因此Switch Y下面的接口既不是根接口,也不是指定接口,那麼將其阻斷。spa
上述的過程是交換機經過STP協議和交換BPDU
(Bridge Protocol Data Unit)橋接協議數據單元,自動協商獲得的。BPDU每2秒鐘發送一次。code
BPDU的數據結構htm
Root ID(8Bytes)
:根網橋ID,每一個交換機經過橋ID進行標識,橋ID由橋優先級+MAC地址組成(64個字節)。橋優先級的默認值爲32768,最大值爲65535。橋ID最小的爲根網橋blog
Cost of path(4Bytes)
:接口的Cost值,端口速率對應的開銷值以下:接口
Bridge ID(8Bytes)
:本網橋(交換機)的橋IDit
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協議才能從新選舉完成
總結:
下面是一個例子
若是終端設備直接鏈接在交換機上,也須要等待30秒的話,會出現問題,好比DHCP超時。因此,能夠配置交換機的接口爲PortFast模式,PortFast的接口不會介入STP選舉的過程,不須要等待30秒的選舉過程。可是不能用在Trunck接口上,由於若是用在Trunck接口上啓用PortFast,交換機之間沒法進行STP選舉,極易產生環路。因此PortFast通常只用在直連終端的「接入接口」。
http://www.pchou.info/network/hardware/2013/12/19/52b293e0c4123.html