33 張圖詳解 RSTP 、MSTP、替代技術

10 秒看完文章主要內容,試試你有多快。

STP 的弊端

上次有寫過一篇《圖解 STP 》的文章,裏面有提到 STP 的功能是_消除環路_和_鏈路備份_,同時也發現 STP 的一些問題:

什麼是收斂?

收斂是指網絡進入穩定狀態。比如在 STP 中所有接口獲得接口角色,進入轉發或阻塞狀態。收斂時間是指網絡從發生變化到進入穩定狀態的時間。

RSTP

鑑於 STP 的優缺點都很明顯,棄之又覺得可惜,還是搶救一下吧。於是升級版的 RSTP 出現了,對 STP 進行了大量的改進。

RSTP 增加新的接口角色,其中的_替代接口_可在交換機的根接口失效時,立即成爲新的根接口,獲取新的路徑到達根橋。RSTP 使用 P/A 機制,讓指定接口能夠快速進入轉發狀態,而不用像 STP 那樣經過 Forward Delay 時間。RSTP 還新增_邊緣接口_的概念,讓交換機接入終端設備的接口立即進入轉發狀態。

RSTP 接口角色

RSTP 在 STP 的基礎上增加了接口角色,4 種接口角色分別是:根接口( RP )、指定接口( DP )、替代接口( Alternate Port ,AP )和備份接口( Backup Port ,BP )。根接口和指定接口與 STP 中定義相同,對於 STP 的非根非指定接口,RSTP 將其分爲兩種,一種是替代接口,另一種是備份接口。

1、替代接口( Alternate Port ,AP )

替代接口就是根接口的備份,由於收到其它交換機發送的更優 BPDU 而被阻塞的接口。如果根接口發生故障,那麼替代接口會成爲新的根接口。接口切換過程中,無需延時,無需 BPDU 交互,立馬進入到轉發狀態。

一臺交換機如果是非根橋,那麼它有且只有一個根接口,但是這臺交換機可以沒有替代接口,也可以有,當有替代接口時,可以有一個或多個。當交換機的根接口發生故障時,最優的替代接口將成爲新的根接口。

如上圖所示,SW1 是網絡中的根橋,SW3 有兩個接口接入到網絡中,由於 G0/11 比 G0/12 到達根橋的 RPC 更小,G0/11 成爲 SW3 的根接口。G0/12 收到 SW2 發送的 BPDU ,經過 SW3 計算後決定阻塞,成爲 SW3 的替代接口。

2、備份接口( Backup Port ,BP )

備份接口也是指定接口的備份,備份接口是交換機收到了自己發送的 BPDU 而被阻塞的接口。如果一臺交換機的多個接口在同一個物理網段內,其中一個選舉爲指定接口,其它接口選舉爲備份接口且處於丟棄狀態,備份接口作爲這個網段到達根橋的冗餘接口。如果交換機的指定接口發生故障,最優的備份接口成爲新的指定接口,爲根交換機與這條鏈路提供另一條轉發通道,實現與這個網段的數據交互。

備份接口通常在這兩種情況下出現,一種是交換機的多個接口連接到一臺集線器( Hub )上,但是集線器和共享網絡幾乎絕跡。另一種情況是同一臺交換機的兩個接口通過一條網線連接起來,這種通常是人爲的誤操作。因此備份接口比較少見。

如上圖所示,SW1 是網絡中的根橋,SW2 的 G0/11 和 G0/12 接口形成自環,RSTP 能夠檢測到這個環路,並在這兩個接口中選擇一個進行阻塞。由於 G0/11 接口的接口 ID 更小,成爲 SW2 的指定接口,而 G0/12 接口成爲備份接口,備份接口被阻塞。

如上圖所示,SW2 的兩個接口連接在同一臺集線器( Hub )上,集線器收到數據後會拷貝到其它所有接口,而且集線器不支持 STP/RSTP ,因此 SW2 從 G0/11 接口發出的 BPDU 會被集線器發送到 SW2 的 G0/12 接口,反之亦然。當 SW2 的指定接口 G0/11 出現故障時,備份接口 G0/12 將接替它的工作,負責與相應的網段實現數據交互。

RSTP 接口狀態

STP 有 5 種接口狀態,分別是禁用、阻塞、偵聽、學習和轉發,而 RSTP 對接口狀態進行了簡化,把禁用、阻塞、偵聽狀態合併爲丟棄狀態( Discarding )。因爲這三類狀態的功能區別不大,接口都不學習 MAC 地址,也不轉發數據,這也是丟棄狀態接口的處理方式。那麼 RSTP 就是 3 種狀態,即丟棄狀態( Discarding )、學習狀態( Learning )和轉發狀態( Forwarding )。學習和轉發狀態保持不變,和 STP 中的定義相同。

邊緣接口

如果交換機的接口連接的是終端設備,比如 PC 、服務器、打印機等,而不是其它交換機的接口,那麼這些接口不太可能造成環路。我們就可以將交換機的接口配置爲邊緣接口( Edge Port ),邊緣接口默認不參加生成樹計算。當邊緣接口被開啓後,立即切換到轉發狀態並開始收發數據流量,而不用經歷轉發延遲時間,提升網絡效率。邊緣接口的開啓和關閉都不會觸發 RSTP 拓撲變更。

P/A 機制

在 STP 中,交換機的一個接口成爲指定接口後,還需要經過偵聽和學習狀態,即經過 30 秒時間,才能進入轉發狀態。而 RSTP 引入 P/A 機制( Proposal/Agreement ,握手 / 贊同),讓指定接口與對端接口進行握手,並逐級進行傳遞避免環路,這個過程不使用計時器。也就是說,完成握手的 RSTP 指定接口從丟棄狀態直接進入到轉發狀態,而不需要經過其它狀態,加速生成樹的收斂。

Proposal 消息和 Agreement 消息都是 BPDU 。交換機通過 BPDU 中的 Flag(標記)字段來標識 BPDU 的不同類型,包括 Proposal BPDU 和 Agreement BPDU 。

如上圖所示,在 SW1 和 SW2 新增一條鏈路,由於 SW1 的橋優先級最高,成爲這個網絡中的根橋,SW1 的 G0/1 接口成爲指定接口,SW2 的 G0/2 接口成爲根接口。如果是運行 STP ,那麼指定接口和根接口必須經歷偵聽和學習狀態才能進入轉發狀態。

如果網絡中運行的是 RSTP ,當 SW1 與 SW2 之間新增一條鏈路後。

  1. SW1 和 SW2 馬上在各自的接口上發送 BPDU ,開始的時候雙方都認爲自己是根橋。

  1. 經過 BPDU 交互後,SW2 認爲 SW1 纔是根橋。這時 SW1 的 G0/1 接口成爲指定接口,SW2 的 G0/2 接口則成爲根接口,並馬上停止發送 BPDU 。這兩個接口都處於丟棄狀態。

  1. 接下來 P/A 過程會發生在 SW1 和 SW2 之間。SW1 從 G0/1 接口發送 Proposal 消息,希望自己能夠立刻進入轉發狀態。

  1. 而 SW2 在收到 Proposal 消息後,首先會判斷接收 Proposal 消息的接口是不是根接口。在確認自己收到 Proposal 的接口是根接口後,SW2 爲了避免出現環路,阻塞自己所有非邊緣的指定接口,使這些接口都進入到丟棄狀態,這個操作稱爲 P/A 同步機制。邊緣接口不參與這個過程。

  1. 在 SW2 所有接口完成同步後,SW2 清楚的知道自己的接口不存在環路,馬上將根接口 G0/2 切換到轉發狀態,並從根接口向 SW1 發送 Agreement 消息。

  1. SW1 在 G0/1 接口上收到 Agreement 消息後,立刻將 G0/1 接口切換成轉發狀態,這時 PC1 和 PC2 就可以通信了。

整個 P/A 過程很快就完成了,在新增鏈路後的極短時間內,PC2 就可以和 PC1 通信。另外,由於 SW2 的指定接口 G0/4 還是處於丟棄狀態,那麼這個接口也會向下遊交換機發起一個 P/A 過程。

保護功能

交換機有多種保護功能,用於提升生成樹協議的穩定性。

1、BPDU 保護( BPDU Protection )

當邊緣接口收到 BPDU 後,會馬上變成一個普通的 RSTP 接口,可能引發網絡中 RSTP 重新計算,從而對網絡造成影響。通常邊緣接口連接終端設備,應該不會收到 BPDU ,但是如果誤接了交換機,那麼這個邊緣接口就有可能收到 BPDU ,會引入環路隱患。還有一種情況是惡意用戶連接邊緣接口後,發起 BPDU 攻擊,也會對網絡造成很大影響。

通過在交換機上開啓 BPDU 保護功能就可以解決這個問題。當交換機開啓這個功能後,如果邊緣接口收到 BPDU ,那麼交換機馬上把接口關閉,置爲 Error-Down ,同時觸發告警。

如果受到保護的邊緣接口因爲收到 BPDU 而被關閉,默認情況下是不會自動恢復的,需要在交換機上手動執行命令開啓來恢復接口。除此之外,還可以手動設置接口自動恢復功能,在指定時間後自動恢復。

2、根保護( Root Protection )

RSTP 根據根橋計算出無環拓撲,根橋是很重要的。在已經完成收斂的 RSTP 網絡中,如果根橋發生變化,那麼 RSTP 就會重新計算,重新計算時網絡將不可用。通常我們會選擇網絡中性能最好和位置最重要的設備作爲根橋,將其優先級設置爲最小值 0 ,但是這個措施並不能保證這個設備永遠是網絡中的根橋,畢竟根橋的角色是可以搶佔的。如果網絡中新接入的交換機優先級被配置爲 0 ,恰好 MAC 地址比根橋更小,那麼新交換機將搶佔成爲新的根橋,還會造成網絡的 RSTP 重新計算,從而對網絡造成影響。

在交換機的相關接口部署根保護功能,就可以規避這個問題。當根橋的指定接口開啓根保護功能後,這個指定接口如果收到更優的 BPDU ,就會過濾這個 BPDU ,並將接口切換至丟棄狀態,這樣根橋的地位就可以保持。如果這個指定接口不再收到更優的 BPDU,那麼兩倍的轉發延遲時間後,接口自動恢復到轉發狀態。

3、環路保護( Loop Protection )

當網絡中出現線路單向故障或者網絡擁塞時,交換機的根接口和丟棄狀態的替代接口將無法正常接收 BPDU ,就會導致交換機重新進行 RSTP 重新計算,接口的角色和狀態會發生變化,可能會在網絡中引入環路。

如上圖所示,SW1 是根橋,SW3 的 G0/11 是根接口,G0/12 是替代接口處於丟棄狀態。SW3 的 G0/12 接口雖然處於丟棄狀態,但是會持續偵聽 BPDU 。當網絡正常時,SW3 會在 G0/12 接口上週期性的收到 BPDU 。如果 SW2 和 SW3 的鏈路出現單向故障,從 SW2 到 SW3 不通,從 SW3 到 SW2 正常。那麼 SW3 的 G0/12 接口無法收到 SW2 發送的 BPDU ,導致 SW3 認爲 G0/12 接口的上游設備故障。過了 Max Age 時間後,SW3 的 G0/12 接口會成爲指定接口,並切換到轉發狀態,然後開始發送流量。但是 SW2 並未發生故障,因此一旦 SW3 的 G0/12 接口切換到轉發狀態,網絡中便出現了環路。

使用環路保護功能可以規避這個問題:

4、拓撲變更保護( TC Protection )

一個穩定的網絡是不會頻繁出現拓撲變更的,一旦網絡拓撲出現變更,TC BPDU( TC 置位的 BPDU )會泛洪到全網,而 TC BPDU 會讓交換機執行 MAC 地址表刪除的操作。如果網絡環境很不穩定,導致 TC BPDU 頻繁的泛洪,或者是網絡中存在惡意用戶,發送大量的 TC BPDU 對網絡進行攻擊,那麼會極大消耗交換機的性能。

交換機開啓拓撲變更保護功能後,默認將在 2 秒內只進行一次的 TC BPDU 處理,如果在 2 秒內收到了 2 個及以上的 TC BPDU ,那麼交換機只會處理一次,對於超出的部分,必須等待 2 秒後才進行處理。

BPDU

RSTP 的配置 BPDU 稱爲 RST BPDU( Rapid Spanning Tree BPDU ),它的格式和 STP 的配置 BPDU 差不多,只有個別字段做了修改。RST BPDU 的 “協議版本 ID” 字段值是 0x02 ,“ BPDU 類型 ” 字段值是 0x02 。主要變化是在 “ 標誌 ” 字段,這個字段一共 8 bit ,STP 只使用了最高比特位和最低比特位,而 RSTP 使用了剩餘的 6 個比特位,並對這些比特位分別進行了定義。

RST BPDU 的 Aggrement(同意)和 Proposal(提議)比特位用於 P/A( Proposal/Aggrement )機制。Port Role(接口角色)比特位是 2 bit ,用於標識 RST BPDU 發送接口的接口角色,01 表示根接口,10 表示替代接口,11 表示指定接口,而 00 保留使用。最後的 Forwarding(轉發)和 Learning(學習)比特位表示 RST BPDU 發送接口的接口狀態。

RSTP 與 STP 不同,在網絡收斂後,無論是根橋還是非根橋,都會週期性的發送配置 BPDU,對於非根橋,不需要在根接口收到 BPDU 之後而產生自己的配置 BPDU ,而是自發的、週期性發送 BPDU 。

MSTP

雖然 RSTP 對 STP 進行了改進,但是還有一個缺陷,那就是_所有 VLAN 共用一棵生成樹_。這樣就無法實現負載分擔,導致線路帶來利用率低、設備資源利用率低。

如果有一種生成樹協議,基於 VLAN 進行生成樹的計算,那麼這種技術有哪些優缺點?優點很明顯,交換機爲每一個 VLAN 單獨計算一棵生成樹,可以實現流量的負載分擔。但是也有一個缺陷,如果網絡中的 VLAN 數量很多,那麼所有交換機都要爲每一個 VLAN 計算一棵生成樹,那麼設備的資源消耗巨大,甚至會影響到正常流量的處理。

爲了解決這個問題,MSTP( Multiple Instances Spanning Tree Protocol )出現了,兼容 STP 和 RSTP 。生成樹不是基於 VLAN 運行的,而是基於 Instance(實例)運行的。Instance 是一個或多個 VLAN 的集合。

我們可以將一個或多個 VLAN 映射到一個 Instance ,然後 MSTP 基於 Instance 計算生成樹。基於 Instance 的生成樹稱爲 MSTI( Multiple Spanning Tree Instance ,多生成樹實例),MSTP 爲每一個 Instance 維護獨立的 MSTI 。映射到同一個 Instance 的 VLAN 共享一棵生成樹。可根據實際需求,在交換機上創建多個 Instance ,然後將指定的 VLAN 映射到相應的 Instance 。一個 Instance 可以包含多個 VLAN ,但是一個 VLAN 只能被映射到一個 Instance 。

在創建 Instance 後,我們可以對 MSTI 進行_主根橋_、_次根橋_、_接口優先級_或 _Cost_ 等配置。如果網絡中有大量 VLAN ,那麼我們可以將 VLAN 按照一定規律分別映射到不同的 Instance 中,從而實現負載分擔,而交換機僅對這幾個 Instance 進行生成樹計算,設備資源消耗大大降低。

MSTP 引入了( Region )的概念,我們可以將網絡劃分成多個 MST 域( Multiple Spanning Tree Region ,多生成樹域),一個 MST 域可以包含一臺或多臺交換機,同一個 MST 域的交換機必須配置相同的域名( Region Name )、相同的修訂級別( Revision Level ),以及相同的 VLAN 與 Instance 的映射關係。

替代方案

學完 STP/RSTP/MSTP 後,解決網絡中的二層環路問題,想到的解決方案就是生成樹協議。但是生成樹協議有天生的缺陷,收斂速度慢,雖然 RSTP/MSTP 對 STP 進行了改進,但是在毫秒級切換的要求下,生成樹就不適用了。而且生成樹的原理是將環路中的接口進行阻塞,導致被阻塞的線路無法承載流量,造成網絡資源的浪費。MSTP 在這方面進行了優化,讓不同 VLAN 的流量可以在不同線路進行負載分擔,可是對於單個 VLAN 來說,始終會有一些線路無法承載流量。現在已經有許多其它技術或解決方案用於替代生成樹協議。

Smart Link 是爲雙上行組網定做的解決方案。

如上圖所示,交換機 SW3 一條上行鏈路連接 SW1 ,另一條上行鏈路連接 SW2 。在 SW3 上創建 Smart Link 組,將 SW3 的兩個上行接口添加到這個組裏,G0/1 口指定爲 Master 接口、G0/2 口指定爲 Slave 接口。默認只有 Master 接口是活躍的( Active ),這個接口可以正常收發流量,而 G0/2 接口會被阻塞( Inactive )。這樣網絡中的二層環路將被打破。

如上圖所示,當 SW3 的 G0/1 接口發生故障,或者線路發生故障,Smart Link 會馬上感知到,並且實現毫秒級的快速切換,G0/2 接口將立即切換到 Active 狀態,並開始收發流量。在 Smart Link 切換過程中,SW3 還可以使用 Flush 報文去刷新上聯設備,即 SW1 和 SW2 的 MAC 地址表等數據,加快網絡收斂。

Smart Link 配置簡單,切換時間快。由於工作機制的限制,只能適用於特定的雙上行組網場景。SW1 、SW2 和 SW3 使用 Smart Link 防環後,也就不需要使用生成樹協議了。

2、iStack/CSS

iStack 是華爲盒式交換機的堆疊技術。而 CSS( Cluster Switch System ,集羣交換系統)是華爲框式交換機的集羣技術。

什麼是堆疊?

所謂堆疊,是指多臺物理交換機通過特定的線纜連接,並通過相應的配置,組成邏輯上的一臺設備的技術。

STP/RSTP/MSTP 或 Smart Link 都是採用阻塞特定接口的方式實現網絡的無環化,使得網絡資源得不到充分利用。一旦使用堆疊 / 集羣技術,情況就不一樣了。如上圖所示,假設 SW1 和 SW2 都是盒式交換機,且都支持 iStack ,那麼可以使用堆疊線纜把 SW1 和 SW2 連接起來,然後組建堆疊系統,建立完成後,SW1 和 SW2 不再是兩臺單獨的交換機,而是一個有兩個槽位的框式交換機。那麼網絡結構將大大簡化,由於 SW1 和 SW2 在邏輯上是一臺設備,設備的管理和配置將變得簡單。SW3 分別與 SW1 、SW2 互聯的線路,現在可以看做是兩臺交換機之間的兩條鏈路,我們可以將這兩條鏈路進行聚合,這樣網絡中將不存在二層環路,也無需部署防環技術。而且所有的鏈路都處於工作狀態,沒有接口被阻塞,設備資源和鏈路資源的利用率將最大化。

3、無二層環路場景

在一些網絡中,我們會人爲的將網絡中的二層環路打破,從而規避防環技術的應用。如上圖所示,匯聚層交換機 DSW1 、DSW2 與接入層交換機 ASW1 、ASW2 構成一個倒 U 型組網,ASW1 和 ASW2 之間未連線,因此這四臺交換機組成的網絡中,並不存在二層環路,也就無需使用生成樹技術或其它防環技術了。

這個網絡中,服務器使用了雙上行鏈路,服務器的兩張網卡以主備的方式運行,假設連接 ASW1 的網卡爲主網卡。如果 ASW1 和 DSW1 的鏈路發生故障,服務器是無法感知到的,依然會從主網卡發送數據,而數據到達 ASW1 後被丟棄。一種解決方案就是在服務器上部署相應的應用程序,週期性的從主網卡發出探測報文,來探測到默認網關的可達性,DSW1 和 DSW2 上配置服務器的默認網關,如果發現主網卡到默認網關不可達,則自動將流量切換到備網卡。

另一種解決方案就是使用華爲的 Monitor Link 技術。Monitor Link 是一種接口聯動技術,交換機部署後會持續監控 Monitor Link 的上行接口(可指定接口),當上行接口發生故障時,交換機馬上將下行接口(可指定接口)關閉。ASW1 可部署 Monitor Link 技術,將 DSW1 的接口配置爲上行接口,將連接服務器網卡的接口配置爲下行接口。這樣的話,當 ASW1 的上行接口發生故障,交換機立馬將連接服務器的下行接口關閉,從而使得服務器立即感知到故障的發生,然後將連接 ASW2 的網卡切換成主網卡,並在新的主網卡上發送數據。

結尾

STP 可以在網絡中形成一棵無環路的樹,解決環路故障並實現冗餘備份。

RSTP 在 STP 功能基礎上,通過替代接口讓根接口快速進入轉發狀態、採用 P/A 機制和設置邊緣接口等方法,實現了更快的收斂速度。

MSTP 則在大規模、多 VLAN 環境下形成多個生成樹實例,從而提供多 VLAN 負載均衡。

MSTP 同時兼容 STP 、RSTP ,運行 MSTP 的設備可以識別 STP 、RSTP 兩種協議報,並應用於生成樹計算。

另外 RSTP/MSTP 與 STP 的接口狀態不同,從 STP 的 5 種變成 3 種。

RSTP/MSTP 中,把禁用、阻塞、偵聽三種狀態合併爲丟棄狀態,減少狀態數量,簡化生成樹計算,加快收斂速度。

RSTP/MSTP 有更快的收斂速度,簡化的端口狀態;MSTP 能夠實現不同 VLAN 的負載分擔。因此儘量使用 MSTP 來避免環路。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/mzPygAwHBEYJy1zlY308mg