STP基礎(學習筆記)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM