STP/RSTP協議(一)

STP/RSTP生成樹及快速生成樹協議

部分筆記摘自:
https://blog.csdn.net/qq_38265137/article/details/80404349?ops_request_misc=&request_id=&biz_id=102&utm_source=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0
https://blog.csdn.net/sitiao2009/article/details/47322239?ops_request_misc={“request_id”%3A"158279347019724835841555"%2C"scm"%3A"20140713.130056874…"}&request_id=158279347019724835841555&biz_id=0&utm_source=distribute.pc_search_result.none-task

生成樹協議

  1. STP定義
  2. STP原理
  3. STP的各類選舉
  4. STP報文
  5. STP的拓撲變化
  6. 端口遷移過程

一.STP定義

生成樹協議STP(Spanning Tree Protocol)將環形網絡修剪成爲一個無環的樹型網絡,避免報文在環形網絡中的增生和無限循環。

STP可以解決的問題

1.廣播風暴——沒有STP,則網絡中會出現環路,一臺交換機若從接口收到一個廣播幀,那麼交換機會將這個廣播幀從除收到這個廣播幀的接口外所有的接口發送,另一臺交換機若收到這個廣播幀,會以同樣的方法進行泛洪,而這些數據幀就會一直在環路中傳輸,佔用網絡資源。
2.重複幀傳輸——目的站點可能會收到同一數據幀的多份拷貝,可能會造成一些無法挽回的影響。
3.MAC地址表不穩定——交換機從某一接口收到了數據幀A,因爲有環路存在,又從另一接口收到了數據幀A的拷貝,這樣同一MAC地址就對應了兩個接口存放在MAC表中,這一現象叫做漂移MAC地址

二.STP的基本原理

交換機運行該協議時,通過彼此交互STP幀來發現網絡中的環路,並有選擇的對某個端口進行阻塞,阻斷冗餘鏈路,最終將環形網絡結構修剪成無環路的樹形網絡結構,從而防止報文在環形網絡中不斷循環,避免設備由於重複接收相同的報文造成處理能力下降,並在網絡的物理拓撲發生變化時重新建立STP樹。

三.STP的各類選舉

名詞引入
  • 根橋
    對於一個STP/RSTP網絡,根橋有且只有一個,它是整個網絡的邏輯中心,根據網絡拓撲的變化,根橋可能改變。

  • 網橋ID (BID)=橋優先級+Mac
    默認優先級 32768 8*4096
    橋的MAC地址0016-0016-3333
    BID= 8000-0016-0016-3333 8字節(兩字節優先級六字節MAC地址) 16個十六進制數
    橋的MAC地址爲交換機中網卡中MAC地址最小的

  • 端口ID (PID)=端口優先級+端口編號
    默認優先級 128
    PID(16位) = 端口優先級(4位) + 端口號(12位)16個比特位組成

  • 路徑開銷(RPC)

路徑開銷是STP/RSTP協議用於選擇鏈路的參考值。STP/RSTP協議通過計算路徑開銷,阻塞多餘的鏈路,將網絡修剪成無環路的樹形網絡結構。
在一個STP/RSTP網絡中,某端口到根橋累計的路徑開銷就是所經過的各個橋上的各端口的開銷。
根交換機的端口的路徑開銷都爲0

STP將一個環形網絡生成無環拓撲的步驟:
   1.選擇根橋——Root Bridge 每個廣播域只有一個根橋
   2.選擇根端口——Root Ports  
   3.選擇指定端口——Designated Ports
   4.網絡中冗餘的接口將被阻止
根橋的選舉

過程:生成樹中只有一個交換機能夠成爲根橋,首先交換機根據自己的STP邏輯拓撲,向相鄰交換機發送HELLO BPDU,聲稱自己是根交換機。交換機將收到的HELLO BPDU進行比較,選舉出最優的BPDU。若收到的HELLO包的根ID比自身發出的HELLO包BID要優,則該交換機就會停止產生和發送HELLO包,即停止聲明自己是最優的根,然後交換機開始轉發收到的更優的BPDU。不斷經過此過程,直到除根交換機之外,所有的交換機都將停止產生併發送自身的HELLO包。

選舉:
1.BID是不會重複的,通過比較BID選舉,優選BID小的
BID由優先級+MAC地址組成。
2.首先比較優先級,優先級越小越優
3.如果優先級一樣,比較MAC地址,MAC地址越小越優

根端口的選舉——確定交換機和根橋之間工作的唯一性和最優性

根端口用來與根橋之間進行報文交換的端口,是到根橋工作路徑最優的端口,一臺非根橋設備上只能有一個根端口。

過程: 選舉出根交換機之後,其他交換機需要確定他們各自唯一的根端口。
1.根交換機每隔HELLO計時器(默認是2s),就會創建併發送一個HELLO,HELLO中的RBID(根橋的BID)和SBID(發送方BID)都設置爲根ID,RPC設置爲0,SPID設置爲出端口的標識符

2.每臺非根交換機在每個端口上收到一個BPDU後,就會將端口的RPC加到這個BPDU中,形成(Result BPDU)結果BPDU,交換機會比較所有的結果BPDU,收到最優BPDU的端口將成爲根端口
注意:

  • 非根交換機在根端口上收到HELLO,在更新其完成的RPC,SBID,SPID和信息老化字段之後,會通過其他指定端口發送這個HELLO,非根交換機在其他端口上收到的HELLO只會被處理,不會被轉發。

  • 交換機的根端口和阻塞端口總是不發送HELLO包的,因爲在該網段中,對端鄰居的指定端口的HELLO包一定是本端優先級要高的。

選舉:
根端口是非根橋交換機用來接收來自根橋交換機方向的BPDU,因此首先需要計算流量從根交換機到達非根交換機上的哪個端口開銷(Cost)最小,通俗點說就是,如果根交換機要發送BPDU到某臺非根交換機,發送到該非根橋交換機的哪個端口最省時省力

  1. 非根橋交換機上,哪個端口到根橋的開銷(確切來說,應該是從根橋到達非根交換機的每個端口的開銷,這纔是正確的方向)最小,開銷最小的端口,即爲該非根交換機的根端口。開銷越小越優
  2. 如果到達根橋開銷一樣,此時再比較上一級(接收BPDU方向)發送者的橋ID。選出發送者橋ID最小的對應的端口。上行的BID越小越優
  3. 如果上一級發送者橋ID也一樣,在比較發送端口的優先級。選出優先級最小的對應的端口。發送者PID越小越優
  4. 如果發送端口優先級也一樣,在比較發送端口的端口號(比如f0/0、f0/1)。發送者端口號越小越優

PS:比較過程中選出的端口爲非根交換機上的根端口,該根端口主要用來接收來自根橋方向的BPDU。拓撲發生變化時也發送TCN。

指定端口的選舉——確定每個網段與根橋之間的的最優唯一路徑
  • 當一個網段有兩條及兩條以上的路徑通往根橋時(該網段連接了不同的交換機或者該網段與同一交換機有多個接口),這時就必須確定出一個唯一的指定端口。

  • 根橋的所有接口都是指定端口

  • 網段中發送最優BPDU的端口將成爲指定端口

  1. 通過選舉的指定端口轉發來自根交換機的BPDU到其他非根交換機效率最高(其實根端口對端的端口肯定是指定端口
  2. 當指定端口所在鏈路發送故障時,通過此指定端口所屬的交換機發送TCN到根交換機效率最高。cost小即效率高。

指定端口的重要作用還是爲了考慮鏈路發生改變的情況。以此選指定端口可以只參考這條依據:當一條鏈路物理故障時,通過鏈路兩端的哪個端口所屬交換機發回TCN到根橋的開銷最小,則那個端口就是這條鏈路的指定端口。(到根橋途中不要經過該鏈路上的另一個端口)

選舉:

  1. 根橋上的所有端口都是指定端口。
  2. 每條鏈路上有兩個端口,那個端口到根橋的開銷最小,最小的是指定端口。開銷最小
  3. 若開銷相同,則比較上行(靠近根橋的一側)設備的BID,上行設備BID較小的端口作爲根端口。上行BID最小
  4. 若上行設備的BID相同,則比較上行設備的PID,較小的作爲根端口。上行PID最小
  5. 如果發送端口優先級也一樣,在比較發送端口的端口號(比如f0/0、f0/1)。發送者的端口號最小
阻塞備用端口

確定了根端口和指定端口後,交換機上剩餘的非根端口和非指定端口統稱爲備用端口。

四.STP報文

Configuration BPDU

①Configuration BPDU
在初始形成STP樹的過程中,各STP交換機都會週期性的(缺省爲2s)主動產生併發送Configuration BPDU。在STP樹形成後的穩定期,只有根橋纔會週期性的(缺省2S)主動產生併發送BPDU,相應地非根交換機會從自己的根端口週期性地接收到Configuration BPDU ,並立即觸發而產生自己的Configuration BPDU,且從自己的指定端口發送出去。這一過程看起來就像是根橋發出的Configuration BPDU 逐跳地經過了其他的交換機

STP和RSTP的配置BPDU的區別

1.在802.1D裏,配置BPDU在生成樹初始化時由各Bridge自己生成,當接收到更優的BPDU時,改用更優的BPDU,當STP域收斂時,全網的配置BPDU都是由Root Bridge的配置BPDU。每臺Bridge都有可能修改BPDU的內容,例如TCA標記,開銷
2.在802.1W裏該BPDU改爲全部由Bridge自己生成只是在Root ID裏填上了已知Root Bridge 的Bridge ID 。配置BPDU由本機產生這點非常重要,這直接使得RSTP在拓撲變更時無需等待Root Bridge的配置BPDU,即可刷新MAC表。

②TCN BPDU
TCN BPDU報文:拓撲改變通知。TCN BPDU報文只能由非根橋發出,通告給根橋。
TCA BPDU報文:用於確認接收到的TCN PBDU報文。
TC BPDU報文:只能由根橋發起,連續發送35s(MAX age + Forwarding delay)。

非根橋收到TC BPDU報文後會將MAC地址的老化時間設置爲15s,加速老化。

五.STP的拓撲變化

STP觸發拓撲改變條件:
一個端口從forwarding狀態過渡到disable或blocking狀態。
一個非根橋如果從指定端口接收到TCN BPDU包,需要向根橋裝發TCN BPDU包。
一個端口進入轉發狀態,並且本地已存在一個指端端口。
發生拓撲變更的三種情況
  • 直接拓撲變更
    端口可以直接檢測到的變更。直接發送TCN BPDU給根橋,收斂時間大約是轉發延遲的兩倍。
  • 間接拓撲變更
    鏈路狀態仍未UP,鏈路狀態正常但是數據傳輸出現了問題,端口無法直接識別。這種間接性的變更,拓撲不會直接發送變化,等到一端在計時器範圍內沒有收到來自根橋的消息時,纔會通告拓撲變化,因爲計時器的關係,要比直接拓撲變更收斂要慢。
  • 無意義拓撲變更
    終端關機,連接到PC端的端口發送TCN BPDU,但不會影響其他交換機之間的通信,結果爲所有交換機將關機主機的MAC地址從(CAM)表中抹去,所以可以在連接終端用戶的交換機端口上啓用PortFast特性。PortFast端口的up或down不會導致TCN消息的產生。

當STP樹穩定後,如果某條鏈路發生了改變,導致拓撲發生了改變,感知到拓撲變化的交換機會以HELLO TIME爲間隔向上游交換機發送TCN BPDU,直至收到來自上游的帶有TC爲1的Configuration BPDU。上游交換機接收到TCN BPDU會通過指定端口回覆TCA爲1的Configuration BPDU。一方面繼續向上遊發送TCN BPDU,直到根橋接收到TCN BPDU根橋向各個端口通告帶有TC爲1的 Configuration BPDU,通知所有交換機網路拓撲發生了變化。。交換機收到TC爲1的Configuration BPDU後便意識到網絡拓撲已經發生了變化,這說明自己的MAC表可能已經不是正確的了,這時交換機會將自己的MAC地址老化週期(缺省爲30S)縮短爲Forward Delay的時間長度,以加速老化掉原來的地址表項。

在這裏插入圖片描述
例如,本來網橋A和根橋之間是沒有直連鏈路的,現在有了一條直連鏈路,該鏈路上兩個接口首先經過20S的BPDU最大超時時長,隨後進入Listening狀態,可以發送和接收BPDU,此時比較之下A就會將與ROOT直連的端口變爲根端口(開銷較小),端口狀態由Blocking變爲了Forwarding狀態,拓撲發生改變,通過這條鏈路發送一個TCN BPDU給根橋,根橋接收到之後發送帶有 TC標記的BPDU通告網絡內其餘交換機活動拓撲發生改變,包括自己在內的交換機加速老化MAC地址表。

什麼時候STP收斂時間是30s,什麼時候是50s?

  • RP (根端口(Root Port) )接口down時,STP收斂爲30S。
  • DP (指定端口(Designated Port) )接口down時,STP收斂爲50S。

六.STP的端口狀態

按狀態劃分端口共有五種,去能狀態,阻塞狀態,偵聽狀態,學習狀態,轉發狀態。

  1. 去能狀態(Disabled):端口無法接收和發送任何幀,端口處於down狀態。
  2. 阻塞狀態(Blocking):只能接收STP幀,不能發送STP幀,也不能轉發用戶數據幀。
  3. 偵聽狀態(Listening):可以接收併發送STP協議幀,但不能進行MAC地址學習,也不能轉發用戶數據幀。
  4. 學習狀態(Learning):可以接收併發送STP協議幀,也可以進行MAC地址學習接收數據幀,不能轉發用戶數據幀
  5. 轉發狀態(Forward):可以接收併發送STP協議幀,可以進行MAC地址學習,可以轉發用戶數據幀。

七.STP的端口遷移

20s(Max age讓交換機都開機運行STP的準備時間)+15s(穩定端口角色狀態)+15s(學習MAC地址表)

過程:
  1. 交換機在同一時刻啓動時,各個交換機的端口立即從去能狀態變爲阻塞狀態,這個狀態只可以接收STP數據包,無法發送STP數據包。所以任何端口都收不到BPDU。經過MAX AGE時間(默認爲20S)後,每臺交換機都會認爲自己是根橋,各個端口變爲爲偵聽模式,可以發送並接收數據包。
  2. 交換機的端口進入監聽模式後,開始發送自己的Configuration BPDU ,同時也接收來自其他交換機的Configuration BPDU。若交換機A接收到的來自交換機B的BPDU中的BID,比自身的BID小,則認爲交換機B爲根橋,並將發送的Configuration BPDU中的根橋BID改爲B交換機的BID。若交換機C接收到來自交換機B的BPDU中的BID,比自身要大,則還是認爲自身爲根橋,並向來源方交換機B發送Configuration BPDU,交換機B就會知道,交換機C爲根橋,重複至所有都同步即可。
  3. 交換機會將接收到根橋BID信息的端口設爲根端口。同時通過比較BID,和PID,可以確定指定端口。
  4. 端口在經過持續時間爲Forward Delay(15S)的時間後,根端口和指定端口會進入學習狀態,其餘端口會進入Blocking狀態。
  5. 端口進入Learning狀態後,在Forward Delay(15S)的時間內,在此時間內交換機可以開始學習MAC地址與這些端口的映射關係,同時希望STP樹在這段時間內能夠完全收斂。
  6. 然後端口會相繼進入Forward狀態,開始用戶數據幀的轉發工作。

八.STP端口特性

  • Portfast
    功能:這個特性的功能就是讓一個阻塞的端口快速的進入到轉發狀態。而不用經過中間的監聽和學習的狀態,這樣的話,就減少了很多端口角色的轉換時間,也就減少了STP的收斂時間。
    如果這個端口接收到BPDU的話,那麼他就會進入到error—disable狀態(相當於阻塞的狀態),停止接收數據包。並且這種狀態會一直持續到“error—disable”設定的超時或者是進行手動干預。
    應用場景:一般是在Access接口上啓用,因爲在Trunk口上實現這個portfast特性,將存在產生橋接環路的危險。

  • UpLinkFast
    說明:當鏈路或交換機故障時,快速切換備份鏈路,加速選舉新的根端口,使備用的阻塞端口直接進入轉發狀態,而不經歷監聽與學習狀態。
    功能:基於定義的上行鏈路組,在交換機中上行鏈路組由根端口和所有去往根橋的代替端口組成。如果上行端口發生故障,則上行鏈路組中開銷最小的端口將被開啓作爲根端口。使用僞組播(僞組播地址代表所有連接根交換機的交換機)的方式通過新的Forwarding端口向上遊網絡通告自己所有的MAC地址,從主用鏈路故障到收斂通常不會超過1S。

  • Backbone Fast
    說明:可以說這個特性是對UplinkFast 特性的一種補充。Uplinkfast特性可以對連接到交換機本身的鏈路出故障的時候,可以準確的判斷出來,並且進行快速的狀態轉換,但是他不能對間接的鏈路故障作出檢測並進行修正。但是,Backbone Fast就可以。
    在丟失根端口並且備份鏈路是採用不同的交換機情況中,這個特性就可以降低默認的收斂時間。但是這個特性的正常運作,需要網絡中的所有的交換機都啓用這個特性。
    本質:快速接收次級BPDU,而減少20S的 MAX_AGE時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章