您好,登錄后才能下訂單哦!
生成樹協(xié)議(STP)
一、STP概述
1、交換機網(wǎng)絡環(huán)路的產(chǎn)生
如上圖所示,PC1和PC2通過交換機相連,網(wǎng)絡初始狀態(tài)時,PC1與PC2的通信過程如下。
1)、在網(wǎng)絡通信的最初,PC1的ARP條目中沒有PC2的MAC地址,根據(jù)ARP原理,PC1首先會發(fā)送一個ARP廣播請求(請求PC2的MAC地址)交給交換機SW1。
2)、擋SW1收到ARP的廣播請求時,根據(jù)交換機的轉(zhuǎn)發(fā)原理,SW1交換機將廣播幀從除接收端口之外的所有端口轉(zhuǎn)發(fā)出去(即該廣播會從F0/1和F0/2分別轉(zhuǎn)發(fā)給SW2和SW3)。
3)、SW2收到廣播幀后,同樣根據(jù)交換機的轉(zhuǎn)發(fā)原理,將廣播幀從F0/2和連接PC2的端口轉(zhuǎn)發(fā),同樣,SW3收到廣播幀后,將其從F0/2端口轉(zhuǎn)發(fā)。
4)、SW2從F0/2端口收到從SW3發(fā)送的廣播幀后,將其從F0/2和連接PC2的端口轉(zhuǎn)發(fā),同樣,SW3收到從SW2發(fā)送的廣播幀后,將其從F0/1端口轉(zhuǎn)發(fā)。
5)、SW1分別從SW2、SW3收到廣播幀,然后將從SW2收到的廣播幀轉(zhuǎn)發(fā)給SW3,而將從SW3收到的廣播幀轉(zhuǎn)發(fā)給SW2。
SW1、SW2和SW3會將廣播幀相互轉(zhuǎn)發(fā),這是網(wǎng)絡就形成了一個環(huán)路,而交換機之間并不知道,這將導致廣播幀在這個環(huán)路中永遠循環(huán)下去,如下圖所示:
在實際網(wǎng)路環(huán)境中,情況要復雜得多,擋廣播幀經(jīng)過交換機時,交換機就以指數(shù)的形式生成廣播幀(交換機除收到該廣播幀之外的所有端口轉(zhuǎn)發(fā)廣播幀)。這種廣播幀會越來越多。最終形成廣播風暴,導致網(wǎng)絡癱瘓。
但是環(huán)狀的物理線路能夠為公司提供備份喜愛南路,增強網(wǎng)絡的可靠性,因此有一種解決方法,一方面能夠保證網(wǎng)絡的可靠性,另一方面還可以防止廣播風暴的產(chǎn)生。
STP(生成樹協(xié)議):并不是斷掉物理環(huán)路,而是在邏輯上斷開環(huán)路,防止廣播風暴產(chǎn)生。
1.2、STP簡介
STP(生成樹協(xié)議):就是把一個環(huán)形的結構改變成一個樹形的結構。STP協(xié)議就是用來講物理上存在環(huán)路的網(wǎng)絡,通過一種算法,在邏輯上阻塞一些端口,來生成一個邏輯上的樹形結構。
邏輯上斷開環(huán)路,防止廣播風暴的產(chǎn)生。
當線路故障,阻塞接口被激活,恢復通信,起備份線路的作用。
三臺交換機正常使用STP邏輯上斷開一個端口之后的通信過程,如下圖
當SW1與SW2的鏈路發(fā)生故障時,會將邏輯堵塞的端口自動開啟,如下如:
二、STP的工作原理
1、生成樹算法
生成樹算法可以歸納為以下三個步驟:
1)、選擇根網(wǎng)橋(boot bridge)
2)、選擇根端口(root ports)
3)、選擇指定端口(designated ports)
1)、選擇根網(wǎng)橋的算法
選擇根網(wǎng)橋的依據(jù)是網(wǎng)橋ID,網(wǎng)橋ID是一個8字節(jié)的字段,其組成結構圖如下圖所示,
前2字節(jié)的十進制數(shù)成為網(wǎng)橋優(yōu)先級,后6字節(jié)是網(wǎng)橋的MAC地址。
網(wǎng)橋優(yōu)先級是用于衡量網(wǎng)橋在生成樹算法中優(yōu)先級的十進制數(shù),取值范圍為0~65535,,默認值是32768。
網(wǎng)橋ID中的MAC地址是交換機自身的MAC地址,使用show ver可查看。
交換機顯示MAC的地址如下:
按照生成樹算法的定義:交換機網(wǎng)橋ID值最小,優(yōu)先級小的被選擇為根網(wǎng)橋;優(yōu)先級相同情況下,MAC地址小的為根網(wǎng)橋。
2)、選擇根端口
根端口存在于非網(wǎng)橋上,需要在每個非根網(wǎng)橋上選擇一個根端口。
選擇根端口時,順序如下:
a、到根網(wǎng)橋最低的根路徑成本
b、直連的網(wǎng)橋ID最小
c、 端口ID最小
帶寬與路徑成本的關系
鏈路帶寬(Mbps) | 路徑成本 |
10 | 100 |
16 | 62 |
45 | 39 |
100 | 19 |
155 | 14 |
622 | 6 |
1000 | 4 |
10000 | 2 |
端口ID是一個2字節(jié)的STP參數(shù),由1字節(jié)端口優(yōu)先級和1字節(jié)端口編號組成。
端口優(yōu)先級是一個可配置的STP參數(shù),在基于IOS的交換機上,端口優(yōu)先級的十進制值范圍是0~255,默認值是128.
端口編號Catalyst用于列舉各個端口的數(shù)字標識符。在基于IOS的交換機上,可以支持256個端口。端口編號不是端口號,但是端口號低的端口,端口編號也小。
在STP選擇根端口的時候,首先比較交換機端口的根路徑成本,根路徑成本低的為根端口。擋根路徑成本相同的時候,比較連接的交換機的網(wǎng)橋ID值,選擇網(wǎng)橋ID值小的最為根端口;當網(wǎng)橋ID相同的時候,比較端口ID值,選擇較小的最為根端口。(注:在比較端口ID值時,比較的是接收到的對端的端口ID值)
3)、選擇指定端口
為了消除環(huán)路形成的可能,STP進行最后的計算,在每一個網(wǎng)段上選擇一個指定端口。
選擇指定端口順序如下:
a、 根路徑成本較低;
b、所在的交換機的網(wǎng)橋ID值較小;
c、 端口ID值較小
在STP選擇指定端口的時候,首先比較同一網(wǎng)段上端口中根路徑成本最低的,也就是將到達根網(wǎng)橋最近的端口作為指定端口。另外,根網(wǎng)橋上的接口都是指定端口,因為根網(wǎng)橋上端口的根路徑成為為0。(注意:和選擇根端口不同,在比較端口ID值時,比較的是自身的端口ID值)。
生成樹算法驗證:
查看SW1生成樹狀態(tài)
查看SW2生成樹狀態(tài)
查看SW3生成樹狀態(tài)
2、橋協(xié)議數(shù)據(jù)單元(BPDU)
交換機之間通過BPDU(橋協(xié)議數(shù)據(jù)單元)來交換網(wǎng)橋ID、根路徑成本等信息。BPDU幀利用了一個STP組播地址(01-80-c2-00-00-00)作為它的一個目的地址,使之能到達相鄰的、并處于STP偵聽狀態(tài)的交換機。
BPDU報文每隔2S向所有的交換機端口發(fā)送一次報文,以便交換機能交換當前最新的拓撲信息,并迅速識別和檢測其中的環(huán)路。
2.1、BPDU的兩種類型
配置BPDU,用于生成樹計算。
拓撲變更通告(topology change notification,TCN),BPDU用于通告網(wǎng)絡拓撲的變化
2.2、BPDU報文字段
BPDU中包含根網(wǎng)橋ID、根路徑成本、發(fā)送網(wǎng)橋ID、端口ID和計時器等,對BPDU幾個關鍵字段作用的解釋如下。
根網(wǎng)橋ID:有一個2字節(jié)優(yōu)先級和一個6字節(jié)網(wǎng)橋MAC地址組成。這個信息組合表明已經(jīng)被選定為根網(wǎng)橋的設備標識
根路徑成本:說明這個BPDU從根網(wǎng)橋傳輸了多遠、成本是多少。這個字段的值決定哪些端口進行轉(zhuǎn)發(fā),哪些端口將被阻斷。
發(fā)送網(wǎng)橋ID:這是發(fā)送該BPDU網(wǎng)橋信息,由網(wǎng)橋的優(yōu)先級和網(wǎng)橋的MAC地址組成。
端口ID:由一字節(jié)的端口優(yōu)先級和一字節(jié)的端口編號組成。
計時器:用于說明生成樹用多長時間能完成它的每項功能。這些功能包括報文老化時間、最大老化時間、訪問時間和轉(zhuǎn)發(fā)延遲。
2.3、STP利用BPDU選擇根網(wǎng)橋的過程
當一臺交換機第一次啟動時,假設自己是根網(wǎng)橋,在BPDU報文中的根網(wǎng)橋字段填入自己的網(wǎng)橋ID,如下所示:
當接收到其他交換機發(fā)出的BPDU后,比較網(wǎng)橋ID,選擇較小的添加到根網(wǎng)橋ID中
當全網(wǎng)所有的交換機接收到全部的BPDU并作比較后,就可以選擇出唯一的一個根網(wǎng)橋。
3、STP的收斂
在STP運算過程中,交換機的每一個端口都必須經(jīng)歷好幾種狀態(tài)。
如下列出了交換機端口的五種STP狀態(tài)
狀 態(tài) | 用 途 |
轉(zhuǎn)發(fā)(Forwarding) | 發(fā)送/接收用戶數(shù)據(jù) |
學習(Learning) | 構建網(wǎng)橋表 |
偵聽(Listening) | 構建“活動”拓撲 |
阻塞(Blocking) | 只接收BPDU |
禁用(Disabled) | 強制關閉 |
STP端口狀態(tài)詳細描述如下:
Disabled(禁用):由管理員關閉或網(wǎng)絡故障使端口處于Disabled狀態(tài),他不屬于正常的STP狀態(tài)的一部分。
Blocking(阻塞):在端口初始化后,一個端口既不能接受或發(fā)送數(shù)據(jù),也不能向它地址表添加MAC地址。相反,這樣的一個端口僅允許接收BPDU報文,以便能偵聽到其他鄰接交換機的信息。此外,選出指定端口后,非指定端口也處于阻塞狀態(tài)。
Listening(偵聽):如果一個交換機認為一個端口可選為根端口或指定端口,他就會把該端口的Blocking狀態(tài)變?yōu)?/span>Listening狀態(tài),在Listening狀態(tài),端口仍然不能接收或發(fā)送數(shù)據(jù)幀。不過,為了使該端口加入到生成樹的拓撲過程,允許他接收或發(fā)送BPDU報文。由于該端口可以通過發(fā)送BPDU報文給其他交換機通告該端口的信息,這個端口最終可能被允許成為一個根端口或指定端口。如果該端口失去根端口或指定端口的地位,將返回Disabled狀態(tài)。
Learning(學習):一個端口在Listening狀態(tài)下經(jīng)過一段時間后,將轉(zhuǎn)為Learning狀態(tài)。該端口仍可像從前一樣發(fā)送和接收BPDU報文。不過,該交換機可以學習到新的MAC地址,并將改地址添加到交換機的地址表中。正因如此,才使得交換機可以沉默一定的時間才處理有關地址表的信息。
Forwarding(轉(zhuǎn)發(fā)):在Learning狀態(tài)下載經(jīng)過一段時間的學習和轉(zhuǎn)發(fā),該端口轉(zhuǎn)入到Forwarding狀態(tài)。在Forwarding狀態(tài),該端口既可以發(fā)送和接收數(shù)據(jù)幀,也可以手機MAC地址表加入到他的地址表,還可以發(fā)送和接收BPDU報文。再生成樹拓撲中,該端口以此才成為一個全功能的交換機端口。
STP利用三種計時方法來確保一個網(wǎng)絡正常的收斂。
a、Hello時間:網(wǎng)橋發(fā)送配置BPDU報文之間的時間間隔。在根網(wǎng)橋交換機中配置的訪問時間值將決定所有的非跟交換機的訪問時間,這是因為這些交換機在收到發(fā)自根網(wǎng)橋的配置BPDU報文時,僅僅中繼他們。不過,所有的交換機都有一個本地配置的訪問時間,他用于確定重新發(fā)送TCN BPDU(拓撲變化提示)報文的時間。IEEE 902.1d標準規(guī)定的默認訪問時間為2S。
b、轉(zhuǎn)發(fā)延遲:一個交換機端口在Listening和Learning狀態(tài)所花費的時間間隔,它的默認值各為15S。
c、最大老化時間:交換機在丟棄BPDU報文之前存儲它的最大時間。在執(zhí)行STP時,每一個交換端口都保存一份它所偵聽到的“最好的”BPDU備份。如果源BPDU失去了與交換機端口的聯(lián)系,交換機則在最大老化時間之后通知網(wǎng)絡發(fā)生了拓撲結構方面的變化。最大老化時間默認值是20S。
偵聽和學習都是生成樹所實施的過渡狀態(tài),用來強迫端口等待來自其他交換機上所有BPDU。典型的端口過渡如下。
三、STP與VLAN的關系
生成樹與vlan之間的關系主要有以下幾種:
a、IEEE的CST(Common Spanning Tree,通用生成樹)。
b、Cisco的PVST(Per vlan spanning Tree,每個vlan生成樹)。
c、Cisco的PVST+(Per vlan spanning Tree Plus,增強的每個vlan生成樹)。
d、IEEE的MST(Multiple spanning Tree,多生成樹)。
CST:不考慮VLAN,以交換機為單位運行STP(整個交換網(wǎng)絡生成一個STP實例),所以經(jīng)過STP計算后,對阻塞一個端口,那么vlan3將無法通信。
如下圖:
PVST:Cisco私有協(xié)議,為每個vlan運行單獨的生成樹實例(每個vlan生成一個生成樹實例)。如下圖:
PVST能優(yōu)化根網(wǎng)橋的位置,為所有vlan提供最后路徑(因為vlan的拓撲結構各不相同)。
PVST主要缺點如下:
為了維護每個vlan生成的生成樹,交換機的利用率(如CPU負載)會更高。
為了支持各個vlan的BPDU,需要真用更多的trunk鏈路帶寬。
PVST與IEEE的CST不兼容,不能與其他廠家的交換機進行互操作。
為了解決與其他廠家的交換機進行互操作,Cisco開發(fā)了PVST+。PVST+允許CST的信息傳給PVST,以便于其他廠商在vlan上運行生成樹的實現(xiàn)方法進行互操作。如下圖:
PVST+為每一個vlan生成一個生成樹實例。
四、PVST+的配置命令
啟用生成樹命令
Switch(config)#spanning-tree vlan vlan-list
指定根網(wǎng)橋
Switch(config)#spanning-tree vlan vlan-list priority Bridge-priority
Switch(config)#spanning-tree vlan vlan-list root { primary|secondary }
修改端口成本
Switch(config-if)#spanning-tree vlan vlan-list cost cost
修改端口優(yōu)先級
Switch(config-if)#spanning-tree vlan vlan-list port-priority priority
將端口配置為速端口
Switch(config-if)#spanning-tree portfast
例如:
使用下面命令指定根網(wǎng)橋
Switch(config)#spanning-tree vlan 2 priority 4096
或使用下列命令指定根網(wǎng)橋
Switch(config)#spanning-tree vlan 2 root primary
使用下面命令修改F0/1端口的成本和優(yōu)先級
Switch(config-if)#spanning-tree vlan 2 cost 10
Switch(config-if)#spanning-tree vlan 2 port-priority 96
使用下面命令查看生成樹的配置
Switch#show spanning-tree
使用下面命令查看某個vlan的生成樹詳細信息
Switch#show spanning-tree vlan 2
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。