RSTP與STP的不一樣html
增長端口角色:AP和BP網絡
減小端口狀態爲Discardinglearningforwarding併發
充分利用BPDU中的Flag字段ide
對BPDU的處理方式發生了改變學習
提升收斂速度url
增長了保護功能spa
RSTP和STP消除環路的思想保持一致,RSTP具有了STP的全部功能,支持RSTP的網橋能夠和支持STP的網橋一同運行。orm
RSTP的端口角色共有4種:根端口、指定端口、Alternate端口和Backup端口。htm
根端口和指定端口的做用同STP協議中定義,Alternate端口和Backup端口的描述以下:blog
從配置BPDU報文發送角度來看:
Alternate端口就是因爲學習到其它網橋發送的更優配置BPDU報文而阻塞的端口。
Backup端口就是因爲學習到本身發送的更優配置BPDU報文而阻塞的端口。
從用戶流量角度來看:
Alternate端口提供了從指定橋到根的另外一條可切換路徑,做爲根端口的備份端口。
Backup端口做爲指定端口的備份,提供了另外一條從根橋到相應網段的備份通路。
給一個RSTP域內全部端口分配角色的過程就是整個拓撲收斂的過程。
RSTP端口狀態
Forwarding
Learning
discarding
STP端口狀態 |
RSTP端口狀態 |
發送配置BPDU |
MAC地址學習 |
轉發數據 |
Disable |
Discarding |
否 |
否 |
否 |
Blocking |
Discarding |
否 |
否 |
否 |
Listening |
Discarding |
是 |
否 |
否 |
Learning |
Learning |
是 |
是 |
否 |
Forwarding |
Forwarding |
是 |
是 |
是 |
RSTP的狀態規範把原來的5種狀態縮減爲3種。根據端口是否轉發用戶流量和學習MAC地址來劃分:
若是不轉發用戶流量也不學習MAC地址,那麼端口狀態就是Discarding狀態。
若是不轉發用戶流量可是學習MAC地址,那麼端口狀態就是Learning狀態。
若是既轉發用戶流量又學習MAC地址,那麼端口狀態就是Forwarding狀態。
RSTP計算過程:
端口在Discarding狀態下完成端口角色的肯定:
當端口角色肯定爲根端口和指定端口後,通過forwardingdelay後,端口進入Learning狀態,處於Learning狀態的端口其處理方式和STP相同,此期間端口開始學習MAC地址並在Forwardingdelay後進入Forwarding狀態,開始轉發數據。實際上,RSTP會經過其餘方式加快這個過程。
當端口角色肯定爲Alternate端口後,端口會維持在Discarding狀態。
RSTP對STP的BPDU改動
充分利用STP中BPDU的Flag,明確端口角色
Type字段爲2
Flag字段使用了以前的保留位,更改後的配置BPDU改名爲RST BPDU
配置BPDU格式的改變,充分利用了STP協議報文中的Flag字段,明確了端口角色。在配置BPDU報文的格式上,除了保證和STP格式基本一致以外,RSTP做了一些小變化:
Type字段,配置BPDU類型再也不是0而是2,因此運行STP的設備收到RSTP的配置BPDU時會丟棄。
Flags字段,使用了原來保留的中間6位,這樣改變的配置BPDU叫作RSTBPDU。
RSTP中BPDU的Flag字段解釋:
第0位爲TC標誌位,和STP相同。
第1位爲Proposal標誌位,該位置位表示該BPDU爲快速收斂機制中的Proposal報文。
第2位和第3位爲端口角色標誌位,00表示端口角色爲未知;01表示端口角色爲Alternate或Backup端口;10表示端口爲根端口;11表示端口爲指定端口。
第4位爲Learning標誌位,該位置位表示端口處於Learning狀態。
第5位爲Forwarding標誌位,該位置位表示端口處於Forwarding狀態。
第6位爲Agreement標誌位,該位置位表示該BPDU位快速收斂機制中的Agreement報文。
第7位爲TCA標誌位,和STP相同。
RSTP中配置BPUD的處理
非根橋設備每隔HelloTimer從指定端口主動發送配置BPDU
BPDU超時計時器爲3個HelloTimer
阻塞端口能夠當即對收到的次級BPDU進行迴應
BPDU處理髮生的變化
拓撲穩定後,配置BPDU報文的發送方式
拓撲穩定後,根橋按照HelloTimer規定的時間間隔發送配置BPDU。其餘非根橋設備在收到上游設備發送過來的配置BPDU後,纔會觸發發出配置BPDU,此方式使得STP協議計算複雜且緩慢。RSTP對此進行了改進,即在拓撲穩定後,不管非根橋設備是否接收到根橋傳來的配置BPDU報文,非根橋設備仍然按照HelloTimer規定的時間間隔發送配置BPDU,該行爲徹底由每臺設備自主進行。
更短的BPDU超時計時
若是一個端口連續3個HelloTime時間內沒有收到上游設備發送過來的配置BPDU,那麼該設備認爲與此鄰居之間的協商失敗。而不像STP那樣須要先等待一個MaxAge。
次級BPDU的處理
當一個端口收到上游的指定橋發來的RSTBPDU報文時,該端口會將自身存儲的RSTBPDU與收到的RSTBPDU進行比較。若是該端口存儲的RSTBPDU的優先級高於收到的RSTBPDU,那麼該端口會直接丟棄收到的RSTBPDU,當即迴應自身存儲的RSTBPDU。當上遊設備收到下游設備迴應的RSTBPDU後,上游設備會根據收到的RSTBPDU報文中相應的字段當即更新本身存儲的RSTBPDU。由此,RSTP處理次等BPDU報文再也不依賴於任何定時器經過超時解決拓撲收斂,從而加快了拓撲收斂。
STP收斂機制
在STP中,爲了不環路,端口從使能到進入轉發狀態須要等待默認30秒的時間,只能依靠計時器被動的收斂。若是想要縮短計時器,會引發網絡的不穩定性。
RSTP快速收斂機制
邊緣端口機制
在RSTP裏面,若是某一個指定端口位於整個網絡的邊緣,即再也不與其餘交換設備鏈接,而是直接與終端設備直連,這種端口叫作邊緣端口。邊緣端口不接收處理配置BPDU,不參與RSTP運算,能夠由Disable直接轉到Forwarding狀態,且不經歷時延,就像在端口上將STP禁用。可是一旦邊緣端口收到配置BPDU,就喪失了邊緣端口屬性,成爲普通STP端口,並從新進行生成樹計算,從而引發網絡震盪。
根端口快速切換機制
若是網絡中一個根端口失效,那麼網絡中最優的Alternate端口將成爲根端口,進入Forwarding狀態。由於經過這個Alternate端口鏈接的網段上必然有個指定端口能夠通往根橋。
Proposal/Agreement機制
當一個端口被選舉成爲指定端口以後,在STP中,該端口至少要等待一個ForwardDelay(Learning)時間纔會遷移到Forwarding狀態。而在RSTP中,此端口會先進入Discarding狀態,再經過Proposal/Agreement機制快速進入Forward狀態。這種機制必須在點到點全雙工鏈路上使用。
Proposal/Agreement機制簡稱P/A機制。
邊緣端口機制
邊緣端口鏈接的是終端,當網絡拓撲發生變化時,邊緣端口不會發生環路,因此邊緣端口能夠忽略兩個ForwardingDelay,直接進入轉發狀態,無需任何延遲。
邊緣端口不接收處理配置BPDU,不參與RSTP運算,能夠由Disable直接轉到Forwarding狀態,且不經歷時延,就像在端口上將STP禁用。可是一旦邊緣端口收到配置BPDU,就喪失了邊緣端口屬性,成爲普通STP端口,並從新進行生成樹計算,從而引發網絡震盪。
根端口快速切換機制
在RSTP中,Alternate端口爲根端口的備份。當該網橋的根端口失效進入阻塞狀態時,網橋會選擇優先級最高的Alternate端口做爲新的根端口,若是網橋對端設備指定端口依然爲轉發狀態,則該網橋的新根端口直接進入Forwarding狀態。
P/A機制
是指定端口快速進入轉發狀態
工做模式爲點對點的全雙工模式
包括Proposal和Agreement報文
P/A機制
Proposal/Agreement機制,其目的是使一個指定端口儘快進入Forwarding狀態。
P/A機制要求兩臺交換設備之間鏈路必須是點對點的全雙工模式。一旦P/A協商不成功,指定端口的選擇就須要等待兩個ForwardDelay,協商過程與STP同樣。
新鏈路鏈接成功後,P/A機制協商過程以下
p0和p1兩個端口立刻都先成爲指定端口,發送RSTBPDU。
S2的p1口收到更優的RSTBPDU,立刻意識到本身將成爲根端口,而不是指定端口,中止發送RSTBPDU。
S1的p0進入Discarding狀態,因而發送的RSTBPDU中把proposal置1。
S2收到根橋發送來的攜帶proposal的RSTBPDU,開始將本身的全部端口進入sync變量置位。
p2已經阻塞,狀態不變;p4是邊緣端口,不參與運算;因此只須要阻塞非邊緣指定端口p3。
p2、p3、p4都進入Discarding狀態以後,各端口的synced變量置位,根端口p1的synced也置位,因而便向S1返回Agreement位置位的迴應RSTBPDU。該RSTBPDU攜帶和剛纔根橋發過來的BPDU同樣的信息,除了Agreement位置位以外(Proposal位清零)。
當S1判斷出這是對剛剛發出的Proposal的迴應,因而端口p0立刻進入Forwarding狀態。
P/A過程能夠向下遊繼續傳遞
P/A過程能夠向下遊繼續傳遞。
當S1和S2之間新增了一條鏈路後,P/A機制工做以下:
S1經過端口E1發送Proposal置位的RSTBPDU消息給S2。
S2收到該消息後,意識到E2爲根端口,啓用同步機制阻塞指定端口E1和E3以免產生環路,而後將根端口設置爲轉發狀態,並向S1發送Agreement消息。
S1收到Agreement消息後,指定端口E1立刻進入轉發狀態。
S2處於同步狀態的非邊緣指定端口E1和E3發送Proposal報文。
S3收到S2發送的Proposal報文後,判斷E1爲根端口,啓動同步過程,因爲S3下游均爲邊緣端口,因此已經實現了同步,所以S3直接向S2回覆Agreement消息。
S2收到S3發送的Agreement消息後,端口E1立刻進入轉發狀態。
S4的處理過程如S3。
S2收到S4發送的Agreement消息後,端口E3立刻進入轉發狀態。
P/A過程結束。
在RSTP中檢測拓撲是否發生變化只有一個標準:一個非邊緣端口遷移到Forwarding狀態。
一旦檢測到拓撲發生變化,將進行以下處理:
爲本交換設備的全部非邊緣指定端口啓動一個TC WhileTimer,該計時器值是HelloTime的兩倍。在這個時間內,清空狀態發生變化的端口上學習到的MAC地址。同時,由這些端口向外發送RSTBPDU,其中TC置位。一旦TC WhileTimer超時,則中止發送RSTBPDU。
其餘交換設備接收到RSTBPDU後,清空全部端口學習到MAC地址,除了收到RSTBPDU的端口。而後也爲本身全部的非邊緣指定端口和根端口啓動TC WhileTimer,重複上述過程。
如此,網絡中就會產生RSTBPDU的泛洪。
RSTP與STP互操做
RSTP端口在接收到STPBPDU的兩個hellotimer後,會切換到STP工做模式
切換到STP協議的RSTP端口會喪失快速收斂等特性
當運行STP的設備從網絡撤離後,原運行RSTP的交換設備可遷移回到RSTP工做模式
RSTP能夠和STP互操做,可是此時會喪失快速收斂等RSTP優點。
當一個網段裏既有運行STP的交換設備又有運行RSTP的交換設備,STP交換設備會忽略RST BPDU,而運行RSTP的交換設備在某端口上接收到運行STP的交換設備發出的配置BPDU,在兩個Hello Time時間以後,便把本身的端口轉換到STP工做模式,發送配置BPDU。這樣,就實現了互操做。
在華爲設備上能夠配置運行STP的交換設備被撤離網絡後,運行RSTP的交換設備可遷移回到RSTP工做模式。
選舉根交換機
端口角色 |
描述 |
Root Port |
根端口,是所在交換機上離根交換機最近的端口,穩定時處於轉發狀態。 |
Designated Port |
指定端口,轉發所鏈接的網段發往根交換機方向的數據和從交換機方向發往所鏈接的網段的數據,穩定時處於轉發狀態。 |
Backup Port |
備份端口,不處於轉發狀態,所屬交換機爲端口所連網段的指定交換機。 |
Alternate Port |
預備端口,不處於轉發狀態,所屬交換機不是端口所連網段的指定交換機。 |
端口狀態 |
描述 |
Discarding 丟棄狀態 |
此狀態下端口對接收到的數據作丟棄處理,端口不轉發數據幀,不學習MAC地址表。 Alternate Port和Backup Port |
Learning 學習狀態 |
此狀態下端口不轉發數據幀,可是學習MAC地址表,參與計算生成樹,接收併發送BPDU。 |
Forwarding 轉發狀態 |
此狀態下端口正常轉發數據幀,學習MAC地址表,參與計算生成樹,接收併發送BPDU。 |