如何為飯店 IPTV 架構在 Omada 交換器上設定 IGMP Snooping
本文將介紹在飯店 IPTV 場景下如何在 Omada 交換器上設定 IGMP Snooping,包括了獨立管理模式和控制器模式。
注意:本文介紹的所有 CLI 指令僅實現基本功能,僅以 Gigabit 乙太網路連接埠為例,更詳細的設定和參數請查看 CLI 指南。
1. 常見拓撲
在飯店 IPTV 場景中,常見拓樸如下:
與 SOHO 場景不同,大多數 IPTV 伺服器或 IPTV multicast source 都包含在飯店 LAN 網路中,因此 multicast 流量不會來自 WAN 端。IPTV source 通常會連接到核心交換器或先連接到存取層交換器再到核心交換器,這樣 multicast 流量就能夠分發到 LAN 中的所有 IPTV 設備。然後,存取層交換器連接到核心交換器,並直接或透過房間 AP 連接到飯店電視。
2. IGMP 系統如何運作
IGMP 系統由幾個部分組合而成:multicast source、IGMP Querier、IGMP Snooping、IGMP Receiver,請參閱下圖:
此圖展示了 IGMP 系統的基本架構,對於我們的產品來說,運作 IGMP Snooping 的設備就是交換器,我們的交換器也可以設定為 IGMP Snooping Querier,來取代圖中的 Querier。
在 IGMP Snooping v2 中,有三種 IGMP 封包:IGMP Query(查詢)、IGMP Report(報告)和 IGMP Leave(離開)。對於 Multicast Source 來說,如果不支援 Query 功能,它只會 Broadcast 所有的串流,浪費網路資源,啟用 IGMP Snooping 可以解決這個問題。Querier 會發送 IGMP Query,它由 General Query 和 Specific Query 組成,這裡通常是 General Query ,它會詢問是否有任何裝置請求任何 multicast 串流,IGMP Query 將由交換器進行轉發,最終到達 IGMP Receiver 例如像是 IPTV,如果有人想要觀看某個頻道,IPTV 會傳送 IGMP Report,其中包含該頻道的資訊,來請求這個串流,並加入這個 multicast 群組。當使用者切換到其他頻道時,也就是說 IPTV 不再請求這個串流,IPTV 會發送 IGMP Leave 訊息來退出這個 multicast 群組。
對於所有運作 IGMP Snooping 的設備,有兩種連接埠角色可以協助建立 multicast 群組,即路由器連接埠(Router Port)和成員連接埠(Member Port)。對於交換器來說,收到 IGMP Query 封包的連接埠將成為路由器連接埠,收到 IGMP Report/leave 的連接埠將成為成員連接埠。你可以假設路由器連接埠是交換器上距離 Querier 最近的連接埠,而成員連接埠則是離 Receiver 最近的連接埠。因此,在先前提到的 Query 過程之後,運作 IGMP Snooping 的交換器會建立 multicast 群組,包括這個串流的 multicast IP、這個串流所處的 VLAN,以及參與這個群組的連接埠,包括路由器連接埠和成員連接埠。如前所述, Multicast Source 會在網路中 Broadcast 這個串流。在建立了 multicast 群組之後,交換器只會將對應的 multicast 串流轉發到路由器連接埠和成員連接埠,而 IGMP Report/leave 封包僅會從成員連接埠轉發到路由器連接埠。
IGMP v2 的基本運作流程如下,而 IGMP v3 在此基礎上增加了一些功能來提高整體效率,但基本流程和原理與 v2 相同。
3. 整體設定原則
這裡以前面的拓樸為範例介紹一下 IGMP Snooping 的整體設定原則。以上是我們在設定 IGMP Snooping 時的一些建議,有助於避免錯誤的操作,提高設備效率,帶來更好的使用者體驗。
3.1 關閉路由器的 IGMP 功能。
在飯店 IPTV 情境中,由於 IPTV Source 已經包含在 LAN 內,multicast 串流不會從 WAN 端進來,因此路由器實際上不會參與整個 IGMP 過程。如果你在路由器上啟用 IGMP 功能,它將會被辨識為 Querier,這樣與它連接的交換器連接埠就會成為路由器連接埠。之後,所有的 multicast 串流將會被轉發到路由器,這會給路由器帶來不必要的負擔,可能會導致路由器的 CPU 和記憶體占用過高,影響路由器的正常運作。這就是為什麼建議關閉路由器上的 IGMP Query 或 IGMP Proxy 功能,無論是 TP-Link 路由器還是其他供應商的路由器。
3.2 啟用丟棄來自未知 multicast 群組的封包。
設定 IGMP Snooping 時,可以選擇轉發或丟棄未知群組的封包。這裡,我們建議您選擇丟棄所有來自未知群組的封包,原因是對於未知群組,沒有記錄成員連接埠的表,所以實際上交換器不知道這些封包應該轉發到哪裡,並且如果選擇轉發,則會被 broadcast,造成網路資源的浪費,所以最好的選擇是丟棄。
注意:對於 Omada 交換器,你必須全域啟用 IGMP Snooping 和 MLD Snooping 兩項功能,才能啟用 multicast 丟棄未知群組封包的功能。
3.3 IGMP Snooping Querier 應該要最接近 Source 端。
在飯店 IPTV 情境中,由於 Source 需要來自終端裝置的 report 來決定要 multicast 哪些串流,因此需要一個 IGMP Snooping Querier。網路中只能有一個 Querier,並且只能在距離 IPTV Source 最近的交換器上進行設定。更直觀的解釋請看下圖:
在這裡可以看到,Querier 會向其他人發送 IGMP Query,這意味著它不會收到任何來自其他人的 IGMP Query,因此 Querier 上沒有路由器連接埠,因為我們知道啟用了 IGMP Snooping 的交換器將 IGMP Report 轉發到路由器連接埠,因此在這種情況下,該 Querier 不會將 IGMP Report 轉發給任何人。另一台交換器不會收到任何 IGMP Report,因此不會建立 multicast 群組,儘管 multicast Source 不斷發送串流,但由於這台交換器上沒有建立任何 multicast 群組,所有這些串流會被視為未知群組的串流並被丟棄。將最靠近 multicast Source 的交換器設定為 Querier,可以避免這個問題。這樣一來,IGMP Snooping 就能在整個網路中發揮作用,節省網路資源,同時確保 multicast 功能正常運作。
3.4 Fast Leave 和 Report Suppression 應最接近終端設備。
Fast Leave 會在交換器收到終端裝置的 IGMP Leave 時立即將連接埠從 IGMP 群組中刪除,以便 IPTV 可以更快地切換到另一個頻道,為使用者提供流暢的體驗,如果未啟用這個功能,交換器在收到 IGMP leave 訊息後會發送另一個特定的查詢,來確定是否有其他 IPTV 請求此串流。
Report Suppression 功能會收集來自不同成員連接埠的相同串流的 IGMP Report,最後只通過路由器連接埠發送一個 IGMP Report,這樣可以減少 Uplink 的負擔。在大型 multicast 網路中,例如安裝了三到四百台 IPTV 的情況下,建議啟用報告抑制功能。
如果你需要啟用這兩項功能,請記得在存取層交換器或直接連接 IPTV 的交換器上進行設定。請參考下圖:
對於 Fast Leave,你需要確保該連接埠上只連接了一台 IPTV,這樣在收到 IGMP Leave 訊息後立即停止串流,就不會影響到其他正在觀看相同頻道的 IPTV。在圖示所顯示的情境中,如果一個成員連接埠上連接了多台 IPTV,建議不要啟用 Fast Leave。啟用快速離開會中斷仍在觀看的其他電視的串流。即使在任何較高層級的 Uplink 交換器上啟用此功能也是一樣的。因此,請記得只在存取層交換器上,以及僅連接一台 IPTV 的連接埠上啟用 Fast Leave。
對於 Report Suppression,在存取層交換器上啟用此功能可以為整個網路節省最多的網路資源。這樣可以從一開始就減少 IGMP Report 封包的總數,並節省 Uplink 的頻寬。如果只在核心交換器上啟用 Report Suppression。而不在存取層交換器上啟用,那會是沒有意義的。
3.5 如果您在 LAN 中有多個 IPTV Source。
有時網路中有多個 IPTV Source,建議您將它們連接到同一台交換器,並將該交換器設定為 IGMP Snooping Querier,該交換器也會向所有 IPTV Source 發送 General Query。
如果你的 IPTV Source 對 Query 做出回應,交換器會為這些 IPTV Source 建立 IGMP 群組,記錄每個串流來自哪個連接埠。這樣,串流就不會被轉發到其他 IPTV Source,避免對 Source 造成過重的負擔或故障。
如果您的 IPTV Source 不回應 IGMP Query,您有兩個選項:
第一個是設定 Port Isolation 並阻止連接到每個 IPTV Source 連接埠之間的通訊。
以下是獨立管理模式和控制器模式下的設定方式。
- 獨立管理模式下設定 Port Isolation:
前往 L2 FEATURES – Switching – Port – Port Isolation,在這裡,你會看到一個表格,顯示連接埠及其轉發列表。該連接埠僅能與轉發列表中的連接進行通訊。
點擊表格右上角的 Edit,可以編輯轉發列表,例如我要切斷連接埠 1 和連接埠 2 之間的通訊,只需在其轉發連接埠列表中選擇連接埠 1,取消選擇連接埠 2 即可,點擊 Apply。
- 控制器模式下設定 Port Isolation:
在控制器模式下,進入 設備,點擊連接多個 IPTV Source 的設備,在設備的右側的詳細資訊頁面,點擊 連接埠,點擊與 IPTV Source 連接的連接埠編輯按鈕,勾選 取代設定檔,然後勾選 連接埠隔離(Port Isolation)。
在控制器模式下,啟用 Port Isolation 的連接埠之間的通訊將被切斷,但跟沒啟用 Port Isolation 的連接埠之間仍可保持正常通訊。
請注意,使用此方法設定取代設定檔時,會啟用取代設定檔,這將覆蓋您在連接埠設定檔中所做的設定,請記住在此處進行必要的變更。
第二種是在交換器上設定固定 IGMP 群組,手動建立群組並指定成員連接埠,來確保串流不會從 IPTV Source 轉發到另一個。
以下是獨立管理模式和控制器模式下的設定方式:
- 在獨立管理模式下設定固定 multicast 群組:
前往 L2 FEATURES – Multicast – IGMP Snooping – Static Group Config,在這裡,你可以在獨立管理模式下設定固定 multicast 群組,你將能夠手動綁定 multicast IP、VLAN ID 和指定的成員連接埠。
進入固定群組設定頁面後,您將會看到固定 multicast 群組表,點選表格右上角的 Add 開始設定新的固定群組,只需輸入對應的 multicast IP、該 multicast 串流運作所在的 VLAN ID,然後選擇要新增的成員連接埠,在這種情況下,只需選擇連接到您的 IPTV Source 之一的連接埠和連接到主網路的另一個連接埠,例如,我有一個 IPTV Source 連接到連接埠 1,連接埠 3 連接到核心交換器,所以我只需將連接埠 1 和 3 新增到固定群組中。設定完成後,來自某一 IPTV Source 的 multicast 串流將僅轉發到主網路,而不會轉發至任何其他 IPTV Source。
- 在控制器模式下設定固定 multicast 群組:
控制器模式下,需要透過 CLI 範本固定 multicast 群組。
前往 設定 – CLI 設定 – 設備 CLI,點擊 建立新的站點 CLI 設定檔,輸入名稱、描述,然後輸入 CLI 指令。
例如,我的一個 IPTV Source 連接到連接埠 1,連接埠 3 連接到核心交換器,該 IPTV Source 使用 IP 235.0.0.1 發送串流,在 VLAN 10 中運作,指令如下:
ip igmp snooping vlan-config 10 static 235.0.0.1 interface gigabitEthernet 1/0/1,1/0/3
由於您要設定多個 multicast 群組,因此您可以在此處逐組輸入所有指令。輸入完指令後,按一下下一步,然後選擇要套用 CLI 的設備。
然後按一下 確認,然後按一下 儲存,您將看到剛剛建立的 CLI 範本,點擊 套用 將其套用到所選設備上,您也可以透過點擊右上角的 查看 CLI 細節 來檢查是否已成功套用。
4. 獨立管理模式下的設定
進入網頁 GUI 後,您將在下列位置找到 IGMP 相關設定 L2 FEATURES – Multicast – IGMP Snooping。你會發現它分為四個部分:Global Config、Port Config、Static Group Config、IGMP Authentication。我們將介紹這些部分的設定。
4.1 Global Config。
這是 IGMP Snooping 的基本設定頁面,對於參與 IGMP 的交換器,你需要啟用 IGMP Snooping。
- IGMP Snooping:勾選啟用將在設備上全域啟用它。
- IGMP Version:IGMP 協定向後相容,因此您可以簡單地選擇 v3,它可以與其他僅支援 v1 或 v2 的裝置很好地配合。
- Unknown Multicast Groups:它決定交換器如何處理不存在 IGMP 群組的串流,這意味著目前沒有人想觀看這個串流,或者這是發送到未知群組的串流。建議將其設為丟棄(Discard)來節省網路資源。
- Header Validation:啟用它會檢查標頭中的一些總和,如果總和與 IGMP 協定不匹配,則該封包將被丟棄。我們建議不要啟用它,因為某些 IPTV 供應商可能沒有嚴格遵循相對應的協定,導致建立的封包無法透過驗證而被丟棄,進而導致整個系統無法正常運作。
設定完這四個選項後,不要忘記點擊 Apply 將其套用至設備上。
對於 IGMP VLAN 設定,它將顯示設備上建立的所有 VLAN,通常所有 IPTV 串流都在專門的 VLAN 中運作,因此請先為 IPTV 串流建立 VLAN Interface,然後您將在 IGMP VLAN 中找到該 VLAN 設定。您可以點選該 VLAN 右側的編輯按鈕,進入 VLAN 設定頁面。
- IGMP Snooping Status:勾選 Enable 來啟用 VLAN 的 IGMP Snooping。
- Fast Leave、Report Suppression:決定是否對該設備啟用 Fast Leave 和 Report Suppression,請遵循上一章節的說明原則。
- Member Port Aging Time、Router Port Aging Time、Leave time:保留預設值或依據需要進行設定。
- IGMP Snooping Querier:請查看上一章,來了解應在何處將交換器啟用為 IGMP Snooping Querier。勾選 Enable 將此交換器設定為 IGMP Snooping Querier 並設定包括 Query Interval、Maximum Response Time、Last Member Query Interval 和 Last Member Query Count 等參數,您可以保留預設值或依據需要手動設定。對於 General Query Source IP,是用來傳送 IGMP Query 的 IP 位址,一般情況下應該將其設定為本交換器的 IP 位址,這樣可以更方便地查看該 Querier 所傳送的封包。
- Static Router Ports、Forbidden Router Ports:無需設定。
完成 IGMP VLAN 設定後,按一下 Save。
4.2 Port Config。
在該設備上 Global 和每個 VLAN 上設定 IGMP 後,您還需要執行 Port Config,您可以依照連接埠或 LAG Group 進行設定。您需要為每個連接埠或 LAG 群組設定 IGMP Snooping 和 Fast Leave 狀態。
在這裡你會看到,對於 IGMP Snooping 和 Fast Leave,你也可以選擇按連接埠啟用或關閉它們,預設情況下,IGMP Snooping 在所有連接埠上啟用,並且 Fast Leave 在所有連接埠上為關閉狀態。說明如下:
- IGMP Snooping:你可以選擇 Globally、每個 VLAN 和每個連接埠啟用或關閉它。要在 VLAN B 中的連接埠 A 上啟用 IGMP Snooping,你必須在全域、VLAN B 和連接埠 A 上啟用 IGMP Snooping。IGMP Snooping 只有在這三個層級都啟用的情況下才會再連接埠上生效。
- Fast Leave:您可以選擇針對每個 VLAN 和每個連接埠啟用或關閉它,並且它將僅在啟用一層時就會生效。例如,連接埠 A 和 B 包含在 VLAN C 中,如果僅在 VLAN C 中啟用,即使在連接埠 A 和 B 上不啟用,也會對連接埠 A 和 B 生效。如果在連接埠 A 上啟用,而在連接埠 B 和 VLAN C 上未啟用,則該功能也會對連接埠 A 生效。
4.3 Static Group Config。
在 Static Group Config 中,您可以按一下 Add 來設定和新增固定 IGMP 群組。新增群組需要設定該群組的 multicast IP 位址以及運作該 multicast 群組的 VLAN。然後你要手動新增到這個固定 multicast 群組中的成員連接埠。新增後,所有固定 multicast 群組,包括其 VLAN ID 和 multicast IP、成員連接埠,都會顯示在表格中。
4.4 IGMP Authentication。
保留預設即可。
5. 控制器模式下的設定
在控制器模式下使用設備時,第一步也是為 IGMP 建立 VLAN,前往 設定 – 有線網路 – 區域網路(LAN) – 網路,點擊 建立新的 LAN,設定為 VLAN,僅適用於交換器,然後勾選啟用 IGMP Snooping,如果需要 IPv6 版本,也勾選啟用 MLD Snooping。然後點選儲存。
注意:對於 Omada 交換器,您必須全域啟用 IGMP Snooping 和 MLD Snooping 才能啟用 Multicast 丟棄未知功能。有兩種方法可以全域啟用 MLD Snooping 功能。1)使用 CLI 範本和指令「ipv6 mld snooping」進行設定;2)選擇一個 LAN-Networks 並啟用其 MLD Snooping,它將自動啟用全域 MLD Snooping。
到這裡,GUI 設定已經完成,您需要透過 CLI 範本設定其餘的參數。
前往 設定 – CLI 設定 – 設備 CLI,點擊 建立新的設備 CLI 設定檔,輸入名稱、描述,然後輸入 CLI 指令。
請注意,您也可以選擇在先在獨立管理模式下設定該設備,並匯出其設定檔,然後將其複製到此處。
以下是依據第 1 章所示拓樸和第 3 章原則設定 IGMP Snooping 的 CLI 指令(IPTV VLAN ID=100):
- 核心交換器和匯聚層交換器:
ipv6 mld snooping (啟用 IPv6 MLD Snooping 是啟用 drop-unkown 功能所必需的,即使是丟棄 IPv4 multicast 封包也是如此。以下的設定也類似。)
ip igmp snooping drop-unknown
- 存取層交換器到 IPTV:
ipv6 mld snooping
ip igmp snooping drop-unknown
ip igmp snooping vlan-config 100 report-suppression
ip igmp snooping vlan-config 100 immediate-leave(如果這個交換器上的所有連接埠只有連接到一台 IPTV,則可以使用這個指令;如果不是,請不要使用這個指令,改用下面的指令來將連接埠埠啟用。)
interface gigabitEthernet 1/0/1
ip igmp snooping immediate-leave
#
- 存取層交換器到 IPTV Source:
ipv6 mld snooping
ip igmp snooping drop-unknown
ip igmp snooping vlan-config 100 querier
欲了解更多用於設定其他參數的 CLI 指令,請參閱產品支援頁面的 CLI 指南。
完成輸入指令後,點擊 Next,並選擇您想要套用 CLI 的設備。
然後點擊 確認,然後按一下 儲存,您將看到剛剛建立的此 CLI 範本,點擊套用將其套用到所選設備上,您也可以透過點擊右上角的查看 CLI 細節來檢查它是否已成功套用。
針對所有可以設定的參數,請參閱第 3 章,獨立管理模式下的設定。此外,請記得依據第 2 章中介紹的原則,為拓撲中不同位置的交換器設定不同的參數和功能。
在這裡,我們已經介紹了如何在 Omada L2+ 和 L3 交換器的獨立管理模式下或控制器模式設定 IGMP Snooping,來適用於常見的飯店 IPTV 情境。
這篇faq是否有用?
您的反饋將幫助我們改善網站