計算機網絡(十)——RSTP原理


STP協議雖然能夠解決環路問題,但是收斂速度慢,影響了用戶通信質量。如果STP網絡的拓撲結構頻繁變化,網絡也會頻繁失去連通性,從而導致用戶通信頻繁中斷。

快速生成樹協議RSTP(Rapid Spanning-Tree Protocol)在STP基礎上進行了改進,使用了Proposal/Agreement機制保證鏈路及時協商,從而有效避免收斂計時器在生成樹收斂前超時。

P/A機制是RSTP網絡中的一種拓撲收斂機制,P/A機制中同步的作用是避免臨時環路的產生

RSTP的端口角色

RSTP通過分配端口角色和學習動態拓撲結構提供快速生成樹收斂。

RSTP根據端口在活動拓撲中的作用,定義了5種端口角色,其中包括STP中的端口定義:阻塞端口(Disabled Port)、根端口(Root Port)、指定端口(Designated Port),以及為支持RSTP的快速特性規定新增的替代端口(Alternate Port)和備份端口(Backup Port)

  • 根端口(Root Port):STP原有的端口角色,是非根交換機去往根橋路徑最優的端口,一個非根交換機上最多只有一個。
  • 指定端口(Designated Port):STP原有的端口角色,是交換機向所連網段轉發配置BPDU的端口,每個網段有且只能有一個指定端口。一般情況下,根橋的每個端口都是指定端口。
  • 阻塞端口(Disabled Port):STP中原有有的端口角色。該類端口在生成樹操作中沒有擔當任何角色,不參與RSTP運算。
  • 備份端口(Backup Port):RSTP特有的一種端口角色。該類端口為"指定端口"到達生成樹葉提供一條備份路徑。當一個交換機和一個共享媒介設備例如Hub建立兩個或者多個連接時,可以使用Backup端口。同樣,當交換機上兩個或者多個端口和同一個LAN網段連接時,也可以使用Backup端口。
  • 替代端口(Alternate Port):RSTP特有的一種端口角色。該類端口作為根端口的備份端口,提供了從指定橋到根橋的另一條備份路徑。

除了以上這五個端口角色,還有一類特殊的指定端口,位於網絡邊緣,被稱為邊緣端口

  • 邊緣端口一般與用戶終端設備直接連接,不與任何交換設備連接。
  • 邊緣端口不接收配置BPDU報文,不參與RSTP運算,可以由Disabled狀態直接轉到Forwarding狀態,且不經歷時延,就像在端口上將STP禁用了一樣。
  • 但是,一旦邊緣端口收到配置BPDU報文,就喪失了邊緣端口屬性,成為普通STP端口,並重新進行生成樹計算,從而引起網絡震盪。

RSTP的端口狀態

RSTP把原來STP的5種端口狀態簡化成了3種。

STP的Disabled、Blocking/Discarding、Listening端口狀態在RSTP中集成到Discarding

1.Discarding狀態,端口既不轉發用戶流量也不學習MAC地址。

2.Learning狀態,端口不轉發用戶流量但是學習MAC地址。

3.Forwarding狀態,端口既轉發用戶流量又學習MAC地址。

RST BPDU報文(對比BPDU)

除了部分參數不同,RSTP使用了類似STP的BPDU報文,即RST BPDU報文。

BPDU Type用來區分STP的BPDU報文和RST (Rapid Spanning Tree) BPDU報文。STP的配置BPDU報文的BPDU Type值為0(0x00),TCN BPDU報文的BPDU Type值為128 (0x80),RST BPDU報文的BPDU Type值為2 (0x02)。

STP的BPDU報文的Flags字段中只定義了拓撲變化TC(Topology Change)標志和拓撲變化確認TCA(Topology Change Acknowledgment)標志,其他字段保留。在RST BPDU報文的Flags字段里,還使用了其他字段。包括P/A進程字段和定義端口角色以及端口狀態的字段。Forwarding,Learning與Port Role表示發出BPDU的端口的狀態和角色。

  • STP中,當網絡拓撲穩定后,根橋按照Hello Timer規定的時間間隔發送配置BPDU報文,其他非根橋設備在收到上游設備發送過來的配置BPDU報文后,才會觸發發出配置BPDU報文,此方式使得STP協議計算復雜且緩慢。
  • RSTP對此進行了改進,即在拓撲穩定后,無論非根橋設備是否接收到根橋傳來的配置BPDU報文,非根橋設備都會仍然按照Hello Timer規定的時間間隔發送配置BPDU,該行為完全由每台設備自主進行。

RSTP收斂過程-P/A進程

RSTP收斂遵循STP基本原理。網絡初始化時,網絡中所有的RSTP交換機都認為自己是“根橋”,並設置每個端口為指定端口。此時,端口為Discarding狀態。

每個認為自己是“根橋”的交換機生成一個RST BPDU報文來協商指定網段的端口狀態,此RST BPDU報文的Flags字段里面的Proposal位需要置位。當一個端口收到RST BPDU報文時,此端口會比較收到的RST BPDU報文和本地的RST BPDU報文。如果本地的RST BPDU報文優於接收的RST BPDU報文,則端口會丟棄接收的RST BPDU報文,並發送Proposal置位的本地RST BPDU報文來回復對端設備。

交換機使用同步機制來實現端口角色協商管理。當收到Proposal置位並且優先級高的BPDU報文時,接收交換機必須設置所有下游指定端口為Discarding狀態。如果下游端口是Alternate端口或者邊緣端口,則端口狀態保持不變。本例說明了下游指定端口暫時遷移到Discarding狀態的情形,因此,P/A進程中任何幀轉發都將被阻止。

當確認下游指定端口遷移到Discarding狀態后,設備發送RST BPDU報文回復上游交換機發送的Proposal消息。在此過程中,端口已經確認為根端口,因此RST BPDU報文Flags字段里面設置了Agreement標記位和根端口角色。

在P/A進程的最后階段,上游交換機收到Agreement置位的RST BPDU報文后,指定端口立即從Discarding狀態遷移為Forwarding狀態。然后,下游網段開始使用同樣的P/A進程協商端口角色。

鏈路故障/根橋失效

在STP中,當出現鏈路故障或根橋失效導致交換機收不到BPDU時,交換機需要等待Max Age時間后才能確認出現了故障。而在RSTP中,如果交換機的端口在連續3次Hello Timer規定的時間間隔內沒有收到上游交換機發送的RST BPDU,便會確認本端口和對端端口的通信失敗,從而需要重新進行RSTP的計算來確定交換機及端口角色。

RSTP拓撲變化處理

RSTP拓撲變化的處理類似於STP拓撲變化的處理,但也有些細微差別。

本例里面,SWC發生鏈路故障。SWA和SWC立即檢測到鏈路故障並清除連接此鏈路的端口上的MAC地址表項。接下來SWC選舉出新的根端口並立即進入Forwarding狀態,因此觸發SWC向外發送TC置位的BPDU報文(以下簡稱TC報文)。通知上游交換機清除所有其他端口上的MAC地址表項,除了接收到TC報文的端口。TC報文周期性地轉發給鄰居,在此周期內,所有相關接口上MAC地址表項將會被清除,重新學習MAC地址表項。圖形里面紅色X表示由於拓撲變化導致端口上的MAC地址表項被清除。

STP兼容

RSTP是可以與STP實現后向兼容的,但在實際中,並不推薦這樣的做法,原因是RSTP會失去其快速收斂的優勢,而STP慢速收斂的缺點會暴露出來。

當同一個網段里既有運行STP的交換機又有運行RSTP的交換機時,STP交換機會忽略接收到的RST BPDU,而RSTP交換機在某端口上接收到STP BPDU時,會等待兩個Hello Time時間之后,把自己的端口轉換到STP工作模式,此后便發送STP BPDU,這樣就實現了兼容性操作。

配置命令

1.配置RSTP,即配置STP模式,使用命令:stp mode rstp。此命令必須在所有的參與快速生成樹拓撲計算的交換機上進行配置,執行后交換機所有端口都工作RSTP模式。
2.驗證配置,使用命令:display stp 。可顯示Rstp配置的信息和參數。根據顯示的信息可以確定交換機是否工作在RSTP模式。

3.配置邊緣端口。

邊緣端口的狀態要么是Disabled,要么是Forwarding;終端上電工作后,它就直接由Disabled狀態轉到Forwarding狀態,終端下電后,它就直接由Forwarding狀態轉到Disabled狀態。交換機所有端口默認為非邊緣端口。

  • stp edged-port enable命令用來配置交換機的某一個端口為邊緣端口;
  • stp edged-port default命令用來配置交換機的所有端口為邊緣端口。
  • stp edged-port disable命令用來將邊緣端口的屬性去掉,使之成為非邊緣端口。它也是一個針對某一具體端口的命令。

4.根保護命令:[SWA-GigabitEthernet0/0/1]stp root-protection  

確保了根橋的指定端口不會因為一些網絡問題而改變端口角色。根保護功能僅在指定端口生效,不能配置在邊緣端口或者使能了環路保護功能的端口上。

5.BPDU保護命令:[SWC]stp bpdu-protection

使能BPDU保護功能后的交換機的邊緣端口在收到BPDU報文時,會立即關閉該端口,並通知網絡管理系統。被關閉的邊緣端口可配置成自動恢復或管理員手動恢復。

6.環路保護命令:[SWC-GigabitEthernet0/0/1]stp loop-protection 

環路保護功能使能后,如果根端口不能收到上游交換機發送的BPDU報文,則向網管發出通知信息。根端口會被阻塞,阻塞端口仍然將保持阻塞狀態,這樣就避免了可能發生的網絡環路。

7.顯示端口的RSTP配置情況的命令:display stp interface <interface>。包括端口狀態,端口優先級,端口開銷,端口角色,是否為邊緣端口等等。

根保護功能應對的情況:

根保護功能確保了根橋的指定端口不會因為一些網絡問題而改變端口角色。

由於錯誤配置根交換機或網絡中的惡意攻擊,根交換機有可能會收到優先級更高的BPDU報文,使得根交換機變成非根交換機,從而引起網絡拓撲結構的變動。這種不合法的拓撲變化,可能會導致原來應該通過高速鏈路的流量被牽引到低速鏈路上,造成網絡擁塞。交換機提供了根保護功能來解決此問題。根保護功能通過維持指定端口角色從而保護根交換機。一旦啟用了根保護功能的指定端口收到了優先級更高的BPDU報文時,端口會停止轉發報文並且進入Listening狀態。經過一段時間后,如果端口一直沒有再收到優先級較高的BPDU報文,端口就會自動恢復到原來的狀態。根保護功能僅在指定端口生效,不能配置在邊緣端口或者使能了環路保護功能的端口上。

BPDU保護功能應對的情況:

正常情況下,邊緣端口是不會收到BPDU的。但是,如果有人發送BPDU來進行惡意攻擊時,邊緣端口就會收到這些BPDU,並自動變為非邊緣端口,且開始參與網絡拓撲計算,從而會增加整個網絡的計算工作量,並可能引起網絡震盪。

為防止上述情況的發生,我們可以使用BPDU保護功能。使能BPDU保護功能后的交換機的邊緣端口在收到BPDU報文時,會立即關閉該端口,並通知網絡管理系統。被關閉的邊緣端口可配置成自動恢復或管理員手動恢復。

如需使能BPDU保護功能,可在系統視圖下執行stp bpdu-protection命令。

環路保護功能應對情況:

交換機通過從上游交換機持續收到BPDU報文來維護根端口和阻塞端口的狀態。當由於鏈路擁塞或者單向鏈路故障時,交換機不能收到上游交換機發送的BPDU報文,交換機重新選擇根端口。最初的根端口會變成指定端口,阻塞端口進入Forwarding狀態,這就有可能導致網絡環路。

交換機提供了環路保護功能來避免這種環路的產生。環路保護功能使能后,如果根端口不能收到上游交換機發送的BPDU報文,則向網管發出通知信息。根端口會被阻塞,阻塞端口仍然將保持阻塞狀態,這樣就避免了可能發生的網絡環路。

如需使能環路保護功能,可在接口視圖下執行stp loop-protection命令。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM