Best practice to prevent network loops with Omada SDN solution
適用於:Omada SDN 控制器 v5 及以上版本、Omada L2+ 和 L3 交換器。
本文將介紹包括路由器、各層交換器和終端設備在內網路的建議設定。
1. 防止迴圈的介紹。
在網路中,當兩個設備之間存在多條路徑時,就會發生網路迴圈,導致數據傳輸進行無限循環,進而引發廣播風暴、MAC Table 不穩定,以及整體網路性能顯著下降,甚至完全崩潰。
有幾種技術可用於防止和解決乙太網路迴圈問題,例如生成樹(Spanning Tree,STP)、迴圈偵測(Loopback Detection,LPD)、乙太網環保護切換技術(Ethernet Ring Protection Switching,ERPS)等。Omada SDN 解決方案結合了兩個關鍵機制:STP 和迴圈偵測。迴圈偵測是一項識別網路中迴圈的功能,當偵測到迴圈時,系統可以自動封鎖某些連接埠,以封鎖迴圈並維持網路穩定性。STP 是一種網路協議,用在防止乙太網路中的網路迴圈,它在連接的 Layer-2 bridges(通常是乙太網路交換器)的網路中建立一個 Spanning Tree,並禁止所有不屬於 Spanning Tree 的所有其他連接,以防止迴圈產生。
2. 我們建議的做法以及為何不使用單一技術。
我們建議僅在交換器的連接端口之間啟用 STP,並僅在所有 Edge 埠上啟用 LPD(迴圈偵測)。
僅使用迴圈偵測可能導致上層交換器錯誤地封鎖連接埠,對網路產生擴大影響。LPD 的做法是每個啟用 LPD 的連接埠會定期廣播偵測迴圈的封包,並檢查是否稍後會在此埠上收到發送的封包,如果是,則此埠將因偵測到迴圈而被封鎖。如下圖所示,通常如果交換器之間沒有設定備援線路,最終用戶很可能會在 Edge 連接埠之間錯誤地形成迴圈,他們可能會用網路線將兩個連接埠連接在一起,或者某些無線設備可能因無線回程或其他原因而形成迴圈。在這種情況下,最好的做法是只封鎖這個 Edge 埠,迴圈就會消失,但是,如果在所有連接埠上啟用 LPD,則 Uplink 埠,甚至核心交換器的埠也會發送檢測封包,這些封包也有可能在整個網路中一直傳播並通過 Edge 的迴圈回到此埠。那麼這個埠將會被封鎖,如果這是核心交換器的 Uplink 連接埠,可能會導致整個網路癱瘓,這是無法接受的。
僅使用 STP 可能會導致兩個問題,以下透過文字和圖表進行解釋。
問題一:大多數終端裝置(如 AP、PC 和 IoT 裝置)不會回應 STP BPDU。在這種情況下,依據 IEEE 協議STP 將必須等待 2 倍的轉發延遲(預設為 30 秒)才能開始在該連接埠上進行傳輸,這將是一個很長的等待時間。
問題二:通常連接到 Edge 埠的裝置會頻繁地插拔,而且如果乙太網路線品質不好,該連接埠也會頻繁地 linked up 或 down。 每次連接埠 linked up 或 down 時,整個 STP 系統都需要計算和重新收斂,造成系統資源的浪費。
因此,透過結合這兩個功能,可以在網路拓樸的所有層級上有效地避免和解決網路迴圈問題,並最小化拓樸變化對網路的影響,典型的拓樸如下所示:
Omada SDN 解決方案建議在交換器之間的連接埠上設定 STP 功能,並在連接有線用戶端(如無線 AP 和 IoT 裝置)的 access 交換器連接埠上設定迴圈偵測功能。以上面的網路拓撲為例,用於連接其他交換器形成備援網路拓撲的交換器連接埠為 trunk 埠,用於連接 Omada EAP、IP 攝影機和其他用戶端的交換器連接埠為 access 埠。
3. 控制器模式下的設定。
關於 trunk 埠如何設定 STP,請參考 在 Omada SDN 控制器模式中設定 Spanning Tree,使用相似的網路拓撲,透過 STP 建立一個備援和無迴圈的網路。
若要在 access 埠上設定迴圈偵測功能,請前往站點設定 > 有線網路 > 區域網路(LAN) > 設定檔, 編輯要套用於 access 埠的設定檔,並為迴圈控制選擇偵測迴圈的模式。 「All」設定檔啟用「根據連接埠偵測迴圈」模式,控制器產生的其他設定檔可能會因控制器版本而擁有不同的模式,如果 access 埠套用了設定檔,建議檢查迴圈控制模式並將其變更為「根據連接埠」。在連接埠設定檔上啟用偵測迴圈功能後,綁定該設定檔的 access 埠會自動啟用此功能。
- 根據連接埠偵測迴圈:當偵測到某個連接埠存在迴圈時,會封鎖該連接埠,此為經常使用;
- 根據 VLAN 偵測迴圈:當偵測到某個 VLAN 存在迴圈時,該 VLAN 將會被封鎖;
- Spanning Tree:連接埠上將啟用 STP,請為 trunk 埠選擇此模式。
您也可以透過連接埠的取代設定檔來啟用該功能。前往設備,點擊交換器,然後按一下連接埠,編輯交換器連接埠,或批次編輯特定交換器連接埠,點擊 “取代設定檔”,選擇 “根據連接埠偵測迴圈”,然後點擊 “套用” 以使該功能在連接埠上生效。
4. 獨立模式下的設定。
- 在獨立模式下設定 STP
在管理網頁中,前往 L2 FEATURES – Spanning Tree – STP Config,首先,在 Spanning Tree 選項,勾選全域啟用(Glbbal Config),模式方面,通常我們都會使用RSTP,CIST 優先權等參數,這邊保持預設即可,也可以設定更高的優先權(請注意,數字越小代表著優先權越高,例如 4096 會高於 32768)在核心交換器上,以確保其連接埠不會被封鎖。設定完成後,別忘了點擊「套用」。
之後,進入連接埠設定(Port Config),並在此交換器的 uplink 連接埠上啟用它。設定完成後點擊 套用。
- 在獨立模式下設定偵測迴圈
在管理網頁中,前往 L2 FEATURES – Switching – Port – Loopback Detection,首先,在全域的部分勾選「Loopback Detection Status」以啟用它,並在所有需要啟用 LPD 的 Edge 埠上啟用它。保持其他參數為預設值即可,並不要忘記點擊 套用 以保存這些設定。
在這裡,我們介紹了預防有線網路的網路迴圈的建議方案及設定方法。如需更詳細的介紹和 CLI 命令,請查閱用戶指南和 CLI 指南。