IGMP SNOOPING網絡
- 廣泛組查詢
IGMP查詢器按期向本地網段內的全部主機與路由器(224.0.0.1)發送IGMP廣泛組查詢報文,以查詢該網段有哪些組播組的成員。
在收到IGMP廣泛組查詢報文時,交換機將其經過VLAN內除接收端口之外的其它全部端口轉發出去,並對該報文的接收端口作以下處理:
若是在路由器端口列表中已包含該動態路由器端口,則重置其老化定時器。
若是在路由器端口列表中還沒有包含該動態路由器端口,則將其添加到路由器端口列表中,並啓動其老化定時器。 -
報告成員關係
主機會向IGMP查詢器發送IGMP成員關係報告報文:
當組播組的成員主機收到IGMP查詢報文後,會回覆IGMP成員關係報告報文。
若是主機要加入某個組播組,它會主動向IGMP查詢器發送IGMP成員關係報告報文以聲明加入該組播組。
在收到IGMP成員關係報告報文時,交換機將其經過VLAN內的全部路由器端口轉發出去,從該報文中解析出主機要加入的組播組地址,並對該報文的接收端口作以下處理:
若是不存在該組播組所對應的轉發表項,則建立轉發表項,將該端口做爲動態成員端口添加到出端口列表中,並啓動其老化定時器;
若是已存在該組播組所對應的轉發表項,但其出端口列表中不包含該端口,則將該端口做爲動態成員端口添加到出端口列表中,並啓動其老化定時器;
若是已存在該組播組所對應的轉發表項,且其出端口列表中已包含該動態成員端口,則重置其老化定時器。
交換機不會將IGMP成員關係報告報文經過非路由器端口轉發出去,由於根據主機上的IGMP成員關係報告抑制機制,若是非路由器端口下還有該組播組的成員主機,則這些 主機在收到該報告報文後便抑制了自身的報告,從而使交換機沒法獲知這些端口下還有該組播組的成員主機。(IGMP SNOOPING默認關閉last report機制)
ide - 離開組播組
運行IGMPv1的主機離開組播組時不會發送IGMP離開組報文,所以交換機沒法當即獲知主機離開的信息。可是,因爲主機離開組播組後不會再發送IGMP成員關係報告報文,所以當其對應的動態成員端口的老化定時器超時後,交換機就會將該端口對應的轉發表項從轉發表中刪除。
運行IGMPv2或IGMPv3的主機離開組播組時,會經過發送IGMP離開組報文,以通知組播路由器本身離開了某個組播組。當交換機從某動態成員端口上收到IGMP離開組報文時,首先判斷要離開的組播組所對應的轉發表項是否存在,以及該組播組所對應轉發表項的出端口列表中是否包含該接收端口:
若是不存在該組播組對應的轉發表項,或者該組播組對應轉發表項的出端口列表中不包含該端口,交換機不會向任何端口轉發該報文,而將其直接丟棄;
若是存在該組播組對應的轉發表項,且該組播組對應轉發表項的出端口列表中包含該端口,交換機會將該報文經過VLAN內的全部路由器端口轉發出去。同時,因爲並不知道該接收端口下是否還有該組播組的其它成員,因此交換機不會馬上把該端口從該組播組所對應轉發表項的出端口列表中刪除,而是重置其老化定時器。
當IGMP查詢器收到IGMP離開組報文後,從中解析出主機要離開的組播組的地址,並經過接收端口向該組播組發送IGMP特定組查詢報文。交換機在收到IGMP特定組查詢報文後,將其經過VLAN內的全部路由器端口和該組播組的全部成員端口轉發出去。對於IGMP離開組報文的接收端口(假定爲動態成員端口),交換機在其老化時間內:
若是從該端口收到了主機響應該特定組查詢的IGMP成員關係報告報文,則表示該端口下還有該組播組的成員,因而重置其老化定時器;
若是沒有從該端口收到主機響應特定組查詢的IGMP成員關係報告報文,則表示該端口下已沒有該組播組的成員,則在其老化時間超時後,將其從該組播組所對應轉發表項的出端口列表中刪除。
IGMP SNOOPING PROXY
配置IGMP Snooping功能後,交換機對上游IGMP查詢器的Query報文和下游主機的Report和Leave報文都是原封不動地轉發。當網絡中存在大量用戶主機時,冗餘的IGMP報文給上游設備帶來處理壓力。配置IGMP Snooping Proxy功能後,交換機能夠代替上游三層設備向下遊發送IGMP Query報文、也能夠代替下游主機向上遊三層設備發送IGMP Report和IGMP Leave報文,有效節約上游三層設備和本設備之間的帶寬。配置了代理功能的設備只有在組播組開始有成員加入須要創建組播表項或者響應IGMP查詢報文時向上遊發送Report報文;或者組播組最後成員都已經離開須要刪除組播表項時向上遊發送Leave報文。
當Switch上配置IGMP Snooping Proxy時,Switch能夠終結上游的IGMP查詢報文,而且本身構造查詢報文向下遊主機發送;終結下游主機的IGMP報告/離開報文,並本身構造統一的報告/離開報文向上遊發送。
當三層設備沒有啓用IGMP時,例如只配置了靜態組播組,不會有查詢器發送Query報文,這樣即便設備使能了IGMP Snooping功能也沒法創建和維護組成員關係。經過IGMP Snooping Proxy功能,可使交換機發送Query報文,相對下游主機而言,就是一臺查詢器。
igmp proxy和igmp snooping模式的區別在於proxy充當「代理人」的角色,即對下層主機它充當組播路由器的角色,對上層組播路由器它充當主機的角色,對下層用戶發送上來的igmp report報文進行分析,而不把該報文透傳到上層網絡,而是本身以主機的身份向上層組播路由器申請組播節目,一樣對於上層組播路由器發送的查詢報文也進行攔截,而本身以組播路由器的身份向主機發送查詢報文;而snooping則僅僅是偵聽,對下層主機和上層組播路由器發送的igmp報文進行偵聽,同時透傳。固然不管是igmp proxy仍是igmp snooping,設備都根據下層主機發送的igmp report報文創建轉發表項,從而實現可控組播。 oop
IGMP Snooping和IGMP Snooping Proxy實現功能相同但原理不一樣。IGMP Snooping僅僅是經過偵聽IGMP報文來獲取相關用戶信息,而IGMP Snooping Proxy則攔截和抑制了終端用戶的IGMP請求並進行自身相關處理後,纔將它轉發給上層路由器。
相對於僅實現IGMP Snooping的設備來講,實現了IGMP Snooping Proxy的二層網絡設備對於用戶側承擔了Server的角色,按期查詢用戶信息;對於網絡側又承擔了Client的角色,在收到查詢時將當前用戶信息進行上報。所以相比IGMP Snooping來講,不只能達到抑制二層網絡組播氾濫的目的,並且能有效減小網絡中的協議消息,下降網絡負荷。但因爲其須要維護和計算表項的狀態變化同時須要代理路由器的功能,於是也相應增長了設備的實現複雜度和處理開銷。
代理
自我思考:
igmp proxy在設備創建組播路由表項指導組播流量轉發,設備須要啓用組播路由表。,對上游路由器而言是組播接收者,對下游pc來講是組播查詢者,不會透傳報文。不只能達到抑制二層網絡組播氾濫的目的,並且能有效減小網絡中的協議消息,下降網絡負荷,可是會增長自身負荷。
igmp snooping proxy是偵聽攔截,創建的是二層組播轉發表項,區別在於收到組播離開報文,igmp snooping proxy交換機,收到對應的(*,G)離開報文,若是存在對應表項,且該接口也在表項的成員接口,那麼向
接口