10 秒看完文章主要內容,試試你有多快。 STP 的弊端上次有寫過一篇《圖解 STP 》的文章,里面有提到 STP 的功能是消除環(huán)路和鏈路備份,同時也發(fā)現(xiàn) STP 的一些問題:
收斂是指網絡進入穩(wěn)定狀態(tài)。比如在 STP 中所有接口獲得接口角色,進入轉發(fā)或阻塞狀態(tài)。收斂時間是指網絡從發(fā)生變化到進入穩(wěn)定狀態(tài)的時間。 RSTP鑒于 STP 的優(yōu)缺點都很明顯,棄之又覺得可惜,還是搶救一下吧。于是升級版的 RSTP 出現(xiàn)了,對 STP 進行了大量的改進。 RSTP 增加新的接口角色,其中的替代接口可在交換機的根接口失效時,立即成為新的根接口,獲取新的路徑到達根橋。RSTP 使用 P/A 機制,讓指定接口能夠快速進入轉發(fā)狀態(tài),而不用像 STP 那樣經過 Forward Delay 時間。RSTP 還新增邊緣接口的概念,讓交換機接入終端設備的接口立即進入轉發(fā)狀態(tài)。 RSTP 接口角色RSTP 在 STP 的基礎上增加了接口角色,4 種接口角色分別是:根接口( RP )、指定接口( DP )、替代接口( Alternate Port ,AP )和備份接口( Backup Port ,BP )。根接口和指定接口與 STP 中定義相同,對于 STP 的非根非指定接口,RSTP 將其分為兩種,一種是替代接口,另一種是備份接口。 1、替代接口( Alternate Port ,AP )替代接口就是根接口的備份,由于收到其它交換機發(fā)送的更優(yōu) BPDU 而被阻塞的接口。如果根接口發(fā)生故障,那么替代接口會成為新的根接口。接口切換過程中,無需延時,無需 BPDU 交互,立馬進入到轉發(fā)狀態(tài)。 一臺交換機如果是非根橋,那么它有且只有一個根接口,但是這臺交換機可以沒有替代接口,也可以有,當有替代接口時,可以有一個或多個。當交換機的根接口發(fā)生故障時,最優(yōu)的替代接口將成為新的根接口。 如上圖所示,SW1 是網絡中的根橋,SW3 有兩個接口接入到網絡中,由于 G0/11 比 G0/12 到達根橋的 RPC 更小,G0/11 成為 SW3 的根接口。G0/12 收到 SW2 發(fā)送的 BPDU ,經過 SW3 計算后決定阻塞,成為 SW3 的替代接口。 2、備份接口( Backup Port ,BP )備份接口也是指定接口的備份,備份接口是交換機收到了自己發(fā)送的 BPDU 而被阻塞的接口。如果一臺交換機的多個接口在同一個物理網段內,其中一個選舉為指定接口,其它接口選舉為備份接口且處于丟棄狀態(tài),備份接口作為這個網段到達根橋的冗余接口。如果交換機的指定接口發(fā)生故障,最優(yōu)的備份接口成為新的指定接口,為根交換機與這條鏈路提供另一條轉發(fā)通道,實現(xiàn)與這個網段的數(shù)據交互。 備份接口通常在這兩種情況下出現(xiàn),一種是交換機的多個接口連接到一臺集線器( Hub )上,但是集線器和共享網絡幾乎絕跡。另一種情況是同一臺交換機的兩個接口通過一條網線連接起來,這種通常是人為的誤操作。因此備份接口比較少見。 如上圖所示,SW1 是網絡中的根橋,SW2 的 G0/11 和 G0/12 接口形成自環(huán),RSTP 能夠檢測到這個環(huán)路,并在這兩個接口中選擇一個進行阻塞。由于 G0/11 接口的接口 ID 更小,成為 SW2 的指定接口,而 G0/12 接口成為備份接口,備份接口被阻塞。 如上圖所示,SW2 的兩個接口連接在同一臺集線器( Hub )上,集線器收到數(shù)據后會拷貝到其它所有接口,而且集線器不支持 STP/RSTP ,因此 SW2 從 G0/11 接口發(fā)出的 BPDU 會被集線器發(fā)送到 SW2 的 G0/12 接口,反之亦然。當 SW2 的指定接口 G0/11 出現(xiàn)故障時,備份接口 G0/12 將接替它的工作,負責與相應的網段實現(xiàn)數(shù)據交互。 RSTP 接口狀態(tài)STP 有 5 種接口狀態(tài),分別是禁用、阻塞、偵聽、學習和轉發(fā),而 RSTP 對接口狀態(tài)進行了簡化,把禁用、阻塞、偵聽狀態(tài)合并為丟棄狀態(tài)( Discarding )。因為這三類狀態(tài)的功能區(qū)別不大,接口都不學習 MAC 地址,也不轉發(fā)數(shù)據,這也是丟棄狀態(tài)接口的處理方式。那么 RSTP 就是 3 種狀態(tài),即丟棄狀態(tài)( Discarding )、學習狀態(tài)( Learning )和轉發(fā)狀態(tài)( Forwarding )。學習和轉發(fā)狀態(tài)保持不變,和 STP 中的定義相同。 邊緣接口如果交換機的接口連接的是終端設備,比如 PC 、服務器、打印機等,而不是其它交換機的接口,那么這些接口不太可能造成環(huán)路。我們就可以將交換機的接口配置為邊緣接口( Edge Port ),邊緣接口默認不參加生成樹計算。當邊緣接口被開啟后,立即切換到轉發(fā)狀態(tài)并開始收發(fā)數(shù)據流量,而不用經歷轉發(fā)延遲時間,提升網絡效率。邊緣接口的開啟和關閉都不會觸發(fā) RSTP 拓撲變更。 P/A 機制在 STP 中,交換機的一個接口成為指定接口后,還需要經過偵聽和學習狀態(tài),即經過 30 秒時間,才能進入轉發(fā)狀態(tài)。而 RSTP 引入 P/A 機制( Proposal/Agreement ,握手/贊同),讓指定接口與對端接口進行握手,并逐級進行傳遞避免環(huán)路,這個過程不使用計時器。也就是說,完成握手的 RSTP 指定接口從丟棄狀態(tài)直接進入到轉發(fā)狀態(tài),而不需要經過其它狀態(tài),加速生成樹的收斂。 Proposal 消息和 Agreement 消息都是 BPDU 。交換機通過 BPDU 中的 Flag(標記)字段來標識 BPDU 的不同類型,包括 Proposal BPDU 和 Agreement BPDU 。 如上圖所示,在 SW1 和 SW2 新增一條鏈路,由于 SW1 的橋優(yōu)先級最高,成為這個網絡中的根橋,SW1 的 G0/1 接口成為指定接口,SW2 的 G0/2 接口成為根接口。如果是運行 STP ,那么指定接口和根接口必須經歷偵聽和學習狀態(tài)才能進入轉發(fā)狀態(tài)。 如果網絡中運行的是 RSTP ,當 SW1 與 SW2 之間新增一條鏈路后。
整個 P/A 過程很快就完成了,在新增鏈路后的極短時間內,PC2 就可以和 PC1 通信。另外,由于 SW2 的指定接口 G0/4 還是處于丟棄狀態(tài),那么這個接口也會向下游交換機發(fā)起一個 P/A 過程。 保護功能交換機有多種保護功能,用于提升生成樹協(xié)議的穩(wěn)定性。 1、BPDU 保護( BPDU Protection )當邊緣接口收到 BPDU 后,會馬上變成一個普通的 RSTP 接口,可能引發(fā)網絡中 RSTP 重新計算,從而對網絡造成影響。通常邊緣接口連接終端設備,應該不會收到 BPDU ,但是如果誤接了交換機,那么這個邊緣接口就有可能收到 BPDU ,會引入環(huán)路隱患。還有一種情況是惡意用戶連接邊緣接口后,發(fā)起 BPDU 攻擊,也會對網絡造成很大影響。 通過在交換機上開啟 BPDU 保護功能就可以解決這個問題。當交換機開啟這個功能后,如果邊緣接口收到 BPDU ,那么交換機馬上把接口關閉,置為 Error-Down ,同時觸發(fā)告警。 如果受到保護的邊緣接口因為收到 BPDU 而被關閉,默認情況下是不會自動恢復的,需要在交換機上手動執(zhí)行命令開啟來恢復接口。除此之外,還可以手動設置接口自動恢復功能,在指定時間后自動恢復。 2、根保護( Root Protection )RSTP 根據根橋計算出無環(huán)拓撲,根橋是很重要的。在已經完成收斂的 RSTP 網絡中,如果根橋發(fā)生變化,那么 RSTP 就會重新計算,重新計算時網絡將不可用。通常我們會選擇網絡中性能最好和位置最重要的設備作為根橋,將其優(yōu)先級設置為最小值 0 ,但是這個措施并不能保證這個設備永遠是網絡中的根橋,畢竟根橋的角色是可以搶占的。如果網絡中新接入的交換機優(yōu)先級被配置為 0 ,恰好 MAC 地址比根橋更小,那么新交換機將搶占成為新的根橋,還會造成網絡的 RSTP 重新計算,從而對網絡造成影響。 在交換機的相關接口部署根保護功能,就可以規(guī)避這個問題。當根橋的指定接口開啟根保護功能后,這個指定接口如果收到更優(yōu)的 BPDU ,就會過濾這個 BPDU ,并將接口切換至丟棄狀態(tài),這樣根橋的地位就可以保持。如果這個指定接口不再收到更優(yōu)的 BPDU,那么兩倍的轉發(fā)延遲時間后,接口自動恢復到轉發(fā)狀態(tài)。 3、環(huán)路保護( Loop Protection )當網絡中出現(xiàn)線路單向故障或者網絡擁塞時,交換機的根接口和丟棄狀態(tài)的替代接口將無法正常接收 BPDU ,就會導致交換機重新進行 RSTP 重新計算,接口的角色和狀態(tài)會發(fā)生變化,可能會在網絡中引入環(huán)路。 如上圖所示,SW1 是根橋,SW3 的 G0/11 是根接口,G0/12 是替代接口處于丟棄狀態(tài)。SW3 的 G0/12 接口雖然處于丟棄狀態(tài),但是會持續(xù)偵聽 BPDU 。當網絡正常時,SW3 會在 G0/12 接口上周期性的收到 BPDU 。如果 SW2 和 SW3 的鏈路出現(xiàn)單向故障,從 SW2 到 SW3 不通,從 SW3 到 SW2 正常。那么 SW3 的 G0/12 接口無法收到 SW2 發(fā)送的 BPDU ,導致 SW3 認為 G0/12 接口的上游設備故障。過了 Max Age 時間后,SW3 的 G0/12 接口會成為指定接口,并切換到轉發(fā)狀態(tài),然后開始發(fā)送流量。但是 SW2 并未發(fā)生故障,因此一旦 SW3 的 G0/12 接口切換到轉發(fā)狀態(tài),網絡中便出現(xiàn)了環(huán)路。 使用環(huán)路保護功能可以規(guī)避這個問題:
4、拓撲變更保護( TC Protection )一個穩(wěn)定的網絡是不會頻繁出現(xiàn)拓撲變更的,一旦網絡拓撲出現(xiàn)變更,TC BPDU( TC 置位的 BPDU )會泛洪到全網,而 TC BPDU 會讓交換機執(zhí)行 MAC 地址表刪除的操作。如果網絡環(huán)境很不穩(wěn)定,導致 TC BPDU 頻繁的泛洪,或者是網絡中存在惡意用戶,發(fā)送大量的 TC BPDU 對網絡進行攻擊,那么會極大消耗交換機的性能。 交換機開啟拓撲變更保護功能后,默認將在 2 秒內只進行一次的 TC BPDU 處理,如果在 2 秒內收到了 2 個及以上的 TC BPDU ,那么交換機只會處理一次,對于超出的部分,必須等待 2 秒后才進行處理。 BPDURSTP 的配置 BPDU 稱為 RST BPDU( Rapid Spanning Tree BPDU ),它的格式和 STP 的配置 BPDU 差不多,只有個別字段做了修改。RST BPDU 的 “ 協(xié)議版本 ID ” 字段值是 0x02 ,“ BPDU 類型 ”字段值是 0x02 。主要變化是在 “ 標志 ” 字段,這個字段一共 8 bit ,STP 只使用了最高比特位和最低比特位,而 RSTP 使用了剩余的 6 個比特位,并對這些比特位分別進行了定義。 RST BPDU 的 Aggrement(同意)和 Proposal(提議)比特位用于 P/A( Proposal/Aggrement )機制。Port Role(接口角色)比特位是 2 bit ,用于標識 RST BPDU 發(fā)送接口的接口角色,01 表示根接口,10 表示替代接口,11 表示指定接口,而 00 保留使用。最后的 Forwarding(轉發(fā))和 Learning(學習)比特位表示 RST BPDU 發(fā)送接口的接口狀態(tài)。 RSTP 與 STP 不同,在網絡收斂后,無論是根橋還是非根橋,都會周期性的發(fā)送配置 BPDU,對于非根橋,不需要在根接口收到 BPDU 之后而產生自己的配置 BPDU ,而是自發(fā)的、周期性發(fā)送 BPDU 。 MSTP雖然 RSTP 對 STP 進行了改進,但是還有一個缺陷,那就是所有 VLAN 共用一棵生成樹。這樣就無法實現(xiàn)負載分擔,導致線路帶來利用率低、設備資源利用率低。 如果有一種生成樹協(xié)議,基于 VLAN 進行生成樹的計算,那么這種技術有哪些優(yōu)缺點?優(yōu)點很明顯,交換機為每一個 VLAN 單獨計算一棵生成樹,可以實現(xiàn)流量的負載分擔。但是也有一個缺陷,如果網絡中的 VLAN 數(shù)量很多,那么所有交換機都要為每一個 VLAN 計算一棵生成樹,那么設備的資源消耗巨大,甚至會影響到正常流量的處理。 為了解決這個問題,MSTP( Multiple Instances Spanning Tree Protocol )出現(xiàn)了,兼容 STP 和 RSTP 。生成樹不是基于 VLAN 運行的,而是基于 Instance(實例)運行的。Instance 是一個或多個 VLAN 的集合。 我們可以將一個或多個 VLAN 映射到一個 Instance ,然后 MSTP 基于 Instance 計算生成樹?;?Instance 的生成樹稱為 MSTI( Multiple Spanning Tree Instance ,多生成樹實例),MSTP 為每一個 Instance 維護獨立的 MSTI 。映射到同一個 Instance 的 VLAN 共享一棵生成樹??筛鶕嶋H需求,在交換機上創(chuàng)建多個 Instance ,然后將指定的 VLAN 映射到相應的 Instance 。一個 Instance 可以包含多個 VLAN ,但是一個 VLAN 只能被映射到一個 Instance 。 在創(chuàng)建 Instance 后,我們可以對 MSTI 進行主根橋、次根橋、接口優(yōu)先級或 Cost 等配置。如果網絡中有大量 VLAN ,那么我們可以將 VLAN 按照一定規(guī)律分別映射到不同的 Instance 中,從而實現(xiàn)負載分擔,而交換機僅對這幾個 Instance 進行生成樹計算,設備資源消耗大大降低。 MSTP 引入了域( Region )的概念,我們可以將網絡劃分成多個 MST 域( Multiple Spanning Tree Region ,多生成樹域),一個 MST 域可以包含一臺或多臺交換機,同一個 MST 域的交換機必須配置相同的域名( Region Name )、相同的修訂級別( Revision Level ),以及相同的 VLAN 與 Instance 的映射關系。 替代方案學完 STP/RSTP/MSTP 后,解決網絡中的二層環(huán)路問題,想到的解決方案就是生成樹協(xié)議。但是生成樹協(xié)議有天生的缺陷,收斂速度慢,雖然 RSTP/MSTP 對 STP 進行了改進,但是在毫秒級切換的要求下,生成樹就不適用了。而且生成樹的原理是將環(huán)路中的接口進行阻塞,導致被阻塞的線路無法承載流量,造成網絡資源的浪費。MSTP 在這方面進行了優(yōu)化,讓不同 VLAN 的流量可以在不同線路進行負載分擔,可是對于單個 VLAN 來說,始終會有一些線路無法承載流量?,F(xiàn)在已經有許多其它技術或解決方案用于替代生成樹協(xié)議。 1、Smart LinkSmart Link 是為雙上行組網定做的解決方案。 如上圖所示,交換機 SW3 一條上行鏈路連接 SW1 ,另一條上行鏈路連接 SW2 。在 SW3 上創(chuàng)建 Smart Link 組,將 SW3 的兩個上行接口添加到這個組里,G0/1 口指定為 Master 接口、G0/2 口指定為 Slave 接口。默認只有 Master 接口是活躍的( Active ),這個接口可以正常收發(fā)流量,而 G0/2 接口會被阻塞( Inactive )。這樣網絡中的二層環(huán)路將被打破。 如上圖所示,當 SW3 的 G0/1 接口發(fā)生故障,或者線路發(fā)生故障,Smart Link 會馬上感知到,并且實現(xiàn)毫秒級的快速切換,G0/2 接口將立即切換到 Active 狀態(tài),并開始收發(fā)流量。在 Smart Link 切換過程中,SW3 還可以使用 Flush 報文去刷新上聯(lián)設備,即 SW1 和 SW2 的 MAC 地址表等數(shù)據,加快網絡收斂。 Smart Link 配置簡單,切換時間快。由于工作機制的限制,只能適用于特定的雙上行組網場景。SW1 、SW2 和 SW3 使用 Smart Link 防環(huán)后,也就不需要使用生成樹協(xié)議了。 2、iStack/CSSiStack 是華為盒式交換機的堆疊技術。而 CSS( Cluster Switch System ,集群交換系統(tǒng))是華為框式交換機的集群技術。
所謂堆疊,是指多臺物理交換機通過特定的線纜連接,并通過相應的配置,組成邏輯上的一臺設備的技術。 STP/RSTP/MSTP 或 Smart Link 都是采用阻塞特定接口的方式實現(xiàn)網絡的無環(huán)化,使得網絡資源得不到充分利用。一旦使用堆疊/集群技術,情況就不一樣了。如上圖所示,假設 SW1 和 SW2 都是盒式交換機,且都支持 iStack ,那么可以使用堆疊線纜把 SW1 和 SW2 連接起來,然后組建堆疊系統(tǒng),建立完成后,SW1 和 SW2 不再是兩臺單獨的交換機,而是一個有兩個槽位的框式交換機。那么網絡結構將大大簡化,由于 SW1 和 SW2 在邏輯上是一臺設備,設備的管理和配置將變得簡單。SW3 分別與 SW1 、SW2 互聯(lián)的線路,現(xiàn)在可以看做是兩臺交換機之間的兩條鏈路,我們可以將這兩條鏈路進行聚合,這樣網絡中將不存在二層環(huán)路,也無需部署防環(huán)技術。而且所有的鏈路都處于工作狀態(tài),沒有接口被阻塞,設備資源和鏈路資源的利用率將最大化。 3、無二層環(huán)路場景在一些網絡中,我們會人為的將網絡中的二層環(huán)路打破,從而規(guī)避防環(huán)技術的應用。如上圖所示,匯聚層交換機 DSW1 、DSW2 與接入層交換機 ASW1 、ASW2 構成一個倒 U 型組網,ASW1 和 ASW2 之間未連線,因此這四臺交換機組成的網絡中,并不存在二層環(huán)路,也就無需使用生成樹技術或其它防環(huán)技術了。 這個網絡中,服務器使用了雙上行鏈路,服務器的兩張網卡以主備的方式運行,假設連接 ASW1 的網卡為主網卡。如果 ASW1 和 DSW1 的鏈路發(fā)生故障,服務器是無法感知到的,依然會從主網卡發(fā)送數(shù)據,而數(shù)據到達 ASW1 后被丟棄。一種解決方案就是在服務器上部署相應的應用程序,周期性的從主網卡發(fā)出探測報文,來探測到默認網關的可達性,DSW1 和 DSW2 上配置服務器的默認網關,如果發(fā)現(xiàn)主網卡到默認網關不可達,則自動將流量切換到備網卡。 另一種解決方案就是使用華為的 Monitor Link 技術。Monitor Link 是一種接口聯(lián)動技術,交換機部署后會持續(xù)監(jiān)控 Monitor Link 的上行接口(可指定接口),當上行接口發(fā)生故障時,交換機馬上將下行接口(可指定接口)關閉。ASW1 可部署 Monitor Link 技術,將 DSW1 的接口配置為上行接口,將連接服務器網卡的接口配置為下行接口。這樣的話,當 ASW1 的上行接口發(fā)生故障,交換機立馬將連接服務器的下行接口關閉,從而使得服務器立即感知到故障的發(fā)生,然后將連接 ASW2 的網卡切換成主網卡,并在新的主網卡上發(fā)送數(shù)據。 結尾STP 可以在網絡中形成一棵無環(huán)路的樹,解決環(huán)路故障并實現(xiàn)冗余備份。 RSTP 在 STP 功能基礎上,通過替代接口讓根接口快速進入轉發(fā)狀態(tài)、采用 P/A 機制和設置邊緣接口等方法,實現(xiàn)了更快的收斂速度。 MSTP 則在大規(guī)模、多 VLAN 環(huán)境下形成多個生成樹實例,從而提供多 VLAN 負載均衡。 MSTP 同時兼容 STP 、RSTP ,運行 MSTP 的設備可以識別 STP 、RSTP 兩種協(xié)議報,并應用于生成樹計算。 另外 RSTP/MSTP 與 STP 的接口狀態(tài)不同,從 STP 的 5 種變成 3 種。 RSTP/MSTP 中,把禁用、阻塞、偵聽三種狀態(tài)合并為丟棄狀態(tài),減少狀態(tài)數(shù)量,簡化生成樹計算,加快收斂速度。 RSTP/MSTP 有更快的收斂速度,簡化的端口狀態(tài);MSTP 能夠實現(xiàn)不同 VLAN 的負載分擔。因此盡量使用 MSTP 來避免環(huán)路。 |
|