一:概述網絡
交換機使用生成樹(spanning-tree)協議互相協商相關參數,進行根橋、根端口和指定端口的選舉,進而在邏輯上斷開環路,防止廣播風暴的產生。ide
二:BPDU報文格式學習
交換機之間經過互相發送BPDU報文進行根網橋、根端口和指定端口的選舉,繼而造成邏輯上無環的網絡拓撲。spa
BPDU報文格式以下:
3d
Protocol Identifier:協議ID,該字段爲0;
Protocol Version Identifier:協議版本,STP爲0,RSTP爲2,MSTP爲3;
BPDU Type:BPDU消息類型,一般有兩種,一類是配置BPDU,負責創建並維護STP拓撲,值爲0x00,另外一類是TCN BPDU,用於傳達拓撲變動信息,值爲0x80;
BPDU Flags:內含兩個標識位,TC位:拓撲變化標誌;TCA位,拓撲變化確認標誌;
Root Identifier:當前根橋的橋ID,由2字節的橋優先級和6字節的MAC地址組成,該MAC地址默認狀況下爲VLAN 1的MAC地址;
Root Path Cost:發送該BPDU的端口到達根橋的開銷值;
Bridge Identifier:發送該BPDU報文的交換機的橋ID,也是由2字節的橋優先級和6字節的MAC地址組成,該MAC地址默認狀況下爲VLAN 1的MAC地址;
Port Identifier:發送該BPDU報文的端口ID;
Message Age:該BPDU消息的年齡;
Max Age:指BPDU消息的最大生存時間,即老化時間;
Hello Time:指發送兩個BPDU的時間間隔;
Forward Delay:指拓撲改變後,交換機端口在發送數據包前維持在監聽和學習狀態的時間。blog
抓包分析BPDU報文:
接口
二:交換機將環形網絡生成無環拓撲的步驟it
1:選取根橋
交換機啓動後,會向相連的交換機發送BPDU報文,起初,每臺交換機都認爲本身是根橋,互相交換BPDU報文後,會進行根橋的選舉,選取根橋比較的是橋ID,橋ID包括交換機的優先級和MAC地址,先比較優先級,優先級的範圍爲0-32768,必須爲4096的倍數,默認狀況下爲32768。優先級較小的成爲根橋,若是優先級相同,比較MAC地址,MAC地址較小的成爲根橋。根橋的選舉採用搶佔機制,若是一臺優先級較小的交換機接入網絡,會搶佔根橋,並從新進行STP計算,生成新的無環網絡。io
2:選取根端口
選擇根端口的依據:首先比較根路徑成本,根路徑成本與鏈路的帶寬有關,帶寬越大,根路徑成本越低,到達根橋路徑成本最低的端口成爲根端口,若是根路徑成本相同,再比較直連交換機的橋ID,鏈接橋ID較小的交換機的端口成爲根端口,若是直連交換機的橋ID相同(採用雙鏈路鏈接到同一臺交換機的狀況),就會比較端口ID,所鏈接上行交換機的端口ID較小的端口成爲根端口。class
3:選取指定端口
網絡中每段鏈路(每一個衝突域)都要選舉一個指定端口,選舉指定端口的依據是先比較兩個端口到達根橋的路徑成本,若是路徑成本相同,再比較兩臺交換機的橋ID,橋ID較小的交換機的端口成爲指定端口。
實驗分析選舉過程:
網絡拓撲以下圖所示,其中,拓撲中全部交換機優先級均爲默認值(32768),全部鏈路帶寬均相同。
①選舉根橋:
根橋的選舉比較的是橋ID,橋ID內部含有交換機的優先級和MAC地址,先比較優先級,發現優先級都相同,因而比較MAC地址,各交換機的MAC地址以下圖所示:
由圖可知,SW4的MAC地址最小,所以選舉SW4爲根橋:
②選舉根端口:
在非根交換機上選舉根端口,非根交換機有4臺,每臺交換機都要選舉:SW0有兩個接口,分別爲Fa0/1和Fa0/2,由圖可知,Fa0/2口到達根橋的路徑成本較低,所以該端口被選舉爲根端口。以此類推,SW1的Fa0/1口成爲根端口;SW2的Fa0/1口成爲根端口。SW3的Fa0/3口和Fa0/4口到達根橋的路徑成本相同,因而比較直連交換機的橋ID,發現橋ID也相同(鏈接的是同一臺交換機),所以比較直連交換機端口ID,SW3的兩個端口分別鏈接SW4的Fa0/3口和Fa0/4口,Fa0/3口的端口ID較小,所以選擇本地鏈接Fa0/3口的端口做爲根端口,根端口選舉完成,拓撲以下:
③選舉指定端口:
上述網絡拓撲中共有6段鏈路,所以須要選舉6個指定端口,與根橋鏈接的3段鏈路中,根橋上的端口到達根橋的路徑成本最低,因此根橋上的全部端口都爲指定端口。在SW0和SW1所連鏈路中,SW0的Fa0/1口到達根橋的成本較低,所以該鏈路中,Fa0/1口爲指定端口,同理,SW1和SW2所連鏈路中,兩個端口到達根橋的根路徑成本相同,因而比較各自的橋ID,SW1的MAC地址較小,所以選舉SW1的Fa0/2口成爲指定端口,在SW2和SW3所連鏈路中,SW3的Fa0/1口到達根橋的路徑成本較低,所以該端口成爲指定端口。網絡拓撲以下:
剩餘的端口即爲邏輯上斷開的端口(block端口),最終造成無環的網絡拓撲。
三:STP協議下的端口狀態
STP協議下,交換機端口分爲Disabled、Blocking、Listening、Learning、Forwarding狀態:
Disabled:端口沒有啓用的狀態,不接收BPDU,不轉發BPDU,不參與生成樹計算,不學習MAC地址表,不轉發數據幀。
Blocking:阻塞狀態,接收BPDU,不轉發BPDU,不參與生成樹計算,不學習MAC地址表,不轉發數據幀。
Listening:監聽狀態,接收BPDU,轉發BPDU,參與生成樹計算,不學習MAC地址表,不轉發數據幀。
Learning:學習狀態,接收BPDU,轉發BPDU,參與生成樹計算,學習MAC地址表,不轉數據幀。
Forwarding:轉發狀態,接收BPDU,轉發BPDU,參與生成樹計算,學習MAC地址表,正常轉發數據幀。
彙總以下表所示:
端口狀態轉變所需的時間:
①blocking→listening:須要通過20s。②listening→learning:須要通過15s。③learning→forwarding:須要通過15s。