STP(Spanning Tree Protocol)是生成樹協議的英文縮寫
該協議可應用於在網絡中建立樹形拓撲,消除網絡中的環路,並且可以通過一定的方法實現路徑冗余,但不是一定可以實現路徑冗余。生成樹協議適合所有廠商的網絡設備,在配置上和體現功能強度上有所差別,但是在原理和應用效果是一致的。
STP的基本原理是,通過在交換機之間傳遞一種特殊的協議報文,網橋協議數據單元(Bridge Protocol Data Unit,簡稱BPDU),來確定網絡的拓撲結構。BPDU有兩種,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用於計算無環的生成樹的,后者則是用於在二層網絡拓撲發生變化時產生用來縮短CAM表項的刷新時間的(由默認的300s縮短為15s)。
Spanning Tree Protocol(STP)在IEEE802.1D文檔中定義。該協議的原理是按照樹的結構來構造網絡拓撲,消除網絡中的環路,避免由於環路的存在而造成廣播風暴問題。
STP的基本思想就是按照"樹"的結構構造網絡的拓撲結構,樹的根是一個稱為根橋的橋設備,根橋的確立是由交換機或網橋的BID(Bridge ID)確定的,BID最小的設備成為二層網絡中的根橋。BID又是由網橋優先級和MAC地址構成,不同廠商的設備的網橋優先級的字節個數可能不同。由根橋開始,逐級形成一棵樹,根橋定時發送配置BPDU,非根橋接收配置BPDU,刷新最佳BPDU並轉發。
生成樹協議最主要的應用是為了避免局域網中的單點故障、網絡回環,解決成環以太網網絡的“廣播風暴”問題,從某種意義上說是一種網絡保護技術,可以消除由於失誤或者意外帶來的循環連接。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),一般不會出現多次倒換問題。
生成樹協議:運行生成樹算法(STA) 算法很復雜,但是其過程可以歸納為以下3個步驟:
(1)選擇根網橋
選擇根網橋的依據是網橋ID(BID),網橋ID由網橋優先級和網橋MAC地址組成。網橋的默認優先級是32768.使用show mac-address-table時,顯示在最前面的MAC地址就是計算時所使用的MAC地址。
網橋ID值小的為根網橋,當優先級相同時,MAC地址小的為根網橋。
網橋id=網橋優先級 和 mac
(2)選擇根端口
與端口相關的有
端口成本:其與端口帶寬成反比,帶寬越高成本越低,端口優先級越高。
路徑成本:是從根交換機到其它交換機的端口成本累加值。
|
鏈路速度
|
開銷(最新修訂)
|
開銷(舊
|
|
10Gbps
|
2
|
1
|
|
1Gbps
|
4
|
1
|
|
100Mbps
|
19
|
10
|
|
10Mbps
|
100
|
100
|
每個非根交換機選擇一個根端口。選擇順序為:
→選擇到根網橋最低的根路徑成本
→選擇發送BPDU的網橋ID較小(具有最低交換機橋 ID 的相鄰交換機)
→選擇較低優先級的端口(最低端口成本)
→選擇最低物理編號的端口
(3)選擇指定端口
每個網段都有一個用來到達根交換機的端口,成為指定端口。
→根路徑開銷較低(最低路徑成本)
→所在的交換機網橋ID值最小
→端口號最小(最低優先級)
→物理端口號最小
注:根橋上的所有端口都是指定端口
端口狀態:
Blocking(阻塞狀態):此時,二層端口為非指定端口,也不會參與數據幀的轉發。該端口通過接收BPDU來判斷根交換機的位置和根ID,以及在STP拓撲收斂結束之后,各交換機端口應該處於什么狀態,在默認情況下,端口會在這種狀態下停留20秒鍾時間。
Listening(偵聽狀態):生成樹此時已經根據交換機所接收到的BPDU而判斷出了這個端口應該參與數據幀的轉發。於是交換機端口就將不再滿足於接收BPDU,而同時也開始發送自己的BPDU,並以此通告鄰接的交換機該端口會在活動拓撲中參與轉發數據幀的工作。在默認情況下,該端口會在這種狀態下停留15秒鍾的時間。
Learning(學習狀態):這個二層端口准備參與數據幀的轉發,並開始填寫MAC表。在默認情況下,端口會在這種狀態下停留15秒鍾時間。
Forwarding(轉發狀態):這個二層端口已經成為了活動拓撲的一個組成部分,它會轉發數據幀,並同時收發BPDU。
Disabled(禁用狀態):這個二層端口不會參與生成樹,也不會轉發數據幀。
思科設計了自己的專有橋接特性:
Portfast是用在access layer中的交換機上的而且用在有阻斷端口的交換機上,當RP失效,馬上啟動阻斷端口保持通信。這樣收斂時間很快,不用重新進行STP運算,直接從blocking跳到forwarding。
應該只在不會創建第二層環路的端口(如連接到pc、服務器、路由器的端口),有時也稱為用戶端口或邊緣端口。
支持portfast的端口總是處於轉發狀態,即使stp正在運行並且根端口和指定端口正處於不同狀態也是如此。
配置命令:
switch(config)# spanning-tree portfast default //在交換機上的所有非中繼端口啟用PortFast
switch(config)# interface fx/x
switch(config)# spanning-tree portfast [trunk] //在接口上啟用 PostFast
其它stp配置:
快速生成樹協議 RSTP:
RSTP:快速生成樹協議(rapid spanning Tree Protocol ):802.1w由802.1d發展而成,這種協議在網絡結構發生變化時,能更快的收斂網絡。它比802.1d多了兩種端口類型:預備端口類型(alternate port)和備份端口類型。
Rstp規定在某些情況下,處於Blocking狀態的端口不必經歷2倍的Forward Delay時延而可以直接進入轉發狀態。如網絡邊緣端口(即直接與終端相連的端口),可以直接進入轉發狀態,不需要任何時延。或者是網橋舊的根端口已經進入Blocking狀態,並且新的根端口所連接的對端網橋的指定端口仍處於Forwarding狀態,那么新的根端口可以立即進入Forwarding狀態。即使是非邊緣的指定端口,也可以通過與相連的網橋進行一次握手,等待對端網橋的贊同報文而快速進入Forwarding狀態。當然,這有可能導致進一步的握手,但握手次數會受到網絡直徑的限制。
在RSTP中只有三種端口狀態,
Discarding 禁用端口
Learning 學習端口
Forwarding 轉發端口
802.1D中的禁止端口,監聽端口,阻塞端口在802.1W中統一合並為 禁止端口。
在RSTP中,端口類型有 根端口和指定端口,這兩個角色在RSTP中被保留,阻斷端口分成 備份和替換 端口類型
備份端口:未使用的指定端口(處於丟棄狀態)
替換端口:未使用的根端口(處於丟棄狀態)
