STP

生成樹協議

STP(Spanning Tree Protocol)是生成樹協議的英文縮寫。該協議可應用於在網路中建立樹形拓撲,消除網路中的環路,並且可以通過一定的方法實現路徑冗餘,但不是一定可以實現路徑冗餘。生成樹協議適合所有廠商的網路設備,在配置上和體現功能強度上有所差別,但是在原理和應用效果是一致的。

技術原理


STP的基本原理是,通過在交換機之間傳遞一種特殊的協議報文,網橋協議數據單元(Bridge Protocol Data Unit,簡稱BPDU),來確定網路的拓撲結構。BPDU有兩種,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用於計算無環的生成樹的,後者則是用於在二層網路拓撲發生變化時產生用來縮短MAC表項的刷新時間的(由默認的300s縮短為15s)。
Spanning Tree Protocol(STP)在IEEE802.1D文檔中定義。該協議的原理是按照樹的結構來構造網路拓撲,消除網路中的環路,避免由於環路的存在而造成廣播風暴問題。
Spanning Tree Protocol(STP)的基本思想就是按照"樹"的結構構造網路的拓撲結構,樹的根是一個稱為根橋的橋設備,根橋的確立是由交換機或網橋的BID(Bridge ID)確定的,BID最小的設備成為二層網路中的根橋。BID又是由網橋優先順序和MAC地址構成,不同廠商的設備的網橋優先順序的位元組個數可能不同。由根橋開始,逐級形成一棵樹,根橋定時發送配置BPDU,非根橋接收配置BPDU,刷新最佳BPDU並轉發。這裡的最佳BPDU指的是當前根橋所發送的BPDU。如果接收到了下級BPDU(新接入的設備會發送BPDU,但該設備的BID比當前根橋大),接收到該下級BPDU的設備將會向新接入的設備發送自己存儲的最佳BPDU,以告知其當前網路中根橋;如果接收到的BPDU更優,將會重新計算生成樹拓撲。當非根橋在離上一次接收到最佳BPDU最長壽命(Max Age,默認20s)后還沒有接收到最佳BPDU的時候,該埠將進入監聽狀態,該設備將產生TCN BPDU,並從根埠轉發出去,從指定埠接收到TCN BPDU的上級設備將發送確認,然後再向上級設備發送TCN BPDU,此過程持續到根橋為止,然後根橋在其後發送的配置BPDU中將攜帶標記表明拓撲已發生變化,網路中的所有設備接收到后將CAM表項的刷新時間從300s縮短為15s。整個收斂的時間為50s左右。

功能介紹


生成樹協議最主要的應用是為了避免區域網中的單點故障、網路迴環,解決成環乙太網網路的“廣播風暴”問題,從某種意義上說是一種網路保護技術,可以消除由於失誤或者意外帶來的循環連接。STP也提供了為網路提供備份連接的可能,可與SDH保護配合構成以太環網的雙重保護。新型以太單板支持符合IEEE 802.1d標準的生成樹協議STP及IEEE 802.1w規定的快速生成樹協議RSTP,收斂速度可達到1s。
但是,由於協議機制本身的局限,STP保護速度慢(即使是1s的收斂速度也無法滿足電信級的要求),如果在城域網內部運用STP技術,用戶網路的動蕩會引起運營商網路的動蕩。目前在MSTP 組成環網中,由於SDH保護倒換時間比STP協議收斂時間快的多,系統採用依然是SDH MS-SPRING或SNCP,一般倒換時間在50ms以內。但測試時部分乙太網業務的倒換時間為0或小於幾個毫秒,原因是內部具有較大緩存。SDH保護倒換動作對MAC層是不可見的。這兩個層次的保護可以協調工作,設置一定的“拖延時間”(hold-off),一般不會出現多次倒換問題。

VLAN影響


L3,L4交換已經非常成熟。Internet中也越來越廣泛地應用了交換技術,全交換網路已經非常普遍。在這些網路中,VLAN的使用是必不可少的。
VLAN是一個根據作用、計劃組、應用等進行邏輯劃分的交換式網路。與用戶的物理位置沒有關係。舉個例子來說,幾個終端可能被組成一個部分,可能包括工程師或財務人員。當終端的實際物理位置比較相近,可以組成一個區域網(LAN)。如果他們在不同的建築物中,就可以通過VLAN將他們聚合在一起。同一個VLAN中的埠可以接受VLAN中的廣播包。但別的VLAN中的埠卻接受不到。
1、網路容錯能力不強;
2、報文在環路網路中容易增生和無限循環;
3、不利在VLAN中實現流量負載均衡,生成樹協議運行生成樹演演算法,(STA)生成樹演演算法很複雜,但是其過程可以歸納為以下3個步驟:
(1)選擇根網橋
(2)選擇根埠
(3)選擇指定埠
關於選擇根網橋:選擇根網橋的依據是網橋ID,網橋ID由網橋優先順序和網橋MAC地址組成。網橋的默認優先順序是32768.使用show mac-address-table時,顯示在最前面的MAC地址就是計算時所使用的MAC地址。網橋ID值小的為根網橋,當優先順序相同時,MAC地址小的為根網橋。
關於選擇根埠:每個非根交換機選擇一個根埠。選擇順序為:到根網橋最低的根路徑成本→發送BPDU的網橋ID較小→埠ID較小的。埠ID由埠優先順序與埠編號組成。默認的埠優先順序為128。
關於選擇指定埠:每個網段上選擇一個指定埠。選擇順序為:根路徑成本較低→發送BPDU的交換機的網橋ID值較小→本埠的ID值較小。另外,根網橋的介面皆為指定埠,因為根網橋上埠的根路徑成本為0。

協議不足


● ● 拓撲收斂慢,當網路拓撲發生改變的時候,生成樹協議需要50-52秒的時間才能完成拓撲收斂。
● ● 不能提供負載均衡的功能。當網路中出現環路的時候,生成樹協議簡單的將環路進行Block,這樣該鏈路就不能進行數據包的轉發,浪費網路資源。

運行過程


生成樹協議運行生成樹演演算法(STA)。生成樹演演算法很複雜,但是其過程可以歸納為以下三個部分。
(1)選擇根網橋
(2)選擇根埠
(3)選擇指定埠(也有書籍稱為轉發埠)
選擇根網橋的依據是交換機的網橋優先順序,網橋優先順序是用來衡量網橋在生成樹演演算法中優先順序的十進位數,取值範圍是0~65535.默認值是32768,網橋ID=網橋優先順序+網橋MAC地址組成的,共有8個位元組。由於交換機的網橋優先順序都是默認,所以在根網橋的選舉中比較的一般是網卡MAC地址的大小,選取MAC地址小的為根網橋。

根埠依據


(1)到根網橋路徑開銷最低。
根路徑開銷是兩個網橋間的路徑上所有鏈路的開銷之和,也就是某個橋網到達根網橋的中間所有鏈路的路徑開銷之和。
附IEEE標準路徑開銷表:
鏈路速度開銷(最新修訂)開銷(以前)
10Gbps21
1Gbps41
100Mbps1910
10Mbps100100
(2)最低的發送方網橋ID。
(3)最低的埠ID。
由於埠的ID是由優先順序和埠號組成,保證了根埠的唯一性。

指定埠依據


(1)根路徑開銷較低
(2)所在的交換機網橋ID值最小
(3)埠號最小
註:根橋上的所有埠都是指定埠

埠狀態


Blocking(阻塞狀態):此時,二層埠為非指定埠,也不會參與數據幀的轉發。該埠通過接收BPDU來判斷根交換機的位置和根ID,以及在STP拓撲收斂結束之後,各交換機埠應該處於什麼狀態,在默認情況下,埠會在這種狀態下停留20秒鐘時間。
Listening(偵聽狀態):生成樹此時已經根據交換機所接收到的BPDU而判斷出了這個埠應該參與數據幀的轉發。於是交換機埠就將不再滿足於接收BPDU,而同時也開始發送自己的BPDU,並以此通告鄰接的交換機該埠會在活動拓撲中參與轉發數據幀的工作。在默認情況下,該埠會在這種狀態下停留15秒鐘的時間。
Learning(學習狀態):這個二層埠準備參與數據幀的轉發,並開始填寫MAC表。在默認情況下,埠會在這種狀態下停留15秒鐘時間。
Forwarding(轉髮狀態):這個二層埠已經成為了活動拓撲的一個組成部分,它會轉發數據幀,並同時收發BPDU。
Disabled(禁用狀態):這個二層埠不會參與生成樹,也不會轉發數據幀。

潛在故障


雙工不匹配:在點到點鏈路上,雙工不匹配是一種常見的配置錯誤。當鏈路的一段採用手工的方式配置為了全雙工模式,而另一側卻使用自動協商的默認配置的時候,那麼就可能發生雙工不匹配的情況。
單向鏈路失效:單向鏈路是產生橋接環路的一個非常常見的原因。如果光纖鏈路存在沒有檢測出來的故障或收發器故障,通常導致單向鏈路。在啟用STP來提供網路冗餘的情況下,對於兩個鏈路夥伴之間所連接的物理鏈路,如果由於某種原因導致這條鏈路工作在單向通信的狀態下,那麼就可能導致橋接環路或路由選擇黑洞,進而對維護網路穩定非常有害。
幀破壞:幀破壞是導致STP故障的另外一種原因。如果介面正在經受高速的物理錯誤,其結果有可能就會導致BPDU丟失,而這會使處於阻塞狀態的介面過渡到轉髮狀態。雖然如此,但因為STP默認參數是非常保守的,所以很少會發生上述情況。
資源錯誤:即使在通過專門的ASIC硬體執行大部分交換功能的高端交換機中,STP仍然由CPU來執行。這就意味著:如果處於某種原因而過度使用了網橋的CPU,那麼就可能導致CPU沒有足夠的資源來發出BPDU。通常情況下,STP不是一種密集調用處理器的應用,而且STP的優先順序高於其他進程。因此,出現資源問題的可能性並不大。
PortFast配置錯誤:如果管理員在埠上啟用了PortFast特性,那麼當鏈路啟動的時候,埠就會繞過STP的監聽和學習狀態,並且直接過渡到轉髮狀態。但是如果在錯誤的埠上配置了PortFast特性,那麼這種快速過渡就有可能導致橋接環路。