天天看點

生成樹協定——STP 詳解(day 5)STP 生成樹協定

STP 生成樹協定

分享今日:

參考部落格連結:

RSTP協定

STP 協定

MSTP

文章目錄

  • STP 生成樹協定
    • 1. 環路問題
      • 1.1 廣播風暴
      • 1.2 MAC位址表翻轉
      • 1.3 多幀複制
    • 2. STP 作用
      • 2.1 作用
      • 2.2 基本術語
        • 2.2.1 橋(Bridge)
        • 2.2.2 橋MAC位址
        • 2.2.3 橋 ID(BID)
        • 2.2.4 端口 ID(PID)
    • 3. STP 樹的生成
      • 3.1 選舉根橋
      • 3.2 确定根端口
        • 3.2.1思科選取根端口優先順序:
        • 3.2.2 華為選取根端口優先順序:
      • 3.3 确定指定端口
        • 3.3.1 思科裝置指定端口比較
        • 3.3.2 華為裝置指定端口比較
      • 3.4 阻塞備用端口
    • 4. STP 封包格式
      • 4.1 Configuration BPDU
        • 4.1.1 BPDU封包格式:
        • 4.1.2 STP 計時器
      • 4.2 TCN BPDU
    • 5. STP 端口狀态
      • 5.1 端口狀态
      • 5.2端口狀态遷移
      • 5.3 端口狀态轉換舉例
    • 6. STP 故障問題
      • 6.1 根橋故障
      • 6.2直連鍊路故障
      • 6.3 非直連鍊路故障
      • 6.4 拓撲改變導緻MAC位址表錯誤
      • 6.5 拓撲改變導緻MAC位址表變化
    • 7. RSTP(STP 優化)
      • 7.1 STP缺陷
      • 7.2 RSTP
        • 7.2.1 RSTP端口角色
        • 7.2.2 三種端口狀态
        • 7.2.3 P/A機制
        • 7.2.4 邊緣端口
        • 7.2.5 RSTP收斂過程
        • 7.2.6 鍊路故障/根橋失效
        • 7.2.6 鍊路故障/根橋失效

思維導圖:

生成樹協定——STP 詳解(day 5)STP 生成樹協定

1. 環路問題

1.1 廣播風暴

産生原因:根據交換機的轉發原則,如果交換機從一個端口上接收到的是一個

廣播幀

,或者是一個

目的MAC位址未知的單點傳播幀

,則會将這個幀向除源端口之外的所有其他端口轉發。如果交換網絡中有環路,則這個幀會被無限轉發,此時便會形成廣播風暴,網絡中也會充斥着重複的資料幀。

生成樹協定——STP 詳解(day 5)STP 生成樹協定
本例中,主機A向外發送了一個單點傳播幀,假設此單點傳播幀的目的MAC位址在網絡中所有交換機的MAC位址表中都暫時不存在。SWB接收到此幀後,将其轉發到SWA和SWC,SWA和SWC也會将此幀轉發到除了接收此幀的其他所有端口,結果此幀又會被再次轉發給SWB,這種循環會一直持續,于是便産生了廣播風暴。交換機性能會是以急速下降,并會導緻業務中斷。

1.2 MAC位址表翻轉

産生原因:交換機是根據所接收到的資料幀的源位址和接收端口生成MAC位址表項的。

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • 主機A向外發送一個單點傳播幀,假設此單點傳播幀的目的MAC位址在網絡中所有交換機的MAC位址表中都暫時不存在。SWB收到此資料幀之後,在MAC位址表中生成一個MAC位址表項,00-05-06-07-08-AA,對應端口為G0/0/3,并将其從G0/0/1和G0/0/2端口轉發。

    此例僅以SWB從G0/0/1端口轉發此幀為例進行說明。

  • SWA接收到此幀後,由于MAC位址表中沒有對應此幀目的MAC位址的表項,是以SWA會将此幀從G0/0/2轉發出去。
  • SWC接收到此幀後,由于MAC位址表中也沒有對應此幀目的MAC位址的表項,是以SWC會将此幀從G0/0/2端口發送回SWB,也會發給主機B。
  • SWB從G0/0/2接口接收到此資料幀之後,會在MAC位址表中删除原有的相關表項,生成一個新的表項,,00-05-06-07-08-AA,對應端口為G0/0/2。此過程會不斷重複,進而導緻MAC位址表震蕩。

1.3 多幀複制

生成樹協定——STP 詳解(day 5)STP 生成樹協定

PC2向PC1發送一個單點傳播幀Y,假設S2的MAC位址表中不存在關于PC1的MAC位址表項,是以S2會對Y幀進行泛洪。假設S1的MAC位址表項中存在“

PC1的MAC位址<——>port 3

” ,S3的MAC位址表項中存在“

PC1的MAC位址<——>port 1

” ,顯然,S1,S3都會對Y幀進行點對點轉發操作。最後的結果是PC1 會收到兩份Y幀的拷貝。

2. STP 作用

STP通過阻塞端口來消除環路,并能夠實作鍊路備份的目的。

2.1 作用

消除環路:通過阻斷備援鍊路來消除網絡中可能存在的環路。

鍊路備份:當活動路徑發生故障時,激活備份鍊路,及時恢複網絡連通性。

2.2 基本術語

2.2.1 橋(Bridge)

橋和交換機這兩個術語是互用的。

2.2.2 橋MAC位址

一個橋有多個轉發端口,一個端口有一個MAC位址。通常把編号最小的那個端口MAC位址作為橋的MAC位址。

2.2.3 橋 ID(BID)

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • 一個橋的橋ID由兩部分組成,2位元組的橋優先級和6位元組的橋MAC位址。
  • 橋優先級可以人為指定,預設值為0x8000(相當于32768)。

2.2.4 端口 ID(PID)

端口ID有兩種定義方式,不同廠家采用的 PID 定義方式不同,同樣端口優先級也是可以人為指定的,預設情況下,端口優先級是128。。

  1. PID 由兩位元組組成,第一個位元組表示端口優先級,後一個位元組是端口編号;
  2. PID 由16bits組成,前4bit表示端口優先級,後12bit表示端口編号;

3. STP 樹的生成

STP通過構造一棵樹來消除交換網絡中的環路。

  • 每個STP網絡中,都會存在一個根橋,其他交換機為非根橋。根橋或者根交換機位于整個邏輯樹的根部,是STP網絡的邏輯中心,非根橋是根橋的下遊裝置。當現有根橋産生故障時,非根橋之間會互動資訊并重新選舉根橋,互動的這種資訊被稱為BPDU。BPDU中包含交換機在參加生成樹計算時的各種參數資訊;
  • STP中定義了三種端口角色:指定端口,根端口和預備端口。
  • 指定端口是交換機向所連網段轉發配置BPDU的端口,

    每個網段有且隻能有一個指定端口

    。一般情況下,根橋的每個端口總是指定端口。
  • 根端口是非根交換機去往根橋路徑最優的端口。在一個運作STP協定的交換機上最多隻有一個根端口,但

    根橋上沒有根端口

  • 如果一個端口既不是指定端口也不是根端口,則此端口為預備端口。

    預備端口将被阻塞

STP樹生成過程:

  1. 選舉一個根橋。
  2. 每個非根交換機選舉一個 根端口。
  3. 每個網段選舉一個指定端口。
  4. 阻塞非根、非指定端口。

3.1 選舉根橋

選取原則:橋優先級是可以配置的,取值範圍是0~65535,預設值為32768。

優先級最高的裝置(數值越小越優先)

會被選舉為根橋。如果優先級相同,則會比較MAC位址,

MAC位址越小則越優先

生成樹協定——STP 詳解(day 5)STP 生成樹協定
交換機啟動後就自動開始進行生成樹收斂計算。**預設情況下,所有交換機啟動時都認為自己是根橋,自己的所有端口都為指定端口,這樣BPDU封包就可以通過所有端口轉發。**對端交換機收到BPDU封包後,會比較BPDU中的根橋ID和自己的橋ID。如果收到的BPDU封包中的橋ID優先級低,接收交換機會繼續通告自己的配置BPDU封包給鄰居交換機。如果收到的BPDU封包中的橋ID優先級高,則交換機會修改自己的BPDU封包的根橋ID字段,宣告新的根橋。

3.2 确定根端口

  • 根橋确定後,其他沒有稱為根橋的交換機都被稱為非根橋。
  • 非根交換機在選舉根端口時分别依據該端口的根路徑開銷、對端BID(Bridge ID)、對端PID(Port ID)和本端PID。
  • 每個非根橋都要選舉一個根端口。根端口是距離根橋最近的端口,這個最近的衡量标準是靠路徑開銷來判定的,即路徑開銷最小的端口就是根端口。
  • 根端口是根橋與非根橋之間進行封包互動的端口。一台非根橋裝置上隻有一個根端口。
生成樹協定——STP 詳解(day 5)STP 生成樹協定

根路徑開銷: 交換機的某個端口到根橋的累計路徑開銷(即從該端口到根橋所經過的所有鍊路的路徑開銷的和)稱為這個端口的根路徑開銷(Root Path Cost,RPC)

思科路徑開銷:

Link Speed Cost (New IEEE Specification) Cost (Old IEEE Specification)
10 Gb/s 2 1
1 Gb/s 4 1
100 Mb/s 19 10
10 Mb/s 100 100

華為路徑開銷:

端口速率 路徑開銷(IEEE 802.1t标準)
10 Mbit/s 2 000 000
100 Mbit/s 200 000
1 Gbit/s 20 000
10 Gbit/s 2 000

3.2.1思科選取根端口優先順序:

  1. 選擇最低的BID;
  2. 選擇最低的路徑開銷(一定是到跟橋的路徑);
  3. 選擇最低發送者的BID;
  4. 選擇最低端口優先級;
  5. 選擇最低端口的ID;、

3.2.2 華為選取根端口優先順序:

  1. 端口收到一個BPDU封包後,抽取該BPDU封包中根路徑開銷字段的值,加上該端口本身的端口開銷即為本端口路徑開銷。如果有兩個或兩個以上的端口計算得到的

    累計路徑開銷

    相同,那麼選擇收到

    發送者BID最小的那個端口

    作為根端口。
生成樹協定——STP 詳解(day 5)STP 生成樹協定
  1. 如果兩個或兩個以上的端口連接配接到同一台交換機上,則選擇

    發送者PID最小的那個端口

    作為根端口。如果兩個或兩個以上的端口通過Hub連接配接到同一台交換機的同一個接口上,則選擇本交換機的

    這些端口中的PID最小

    的作為根端口。

3.3 确定指定端口

生成樹協定——STP 詳解(day 5)STP 生成樹協定

每個網段都應該有一個指定端口,根橋的所有端口都是指定端口(除非根橋在實體上存在環路)。

3.3.1 思科裝置指定端口比較

  1. 最低的根橋ID
  2. 最低的根路徑代價
  3. 最低發送者橋ID
  4. 最低端口ID

3.3.2 華為裝置指定端口比較

  1. 根路徑開銷
  2. 端口所在交換機橋ID(BID)
  3. 端口ID(PID)
生成樹協定——STP 詳解(day 5)STP 生成樹協定

指定端口的選舉也是首先比較累計路徑開銷,累計路徑開銷最小的端口就是指定端口。如果累計路徑開銷相同,則比較端口所在交換機的橋ID,所在橋ID最小的端口被選舉為指定端口。如果通過累計路徑開銷和所在橋ID選舉不出來,則比較端口ID,端口ID最小的被選舉為指定端口。

3.4 阻塞備用端口

未被選舉為根端口或指定端口的端口為預備端口,将會被阻塞。

網絡收斂後,

隻有指定端口和根端口可以轉發資料

。其他端口為預備端口,被阻塞,不能轉發由終端計算機産生并發送的資料幀,但是可以接受并處理STP協定幀。隻能夠從所連網段的指定交換機接收到BPDU封包,并以此來監視鍊路的狀态。

生成樹協定——STP 詳解(day 5)STP 生成樹協定

4. STP 封包格式

  • STP通過交換STP協定幀來建立和維護STP樹,在網絡拓撲發生變化的時候重建新的STP樹。
  • STP協定幀是多點傳播幀,多點傳播位址為01-80-c2-00-00-00
  • STP協定幀有采用IEEE802.3封裝,有兩種格式:Configuration BPDU和TCN BPDU

4.1 Configuration BPDU

初始STP樹的過程中,各STP交換機都會周期性(2s)主動發送Configuration BPDU。

在STP 穩定後隻有根橋周期性發送Configuration BPDU;非根橋會在

根端口收

到根橋發來的Configuration BPDU,并觸發産生自己的Configuration BPDU,且從

指定端口發

出。(根端口接收,指定端口發出)

4.1.1 BPDU封包格式:

生成樹協定——STP 詳解(day 5)STP 生成樹協定

BPDU攜帶的參數可以分為三類:

  1. 第一類BPDU自身辨別,包括協定辨別、版本号、、BPDU類型和flags;
  2. 第二類是用于STP計算的參數,包括交換機BID,點前根橋BID,發送BPDU的PID和RPC;
  3. 第三類是時間參數;
字段 位元組數 說明
protocol identifier 2 總是 0x0000
protocol version identifier 1 總是 0x00
BPDU type 1 0x00:Configuration BPDU 0x80:TCN BPDU
Flags 1 網絡拓撲變化标志:僅使用了最高(TCA)最低(TC)
根橋ID 8 由根橋的優先級和MAC位址組成,每個STP網絡中有且僅有一個根橋
根路徑開銷 4 到根橋的最短路徑開銷
指定橋ID 8 由指定橋的優先級和MAC位址組成
指定端口ID 2 由指定端口的優先級和端口号組成
Message Age 2 配置BPDU在網絡中傳播的生存期(每經過一個橋,-1)
Max Age 2 配置BPDU在裝置中能夠儲存的最大生存期(預設20s)
Hello Time 2 配置BPDU發送的周期(2s)
Forward Delay 2 端口狀态遷移的延時(預設15s)。控制端口Listening和Learning狀态持續時間,預設15s

4.1.2 STP 計時器

  • Hello Time是指運作STP協定的裝置發送配置BPDU的時間間隔,用于檢測鍊路是否存在故障。交換機每隔Hello Time時間會向周圍的交換機發送配置BPDU封包,以确認鍊路是否存在故障。

    當網絡拓撲穩定後,該值隻有在根橋上修改才有效

  • Message Age是從根橋發送到目前交換機接收到BPDU的總時間,包括傳輸延時等。如果配置BPDU是根橋發出的,則Message Age為0。實際實作中,配置BPDU封包

    每經過一個交換機,Message Age增加1

  • Forward Delay是指端口狀态遷移時間。STP生成樹需要一定的時間,如果選出來的根端口或者指定端口馬上進入轉發狀态的話,可能就會總成臨時工作環路。forward delay機制:

    新選出來的根端口和指定端口需要經過兩倍的forward delay時間延時後才可以進入使用者資料幀的轉發狀态

    ,保證此時工作拓撲已無環路。
  • Max Age是指BPDU封包的老化時間,可在根橋上通過指令人為改動這個值。Max Age通過配置BPDU封包的傳遞,可以保證Max Age在整網中一緻。非根橋裝置收到配置BPDU封包後,會将封包中的Message Age和Max Age進行比較:如果Message Age小于等于Max Age,則該非根橋裝置會繼續轉發配置BPDU封包。如果Message Age大于Max Age,則該配置BPDU封包将被老化掉。該非根橋裝置将直接丢棄該配置BPDU,并認為是網絡直徑過大,導緻了根橋連接配接失敗。

4.2 TCN BPDU

TCN BPDU是指下遊交換機感覺到拓撲發生變化時向上遊發送的拓撲變化通知。

TCN BPDU 隻有三個字段:協定辨別,協定版本号和類型。

TCN BPDU工作流程:

如果網絡中某條鍊路發生故障,導緻拓撲發上變化,位于故障點的交換機可以感覺到變化,但是其他交換機無法感覺。

  1. 位于故障點的交換機會以Hello Time為周期通過

    根端口

    不斷向上遊交換機發送TCN BPDU,直到從上遊交換機收到TCA 标志置1的configuration BPDU;
  2. 上遊交換機收到TCN BPDU後,一方面通過指定端口回複下遊交換機TCA置1的configuration BPDU,一方面以hello time為周期向上遊交換機發送TCN BPDU;
  3. 根橋收到TCN BPDU後,發送TC 置1 的configuration BPDU通告所有交換機網絡拓撲發生變化;
  4. 交換機收到TC标志置1的configuration BPDU,便意識到網絡拓撲已經發生變化,說明自己MAC位址表項可能已經不正确。此時交換機會将MAC位址表的老化周期(預設300s)置縮短為Forward relay時間長度(預設15s)。

5. STP 端口狀态

5.1 端口狀态

STP定義了五種端口狀态:去能狀态、阻塞狀态、偵聽狀态、學習狀态和轉發狀态。

端口狀态 說明
去能(Disabled) 無法接受發送任何幀,端口處于關閉狀态(Down)
阻塞(Blocking) 可以接受并分析STP協定幀,但是不能發送STP協定幀,也不能轉發使用者資料幀
偵聽(Listening) 可以接受并發送STP協定幀,但是不能學習MAC位址,也不能轉發使用者資料幀
學習(Learning) 可以接受并發送STP協定幀,可以學習MAC位址,也不能轉發使用者資料幀
轉發(Forwarding) 可以接受并發送STP協定幀,可以學習MAC位址,同時也能轉發使用者資料幀

5.2端口狀态遷移

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  1. 端口初始化或使能;
  2. 端口被選為根端口或指定端口。
  3. 端口不再是根端口或指定端口。
  4. forward delay計時器逾時。
  5. 端口禁用或鍊路失效。
  • STP在啟動的時候,端口狀态由

    Disabled轉為Blocking

    ,此時端口指定接收分析BPDU,不能發送;
  • 如果Blocking狀态端口被選為根端口或者指定端口,會

    進入Listening

    狀态,此時端口接收并發送BPDU,這種狀态會持續一個

    Forward Delay時間(預設15s)

  • 沒有意外情況回到Blocking,端口會

    進入Learning

    狀态,并持續一個

    Forward Delay時間(預設15s)

    ,此時端口可以收發BPDU,同時建構MAC位址表,為轉發使用者資料幀做準備;
  • 沒有意外,端口

    進入Forwarding

    狀态,開始使用者資料幀轉發工作;
  • 狀态遷移過程中,一旦端口被關閉或者出現鍊路故障,進入去能狀态;
  • 狀态遷移過程中,一旦端口不再是根端口或者指定端口,進入阻塞狀态;

5.3 端口狀态轉換舉例

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  1. 假設交換機S1,S2,S3同一時間啟動。各個交換機從Disabled進入Blocking狀态。由于處于Blocking狀态隻能接受分析BPDU,不能發送,是以任何端口都收不到BPDU。

    等待MAX Age(預設20s)

    時間後,每台交換機都會認為自己是根橋,每個端口都是指定端口,端口狀态遷移為Listening;
  2. 交換機進入learning狀态後就會開始發送自己的Configuration BPDU,同時也會受到其他交換機發送的Configuration BPDU。
    • 假設S2先發送Configuration BPDU,S3從自己的G 0/0/2端口收到後,發現S2 的BID逼自己的小,于是認為S2是根橋,将G0/0/2設定為根端口,然後将自己重新産生的根橋設定為S2的Configuration BPDU從G0/0/1端口發給S1;
    • S1收到S3發來的BPDU後,發現自己的BID是最小的,認為自己就是根橋。于是向S3發送Configuration BPDU,同樣的也會在G0/0/2 端口受到S2 的Configuration BPDU,也會從G0/0/2端口發送自己的BPDU給S2;
    • 端口在listening狀态下持續15s,進入learning。此時S3的G0/0/2接口已經被阻塞。
  3. 各個端口相繼進入Learning,持續Forward time(15s)後進入。在這段時間内建構MAC位址轉發表,為使用者資料幀轉發做準備;
  4. 各端口進入Forwarding狀态,開始轉發使用者資料幀。

6. STP 故障問題

6.1 根橋故障

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • 在穩定的STP拓撲裡,非根橋會定期收到來自根橋的BPDU封包。
  • 如果根橋發生了故障,停止發送BPDU封包,下遊交換機就無法收到來自根橋的BPDU封包。
  • 如果下遊交換機一直收不到BPDU封包,

    Max Age定時器就會逾時(Max Age的預設值為20秒)

    ,進而導緻已經收到的BPDU封包失效,此時,非根交換機會互相發送配置BPDU封包,重新選舉新的根橋。根橋故障會導緻50秒左右的恢複時間,恢複時間約等于Max Age加上兩倍的Forward Delay收斂時間。(max age + 2*Forwarding relay)

6.2直連鍊路故障

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • SWB檢測到直連鍊路實體故障後,會将預備端口轉換為根端口;
  • SWB新的根端口會在30 秒後恢複到轉發狀态。
此例中,SWA和SWB使用了兩條鍊路互連,其中一條是主用鍊路,另外一條是備份鍊路。生成樹正常收斂之後,如果SWB檢測到根端口的鍊路發生實體故障,則其Alternate端口會遷移到Listening、Learning、Forwarding狀态,經過兩倍的Forward Delay後恢複到轉發狀态。

6.3 非直連鍊路故障

生成樹協定——STP 詳解(day 5)STP 生成樹協定

非直連鍊路故障後,由于需要等待Max Age加上兩倍的Forward Delay時間,端口需要大約50秒才能恢複到轉發狀态。

本例中,SWB與SWA之間的鍊路發生了某種故障(非實體層故障),SWB是以一直收不到來自SWA的BPDU封包。
  1. 等待

    Max Age定時器逾時後

    ,SWB會認為根橋SWA不再有效,并認為自己是根橋,于是開始發送自己的BPDU封包給SWC,通知SWC自己作為新的根橋。
  2. 在此期間,由于SWC的Alternate端口再也不能收到包含原根橋ID的BPDU封包。其

    Max Age定時器逾時

    後,SWC會切換Alternate端口為指定端口并且轉發來自其根端口的BPDU封包給SWB。
  3. 是以,Max Age定時器逾時後,SWB、SWC幾乎同時會收到對方發來的BPDU。經過STP重新計算後,SWB放棄宣稱自己是根橋并重新确定端口角色。
  4. 非直連鍊路故障後,SWC的預備端口恢複到轉發狀态大約需要50秒。

6.4 拓撲改變導緻MAC位址表錯誤

生成樹協定——STP 詳解(day 5)STP 生成樹協定

在交換網絡中,交換機依賴MAC位址表轉發資料幀。預設情況下,MAC位址表項的老化時間是300秒。如果生成樹拓撲發生變化,交換機轉發資料的路徑也會随着發生改變,此時MAC位址表中未及時老化掉的表項會導緻資料轉發錯誤,是以

在拓撲發生變化後需要及時更新MAC位址表項。

本例中,SWB中的MAC位址表項定義了通過端口GigabitEthernet 0/0/3可以到達主機A,通過端口GigabitEthernet 0/0/1可以到達主機B。由于SWC的根端口産生故障,導緻生成樹拓撲重新收斂,在生成樹拓撲完成收斂之後,從主機A到主機B的幀仍然不能到達目的地。這是因為MAC位址表項老化時間是300秒,主機A發往主機B的幀到達SWB後,SWB會繼續通過端口GigabitEthernet 0/0/1轉發該資料幀。

6.5 拓撲改變導緻MAC位址表變化

生成樹協定——STP 詳解(day 5)STP 生成樹協定

拓撲變化過程中,根橋通過TCN BPDU封包獲知生成樹拓撲裡發生了故障。根橋生成TC用來

通知其他交換機加速老化現有的MAC位址表項。

拓撲變更以及MAC位址表項更新的具體過程如下:

  1. SWC感覺到網絡拓撲發生變化後,會不間斷地向SWB發送TCN BPDU封包。
  2. SWB收到SWC發來的TCN BPDU封包後,會把配置BPDU封包中的Flags的TCA位設定1,然後發送給SWC,告知SWC停止發送TCN BPDU封包。
  3. SWB向根橋轉發TCN BPDU封包。
  4. SWA把配置BPDU封包中的Flags的TC位設定為1後發送,**通知下遊裝置把MAC位址表項的老化時間由預設的300秒修改為Forward Delay的時間(預設為15秒)。**☆

    最多等待15秒之後,SWB中的錯誤MAC位址表項會被自動清除。此後,SWB就能重新開始MAC表項的學習及轉發操作。

7. RSTP(STP 優化)

7.1 STP缺陷

STP生成樹收斂需要依賴定時器計時,端口狀态從Blocking到Forwarding至少需要兩個forward relay的時間長度,收斂時間太長,一般都需要幾十秒。IEEE 802.1w定義了RSTP(Rapid Spanning Tree Protocol)彌補了STP收斂時間慢的缺陷。

7.2 RSTP

7.2.1 RSTP端口角色

角色 描述
Backup Backup端口作為指定端口的備份,提供了另外一條從根橋到非根橋的備份鍊路。
Alternate Alternate端口作為根端口的備份端口,提供了從指定橋到根橋的另一條備份路徑。

7.2.2 三種端口狀态

RSTP中定義了三種端口狀态:Discarding、Learning、Forwarding。

RSTP 端口狀态 對應STP端口狀态 說明
Forwarding Forwarding 可以轉發使用者資料幀,可以學習MAC位址
Learning Learning 不可以轉發使用者資料幀,但是可以學習MAC位址
Discarding Listening、Blocking、Disabled 不可以轉發使用者資料幀,不可以學習MAC位址

7.2.3 P/A機制

在RSTP中,一個端口被指定成為指定端口後,此端口會先進入discarding,然後通過**P/A(Proposal/Agreement)**機制主動與對端端口協商,通過協商後,就可以立即進入Forwarding狀态。

7.2.4 邊緣端口

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • RSTP裡,位于網絡邊緣的指定端口被稱為邊緣端口。
  • 邊緣端口一般與使用者終端裝置直接連接配接,不與任何交換裝置連接配接。邊緣端口不接收配置BPDU封包,不參與RSTP運算,可以由Disabled狀态直接轉到Forwarding狀态,且不經曆時延,就像在端口上将STP禁用了一樣。但是,一旦邊緣端口收到配置BPDU封包,就喪失了邊緣端口屬性,成為普通STP端口,并重新進行生成樹計算,進而引起網絡震蕩。

7.2.5 RSTP收斂過程

RSTP BPDU:RSTP對此進行了改進,即在拓撲穩定後,無論非根橋裝置是否接收到根橋傳來的配置BPDU封包,非根橋裝置都會仍然按照Hello Timer規定的時間間隔發送配置BPDU,該行為完全由每台裝置自主進行。

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  1. 每一台交換機啟動RSTP後,都認為自己是“根橋”,并且發送RST BPDU。所有端口都為指定端口,

    處于Discarding狀态

  2. 交換機互相發送Proposal置位的RST BPDU。每個認為自己是“根橋”的交換機生成一個RST BPDU封包來協商指定網段的端口狀态,此RST BPDU封包的Flags字段裡面的Proposal位需要置位。當一個端口收到RST BPDU封包時,此端口會比較收到的RST BPDU封包和本地的RST BPDU封包。如果本地的RST BPDU封包優于接收的RST BPDU封包,則端口會丢棄接收的RST BPDU封包,并發送Proposal置位的本地RST BPDU封包來回複對端裝置。
  3. 交換機使用同步機制來實作端口角色協商管理。當收到Proposal置位并且優先級高的BPDU封包時,接收交換機必須設定所有下遊指定端口為Discarding狀态。

    如果下遊端口是Alternate端口或者邊緣端口,則端口狀态保持不變

  4. 當确認下遊指定端口遷移到Discarding狀态後,裝置發送RST BPDU封包回複上遊交換機發送的Proposal消息。在此過程中,端口已經确認為根端口,是以RST BPDU封包Flags字段裡面設定了Agreement标記位和根端口角色。
  5. 在P/A程序的最後階段,上遊交換機收到Agreement置位的RST BPDU封包後,指定端口立即從Discarding狀态遷移為Forwarding狀态。然後,下遊網段開始使用同樣的P/A程序協商端口角色。

7.2.6 鍊路故障/根橋失效

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • 在STP中,當出現鍊路故障或根橋失效導緻交換機收不到BPDU時,交換機需要等待Max Age時間後才能确認出現了故障。

    g狀态。

    如果下遊端口是Alternate端口或者邊緣端口,則端口狀态保持不變

  1. 當确認下遊指定端口遷移到Discarding狀态後,裝置發送RST BPDU封包回複上遊交換機發送的Proposal消息。在此過程中,端口已經确認為根端口,是以RST BPDU封包Flags字段裡面設定了Agreement标記位和根端口角色。
  2. 在P/A程序的最後階段,上遊交換機收到Agreement置位的RST BPDU封包後,指定端口立即從Discarding狀态遷移為Forwarding狀态。然後,下遊網段開始使用同樣的P/A程序協商端口角色。

7.2.6 鍊路故障/根橋失效

生成樹協定——STP 詳解(day 5)STP 生成樹協定
  • 在STP中,當出現鍊路故障或根橋失效導緻交換機收不到BPDU時,交換機需要等待Max Age時間後才能确認出現了故障。
  • 而在RSTP中,如果交換機的端口在連續3次Hello Timer規定的時間間隔内沒有收到上遊交換機發送的RST BPDU,便會确認本端口和對端端口的通信失敗,進而需要重新進行RSTP的計算來确定交換機及端口角色。

繼續閱讀