1. 程式人生 > >STP生成樹協議——演算法和過程

STP生成樹協議——演算法和過程

比較兩個BID的大小的原則:一是網橋優先順序小的BID優先,二是如果網橋優先順序相同,BID中的後六個位元組的MAC小的則BID優先。
    2、路徑開銷:
    路徑開銷是生成樹演算法的第二個引數,決定到根網橋(根交換機)的路徑。
    通俗說,路徑開銷是用來衡量網橋之間的距離的遠近的,其值是兩個網橋之間某條路徑上所有鏈路開銷的總和。
    路徑開銷與跳數無關。
    路徑開銷決定到根網橋或根交換機的最佳路徑,最小的路徑開銷是到根交換機的最佳路徑。
    路徑開銷的值的規律:頻寬越大,STP開銷越小。
    3、埠ID:埠ID是生成樹演算法的第三個引數,也決定到根交換機的路徑。它由2個位元組組成,包括“埠優先順序”和“埠號”,各佔8位。
    埠優先順序值從0-255,預設128;埠號包括256個。
    埠ID大小的判定與BID大小的判定相同。
    二、STP的過程
    1、STP判決和BPDU交換:
    當建立一個邏輯無環的拓撲時,STP總是通過傳送BPDU的第二層幀來傳遞生成樹協議,並執行相同的4步判決順序:
    步驟1,確定根交換機;
    步驟2,計算到根交換機的最小路徑開銷;
    步驟3,確定最小的傳送者BID;
    步驟4,確定最小的埠ID。
    網橋為每個埠儲存一個其收到的最佳BPDU,當有其他的BPDU到達交換機的埠時,交換機會使用四步判決過程來判斷此BPDU是否比該埠原來儲存的BPDU更好,如果新收到的BPDU(或者本地生成的BPDU)更好,則替換原有值。
    當一個網橋第一次被啟用時,其上所有埠每隔一個HELLO時間(預設2秒)傳送一次BPDU;如果一個埠發現從其他網橋收到的BPDU比自己傳送的好,則本地埠就停止傳送BPDU;如果在MAX AGE(最大生存時間,預設20秒)內沒有從鄰居網橋收到更好的BPDU,本地埠則重新開始傳送BPDU,即最大生存時間是最佳BPDU的超時時間。
    2、STP收斂的三個步驟:
    生成樹演算法收斂於一個無環拓撲的初始過程包含三個選舉步驟:
    步驟1   選舉一個根交換機。
    步驟2   選舉根埠。
    步驟3   選舉指定埠。
    在網路第一次“初始”時,所有網橋都洪泛混合的BPDU資訊,網橋通過執行STP四步判決過程,形成整個網路或VLAN惟一的生成樹。在網路穩定後,BPDU從根網橋流出,沿著無環支路到達網路中的每一個網段。網路發生變化時,生成樹協議按照收斂三個步驟做出處理。
    (1)選舉根交換機:
    根交換機是一個具有最小BID的網橋,它是惟一的,是通過交換BPDU選舉得出來的。
BPDU的格式:BPDU是網橋之間用來交換生成樹資訊的特殊幀,它在網橋之間傳播,包括交換機和所有配置來進行橋接的路由器,BPDU不攜帶終端使用者流量。
BPDU包括根BID、根路徑開銷、傳送者BID和埠ID資訊。
    也就是說,交換機通過傳遞BPDU來發現誰是最小的BID,從而將具有最小BID的網橋做為根交換機。最初時,交換機總將自己認為是根網橋,當它發現有比自己小的BID時,就將收到的具有最小BID的交換機作為根網橋。
    (2)選舉根埠:
    在根交換機選舉完後,就開始選舉根埠了。所謂根埠,就是按照路徑開銷最靠近根交換機的埠,也就是說具有最小根路徑開銷的埠。每一個非根交換機都必須選舉一個根埠。
    (3)選舉指定埠:
    通過以上兩個步驟後,生成樹演算法還沒有消除任何環路,因為還沒有選舉指定埠。所謂指定埠,就是連線在某個網段上的一個橋接埠,它通過該網段既向根交換機發送流量也從根交換機接收流量。橋接網路中的每個網段都必須有一個指定埠。
    指定埠也是根據最小根路徑開銷來決定,因此根交換機上的每個活動埠都是指定埠,因為它的每個埠都具有最小根路徑開銷(實際是它的根路徑開銷是0)。
    注意:指定埠只在中繼埠(TRUNK口)起作用。接入埠在指定埠選舉中不起任何作用。接入埠是用來連線到主機或者三層埠的。
    3、STP狀態
    在網橋已經確定了根埠、指定埠和非指定埠後,STP就準備開始建立一個無環拓撲了。
    為建立一個無環的拓撲,STP配置根埠和指定埠轉發流量,非指定埠阻塞流量。
    實際上,STP決定埠轉發和阻塞看似只有這兩個狀態,實際上是有五種狀態的。
    (1)、Disabled(為了管理目的或者因為發生故障將埠關閉);
    (2)、Blocking(在初始啟用埠之後的狀態。埠不能接收或者傳輸資料,不能把MAC地址加入地址表,只能接收BPDU(bridge protocol data unit)。如果檢測到有一個橋接環,或者埠失去了它的根埠或者指定埠的狀態,那麼就會返回到Blocking狀態);
    (3)、Listening(如果一個埠可以成為一個根埠或者指定埠,那麼它就轉入監聽狀態。此時埠不能接收或者傳輸資料,也不能把MAC地址加入地址表,但可以接收和傳送BPDU);
    (4)、Learning(在Forward Delay計時時間到(預設15秒)後,埠進入學習狀態,此時埠不能傳輸資料,但可以傳送和接收BPDU,也可以學習MAC地址,並加入地址表);
    (5)、Forwarding(在下一次轉發延時計時時間到後,埠進入轉發狀態,此時埠能夠傳送和接收資料、學習MAC地址、傳送和接收BPDU)。
    在這些狀態過程中,會引發網路拓撲結構發生改變。此時,發生變化的交換機會在它的根埠上每隔hello time時間就傳送TCN BPDU,直到上級的指定網橋鄰居確認了該TCN(拓撲結構變化通知)為止。當根網橋收到後,會發送設定了TC(topology change,拓撲改變)位的BPDU,通知整個生成樹拓撲結構發生了變化。這會讓所有的下級交換機把它們的Address Table Aging(地址表老化)計時器從預設值(300秒)降為Fordwarding Delay(預設為15秒),從而讓不活動的MAC地址比正常情況下更快地從地址表更新掉。