1 STP介紹
避免形成廣播風暴,需要一種方法來阻斷冗余鏈路,消除這種路徑環路。而當主鏈路中斷之后,又能使得冗余鏈路能自動處切換到轉發狀態,恢復網絡的連通性,STP就能實現這種功能 。
STP消除鏈路層環路的基本思想是:將網絡環境修剪成樹形拓撲,樹形拓撲是沒有環路的。
運行STP的設備之間會交互相關信息,然后通過計算實現網絡拓撲的收斂,具體內容如下:
1. 運行STP的設備會依據一定的准則選舉一個樹根節點作為網絡中的根橋,其他節點為非樹根節點。
2.每一個非樹根節點,都會選擇一條最優路徑與根橋連接,非樹根節點上位於最優路徑的端口,為該節點的根端口。
3.如果網絡中存在冗余鏈路,就會阻斷冗余鏈路
每個非樹根節點都會這么計算,最終網絡中任意兩台設備之間都有一條路徑可達,從而行成一棵無環的樹 。
2 STP基本概念
2.1 橋和端口的角色
1. 網橋
Ø 根橋:是整個生成樹中根節點,由整個生成樹中的優先級最高的網橋擔任。
Ø 指定橋:是負責一個Physical Segment(物理段)上數據轉發任務的橋,由這個Physical Segment上優先級最高的橋擔任。
2. 端口
Ø 根端口:指網橋上距離根橋最近的端口,根橋沒有根端口,非根橋有且僅有一個根端口。
Ø 指定端口:指Physical Segment上指定橋的端口。
Ø 候補端口:非根端口和非指定端口,它用來做根端口和指定端口的備份端口,也就需要阻斷的端口。
2.2 橋ID
STP中每一個網橋都具有一個橋ID,用於網絡中唯一標識一個橋。根橋的選舉的依據就是橋ID,橋ID越小優先級越高。
橋ID包含橋優先級和MAC地址,長度為8B,其中橋優先級位於橋ID的高16位,而橋MAC地址位於橋ID的低48位,由於MAC地址在網絡中時唯一的,因此橋ID在網絡中也是唯一的。
如果沒有配置橋優先級時,橋默認優先級為32768。
2.3 路徑開銷
路徑開銷是用來衡量橋與橋之間路徑的優劣。
默認鏈路開銷值取決於所遵循的路徑開銷標准以及鏈路的帶寬。
路徑開銷等於整個路徑上路徑開銷的總和。
2.4 BPDU
BPDU:橋協議數據單元,用來交互協議信息,分為兩類:
1.配置BPDU:用來進行生成樹計算和維護生成樹拓撲的報文
2.TCN BPDU:當拓撲發生變化時用來告訴某些設備拓撲發生改變的報文
配置BPDU是通過二層組播發送的,目的MAC地址為01-80-C2-00-00.
配置BPDU由根橋產生並通過指定端口周期性的發送出去,發送周期為Hello Time非根橋交換機通過根端口收到配置BPDU,進行更新並從指定端口發送出去。網絡只有根橋會產生配置BPDU,非根橋只會相互交互BPDU報文,沒有配置STP協議的交換機會把配置BPDU作為普通數據幀處理。
網橋上的每個端口都會保存本地端口接收到的最優配置BPDU,老化時間為Max Age,當在Max Age時間內沒收到配置BPDU更新時,端口會自動刪除其保存的配置BPDU信息。
配置BPDU報文包含目的MAC地址、源MAC地址、幀長、邏輯鏈路頭以及載荷等,載荷包括以下部分:
1.協議ID:用來表示STP協議,固定為0x0000
2.協議版本ID:STP為0x00 RSTP為0x02
3.BPDU類型:配置BPDU為0x00,TCN BPDU為0x80
4.Flag標志位:由8為組成,最低位(0)為TC(Topology Change)標志位,最高位(7)為TCA(Topology Change Ack)標志位,其他6位保留。
5.根橋ID:用來標識網絡中的根橋
6.根路徑開銷:指從收到該配置BPDU的網橋到根橋的最小路徑開銷,即最短路徑上所有鏈路路徑開銷代數和。
7.發送橋ID:指發送配置BPDU網橋的ID,即Physical Segment上指定橋ID。
8.發送端口ID:指發送配置BPDU網橋端口ID,由優先級和端口索引號組成,即Physical Segment上的指定端口。
9.Massage Age:配置BPDU到當前時間的存活時間。
10.Max Age:配置BPDU的最大存活時間。
11.Hello time:配置BPDU的生成周期,默認為2秒
12.Forward Delay:配置BPDU傳播到全網的最大延遲,默認為15秒
3 STP計算過程
3.1 STP計算步驟
STP計算主要包含兩個任務:選舉根橋和確定端口角色。
STP計算離不開配置BPDU,比較配置BPDU的依據優先級向量最小者優先的原則,遵循步驟如下:
1.根橋ID,根橋ID包含橋優先級和MAC地址,橋ID最小者優先。
2.根路徑開銷:依據遵循的路徑開銷標准和鏈路帶寬,開銷最小者優先
3.指定橋ID:該ID包括橋優先級和MAC地址,橋ID最小者優先。
4.指定橋端口ID:該ID包括端口優先級和端口索引號,最小者優先。
5.接受橋端口ID:該ID包括端口優先級和端口索引號,最小者優先。
3.2 根橋選舉
網絡中橋ID最小者會被選舉為根橋,橋ID由橋優先級和MAC地址組成。
選舉過程:
1.在初始狀態,網絡中的網橋都沒收到對方的配置BPDU,此時每個網橋都認為自己是根橋,向網絡中以二層組播的形式發送配置BPDU。
2.網橋把自己的配置BPDU跟收到的配置BPDU進行比較,更新為優先級高的配置BPDU保存在接收端口,並從指定端口繼續與設備交互更新之后的配置BPDU。
3.當全網絡中網橋根橋保持一致之后,根橋選舉結束。
3.3 確定端口角色
端口角色的確定分為根端口的確認、指定端口的確認和Alternate端口的確認。
1.根端口:當網橋從一個端口收到配置BPDU后,首先獲取其中的RPC(根路徑開銷)和接收端口鏈路路徑開銷相加,得到此端口的RPC。再比較該網橋上其他端口的RPC,RPC值最小者為該網橋的根端口。
2.指定端口:發送的配置BPDU優於接收到的配置BPDU,表明該端口在本Physical Segment最優配置BPDU,則此端口為指定端口。
3.Alternate端口:端口的配置BPDU在本Physical Segment不是最優配置BPDU,則此端口為Alternate端口。
注:在時間計算過程中,端口確認是同步完成的。
在網絡穩定運行時,根橋以Hello Time為周期發送配置BPDU,其他網橋接受到配置BPDU之后,更新本地的配置BPDU,並從指定接口發出更新后的配置BPDU。
3.4 等路徑開銷計算
在根橋選舉和端口確認的步驟中,只用到了優先級向量里的橋ID和根路徑開銷。剩下的三個向量指定橋ID用於等路徑開銷的情況下來確認端口角色、指定橋端口ID則用於等路徑開銷和同一台指定橋的情況下來確認端口角色,接收端口ID則是在優先級向量中前四個都相同的情況下來確認端口角色。
3.5 收到低優先級配置BPDU時的處理
通常情況下,非根橋不會主動發送配置BPDU。而當網絡中添加一台新的網橋,並其網橋優先級比較低,並在原有網橋的指定端口上收到新添加網橋的配置BPDU時,該網橋會回立即回應一個配置BPDU,這樣可以保證新加入的網橋盡快的確認根橋和端口角色,使得網絡實現快速收斂。
3.6 STP端口狀態
| STP端口狀態 |
是否發送BPDU |
是否發送數據 |
是否學習MAC地址 |
| Disabled |
否 |
否 |
否 |
| Blocking |
否 |
否 |
否 |
| Listening |
是 |
否 |
否 |
| Learning |
是 |
否 |
是 |
| Forwarding |
是 |
是 |
是 |
其中Listening和Learning為中間狀態,為了避免臨時環路,處於中間狀態的端口不能發送數據。端口在中間狀態的停留的時長為Forware Delay,默認為15s 。
Forward Delay根據hello Time以及網絡的直徑綜合計算出來的,它確保了BPDU有足夠的時間傳播的網絡中的每個角落,使得網絡實現收斂。
在listening狀態,經過Forward Delay時間來交互配置BPDU報文,從而使得各網橋有足夠長的時間來確定其端口角色,通過阻塞Alternate端口避免臨時環路的產生。在learning狀態,經過Forward Delay時間來交互配置BPDU報文,以確保各網橋有足夠長的時間來學習MAC地址,盡量減小由未知單播造成的廣播。
3.7 STP拓撲改變處理過程
當網絡拓撲發生改變之后,由於配置BPDU的Max Age時間(默認20s)小於MAC地址老化時間(默認300s),網絡中會出現短暫的中斷,為了解決網絡中斷這種現象,STP使用TCN BPDU使網絡中斷到恢復的最長等待時間還時間為Max Age + 2Forward Delay (20+2*15=50s)。
處理過程如下:
1.網橋感知拓撲發生變化,產生TCN BPDU從根端口發出,通知根橋。
2.如果上游不是根橋,此網橋會將下一個要發送的配置BPDU中的TCA位置位發送給下游網橋,作為收到TCN BPDU的確認。並該上游網橋繼續從根端口發送TCN BPDU。
3.重復2步驟,直到根橋收到TCN BPDU。當網橋收到TCN BPDU之后,會把將下一個要發送的配置BPDU中的TCA位置位發送給下游網橋,作為收到TCN BPDU的確認,同時還會將該配置BPDU的TC位置位,用來通告網絡中所有網橋拓撲發生了變化。
4.根橋在其后的Max Age+Forward Delay時間內,將發送的配置BPDU中的TC位置位,當網橋收到根橋TC位置位的配置BPDU時,會把自身MAC老化時間由300 s縮短為Forward Delay 。
TCN BPDU有如下兩個產生條件
1. 網橋上有個端口轉變為Forwarding狀態,並該網橋上至少有一個端口為指定端口。
2.網橋上有端口從Forwarding狀態或liearning狀態轉變為bloacking狀態。
3.8 STP的不足
1. STP為了避免臨時環路的產生,每個端口在確認為根端口或指定端口后仍然需要等待30s的時間才能進入轉發狀態,對於一些對是時延敏感的應用是不可接受的。
2.對於網絡拓撲不穩定的網絡,經常需要重新進行STP計算,某些端口可能會長期處於阻塞狀態而導致網絡長時間的中斷。
文章原地址:http://blog.51cto.com/2785903/1104274
