生成樹
冗餘拓撲的問題:
-廣播風暴
交換機泛洪廣播幀和未知幀
-重複幀接受
交換機泛洪廣播幀和未知幀
-MAC地址的振盪
學習MAC地址的原則
STP生成樹協議:spanning-tree protocol(802.1D)
作用:防環備份
原理:在冗餘網絡中,邏輯上阻塞某些端口,使的任意兩個終端之間的通信都是唯一路徑;
當收斂後的網絡再次發生變換,重新激活被阻塞的端口,使得網絡通信恢復正常,到達備份的效果
術語:
橋ID:標示交換機在生成樹網絡中的唯一性
組成:橋優先級+MAC地址(交換機本身的MAC地址)
橋優先級:標示交換機的優先權限,用於選舉根橋
範圍0-65535,默認32768,步長 1,2Bytes
根橋:ROOT,負責整個網絡中的數據通信
網絡中優先級最高的交換機
根路徑開銷:到根橋的最短路徑開銷。
指定橋ID:由指定橋的優先級和MAC地址組成。
指定端口ID:由指定端口的優先級和端口號組成。
Message Age:配置BPDU在網絡中傳播的生存期。
Max Age:配置BPDU在設備中能夠保存的最大生存期。
Hello Time:配置BPDU發送的週期。
Forward Delay:端口狀態遷移的延時。
BPDU:橋協議數據單元
內容:包含STP收斂所需要的所有參數
包含自身的生命週期,定期更新的時間以及老化時間
作用:用來選舉ROOT, RP, DP等
種類:
配置BPDU:週期性發送,2S,最大存活時間20S;用來完成STP的收斂和後期狀態的維護
TCN BPDU:當拓撲發生變化時發送(橋主動發送該BPDU通知網絡中的設備,鏈路發生變化)
*在802.1D中,只有根橋纔有資格定期發送配置BPDU,並且,根橋發送的BPDU纔是最優的!
Cost:花費,接口到達根所花的代價
10M~100; 100M~19; 1000M~4; 10G~2
根端口:root Port (RP)
非根橋上,到達根橋的cost值最小的端口
負責接受由根橋發送的數據和BPDU
指定端口:design Port (DP))
鏈路上 到達根橋的cost值最小的端口
負責轉發ROOT發送的數據和BGDU
端口ID:在交換機上,用來唯一的標識不同的端口
組成:端口優先級+端口編號
端口優先級:1Byte,範圍0-255,
STP的選舉流程:
1、在一個交換網絡中選舉一個根橋,根橋是設備的概念。默認情況下所有設備都是根橋,通過交互BPDU包優選BID小的成爲根橋,在STP中根橋選舉後只會由根橋每隔2秒發送一次BPDU包,其它的非根橋接收後轉發。
2、根橋選舉後,交換網絡中的其它設備都是非根橋,每個非根橋還需要選舉一個到達根橋最短路徑的端口成爲根端口。注:非根橋只能有一個根端口
3、每條鏈路上還需要選舉一個指定端口,默認情況下根橋的所有端口都是指定端口
4、既不是根端口也不是指定端口的其它端口需要被阻塞,不能轉發數據幀。
所有配置了STP協議的交換機都會發送BPDU(橋協議數據單元)報文,通過交互BPDU報文選舉設備角色和端口角色。
PDU有兩種類型:配置BPDU和TCN BPDU。
配置BPDU包含了橋ID、路徑開銷和端口ID等參數。STP協議通過在交換機之間傳遞配置BPDU來選舉根交換機,以及確定每個交換機端口的角色和狀態。
BPDU:在初始化過程中,每個橋都主動發送配置BPDU。在網絡拓撲穩定以後,只有根橋主動發送配置BPDU,其他交換機在收到上游傳來的配置BPDU後,纔會發送自己的配置BPDU。
TCN BPDU是指下游交換機感知到拓撲發生變化時向上遊發送的拓撲變化通知。
STP協議中包含一些重要的時間參數,這裏舉例說明如下:
Hello Time是指運行STP協議的設備發送配置BPDU的時間間隔,用於檢測鏈路是否存在故障。交換機每隔Hello Time時間會向周圍的交換機發送配置BPDU報文,以確認鏈路是否存在故障。當網絡拓撲穩定後,該值只有在根橋上修改纔有效。
Message Age:如果配置BPDU是根橋發出的,則Message Age爲0。否則,Message Age是從根橋發送到當前橋接收到BPDU的總時間,包括傳輸延時等。實際實現中,配置BPDU報文每經過一個交換機,Message Age增加1。
Max Age是指BPDU報文的老化時間,可在根橋上通過命令人爲改動這個值。Max Age通過配置BPDU報文的傳遞,可以保證Max Age在整網中一致。非根橋設備收到配置BPDU報文後,會將報文中的Message Age和Max Age進行比較:如果Message Age小於等於Max Age,則該非根橋設備會繼續轉發配置BPDU報文。如果Message Age大於Max Age,則該配置BPDU報文將被老化掉。該非根橋設備將直接丟棄該配置BPDU,並認爲是網絡直徑過大,導致了根橋連接失敗。
設備角色:根橋、非根橋
端口角色:根端口、指定端口、替代端口
根橋的選舉:
通過比較BID(橋ID)選舉,優選BID小的。BID參數由兩部分組成:優先級(默認值爲32768)+MAC地址(交換機的背板MAC地址)。
1、比較優先級,優先級越小越優。
2、如果優先級一樣,比較MAC地址,MAC地址越小越優。
BPDU包的作用:1、用於STP的選舉 2、維護STP的狀態 3、通告拓撲改變,刷新MAC地址表
STP中根橋的選舉依據的是橋ID,STP中的每個交換機都會有一個橋ID(Bridge ID) 。橋ID由16位的橋優先級(Bridge Priority)和48位的MAC地址構成。在STP網絡中,橋優先級是可以配置的,取值範圍是0~65535,默認值爲32768。優先級最高的設備(橋ID最小)會被選舉爲根橋。如果優先級相同,則會比較MAC地址,MAC地址越小則越優先。
交換機啓動後就自動開始進行生成樹收斂計算。默認情況下,所有交換機啓動時都認爲自己是根橋,自己的所有端口都爲指定端口,這樣BPDU報文就可以通過所有端口轉發。對端交換機收到BPDU報文後,會比較BPDU中的根橋ID和自己的橋ID。如果收到的BPDU報文中的橋ID優先級低,接收交換機會繼續通告自己的配置BPDU報文給鄰居交換機。如果收到的BPDU報文中的橋ID優先級高,則交換機會修改自己的BPDU報文的根橋ID字段,宣告新的根橋。
根端口的選舉:
RPC(root path cost):RPC是BPDU包中一個參數,用於標識發送BPDU包的交換機自己到達根橋的距離。
本地端口的RPC(通過端口到達根橋的距離)=本端口的PC+接收到的BPDU包中通告的RPC
STP端口角色的選舉過程
1、比較RID(根橋ID),優選小的。
2、比較到達根橋的RPC(root path cost),越小越優。
3、比較BPDU包發送者的BID,越小越優。
4、比較BPDU包發送者的PID(port id(端口ID),端口ID由兩部分組成=端口優先級(默認爲128,可以配置,配置時必須爲16的整數倍)+端口ID),越小越優。
5、比較BPDU包接收者的PID,越小越優。
STP中有幾種端口角色: 根端口(RP)、指定端口(DP)、替代端口(AP)
STP中有幾種端口狀態:Disable(禁用)、Listening(監聽)、Learning(學習)、Forwarding(轉發)、Blocking(阻塞)
端口狀態:
Disable(禁用):端口shutdown,端口UP後會從disable過渡到listening狀態。
Listening(監聽):在該狀態下可以發送和接收BPDU包,但是不能轉發數據幀,用於選舉設備角色和端口角色。該狀態會維持一個forward delay(15S)的時間。超時後會過渡到learning狀態。
Learning(學習):在該狀態下可以發送和接收BPDU包,可以接收數據幀但是不能轉發,同時學習原MAC地址構建MAC地址表。該狀態會維持一個forward delay(15S)的時間。超時後會過渡到forwarding狀態。
Forwarding(轉發):在該狀態下可以發送和接收BPDU包,同時可以接收和轉發數據幀。
Blocking(阻塞):在該狀態下可以接收BPDU包,但是不能發送BPDU包和數據幀。