
9.3 理解STP
STP(Spanning Tree Protocol,生成樹協(xié)議)與上節(jié)介紹的VLAN的關(guān)系非常密切。STP對應(yīng)IEEE802.1D標準,主要應(yīng)用于存在環(huán)路(通俗一點說就是,構(gòu)成了數(shù)據(jù)發(fā)送和接收的循環(huán)路徑)的網(wǎng)絡(luò),通過一定的算法既能實現(xiàn)路徑冗余,同時又可將環(huán)路網(wǎng)絡(luò)修剪成無環(huán)路的樹型網(wǎng)絡(luò),從而避免報文在環(huán)路網(wǎng)絡(luò)中的增生和無限循環(huán)。
9.3.1 STP的由來
要正確使用STP,就必須先了解它存在的意義或者開發(fā)這種技術(shù)的目的,只有這樣才能更好地理解它的工作原理。前面說了,STP的目的就是消除網(wǎng)絡(luò)中冗余的鏈路(當(dāng)然不是物理消除),下面就來介紹STP是如何實現(xiàn)這個目的的。
二層數(shù)據(jù)網(wǎng)的自愈(就是指在網(wǎng)絡(luò)出現(xiàn)故障時的自動修復(fù)能力)需求由來已久,早期的以太網(wǎng)橋采用了基于 MAC地址在不同端口之間的轉(zhuǎn)發(fā),而每一個端口對應(yīng)的是一個以太網(wǎng)的網(wǎng)段,也就是一個以太網(wǎng)的廣播域,通過學(xué)習(xí)每個端口的 MAC地址表的方式,以太網(wǎng)橋只轉(zhuǎn)發(fā)不同端口間的通信。但是由于網(wǎng)橋依賴的是運行網(wǎng)絡(luò)中存在的MAC地址和端口的對應(yīng)表,所以一旦收到目的地址未知的數(shù)據(jù)包,它仍將利用廣播的形式來尋址,所以,這種方法使得它天生不能隔離廣播包和組播包的通信,其后果就是在一個環(huán)形網(wǎng)絡(luò)中造成數(shù)據(jù)流量以指數(shù)形式的增長,從而導(dǎo)致網(wǎng)絡(luò)的癱瘓,這種現(xiàn)象也稱為"廣播風(fēng)暴"。
"廣播風(fēng)暴"的現(xiàn)象只存在于兩點之間存在冗余鏈路的網(wǎng)絡(luò)之中,而冗余鏈路卻是在現(xiàn)實網(wǎng)絡(luò)設(shè)計中大量存在的。如圖9-5中核心層、匯聚層的交換機間都是有冗余設(shè)計的。本來這樣設(shè)計的目的就是想當(dāng)某一條鏈路失效時,另一條冗余的鏈路能夠馬上接管所有的工作。但是,在實際工作中,這些冗余連接還會帶來廣播風(fēng)暴隱患。
如圖9-5中的Switch 6交換機發(fā)送的數(shù)據(jù)要到達Switch 1,就可以有多條不同路徑了,其中包括:Switch6→Switch 3→Switch 1,Switch 6→Switch 3→Switch 4→Switch 1,Switch6→Switch 3→Switch 4→Switch 5→Switch 2→Switch 1這三條。這樣一來,當(dāng)從Switch6發(fā)送一個請求數(shù)據(jù)包到Switch1時,就可能從以上三條路徑中同時流出,顯然這不是必要的,給網(wǎng)絡(luò)帶來了不必要的網(wǎng)絡(luò)流量壓力。本示例還只是一個很簡單的結(jié)構(gòu),如果結(jié)構(gòu)更復(fù)雜的話,冗余連接會更多,對應(yīng)的冗余鏈路也就是更多,所帶來的廣播風(fēng)暴將更大。
| (點擊查看大圖)圖9-5冗余連接設(shè)計示例 |
除了廣播風(fēng)暴的影響外,這么多冗余鏈路還可能形成網(wǎng)絡(luò)環(huán)路,造成數(shù)據(jù)發(fā)送和接收死循環(huán)。同樣以圖9-5為例。在以上三條路徑中,如果不加修剪,從Switch1上發(fā)送到Switch 6的數(shù)據(jù)包,可能就不會到達Switch 6,而是直接在Switch 1→Switch 3→Switch4→Switch 1,或者Switch 1→Switch 4→Switch 3→Switch 1,或者Switch 1→Switch2→Switch 5→Switch 4→Switch 1等多個封閉的環(huán)路上循環(huán)。
為了解決"廣播風(fēng)暴"和網(wǎng)絡(luò)死循環(huán)這兩個在二層數(shù)據(jù)網(wǎng)絡(luò)中存在的主要弊端,IEEE(電機和電子工程師學(xué)會)在基于思科的STP技術(shù)基礎(chǔ)上頒發(fā)了IEEE802.1D協(xié)議標準。這種兩種協(xié)議的本質(zhì)其實是一樣的,就是消除網(wǎng)絡(luò)拓撲中任意兩點之間可能存在的冗余路徑,將兩點之間存在的多條路經(jīng)劃分為"通信鏈路"和"備份鏈路"。并規(guī)定,數(shù)據(jù)的轉(zhuǎn)發(fā)只在"通信鏈路"上進行,而"備份鏈路"只用于鏈路的偵聽,只有在發(fā)現(xiàn)"通信鏈路徑"失效時,才自動地將通信切換到"備份鏈路"上。
用于正常數(shù)據(jù)轉(zhuǎn)發(fā)的"通信鏈路"往往是最短的路徑,如上一示例中的"Switch 6→Switch 3→Switch1"這條路徑。但是,STP并不是全部禁用這些冗余鏈路,而只是在正常工作中讓它們處于偵聽狀態(tài),當(dāng)活躍鏈路失效時才接替活躍鏈路的工作。這樣就可以達到既不會因為冗余鏈路而形成廣播風(fēng)暴,也不會因為沒有冗余鏈路而造成網(wǎng)絡(luò)循環(huán),降低網(wǎng)絡(luò)的可用性。
現(xiàn)在的二層以太網(wǎng)交換機和三層以太網(wǎng)交換機采用了硬件電路的設(shè)計,保證了每個端口的獨享帶寬。這樣一來,每個交換機都可以看成是一個多個擁有獨立帶寬端口的網(wǎng)橋,用戶可以將它的每一個端口看作是一個獨立的網(wǎng)橋端口,其二層的工作原理與網(wǎng)橋類似。為了實現(xiàn)在用戶接入層、匯聚層甚至骨干層范圍內(nèi)的高可靠性,網(wǎng)絡(luò)中關(guān)鍵的拓撲設(shè)計往往采用冗余鏈路的設(shè)計(參見圖9-5),雖然也有其他的技術(shù)可以實現(xiàn)高效的網(wǎng)絡(luò)收斂,但是大多數(shù)網(wǎng)絡(luò)設(shè)計者還是采用了IEEE802.1D 的方法,原因是生成樹協(xié)議是一項簡單而又成熟的網(wǎng)絡(luò)自愈技術(shù)。
9.3.2 STP的基本功能和工作原理
在網(wǎng)橋或交換機上運行的STP是與IEEE 802.1D標準具有類似功能的,但是它們是兩種不同的鏈路層協(xié)議。因為IEEE802.1D是以標準形式頒布的,所以應(yīng)用更廣,所有品牌的網(wǎng)絡(luò)設(shè)備都可以支持,而STP是由思科開發(fā)的,所以僅在思科自身以及授權(quán)使用的品牌設(shè)備上使用。但就目前來看,兩者幾乎是一個統(tǒng)一體,沒什么區(qū)分了,因為IEEE802.1D幾乎是等同采用思科STP的。
在網(wǎng)橋和交換機上部署STP的目的就是在你既想要有冗余鏈路,又要阻止環(huán)路的情形下阻止在網(wǎng)絡(luò)中出現(xiàn)環(huán)路,最終達到降低廣播風(fēng)暴產(chǎn)生的可能(只能是可能,因為廣播風(fēng)暴不僅只有網(wǎng)絡(luò)環(huán)路才能發(fā)生,還可能是因為專門的廣播包引起的),消除網(wǎng)絡(luò)循環(huán)。有時,在網(wǎng)絡(luò)設(shè)計中,特別是一些比較大型,同時可用性要求高的網(wǎng)絡(luò)系統(tǒng)設(shè)計時,冗余的鏈路與網(wǎng)絡(luò)中故障轉(zhuǎn)移所需的備份同等重要。在主鏈路失效時,通過激活備份鏈路可以使得用戶繼續(xù)連接到網(wǎng)絡(luò)。在網(wǎng)橋和交換機上不部署STP,這樣的部署又可能造成網(wǎng)絡(luò)環(huán)路出現(xiàn)。如果兩個連接的交換機一個運行STP,另一個運行IEEE802.1D,則它們需要不同的收斂計時器。
在如圖9-6所示的網(wǎng)絡(luò)示例中,在Switch A和SwitchB之間存在一條冗余鏈路。但是這種部署可能會創(chuàng)建一個橋接環(huán)路。例如,從Station M(站點M)發(fā)出的一個到StationN(站點N)的廣播或者多播包可能會在兩個交換機之間循環(huán)。
| (點擊查看大圖)圖9-6未運行STP的網(wǎng)絡(luò)示例 |
但是,如果在兩個交換機上運行了STP,則網(wǎng)絡(luò)的邏輯結(jié)構(gòu)就可看成圖9-7所示。這時在Switch A和SwitchB之間就只有一條路徑,從Station M發(fā)出的一個到StationN的廣播或者多播包就不會在兩個交換機之間循環(huán)了,消除了網(wǎng)絡(luò)環(huán)路。
為了提供所需的路徑冗余,同時又可以避免環(huán)路發(fā)生,STP定義了一個延伸到網(wǎng)絡(luò)中所有交換機的"樹"(只是一種比喻說法,既表示了網(wǎng)絡(luò)中各交換機的層次結(jié)構(gòu),又暗示網(wǎng)絡(luò)中沒有環(huán)路)。STP強迫冗余數(shù)據(jù)路徑處于備用的阻塞狀態(tài),而使其他路徑處于轉(zhuǎn)發(fā)狀態(tài)。如果處于轉(zhuǎn)發(fā)狀態(tài)的一條鏈路不可用,STP重新配置網(wǎng)絡(luò),并變更數(shù)據(jù)路徑為備用路徑。
| (點擊查看大圖)圖9-7運行STP后的網(wǎng)絡(luò)示例 |
9.3.3 STP運作規(guī)則
在STP中,網(wǎng)絡(luò)中所有交換機的關(guān)鍵就是選擇根網(wǎng)橋。網(wǎng)絡(luò)中的其他確定,如哪個端口置于阻塞模式,哪個端口置于轉(zhuǎn)發(fā)模式,都是需要依據(jù)根網(wǎng)橋才能確定的。在交換網(wǎng)絡(luò)中,不同于橋接環(huán)境,更像多VLAN處理。一個交換網(wǎng)絡(luò)中,在你執(zhí)行根網(wǎng)橋時,通常是指定根網(wǎng)橋作為根交換機。每個VLAN必須有它自己的根網(wǎng)橋,因為每個VLAN是一個獨立的廣播域。不同VLAN的根網(wǎng)橋可以都是在一臺交換機上,當(dāng)然也可以在不同交換機上。
【說明】為特定VLAN進行根交換機選舉非常重要。你可以選擇根交換機,或者可以由網(wǎng)絡(luò)中的交換機自己決定。如果不控制根交換機選舉過程,可能在你的網(wǎng)絡(luò)中會存在不適宜的路徑。
所有交換機交換用于根交換機選舉和以后網(wǎng)絡(luò)配置的信息。BPDU承載了這些信息。每個交換機會比較本機發(fā)送到鄰居交換機的BPDU和從鄰居中接收到的BPDU中的參數(shù)。在STP根交換機選舉過程中,參數(shù)值越小越好(優(yōu)先級越高)。如果SwitchA通告的根ID比Switch B通告的根ID小,則來自Switch A的信息就越好。SwitchB停止它的根ID通告,接受Switch A的根ID通告。
生成樹(ST)的工作方式是為交換機和端口分配角色,以確保在任何時刻交換網(wǎng)絡(luò)中點與點之間只有一條路徑。它所分配的端口角色包括根網(wǎng)橋(RootBridge,RB)、指定網(wǎng)橋(Designated Bridge,DB)、根端口(RootPort,RP)、指定端口(Designated Port,DP)和非指定端口(Nondesignated Port)。
根交換機識別每個VLAN,在根交換機識別后,交換機按照以下STP規(guī)則運作:
首先,根交換機中的所有端口都必須處于轉(zhuǎn)發(fā)狀態(tài)。然后,網(wǎng)絡(luò)中的其他每個交換機通過比較交換機上每個端口上接收到的BPDU信息來決定到根交換機的最佳路徑。交換機使用接收到的BPDU中信息最小的端口作為到達根交換機的端口,也就相應(yīng)交換機的"根端口"。在確定了根端口后,交換機進行以下規(guī)則。
根端口必須設(shè)置為轉(zhuǎn)發(fā)模式。另外,每個LAN網(wǎng)段中交換機相互通信,以確定哪臺交換機用于從該網(wǎng)段中轉(zhuǎn)發(fā)數(shù)據(jù)到根交換機,這臺交換機就稱之為"指定交換機"。
在一個LAN網(wǎng)段中,指定交換機上連接到這個網(wǎng)段的端口必須處于轉(zhuǎn)發(fā)狀態(tài)。
所有交換機中的其他端口必須處于阻塞模式。這條規(guī)則僅適用于連接到其他交換機的端口。STP不會影響連接到工作站或者服務(wù)器的端口,這些端口必須處于轉(zhuǎn)發(fā)狀態(tài)。
【說明】當(dāng)STP運行在PVST或PVST+時添加或者刪除VLAN會觸發(fā)VLAN實例ST的重新計算,僅相應(yīng)VLAN的通信將中斷,中繼鏈路上的其他VLAN仍可以正常通信。在已有的MST實例中添加或者刪除VLAN也會觸發(fā)這個實例的ST重新計算,并且該MST實例中的所有VLAN通信都將中斷。
默認情況下,在每個端口上都運行ST(生成樹)。ST功能不能在交換機上基于每端口方式關(guān)閉。盡管不建議,但你仍可以在交換機上基于每VLAN,或者全局方式關(guān)閉STP。只要你禁止ST就需要特別小心,因為這可能在網(wǎng)絡(luò)內(nèi)部生成二層環(huán)路。
9.3.4 STP角色選舉
當(dāng)交換機第一次啟動,開始了根交換機的選舉過程。每個交換機基于每VLAN方式傳遞一個BPDU到直接連接的交換機上。因為BPDU是通過網(wǎng)絡(luò)傳遞的,所以每個交換機會比較該交換機會把自己的BPDU與接收到的BPDU進行比較。然后交換機對哪臺機成為根交換機達成一致意見。在網(wǎng)絡(luò)中具有更低網(wǎng)橋ID的交換機將成為根交換機,贏得選舉。
以上STP角色的選舉基本過程如下:
(1)首先在整個交換網(wǎng)絡(luò)中選舉一個"根網(wǎng)橋"(RB),即選舉一個根交換機。
每個交換網(wǎng)絡(luò)中只能有一個網(wǎng)橋擔(dān)當(dāng)"根網(wǎng)橋"。它是通過比較網(wǎng)橋的BPDU(Bridge Protocol DataUnit,橋接協(xié)議數(shù)據(jù)單元)信息來選舉的。在BPDU中包括了"網(wǎng)橋ID"(BridgeID)。網(wǎng)橋ID包含2個字節(jié)的網(wǎng)橋優(yōu)先級(BridgePriority)和6個字節(jié)的MAC地址。"網(wǎng)橋ID"的數(shù)值越低,成為"根網(wǎng)橋"的概率也就越高。
(2)確定了"根網(wǎng)橋"后,網(wǎng)絡(luò)中的其他交換機就為非根網(wǎng)橋了。此時再為所有"非根網(wǎng)橋"選舉"根端口"(RP)。"根端口"可以發(fā)送和接收"配置BPDU",或者接收BPDU消息包。
"根端口"是"非根網(wǎng)橋"到"根網(wǎng)橋"的最佳路徑所在端口,也即最低開銷的路徑(當(dāng)然,直接連接的路徑開銷最?。?。在每個"非根網(wǎng)橋"上選舉一個"根端口",也就是"根端口"是針對"非根網(wǎng)橋"而言的,而不是在"根網(wǎng)橋"上,這一點最容易引起誤會。
如果有多條等價路徑(也就是此交換機到根網(wǎng)橋的路徑中所經(jīng)過的交換機躍點數(shù)是一樣,也就是經(jīng)過了相同數(shù)量的交換機),那么"非根網(wǎng)橋"先根據(jù)所直接連接的網(wǎng)橋的"網(wǎng)橋ID"來選擇(不同交換機的"網(wǎng)橋ID"是不一樣的),選擇連接"網(wǎng)橋ID"最低的網(wǎng)橋的端口作為根端口;如果所連接的網(wǎng)橋的"網(wǎng)橋ID"都一樣(也就是一個交換機與另一臺交換機之間有兩個或以上端口直接連接),則再根據(jù)所連網(wǎng)橋的"端口ID"(也就是端口號,每個端口的"端口ID"是不一樣的)最低的那個端口作為"根端口"。
【說明】要顯示交換機上各VLAN中網(wǎng)橋ID中的網(wǎng)橋優(yōu)先級和MAC地址值,可以使用showspanning-tree命令查看。它是用來查看交換機上生成樹配置的。
(3)在各個網(wǎng)段(星型網(wǎng)絡(luò)對應(yīng)于一個交換機端口,而總線型網(wǎng)絡(luò)則對應(yīng)于一條總線)中選舉一個"指定端口"(DP)。"指定端口"所在的交換機就是"指定網(wǎng)橋"(DesignatedBridge,DB,也即"指定交換機")。
"指定端口"是相應(yīng)網(wǎng)段所有端口中到達"根網(wǎng)橋"的路徑開銷最低的端口。在"根網(wǎng)橋"上,所有的端口都為"指定端口",因為它們各自所代表的網(wǎng)段中,到達"根網(wǎng)橋"的路徑為0(就在"根網(wǎng)橋"交換機上),當(dāng)然最小了。但是并不是說"指定端口"只是在"根網(wǎng)橋"上,"非根網(wǎng)橋"上也有,只是在一個網(wǎng)段中只能有一個"指定端口"。"指定端口"不僅能夠發(fā)送和接收流量,還可以發(fā)送和接收配置消息或BPDU(BPDU的發(fā)送僅針對"根網(wǎng)橋"之上的"指定端口")。
(4)最后,STP封堵所有"非指定端口"。
在STP中,除了"根端口"和"指定端口"外的交換端口都屬于"非指定端口"。"非指定端口"是處于阻塞狀態(tài)的,不能接收和發(fā)送配置信息和BPDU。
【說明】"網(wǎng)橋"連接的是不同網(wǎng)段的設(shè)備,而早期的"集線器",或者"中繼器"所連接的不是不同網(wǎng)段,而同一網(wǎng)段(或者說是同一沖突域)的設(shè)備,因為網(wǎng)橋的兩個端口不是共享介質(zhì)的,而集線器或者中繼器各端口是共享介質(zhì)的。而交換機可以看成是一個具有多個端口的網(wǎng)橋,每個端口都具有橋接功能。這樣一來,也就可以這么理解,由同一網(wǎng)橋或者交換機端口(其實路由器中的LAN端口也一樣)連接的設(shè)備就屬于一個網(wǎng)段。在星型以太網(wǎng)中,最常見的就是按交換機來劃分網(wǎng)段的,一個交換機(根交換機除外)代表一個網(wǎng)段,因為它上面各端口所連接設(shè)備到根交換機的通信都是共享一條介質(zhì)的。但它與下級交換機的連接又可根據(jù)不同端口劃分不同的網(wǎng)段,因為它可以連接多個下級交換機。在總線型網(wǎng)絡(luò)中,一條總線上連接的設(shè)備都屬于一個網(wǎng)段,HUB上連接的也屬同一個網(wǎng)段,但HUB的各端口不能再分網(wǎng)段,因為它們是共享介質(zhì)的。
通過以上端口角色的分配,就可以確保在同一時刻,只能一條性能最佳的鏈路(最佳路徑)為活躍的(每個網(wǎng)絡(luò)中只有一個根網(wǎng)橋,每個網(wǎng)段上只有一個指定端口,而每個非根網(wǎng)橋只有一個根端口),其他冗余路徑都處于阻塞狀態(tài)。
也可以這么簡單理解,就是在STP算法中,活躍鏈路只包括:根網(wǎng)橋上的"指定端口"--網(wǎng)段中的"指定端口"--非根網(wǎng)橋的"根端口"。所有包括非指定端口的鏈路都是阻塞的。在如圖9-8所示的示例中,根網(wǎng)橋(SwitchX)上的兩個端口都是"指定端口",非根網(wǎng)橋(SwitchY)的一個端口為"根端口",另一個端口為"非指定端口",因為在網(wǎng)段1和網(wǎng)段2中已有一個指定端口了,所以不能再在連接同一個網(wǎng)段的交換機上指定某個端口為"指定端口"。
| (點擊查看大圖)圖9-8端口角色選舉示例 |
9.4 STP端口狀態(tài)
在STP中,各種類型的端口都有與其對應(yīng)的工作狀態(tài)的。當(dāng)然端口狀態(tài)在從交換機啟動到正常工作過程中,可能會發(fā)生一系列的改變。STP中包括的端口狀態(tài)有:阻塞(Blocking)狀態(tài)、偵聽(Listening)狀態(tài)、學(xué)習(xí)(Learning)狀態(tài)、轉(zhuǎn)發(fā)(Forwarding)狀態(tài)、禁止(Disabled)狀態(tài)。通過這些不同狀態(tài)的分配,就可以使得交換機(或網(wǎng)橋)上的各端口工作在不同狀態(tài),從而達到無網(wǎng)絡(luò)環(huán)路的目的。
9.4.1 STP端口狀態(tài)概述
當(dāng)協(xié)議信息通過一個交換網(wǎng)絡(luò)時,可能發(fā)生傳播延時。其結(jié)果往往是交換網(wǎng)絡(luò)的拓撲結(jié)構(gòu)可能會隨時發(fā)生改變。當(dāng)一個原來不在生成樹拓撲結(jié)構(gòu)中的二層端口直接轉(zhuǎn)變成轉(zhuǎn)發(fā)狀態(tài)時,則可能會創(chuàng)建新的臨時數(shù)據(jù)環(huán)路。
端口在正式進行數(shù)據(jù)幀轉(zhuǎn)發(fā)前必須等待新的拓撲信息,然后再通過交換網(wǎng)絡(luò)傳播。但是必須允許已使用舊拓撲結(jié)構(gòu)轉(zhuǎn)發(fā)的幀繼續(xù)轉(zhuǎn)發(fā),直到達到幀的生存周期期滿。
每一個使用STP的二層LAN端口存在于以下5種狀態(tài):
阻塞(Blocking):這種二層LAN端口不能參與幀轉(zhuǎn)發(fā)。
偵聽(Listening):這是端口自阻塞狀態(tài)后的第一個過渡狀態(tài)。STP認為這種狀態(tài)的二層LAN端口應(yīng)當(dāng)參與幀轉(zhuǎn)發(fā)。
學(xué)習(xí)(Learning):這種狀態(tài)的二層LAN端口處于準備參與幀轉(zhuǎn)發(fā)狀態(tài)。
轉(zhuǎn)發(fā)(Forwarding):這種狀態(tài)的二層LAN端口就可以正式轉(zhuǎn)發(fā)幀了。
禁止(Disabled):這種狀態(tài)的二層LAN端口不參與STP,不轉(zhuǎn)發(fā)幀。
以上狀態(tài)的二層LAN端口在數(shù)據(jù)通信中可進行以下5個狀態(tài)轉(zhuǎn)變過程:
從初始化到阻塞狀態(tài)
從阻塞到偵聽或者禁用狀態(tài)
從偵聽到學(xué)習(xí)或者禁用狀態(tài)
從學(xué)習(xí)到轉(zhuǎn)發(fā)或者禁用狀態(tài)
從轉(zhuǎn)發(fā)到禁用狀態(tài)
圖9-9描述了一個二層LAN端口是如何進行以上這5個狀態(tài)轉(zhuǎn)變的。
| 圖9-9STP二層LAN接口狀態(tài) |
當(dāng)你啟用了STP,在設(shè)備開啟電源后,每個端口和網(wǎng)絡(luò)都要經(jīng)歷阻塞、偵聽、學(xué)習(xí)這類的過渡狀態(tài)。如果有適當(dāng)?shù)呐渲?,每個二層LAN端口最終會穩(wěn)定到轉(zhuǎn)發(fā)或者禁用狀態(tài)。圖中的實線流程表示一個基本的狀態(tài)轉(zhuǎn)變過程,虛線流程表示在實際的端口狀態(tài)轉(zhuǎn)變過程中可能發(fā)生的狀態(tài)轉(zhuǎn)變過程。
當(dāng)STP算法把一個二層LAN端口置于轉(zhuǎn)發(fā)狀態(tài),將發(fā)生以下過程:
(1)當(dāng)二層LAN端口等待協(xié)議信息時置于偵聽狀態(tài),建議置于阻塞狀態(tài)。
(2)二層LAN端口等待轉(zhuǎn)發(fā)延時(Forwarddelay,此步包括由偵聽狀態(tài)到學(xué)習(xí)狀態(tài)所需經(jīng)歷的等待時間)到期,轉(zhuǎn)變這個二層LAN端口為學(xué)習(xí)狀態(tài),并重置轉(zhuǎn)發(fā)延時計數(shù)器(Forwarddelay timer)。
(3)在學(xué)習(xí)狀態(tài)下,這個二層LAN端口繼續(xù)阻止幀轉(zhuǎn)發(fā),以便它可以從轉(zhuǎn)發(fā)數(shù)據(jù)庫中學(xué)習(xí)到終端位置信息。
(4)這個二層LAN端口再次等待轉(zhuǎn)發(fā)延時(此步是由學(xué)習(xí)狀態(tài)到轉(zhuǎn)發(fā)狀態(tài)所需經(jīng)歷的等待時間)到期,然后轉(zhuǎn)變?yōu)檗D(zhuǎn)發(fā)狀態(tài),此時,學(xué)習(xí)和轉(zhuǎn)發(fā)這兩種狀態(tài)是同時啟用的。
從以上流程可以看出,在整個端口狀態(tài)轉(zhuǎn)變中,一個端口由初始的阻塞狀態(tài)到轉(zhuǎn)發(fā)狀態(tài)是需要經(jīng)過兩個轉(zhuǎn)發(fā)延時周期的,效率比較低。這是STP最大的不足,也就是它最終被RSTP(快速生成樹協(xié)議)取代的一個重要原因。
以下各節(jié)會具體介紹以上5種端口狀態(tài)。
STP即生成樹協(xié)議,它是局域網(wǎng)交換網(wǎng)絡(luò)中技術(shù)性最強的主題之一,隨著交換網(wǎng)絡(luò)成為焦點,它的作用也越來越明顯.
STP協(xié)議產(chǎn)生的原因:
1.廣播環(huán)路
2.網(wǎng)橋表損壞
3.使用它來防止環(huán)路
STP協(xié)議運行STA算法,它強迫某些冗余鏈路進入備份狀態(tài),它的算法很復(fù)雜,但用于收斂出一個無環(huán)拓樸卻只有三步
1.選擇根網(wǎng)橋
2.選擇根端口
3.選擇指定端口
生成樹算法是依據(jù)網(wǎng)橋ID,路徑成本和端口ID這些參數(shù)來生成無環(huán)拓樸的,它總是使用4個判決過程
1.確定根網(wǎng)橋
2.計算到根網(wǎng)橋的最小路徑成本10M/100100M/191000M/4 帶寬越高,路徑成本越低
3.確定最小的發(fā)送方網(wǎng)橋ID數(shù)值越小優(yōu)先級越高,默認為32768
4.確定最小的端口ID數(shù)值越小優(yōu)先級越高
STP在進行數(shù)據(jù)操作時,數(shù)據(jù)報文以橋接協(xié)議數(shù)據(jù)單元BPDU的形式進行交換,BPDU幀利用STP組播地址01-80-c2-00-00-00作為目的地址,使之能到達相鄰并處于STP偵聽狀態(tài)的交換機
BPDU有兩種類型:
一種是配置BPDU,用于生成樹木計算
一種是拓樸變更通告
STP端口有五種狀態(tài)
1.禁用Disabled:同管理員手工指定或網(wǎng)絡(luò)故障導(dǎo)致的狀態(tài),它不是正常STP狀態(tài)的一部分
2.阻塞Blocking:此時端口既不能接收也不能發(fā)送數(shù)據(jù),也不能向它的地址表添加MAC地址,而且只允許接收BPDU報文
3.偵聽Listening:如果交換機認為它一個端口可選為根端口或指定端口,那么它就把該端口由阻塞狀態(tài)變成偵聽狀態(tài)
4.學(xué)習(xí)Learning:一個端口在偵聽狀態(tài)下經(jīng)過一段時間后就會轉(zhuǎn)成學(xué)習(xí)狀態(tài),在此狀態(tài)下的交換機可以學(xué)習(xí)新MAC地址
5.轉(zhuǎn)發(fā)Forwarding:在學(xué)習(xí)狀態(tài)下再經(jīng)過一段時間該端口即進入轉(zhuǎn)發(fā)狀態(tài),至此該端口才成為一個全功能的交換機端口
STP的計時器
1.HELLO時間:交換機發(fā)送BPDU報文之間的時間間隔,默認為2s
2.轉(zhuǎn)發(fā)延遲:交換機在偵聽Listening到學(xué)習(xí)Learning狀態(tài)所花費的時間,默認為15s(學(xué)習(xí)到轉(zhuǎn)發(fā)狀態(tài)也是15s)
3.最大老化時間:交換機在丟棄BPDU報文之前儲存它的時間,默認為20s
CISCO現(xiàn)在使用的STP協(xié)議是帶SCT的PVST+,可與別的生成樹協(xié)議兼容,為每個VLAN使用一個獨立的生成樹
最好將核心層交換機配置成根網(wǎng)橋:spanning-tree vlan xx rootprimary(強制),
也可通過修改網(wǎng)橋優(yōu)先級來實現(xiàn):spanning-tree vlan xx priorityxxxxx
修改端口成本:spanning-tree vlan xx cost xx
修改端口優(yōu)先級:spanning-tree vlan xx port-priorityxxxx
啟用速端口:spanning-treeportfast所有接入層端口上配
啟用上行速鏈路:spanning-treeuplinkfast接入層及匯聚層交換機上配
加快20s收斂時間:spanning-treebackhonefast 每臺交換機上配
愛華網(wǎng)



