一、STP的不足
- 端口角色不足
如果SWC的RP端口down之后,那么BP端口肯定會成為RP端口,此時需要等待Max age(20秒)超時后,重新選舉根端口,再經等兩個Forwording delay (30秒)才能進入轉發狀態。
- 端口狀態不足
三種端口狀態從用戶使用的角度對應的行為都相同,但呈現出不同的狀態,這樣反而增加了使用難度
二、RSTP對STP的改進
- 端口角色的重新划分
RSTP定義了兩種新的端口角色:根端口備份端口(Backup Port)和預備端口(Alternate Port)。
從配置BPDU報文發送角度來看:
-
- Alternate Port就是由於學習到其它網橋發送的配置BPDU報文而阻塞的端口。
- Backup Port就是由於學習到自己發送的配置BPDU報文而阻塞的端口。
從用戶流量角度來看:
-
- Alternate Port提供了從指定橋到根的另一條可切換路徑,作為根端口的備份端口。
- Backup Port作為指定端口的備份,提供了另外一條從根節點到葉節點的備份通路。
- 端口狀態的改進
把原來的5種狀態縮減為3種
三、P/A機制
- P/A機制基本原理:
Proposal/Agreement機制,其目的是使一個指定端口盡快進入Forwarding狀態。
-
- 交換機SWA由於優先級高所以會向SWB發送P置位的BPDU,SWB收到SWA的BPDU時會向其回應一個A置位的BPDU,SWA收到之后會立馬進入轉發狀態。如果P/A協商不成功,那么則需要等待兩個Forwording的時間,也就是返回STP協商過程。
- 具體協商過程:
階段一:設備剛剛啟動,RSTP協議剛剛啟用,所有交換機都認為自己是根橋,向其他交換機發送P置位的BPDU,並把發送P消息的端口變成DP口,同時接口處在Discarding狀態。
階段二:交換機SWA收到SWB和SWC的P消息會置之不理,因為他的橋優先級最高。交換機SWB和SWC收到SWA的P消息后,由於認同SWA是最優的根橋,會根據P/A協商流程回復A消息,並把發送端口變成RP端口,同時接口處在 Forwarding狀態。
階段三:SWA與SWB,SWA與SWB的P/A協商已經完成,接下來是SWB和SWC的P/A協商。
SWB和SWC都會發送根橋為SWA的P消息給對方。
SWC收到SWB的P消息后,發現P消息里雖然根橋和自己認可的一樣,但是發送者的橋優先級比自己高(SWB>SWC),所有馬上停止發送P消息,但是由於已經有端口是RP口,也不會回A消息。
SWB收到SWC的P消息后,發現P消息里雖然根橋和自己認可的一樣,但是發送者的橋優先級比自己低(SWB>SWC),會不停的發送P消息。
以上狀態在等待2個Forward Delay時間后,SWB端口為DP端口,處在Forwarding狀態, SWC端口為AP端口,處在Discarding狀態。
實際上SWB與SWC之間的協商等同於退回到STP的模式,但是反正是Discarding狀態,根本不影響其他業務轉發。
RSTP在選舉的過程中加入了“發起請求-回復同意”(P/A機制)這種確認機制,由於每個步驟有確認就不需要依賴計時器來保證網絡拓撲無環才去轉發,只需要考慮BPDU發送報文並計算無環拓撲的時間(一般都是秒級)。
四、收斂處理過程
SWB與SWA的直連鏈路down掉,SWC的AP端口切換成DP端口,SWB得DP端口經協商之后切換成RP端口,並進入轉發狀態可在秒級時間內完成。
五、邊緣端口
STP中,連接終端的鏈路也要進行生成樹計算且鏈路進入轉發需等待2個Forward Delay時間,配置了邊緣端口之后,連接終端的接口會立馬進入轉發狀態,當收到BPDU時,會成為普通的STP端口,並參與計算。
六、拓撲更新
在RSTP中檢測拓撲是否發生變化只有一個標准:一個非邊緣端口遷移到Forwarding狀態。
一旦檢測到拓撲發生變化,首先將進行如下處理:
- 清空狀態發生變化的端口上學習到的MAC地址。
- 同時,由這些端口向外發送RST BPDU,其中TC置位。一旦TC While Timer超時,則停止發送RST BPDU。
如圖所示,SWB的E1端口出現故障之后,RSTP的處理過程如下:
- SWB重新計算生成樹,選舉E2為新的根端口。
- SWB刪除MAC地址表中E1端口所對應的表項。
生成樹重新計算完成之后(需要進入轉發狀態的端口已經進入了轉發狀態),SWB的所有非邊緣端口向外發送TC置位的RST BPDU,通知所的交換機刪除除了接受端口和邊緣端口以外的端口的MAC地址映射。
注意:邊緣端口down掉不會觸發拓撲變更,而且故障恢復后,同樣也不會觸發拓撲變更。
七、保護功能
- BPDU保護
應用場景:防止有人偽造RST BPDU惡意攻擊交換設備,當邊緣端口接收到該報文時,會自動設置為非邊緣端口,並重新進行生成樹計算,引起網絡震盪。
實現原理:配置BPDU保護功能后,如果邊緣端口收到BPDU報文,邊緣端口將會被立即關閉。
- 根保護
應用場景:如果黑客用更高優先級的RST BPDU 接入網絡,當根橋收到更優的RST BPDU,重新進行生成樹計算,並失去根的地位,引起網絡拓撲結構的錯誤變動。
實現原理:啟用Root保護功能的指定端口收到優先級更高的RST BPDU時,端口狀態將進入Discarding狀態。在經過一段時間,如果端口一直沒有再收到優先級較高的RST BPDU,端口會自動恢復到正常的Forwarding狀態。
- TC-BPDU防洪保護
應用場景:如果有人偽造TC-BPDU報文惡意攻擊交換機時,交換機短時間內會收到很多TC-BPDU報文,頻繁執行MAC地址表項的刪除操作會給設備造成很大的負擔,給網絡的穩定帶來很大隱患。
實現原理:用防TC-BPDU報文攻擊功能后,在單位時間內,RSTP進程處理TC類型BPDU報文的次數可配置(缺省的單位時間是2秒,缺省的處理次數是3次)。如果在單位時間內,RSTP進程在收到TC類型BPDU報文數量大於配置的閾值,那么RSTP進程只會處理閾值指定的次數;對於其他超出閾值的TC類型BPDU報文,定時器到期后,RSTP進程只對其統一處理一次。這樣可以避免頻繁的刪除MAC地址表項,從而達到保護交換機的目的。
八、常用配置命令
stp enable //全局開啟STP stp mode rstp //配置STP模式為RSTP stp root primary //配置SWA為根橋 stp bpdu-protection //全局開啟BPDU防護,配合邊緣端口一起使用 stp edged-port enable //配置端口為邊緣端口
參考資料:華為HCIP-R&S培訓資料