天天看點

STP

STP

STP(Spanning Tree Protocol)是生成樹協定的英文縮寫,是OSI網絡互聯模型中的第二層(Date Link Layer)中的協定。

STP是基于什麼需要所開發的協定:

一個優秀的網絡工程師,備援的思想是尤為重要的,是以在做某些網絡互聯的項目時,會使用多個交換機Switch進行保障通信,避免單點故障。可是如果幾個 交換機同時作用時,難免會發生一些問題:1,廣播風暴。一個PC或者Host Server 發送一個廣播broadcast,進而使形成環路的交換機不停的泛洪(由于交換機是二層裝置,沒有網絡層封裝幀的TTL數,是以這種廣播風暴更為嚴重), 直到網絡堵塞。2,幀的多重複制。由于多台Switch轉發資料,可以使目标路由器接收到幾個相同的幀,這在三層路由的一些協定中,會出現故障。 3,MAC位址表不穩定。由于交換機中MAC表中,一個端口可對應多個MAC位址,而一個MAC無法對應多個端口。然而在多個Switch同時作用環路 時,難免會造成MAC表學習重複,使MAC位址對應的端口不斷被覆寫,造成MAC位址表不穩定。

基于以上問題,開發出來了STP生成樹協定,該協定可應用于環路網絡,通過一定的算法實作路徑備援,同時将環路網絡修剪成無環路的樹型網絡,進而避免封包在環路網絡中的增生和無限循環。

生成樹協定STP/RSTP

一. 技術原理:

STP的基本思想就是生成“一棵樹”,樹的根是一個稱為根橋的交換機,根據設定不同,不同的交換機會被選為根橋,但任意時刻隻能有一個根橋。由根橋開 始,逐級形成一棵樹,根橋定時發送配置封包,非根橋接收配置封包并轉發,如果某台交換機能夠從兩個以上的端口接收到配置封包,則說明從該交換機到根有不止 一條路徑,便構成了循環回路,此時交換機根據端口的配置選出一個端口并把其他的端口阻塞,消除循環。當某個端口長時間不能接收到配置封包的時候,交換機認 為端口的配置逾時,網絡拓撲可能已經改變,此時重新計算網絡拓撲,重新生成一棵樹。

  總之,其目的就是在不影響備援的情況下,避免交換機環路的出現。

具體的選舉步驟為:

1、One root bridge per network(在網絡中選一個根橋)

2、One root port per nonroot bridge(在每一個非根橋中選舉一個根端口稱為RP)

3、One designated port per segment(在每條鍊路中選舉一個指定端口稱為DP)

4、Nondesignated ports are unused(剩下的一個端口為BLOCK狀态)

選舉原則:

1,在所有交換機中Bridge ID越低,越優先。

【先介紹一下Bridge ID,Bridge ID又兩部分組成,{Bridge Priority,MAC Adress}。Bridge Priority為橋優先級,預設為32768;MAC Adress就是交換機的MAC位址。注:如果想把指定交換機設為根橋,可把改交換機的Bridge Priority設為更低,一般設為0】

2,選舉根端口時,按照以下原則。COST--Port ID,先比較COST值,即該端口到根橋的花費。COST值越低越優先。

【COST值】

帶寬    COST

10Gps    2

1Gps        4

100M        19

10M       100

如果COST值相同的話,再比較Port ID,Port 0優先與Port 1。

3,選舉DP,規則為COST--Bridge ID。先比較COST,當COST相同時,再比較橋ID,橋ID越小越優先。

4,最後剩下的那個唯一的端口即為BLOCK狀态,即不運作,但會接收BPDU封包,監聽其他正常使用的交換機是否工作正常,如不正常立即啟用。

Spanning-tree transits each port through several different states:

1,收BPDU封包,如20s沒有收到回包,即轉入下一步驟。------隻可收BPDU封包

2,Listening 屆時15s 此期間,會進行STP選舉------------可以收、發BPDU封包,不轉發使用者資料

3,Learning 屆時15s 此期間會學習MAC位址,為以後減少泛洪流量做準備

4,Forwarding

  以上可以看出,STP協定會持續50s,這就是有的PC開機後50s後才可以上網,進行資料傳輸。為此,由開發了RSTP協定(快速生成樹協定),收斂速度可達到1s。

二. 功能介紹:

生成樹協定最主要的應用是為了避免區域網路中的網絡環回,解決成環以太網網絡的“廣播風暴”問題,從某種意義上說是一種網絡保護技術,可以消除由于失誤 或者意外帶來的循環連接配接。STP也提供了為網絡提供備份連接配接的可能,可與SDH保護配合構成以太環網的雙重保護。新型以太單闆支援符合ITU-T 802.1d标準的生成樹協定STP及802.1w規定的快速生成樹協定RSTP,收斂速度可達到1s。

但是,由于協定機制本身的局限,STP保護速度慢(即使是1s的收斂速度也無法滿足電信級的要求),如果在城域網内部運用STP技術,使用者網絡的動蕩 會引起營運商網絡的動蕩。目前在MSTP 組成環網中,由于SDH保護倒換時間比STP協定收斂時間快的多,系統采用依然是SDH MS-SPRING或SNCP,一般倒換時間在50ms以内。但測試時部分以太網業務的倒換時間為0或小于幾個毫秒,原因是内部具有較大緩存。SDH保護 倒換動作對MAC層是不可見的。這兩個層次的保護可以協調工作,設定一定的"拖延時間"(hold-off),一般不會出現多次倒換問題。

一、STP算法

    IEEE802.1D标準定義了STP的生成樹算法。該算法依賴于BID、路徑開銷和端口ID參數來做出決定。

    1、BID(網橋ID):

    BID是生成樹算法的第一個參數,BID決定了橋接網絡的中心,稱為根網橋或根交換機。

BID參數是一個8位元組域。前2個位元組(10進制)稱為“網橋優先級”,後6個位元組(16進制)是交換機的一個MAC位址。

網橋優先級用來衡量一個網橋的優先度,範圍是0-65535,預設是32768。

思科交換機中的PVST+(每VLAN生成樹)生成樹協定使每個VLAN都有一個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位址比正常情況下更快地從位址表更新掉

stp