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