由于以太網(wǎng)網(wǎng)橋采用了基于 MAC 地址實現(xiàn)在不同端口之間的數(shù)據(jù)轉(zhuǎn)發(fā)機制,每一個端口對應(yīng)的是一個以太網(wǎng)的網(wǎng)段,通過學(xué)習(xí)每個端口的 MAC
地址表的方式,網(wǎng)橋只轉(zhuǎn)發(fā)不同端口間的通信。但由于網(wǎng)橋依賴運行網(wǎng)絡(luò)中存在的MAC
地址和端口的地址對應(yīng)表來進行數(shù)據(jù)的轉(zhuǎn)發(fā),若收到目的地址未知的數(shù)據(jù)包,只能利用廣播的形式來尋址,其后果就是在一個環(huán)形網(wǎng)絡(luò)中造成大量的流量即“廣播風(fēng)暴”,從而導(dǎo)致網(wǎng)絡(luò)的癱瘓。 為了解決基于二層的“廣播風(fēng)暴”問題,IEEE(電機和電子工程師學(xué)會)制定了
802.1D 的生成樹協(xié)議(Spanning Tree
Protocol),它在防止產(chǎn)生環(huán)路的基礎(chǔ)上提供路徑冗余。生成樹協(xié)議(STP)是通過生成樹算法(STA:Spanning Tree
Algorithm)計算出一條到根網(wǎng)橋的無環(huán)路路徑來避免和消除網(wǎng)絡(luò)中的環(huán)路,它是通過判斷網(wǎng)絡(luò)中存在環(huán)路的地方并阻斷冗余鏈路來實現(xiàn)這個目的。通過這種方式,它確保到每個目的地都只有唯一路徑,不會產(chǎn)生環(huán)路,從而達(dá)到管理冗余鏈路的目的。 為了實現(xiàn)對冗余鏈路的管理,找出存在的冗余鏈路,STA在網(wǎng)絡(luò)中選舉根網(wǎng)橋作為依據(jù),跟蹤該可用路徑。若發(fā)現(xiàn)存在冗余路徑,它將選擇最佳路徑來進行數(shù)據(jù)包轉(zhuǎn)發(fā),并阻斷其它冗余鏈路。 Spanning
Tree的工作原理 Spanning Tree
的工作方式如同生成一棵的樹,樹的根就稱為“根網(wǎng)橋”,每個設(shè)備會定義一個優(yōu)先級,數(shù)值越小代表它成為根橋的可能性越大。參與STP的所有交換機都通過數(shù)據(jù)消息的交換來獲取網(wǎng)絡(luò)中其它交換機的信息,這些消息被稱為橋接協(xié)議數(shù)據(jù)單元(BPDU)。BPDU主要內(nèi)容包括:根信息
、路徑開銷、端口信息、記時器。 實現(xiàn)管理冗余鏈路,建立無環(huán)路生成樹的首先選舉一個根網(wǎng)橋。根網(wǎng)橋是所有交換機用來決定網(wǎng)絡(luò)中是否存在環(huán)路的依據(jù)。通過網(wǎng)橋ID決定誰將成為根網(wǎng)橋,根網(wǎng)橋ID由兩部分組成:優(yōu)先級域(兩字節(jié))和MAC地址域(六字節(jié))。以上兩個部分決定了根網(wǎng)橋的選定結(jié)果。數(shù)值越低,就越有可能成為根網(wǎng)橋。如果交換機發(fā)現(xiàn)一個比它自己更低的根ID,就將根ID在BPDU中進行宣告。通過交換BPDU報文,交換機決定誰是根網(wǎng)橋。 當(dāng)根網(wǎng)橋選舉完后,每臺交換機與根網(wǎng)橋建立關(guān)聯(lián)。交換機首先判斷路徑開銷。路徑開銷是根據(jù)鏈路速率和BPDU從根網(wǎng)橋到達(dá)本端口所經(jīng)過的鏈路數(shù)量而計算出來的。如果一個端口有最低的路徑開銷,它將被置于轉(zhuǎn)發(fā)模式。接收BPDU的所有其它端口將被置于阻斷模式。
若各端口接收到BPDU的路徑開銷相同,交換機將根據(jù)網(wǎng)橋ID以決定哪個端口應(yīng)該進行轉(zhuǎn)發(fā)。有最低網(wǎng)橋ID的端口將被選為轉(zhuǎn)發(fā)端口,所有其它端口將被阻斷。 經(jīng)過BPDU的交換,可實現(xiàn)根網(wǎng)橋交換機的選舉,并計算出每臺交換機到根交換機的最短距離,離根交換機最近的交換機被稱為指定交換機,每臺交換機的根端口被選舉出來。這是一個提供從該交換機到根交換機最佳路徑(通常是最低開銷路徑)的端口,不進行數(shù)據(jù)幀轉(zhuǎn)發(fā)的端口被置于阻斷狀態(tài)。這些端口可繼續(xù)發(fā)送和接收BPDU信息,但禁止發(fā)送或接收用戶數(shù)據(jù)。 為了建立一個無環(huán)路網(wǎng)絡(luò),生成樹使交換機的各個端口經(jīng)歷幾種不同的狀態(tài):阻斷、傾聽、學(xué)習(xí)、轉(zhuǎn)發(fā)、關(guān)閉傾聽和學(xué)習(xí)狀態(tài)都是生成樹所實施的過渡狀態(tài),指揮交換機端口等待從其它交換機上獲得BPDU報文。端口狀態(tài)轉(zhuǎn)換如下: 當(dāng)生成樹通過了STP狀態(tài)時,采用一系列記時器來防止網(wǎng)絡(luò)中橋接環(huán)路的發(fā)生。 快速生成樹協(xié)議(Rapid
Spanning Tree Protocol,RSTP) 生成樹協(xié)議IEEE
802.1d雖可在50秒內(nèi)恢復(fù)連接,但已不能滿足現(xiàn)代交換式網(wǎng)絡(luò)和應(yīng)用的需要,在
802.1w中定義的RSTP協(xié)議可解決802.1d的自恢復(fù)問題??焖偕蓸鋮f(xié)議(RSTP)是從生成樹算法的基礎(chǔ)上發(fā)展而來的,通過配置消息來傳遞生成樹信息,并通過優(yōu)先級比較來進行計算??焖偕蓸淠軌蛲瓿缮蓸涞乃泄δ?,優(yōu)異之處在于快速生成樹減小了端口從阻塞到轉(zhuǎn)發(fā)的延時,快速恢復(fù)網(wǎng)絡(luò)的正常工作狀態(tài)。它采用橋-橋握手機制,并不采用802.1d中根橋所指定的計時器。 快速生成樹協(xié)議與生成樹協(xié)議的區(qū)別不少:如端口狀態(tài)遷移方式不同;配置消息的格式不同;拓樸改變消息的傳播方式不同。 RSTP除了對根端口和802.1d中的指定端口進行了定義之外,還增加了兩種新的作用:一是備份端口。指定端口向生成樹提供的路徑備份。二是替代端口。為當(dāng)前根端口所提供的根橋提供了替代路徑。RSTP中新定義的端口作用使替代端口可以進行快速轉(zhuǎn)換,能轉(zhuǎn)發(fā)根端口的故障。 為了防止環(huán)路,RSTP利用網(wǎng)橋之間的握手來確保通過網(wǎng)絡(luò)分配的端口任務(wù)能夠保持一致。由于這種握手機制不依賴于定時器,因此可以迅速地傳送到網(wǎng)絡(luò)各處,隨著拓樸結(jié)構(gòu)的改變而在很短的時間內(nèi)恢復(fù)連接。802.1w僅工作在點到點的連接中,否則802.1w協(xié)議將回到802.1d模式。 新的根端口從阻塞到轉(zhuǎn)發(fā)的實現(xiàn):原有根端口已經(jīng)知道自己不再是根端口了,進入阻塞狀態(tài)。新的根端口連接的網(wǎng)段的指定端口處于轉(zhuǎn)發(fā)狀態(tài),這個新的根端口就可以無延時地進入轉(zhuǎn)發(fā)狀態(tài)。 非邊緣指定端口從阻塞到轉(zhuǎn)發(fā):此個端口連接著其他網(wǎng)橋。等待進入轉(zhuǎn)發(fā)狀態(tài)的指定端口向下游網(wǎng)橋發(fā)送一個握手請求報文,若下游的網(wǎng)橋響應(yīng)了,則這個指定端口就可以無延時地進入轉(zhuǎn)發(fā)狀態(tài)。 邊緣端口從阻塞到轉(zhuǎn)發(fā):邊緣端口直接和終端設(shè)備相連,不再連接任何網(wǎng)橋的端口。網(wǎng)橋啟動后這些端口即無延時地快速進入轉(zhuǎn)發(fā)狀態(tài)。 通過STP實現(xiàn)鏈路冗余管理 正確理解STP原理和配置,對于維持交換網(wǎng)絡(luò)的正常運行有重要的影響。設(shè)計好生成樹,可以使網(wǎng)絡(luò)保持良好的性能。 通過人工設(shè)定的方法為網(wǎng)絡(luò)指定網(wǎng)橋的優(yōu)先級別,將其置于網(wǎng)絡(luò)的中心位置,保證該網(wǎng)橋能被選舉為根網(wǎng)橋,并配備備份根網(wǎng)橋是實現(xiàn)鏈路優(yōu)化管理的手段之一。為更好地定制生成樹,可通過調(diào)整交換機的端口ID、端口成本、網(wǎng)絡(luò)直徑等方法來實現(xiàn)。 快速生成樹改進的只是生成樹的收斂時間,沒有解決在整個橋接網(wǎng)絡(luò)只應(yīng)用一個單生成樹實例的不足。網(wǎng)絡(luò)設(shè)計時最好使網(wǎng)絡(luò)直徑不超過7。 在交換上Spanning-tree的設(shè)置: Switch(config)#spanning-tree 上面的命令全局啟用spanning-tree功能。 Switch
(config)#spanning-tree ethernet 2/1 path-cost 30 priority
9 上面的命令設(shè)置e2/1端口的路徑消費為30,端口優(yōu)先級為9。 Spanning-tree也可應(yīng)用于特定的VLAN或者某一個端口上面: Switch
(config-vlan-10)#spanning-tree Switch
(config-if-2/1)#spanning-tree 查看Spanning-tree: Switch #Show span
detail Switch (config)#Show span
detail STD對實現(xiàn)網(wǎng)絡(luò)冗余鏈路的優(yōu)化管理,維持網(wǎng)絡(luò)的穩(wěn)定,快速修復(fù)交換網(wǎng)絡(luò)故障有重要的影響。對交換網(wǎng)絡(luò)的生成樹設(shè)計,可通過人工設(shè)定參數(shù)的方法來優(yōu)化管理。 STP/生成樹(Spanning
Tree Protocol)
冗余帶來網(wǎng)絡(luò)環(huán)路 產(chǎn)生的3大問題: 1:Multiple Frame Copies/多幀復(fù)制 2:MAC
Database Instability /MAC地址數(shù)據(jù)庫的不穩(wěn)定 /端口漂移 3:Broadcast
Storms/廣播風(fēng)暴 解決方案:STP STP是鏈路管理協(xié)議 將特定的端口置于阻塞狀態(tài),來實現(xiàn)既沒有環(huán)路,也可以冗余的網(wǎng)絡(luò). STP核心: Provides
a loop-free redundant network topoloty,by placing certain ports in the blocking
state.
STP信息是通過BPDU來傳輸?shù)?br> 橋接協(xié)議數(shù)據(jù)單元BPDU(Bridge Protocol Data
Unit) 作用: 在交換網(wǎng)絡(luò)中由根橋RB(Root Bridge)發(fā)送,用于STP的計算和收斂;發(fā)送周期為2秒;
兩種類型: 配置DPDU 是所有端口上的根網(wǎng)橋以周期性間隔而發(fā)出的 TCN(Topology Change
Notification) BPDU 當(dāng)交換機檢測到拓?fù)渥兏鼤r所產(chǎn)生的(TC發(fā)送時間持續(xù)35秒,即delay time+BPDU老化時間)。
BPDU完成的任務(wù): 選舉根橋 確定冗余路徑的位置 阻塞特定端口防止環(huán)路 通告網(wǎng)絡(luò)的拓?fù)渥兏?br> 監(jiān)控生成樹的狀態(tài)
協(xié)議ID(0) 表示協(xié)議 802.1d 版本號(0) STP的版本,802.1D的版本是0 BPDU類型
BPDU類型(配置BPDU=0,TCN BPDU=80) 信息壽命
從根橋發(fā)出BPDU之后的秒數(shù),每經(jīng)過一個網(wǎng)橋都遞減1,本質(zhì)上是到達(dá)網(wǎng)橋的跳計數(shù)標(biāo)記域 包括 拓?fù)渥兓?TC)位,置位了就指明該BPDU是一個拓?fù)渥兓ǜ?nbsp;
或
拓?fù)渥兓_認(rèn)(TCA)位 交換機對BPDU的處理: 如果交換機從一個接口接收到優(yōu)先級高的BPDU,會把該BPDU保存下來并且該接口不再往外發(fā)送BPDU; 在收斂時只有根橋產(chǎn)生BPDU,其余交換機只能從RP接收BPDU后才從DP發(fā)送出去;這樣非根橋可能從DP或者NDP接受到BPDU; 如果交換機從DP接收到優(yōu)先級低的BDPU會丟棄,并給源MAC發(fā)送自己較新的BPDU;如果從NDP收到優(yōu)先級低的BPDU會只丟棄了事。 端口的不同狀態(tài): 堵塞(Block,默認(rèn)20s):只監(jiān)聽流入的BPDU 監(jiān)聽(Listen,默認(rèn)15s):監(jiān)聽和發(fā)送BPDU(根橋、根端口、指定端口等的選舉在該階段完成,如果接口沒有成為DP則重新回到Block): 學(xué)習(xí)(Learning,默認(rèn)15s):監(jiān)聽和發(fā)送BPDU,并且會在該接口上學(xué)習(xí)流入幀的MAC地址 轉(zhuǎn)發(fā):監(jiān)聽和發(fā)送BPDU,會在該接口上學(xué)習(xí)流入幀的MAC地址,接收和轉(zhuǎn)發(fā)數(shù)據(jù)幀 禁用:
不參與STP,并且不能轉(zhuǎn)發(fā)任何數(shù)據(jù). STP定時器: Hello time(2s)
用于確定根交換機多長時間向其他的交換機廣播一次配置BPDU. Forward delay(15s)
監(jiān)控每個端口在學(xué)習(xí)和監(jiān)聽狀態(tài)上停留的時間 Max Age(20s)
控制端口保存配置BPDU信息的最大時間 作用:讓網(wǎng)絡(luò)有足夠的時間來獲得有關(guān)拓?fù)涞恼_信息,并確定是否存在冗余鏈路.STP的默認(rèn)最大壽命計時器為7,表示最大的網(wǎng)絡(luò)直徑可達(dá)7臺設(shè)備. 所以BPDU的Forward
delay為20秒 bpdu廣播2s一次,允許有3個包丟失即6s,當(dāng)假設(shè)最大為7跳的時候,則一共要用20s,所以BPDU的有效時間為20s 命令: (config)#spanning-tree
vlan 2 hello-time 2 //范圍1-10s spanning-tree vlan 2 forwad-time 4
//范圍4-30s spanning-tree vlan 2 max-age
6 STP執(zhí)行的4步判決順序 確定根交換機 lowest root BID 計算到根交換機的最小路徑開銷
lowest path cost to root bridge 確定最小的發(fā)送者BID lowest sender BID
確定最小的端口ID lowest port ID
|