詳細講述STP過程【轉自56cto.com】

 

 

21.2.1 STP判決和BPDU交換
Spanning-tree算法主要依靠BID,路徑開
銷和端口 ID,在創建一個無環路的拓撲時,
STP執行如下 4 個步驟:
1. 選取根交換機
2. 計算到根交換機的最小路徑開銷
3. 確定最小發送者BID
4. 確定最小的端口ID
爲做出最佳判決,STP需要保證所有參與的網橋都獲得正確的信息,網橋間的信息交互採用網橋協
議數據單元(BPDU)的基於 2層的frame 來傳遞STP信息。網橋通過如上4 步來選擇每個端口上所看到的
“最佳”BPDU。當一個網橋被激活後,其所有的端口每隔2s(默認hello時間)發送一次BPDU報文 。
如果收到其它端口比自己更好的BPDU,則本地端口停止發送BPDU。如果20s (默認最大時間Max Age)
的時間沒有從鄰居收到更好的BPDU,則本地端口將重新發送BPDU。最大生存時間是最佳BPDU超時的
時間。

21.2.2 STP收斂步驟
生成樹算法比較複雜,其收斂於一個無拓撲的初始過程包含
1. 選舉根交換機(Root Bridge)
2. 選舉根端口(Root Ports)
3. 選舉指定端口(Designated Ports)
在網絡第一次“初始”的時候,所有的網橋都會泛洪混合的 BPDU 信息。網橋開始執行前面討論
過的STP 4個判斷過程。使得網橋追蹤到一組BPDU,形成整個網絡(Cisco 是一個vlan一個STP實例,故
cisco的生成樹範圍定義在一個vlan中)。
A。選舉根交換機
STP要求每個網橋分配一個唯一的標識(BID), BID通常由優先級(2bytes)和網橋MAC地址(6bytes)
構成。根據 IEEE802.1d 規定,優先級值爲 0-65535,缺省的優先級爲 32768(0x8000)。當交換機最初
啓動時,它假定自己就是根交換機,併發送次優的 BPDU,當交換機接收到一個更低的 BID 時,它會把

自己正在發送的BPDU的根BDI替換爲這個最低的根BID,所有的網橋都會接收到這些BPDU,並且判定
具有最小BID 值的網橋作爲根網橋。如下圖所示,假定 A,B的優先級均爲32,768 C 的優先級爲40,000

根據選舉規則, 選擇較小的優先級的交換機,則選擇出Cat-A和Cat-B。 在A , B優先級相同的時候,
查找最小的MAC地址AA-AA-AA-AA-AA-AA.於是Cat-A被選舉成爲根交換機.
B。選舉根端口
在選舉根橋結束後,將選舉根端口,一個網橋的根端口是按照路徑開銷最靠近根交換機的端口。 每
一個非根交換機都將選出一個根端口。 根交換機每個接口均爲根端口。其選擇過程如下:
1. 根交換機Cat-A發送BPDU,他們所包含的根路徑開銷爲0,當Cat-B收到這些BPDU
後,迅速將端口 1/1 的路徑開銷累加到所收到 BPDU 的根路徑開銷。假定爲
FastEthernet,則加上端口1/1的開銷19,Cat-B 1/1 到根路徑的開銷爲 19。
2. Cat-B使用內部值19 ,並從端口1/2發送一個根路徑開銷爲19 的BPDU
3. 當Cat-C從Cat-B收到這些BPDU將計算自己到根網橋的開銷爲38(19+19)。
4. Cat-C也在1/1 上收到來自A 的BPDU。同時計算1/1到根網橋的開銷爲19。
5. 根據最靠近根橋原則,C選出根端口爲1/1。
6. Cat-C將繼續向下遊交換機公佈其到根端口的開銷爲19

C。選舉指定端口
指定端口是定義在一個網段(Segment)上的概念。在選舉根端口的同時,基於到根網橋的的根路徑
成本的累加值的指定端口選擇過程也在進行。包含某一網段的指定端口的網橋稱爲該網段的指定網橋。
根網橋的所有活動端口都成爲指定端口。這條規則的例外是:當根網橋自身存在第一層物理環路的情況。

例如:根網橋的兩個端口連接到了同一臺集線器上,或者兩個端口通過交叉線連接到了一起。指定端口
選舉過程如下:


Segment 1 中,根交換機 Cat-A 上 1/1 的路徑開銷爲 0,Cat-B 上 1/1 的開銷爲 19。故 Cat-A 的 1/1
爲指定端口。Segment 2 中,同樣 Cat-A 上的 1/2 被選舉爲指定端口。在 Segment 3 中。Cat-B 和 Cat-C
上的1/2口,端口路徑開銷均爲19。 此時將根據最小發送者的BID來確定,此時確定B的端口爲指定
端口,在某些情況下,例如Cisco的交換機每個vlan一個生成樹實例,此時,將會出現BID 相同的情況,
則最後比較端口ID,端口ID 在同一臺交換機上定義是必定不相同的,最小端口ID的端口被定義爲指定
端口。
注意:接入端口在指定端口過程中不扮演任何角色,所有的指定端口選舉軍僅在中繼端口中交互,
接入端口僅用於連接主機和路由器。

21.2.3 STP狀態
在確定根端口,指定端口和非指定端口後,STP準備創建一個無環路拓撲。STP配置根端口和指定
端口來轉發流量,非指定端口阻塞流量。STP一共有5種狀態

A.阻塞狀態( blocking )
一個端口處於阻塞狀態將會有如下特徵:
丟棄所有連接的網段上收到的數據幀,或者通過交換而來內部轉發的幀 。
接收到的BPDU 直接傳給系統模塊。
沒有地址數據庫。
不傳遞從系統模塊收到的BPDU
接收響應網絡管理消息,但不傳遞他們

B.偵聽狀態( Listening )
如果一個網橋在啓動或者在一定時間沒有收到 BPDU 後立即認爲自己是根交換機,斷口進入偵聽
狀態,偵聽狀態是一種不傳用戶數據的STP狀態,僅在端口發送和接收BPDU報文。努力確定一個活動
的拓撲,該狀態有如下特徵:
丟棄所有連接的網段上收到的數據幀,或者通過交換而來內部轉發的幀 。
接收到的BPDU 直接傳給系統模塊。
沒有地址數據庫。
不傳遞從系統模塊收到的BPDU
接收響應網絡管理消息
選舉根橋,根端口和指定端口發生在偵聽狀態期間。 在指定端口選舉中失敗的端口成爲非指定端
口,並回到阻塞狀態,剩下的指定端口或者根端口在 15s 後進入學習狀態。

C.學習狀態( Learning )
學習狀態是網橋不傳遞用戶數據幀但構建橋街表並收集諸如數據幀源vlan等信息的一種STP狀態。
當網橋收到一個幀, 他將源 MAC 地址和端口放入橋接表, 當數據轉發開始後學習狀態減少了所需的
泛洪次數需求。徐錫狀態的生存時間同樣受轉發延遲定時器的控制,默認爲 15s
一個處於學習狀態的端口特性:
丟棄所有連接的網段上收到的數據幀。
丟棄從其它端口交換來的需要轉發的幀
接收到的BPDU 直接傳給系統模塊。
接收,處理傳遞從系統模塊收到的BPDU
接收響應網絡管理消息

D.轉發狀態( Forwarding )
處於一個學習狀態端口在轉發延遲定時器超時後仍然是根端口或者指定端口,則將進入轉發狀態,
轉發狀態特性如下
轉發所有連接的網段上收到的數據幀。
轉發從其它端口交換來的需要轉發的幀
將位置狀態信息包含進自己的地址數據庫
接收到的BPDU 直接傳給系統模塊。
處理從系統模塊收到的BPDU
接收響應網絡管理消息

21.2.4 STP定時器
STP運作受 3個定時器控制

HELLO時間(根網橋發送配置BPDU的時間間隔) 缺省2s
這個值實際上只控制配置BPDU在根網橋上生成的時間,其他網橋則把它們從根網橋接
收到的BPDU向外通告。換言之,如果在2-20秒內由於網絡故障而沒有收到新的BPDU,非
根網橋在這段時間內就停止發送週期BPDU。如果這種情況持續超過20s,也就是超過最大存
活期,非根網橋就使原來存儲的BPDU無效,並開始尋找新的根端口。
轉發延遲(偵聽狀態或學習狀態的持續時間) 缺省15s
網橋在偵聽狀態和學習狀態所花費的時間。只用轉發延遲就控制了轉發和學習兩個狀態。
15 秒這個值是假定網絡的最大規模爲 7 段網橋跳數;BPDU 的最大丟失個數爲 3 以及 HELLO
時間間隔爲2 秒的情況下得到的。這個轉發延遲計時器同樣可以用來控制網橋表在網絡拓撲
發生變化後的生存時間。
最大存活期(存儲BPDU的時間) 缺省20s
就是網橋在丟棄BPDU前用來備份存儲它的時間。

21.2.5 BPDU的格式
STP BPDU幀格式隨着所使用的協議類型變化。下圖顯示了IEEE 802.1D生成樹協議的BPDU幀格式。

Cisco專有的BPDU幀格式:

幀控制域總是01
目的地址域指定了在橋街租地址表中所規定的目的地址,在IEEE STP BPDU 幀中,這個
地址爲0x800143000000
原地址域指明瞭交換機所使用的基本MAC 地址
路由選擇信息域僅在Cisco STP BPDU中有,RIF必須爲0x0200
邏輯鏈路控制域控制所有STP BPDU的幀類型,這個域被設置爲0x424203

BPDU域內定義如下:

拓撲變化BPDU

21.2.6 拓撲變化和STP
STP通過使用一組定時器來避免在網絡中出現橋街環路,如果一個穩定的STP進程出現變化可能需
要30~50s 的時間才能收斂到新的拓撲。(Max Age 20s + 2次forward delay 15s)當網絡在收斂過程時,那
些已經不可達的物理地址仍舊存在於交換表中。STP在拓撲變化的機制中,要求迅速清空交換表以刪除不
可達的物理地址。防止交換機將一些數據幀轉發到那些不可達的設備。
下圖爲一個拓撲變化過程:

1. 交換機D注意到拓撲變化
2. 交換機D從根端口發出一個拓撲變化通知(TCN)BPDU,最終目的地爲根交換機。TCN BPDU
通過 BPDU中值爲 0x80 的一個字節類型域表明。網橋持續發送 TCN BPDU知道該網段的指定
網橋響應一個TCA配置BPDU,類型TCA是通過1字節標誌域中的最高比特位指明的。
3. 該網段的指定網橋(Cat-B)發送一個 TCA 配置 BPDU 到源網橋(Cat-D).交換機 B 也從根端口發送
一格目的地爲根交換機的TCN BPDU
4. 當根交換機收到(上游)TCN BPDU,就發送配置BPDU通告發生了一個拓撲變化。根交換機
在配置中嵌入拓撲變化的時間等於轉發延遲加最大生存時間.(15s+15s+20s)
5. 一個網橋收到(下游)從根交換機發出的拓撲變化配置消息,用轉發延遲定時器(15s)使全部
地址表超時。這是的比默認設備通常需要5分鐘才老化整張錶快樂很多。 網橋將持續這一個
過程知道不再從根交換機收到拓撲變化配置消息

21.2.7 備份的根網橋
通常拓撲變化中,如果根橋出現問題,將會極大地影響網絡的 STP 收斂時間,此時,cisco 採用了
一種備份根橋的策略。如下圖:

其實質上是根據根網橋選舉規則進行處理的,配置命令爲:
Spaning-tree vlan vlan-id root primay
Spaning-tree vlan vlan-id root secondary
這2條命令的作用是修改BID中的 Priority 值,該命令僅在Catalyst 6500,4500,3750,3550,2950
上支持

 

來自: http://hi.baidu.com/hackers365/blog/item/591970fab67bfd15a9d3114c.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章