複製鏈接
請複製以下鏈接發送給好友

STP

(生成樹協議)

鎖定
STP(Spanning Tree Protocol)是生成樹協議的英文縮寫,可應用於計算機網絡中樹形拓撲結構建立,主要作用是防止網橋網絡中的冗餘鏈路形成環路工作。但某些特定因素會導致STP失敗,要排除故障可能非常困難,這取決於網絡設計 [1]  。生成樹協議適合所有廠商的網絡設備,在配置上和體現功能強度上有所差別,但是在原理和應用效果是一致的。
中文名
生成樹協議
外文名
Spanning Tree Protocol
簡    寫
STP
適合對象
適合所有廠商的網絡設備
類    型
鏈路管理協議
作    用
避免單點故障、網絡迴環

STP技術原理

STP的基本原理是,通過在交換機之間傳遞一種特殊的協議報文網橋協議數據單元(Bridge Protocol Data Unit,簡稱BPDU),來確定網絡的拓撲結構。BPDU有兩種,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用於計算無環的生成樹的,後者則是用於在二層網絡拓撲發生變化時產生用來縮短MAC表項的刷新時間的(由默認的300s縮短為15s)。
Spanning Tree Protocol(STP)是在IEEE 802.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中將攜帶標記表明拓撲已發生變化,網絡中的所有設備接收到後將MAC表項的刷新時間從300s縮短為15s。整個收斂的時間為50s左右。

STP功能介紹

生成樹協議是IEEE 802.1D中定議的數據鏈路層協議,用於解決在網絡的核心層構建冗餘鏈路裏產生的網絡環路問題,通過在交換機之間傳遞網橋協議數據單元(Bridge Protocol Data Unit,簡稱BPDU),通過採用STA生成樹算法選舉根橋、根端口和指定端口的方式,最終將網絡形成一個樹形結構的網絡,其中,根端口、指定端口都處於轉發狀態,其他端口處於禁用狀態。如果網絡拓撲發生改變,將重新計算生成樹拓撲。生成樹協議的存在,既解決了核心層網絡需要冗餘鏈路的網絡健壯性要求,又解決了因為冗餘鏈路形成的物理環路導致“廣播風暴”問題 [2] 
但是,由於協議機制本身的侷限,STP保護速度慢(即使是1s的收斂速度也無法滿足電信級的要求),如果在城域網內部運用STP技術,用户網絡的動盪會引起運營商網絡的動盪。在MSTP 組成環網中,由於SDH保護倒換時間比STP協議收斂時間快的多,系統採用依然是SDH MS-SPRING或SNCP,一般倒換時間在50ms以內。但測試時部分以太網業務的倒換時間為0或小於幾個毫秒,原因是內部具有較大緩存。SDH保護倒換動作對MAC層是不可見的。這兩個層次的保護可以協調工作,設置一定的“拖延時間”(hold-off),一般不會出現多次倒換問題。

STPVLAN影響

L2,L3交換已經非常成熟。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。

STP協議不足

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

STP運行過程

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

STP根端口依據

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

STP指定端口依據

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

STP端口狀態

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

STPSTP潛在故障

1、生成樹算法不穩定
STP協議工作在第二層,在交換機端口之間傳遞網絡協議單元獲取網絡拓撲,並通過STA算法阻斷環路形成樹形邏輯網絡拓撲。但如果網絡拓撲過於複雜,STA算法有時會存在失效的情況,這時根橋、根端口和指定端口的選舉失敗,導致環路的產生,使網絡癱瘓。這一問題的根本原因理論上還無定論,多數人認為是STP協議本身不穩定的問題,比如STP生成樹收斂過慢,導致網絡協議單元數據包丟失過多,STA誤以為網絡中出現了單點故障,從而使處於阻塞狀態的端口變為轉發狀態,網絡出現環路導致網絡癱瘓。此種故障出現的概率很低,但出現了很難排除。
2、端口工作方式導致端口工作模式不匹配
交換機的端口工作模式有單工(Simplex)、半雙工(half-duplex)和全雙工(full-duplex)三種模式,一般在配置時都採用自動協商的方式。在配置時如果將交換機一端人工設置為全雙工,另一端仍然採用自動協商方式,在有些品牌的交換機中,將使通信鏈路在半雙工模式下工作;更有一種極端的方式,將一端交換機的端口工作方式設置為全雙工模式,而將鏈路對端交換機的端口設置為半雙工模式,這都會導致雙工不匹配的問題。其結果是工作在全雙工模式下的端口在發送數據前不載波偵聽鏈路是否處於空閒狀態,直接發送數據,而工作在半雙工模式下的端口在發送數據前先執行載波偵聽且當鏈路處於空閒狀態時才發送數據,此時,如果全雙工端口持續性的有大量數據需要發送,那麼半雙工狀態的端口將不會有數據傳送給對端。STA在計算的時候,由於半雙工狀態的端口發送不了網絡協議單元,STA會將處於阻塞狀態的端口打開,從而形成環路。
3、單向鏈路故障
在採用光纖為通信介質的網絡中,往往採用兩組光纖收發鏈路來保證網絡的可靠性和穩定性(一組通信,一組冗餘),由於光纖收發器的故障、任意一組收發對中的某一條鏈路故障或者兩組鏈路中的某一條鏈路出現了交叉連接,都會導致本端收發器能收到對端收發器發送的報文,但對端收發器收不到本端收發器發送的報文,這種故障稱為單鏈路現象,隱蔽性高,不易排錯。由於單鏈路故障影響了STP的網橋協議單元的發送,致使STA計算出現錯誤碼,將本應處於阻斷狀態的端口轉變為轉發狀態,從而導致環路的產生。
4、數據幀被損壞
交換機是二層通信,如果物理鏈路的通信質量不高(通信介質質量問題或干擾問題等),將導致數據幀在傳輸時被損壞,從而被丟棄。網橋協議單元在傳輸時因信道質量不高而損壞達到一定量後,會使STA誤認為出現單點故障而將已阻斷的端口打開通信。一般對於STP協議來講,如果阻塞端口丟失網橋協議單元的狀態超過50秒,就會出現故障。
5、網絡設備資源不足引起故障
STP協議的執行及其網橋協議單元的處理都由網絡設備(主要是交換機)的CPU來進行,如果交換機的CPU本身處理能力不強或被其他問題過渡佔用,使交換機無法及時發出或接收網橋協議單元,引起STP無法正常工作的故障。
6、配置Por tFast快速端口引起的故障
在運行STP的網絡中,如果將交換機上直接連接主機的端口配置為Port Fast,可以使端口直接從阻斷狀態轉變為轉發狀態,從而使STP網絡快速收斂。如果網絡管理員在配置交換機是,將用於連接其他交換機的某個端口也設置為Port Fast,那麼當該端口被啓用時會直接進入轉發狀態,從而導致網絡中短時存在環路,當環路中的數據流量相當大時,網絡會癱瘓 [2] 
參考資料