定義:igmp snooping運行在數據鏈路層,是二層以太網交換機上的組播約束機制,用於管理和控制組播組。
當二層以太網交換機收到主機和路由器之間傳遞的igmp報文時,igmp snooping分析igmp報文所帶的信息。當監聽到主機發出的igmp主機報告報文時,交換機就將該主機加入到相應的組播表中;當監聽到主機發出的igmp離開報文時,交換機就將刪除與該主機對應的組播表項。通過不斷地監聽igmp報文,交換機就可以在二層建立和維護mac組播地址表。之後,交換機就可以根據mac組播地址錶轉發從路由器下發的組播報文。
沒有運行igmp snooping時,組播報文將在二層廣播,如圖3-1所示。
運行igmp snooping後,報文將不再在二層廣播,而是進行二層組播,如圖3-2所示.
1、igmpv3 snooping簡介
s9500交換機支持igmpv1、 igmpv2、igmpv3協議。igmpv3協議是在igmpv2報文的基礎上的擴充。igmpv3允許主機指定接收某些網絡發送的某些組播組,相比以前的版本,增加了主機的控制能力,不僅可以指定組播組,還能指定組播的源。
igmp查詢報文分通用查詢報文、特定組查詢報文,下文着重介紹igmpv3新增的報文。
1.1 查詢報文
igmpv3新增特定源組查詢報文格式如下,從圖中可以分辨igmpv2、igmpv3查詢報文的格式的不同:
對於通用查詢報文,igmpv2報文長度爲8字節,igmpv3長度爲12字節。
對於特定組查詢報文,igmpv2報文長度爲8字節,igmpv3長度大於等於12字節。
設備收到igmpv3查詢報文時,立即在vlan內透傳該報文,然後再轉換爲igmpv2查詢報文,進行後續處理。
1.2 成員關係報告報文
從圖中可以分辨igmpv2、igmpv3查詢報文的格式的不同:
igmpv2成員關係報文類型爲0x16;
igmpv3新增igmpv3成員關係報告報文,igmpv2協議不能識別該報文。
收到igmpv3 report報文時,立即在vlan內透傳該報文,然後再轉換爲igmpv2 report報文,進行後續處理。
igmpv3 report報文只支持include模式,即除了include { null } 報文轉換爲igmpv2 leave報文外,其它類型的報文都解析爲igmpv2 report報文
1.3 igmp snooping的實現
1.3.1 與igmp snooping相關的概念
爲描述方便,先介紹一下以太網交換機上與igmp snooping相關的概念。
路由器端口(router port):交換機上連接組播路由器的端口,而不是指路由器設備上的端口。
組播成員端口:以太網交換機上與組播組成員相連的端口。此處的組播組成員是加入某個組播組的主機。
mac組播組:以太網交換機維護的以mac組播地址標識的組播組。
路由器端口老化時間:路由器端口老化定時器設置的時間,如果在此定時器超時後還沒有收到igmp通用查詢報文,交換機就認爲這個端口不再是一個路由器端口。
組播組成員端口老化時間:當一個端口加入ip組播組的同時,啓動該端口的老化定時器,組播組端口成員老化時間就是該定時器設置的時間。如果在此定時器超時後還沒有收到igmp報告報文,那麼以太網交換機就向該端口發送igmp特定組查詢報文,如果還是接收不到igmp報告報文,則交換機就認爲此端口不再是該組播組成員端口。
最大響應查詢時間:當向組播成員端口發送igmp特定組查詢報文的同時,以太網交換機會啓動一個響應查詢定時器,最大響應查詢時間就是該定時器設置的時間。如果在最大響應查詢時間之內沒有收到igmp報告報文,以太網交換機就把該端口從組播成員端口中刪去。
1.3.2. 利用igmp snooping實現二層組播
以太網交換機通過運行igmp snooping實現對igmp報文的偵測,併爲主機及其對應端口與相應的組播組地址建立映射關係。爲實現igmp snooping,二層以太網交換機對各種igmp報文的處理過程如圖3-5所示。
igmp通用查詢報文:igmp通用查詢報文是組播路由器向組播組成員發送的報文,用於查詢哪些組播組存在成員。當收到igmp通用查詢報文時,如果收到通用查詢報文的端口原來就是路由器端口,以太網交換機就重置該端口的老化定時器;如果收到通用查詢報文的端口原來不是路由器端口,則交換機啓動對該端口的老化定時器。
igmp特定組查詢報文:igmp特定組查詢報文是組播路由器向組播組成員發送的報文,用於查詢特定組播組是否存在成員。當以太網交換機收到igmp特定組查詢報文時,只向被查詢的ip組播組發特定組查詢。
igmp報告報文:igmp報告報文是主機向組播路由器發送的報告報文,用於申請加入某個組播組或者應答igmp查詢報文。當以太網交換機收到igmp報告報文時,首先判斷該報文要加入的ip組播組對應的mac組播組是否已經存在。
如果對應的mac組播組不存在,不只是通知路由器有成員加入某個組播組,還會新建mac組播組,並將接收報告報文的端口加入該mac組播組中,同時啓動該端口的老化定時器,將該端口所屬vlan下存在的所有路由器端口加入到此mac組播轉發表中,而且新建ip組播組,並將接收報告報文的端口加入到ip組播組中。
如果該報文對應的mac組播組已經存在,但是接收報告報文的端口不在該mac組播組中,則將接收報告報文的端口加入mac組播組中並啓動該端口的老化定時器,然後判斷此報文對應的ip組播組是否存在:如果不存在,則新建ip組播組並把接收報告報文的端口加入到ip組播組中,如果存在則將接收報告報文的端口加入到ip組播組中。
如果該報文對應的mac組播組已存在,並且接收報告報文的端口也已經存在於該mac組播組,則僅重置接收報告報文的端口上的老化定時器。
igmp離開報文:igmp離開報文是組播組成員向組播路由器發送的報文,用於告知路由器主機離開了某個組播組。當以太網交換機收到對某ip組播組的離開報文,則會向接收此離開報文的端口發送所離開組的特定組查詢報文,以確認此端口相連的主機中還有沒有此組播組的其他成員,同時啓動一個響應查詢定時器。如果在該定時器超時的時候還沒有收到該組播組的報告報文,則將該端口從相應mac組播組中刪去。如果mac組播組沒有組播成員端口時,交換機將通知組播路由器將該分支從組播樹中刪除。
可以通過將二層交換機的某個端口配置爲組播組成員來響應組播路由器的igmp查詢報文,從而避免組播路由器認爲當前網段沒有組播組的成員而取消相應的路徑。具體配置原理及配置過程可參見“6.3.10 配置路由器加入指定組播組”。
缺省情況下,二層交換機端口不加入任何組播組。
指定的端口必須屬於該vlan,且該vlan使能了igmp snooping協議,否則配置不會起作用。