IGMP Snooping協議技術總結

IGMP Snooping簡介html

IGMP Snooping是Internet Group Management ProtocolSnooping(互聯網組管理協議窺探)的簡稱,它是運行在二層設備(路由器與主機之間的交換機)上的組播約束機制,用於管理和控制組播組。安全

IGMP Snooping原理網絡

運行IGMPSnooping的二層設備(交換機)經過對收到的IGMP報文進行分析,爲端口和MAC組播地址創建起映射關係,並根據這樣的映射關係轉發組播數據。框架

如圖 1所示,當二層設備沒有運行IGMP Snooping時,組播數據在二層被廣播;當二層設備運行了IGMP Snooping後,已知組播組的組播數據不會在二層被廣播,而在二層被組播給指定的接收者。ide

圖 1 二層設備運行IGMPSnooping先後的對比oop


傳統以太網交換機處理組播數據包時只是簡單地在每一個端口上進行廣播,這種方式使得組播包洪泛到並不支持組播的網絡,這樣的網絡比較多的時候則會形成帶寬極大的浪費。而運行在交換機上的IGMP Snooping  協議 則可以很好地解決這一問題,同時它也不須要主機和組播路由器支持額外的協議。  IGMP Snooping  協議監視網絡上的IGMP  消息,爲每個組播MAC地址創建一個VLAN。該VLAN端口所鏈接的網絡中至少含有一個主機組成員或者含有組播路由器。這些端口即爲組播數據包應該轉發的端口組,它們在一塊兒組成組播VLAN  的端口集。協議將維護這個端口集。這樣,當轉發組播數據包時,組播數據包只在它所在的組播VLAN  端口上轉發而不會廣播到不須要組播的端口,節省了帶寬。同時,該以太網交換機在保持對組播路由器透明的前提下,完成IGMP  代理的功能,過濾掉沒必要要的IGMP  消息,防止了「IGMP  報告風暴」。性能

IGMP Snooping經過二層組播將信息只轉發給有須要的接收者,能夠帶來如下好處:spa

l              減小了二層網絡中的廣播報文,節約了網絡帶寬;代理

l              加強了組播信息的安全性;視頻

l              爲實現對每臺主機的單獨計費帶來了方便。

IGMP Snooping基本概念

1. IGMP Snooping相關端口

如圖 2所示,Router A鏈接組播源,在Switch A和Switch B上分別運行IGMP Snooping,HostA和Host C爲接收者主機(即組播組成員)。

圖2 IGMPSnooping相關端口


結合圖 2,介紹一下IGMP Snooping相關的端口概念:

l              路由器端口(Router Port):交換機上朝向三層組播設備(DR或IGMP查詢器)一側的端口,如Switch A和Switch B各自的Ethernet1/1端口。交換機將本設備上的全部路由器端口都記錄在路由器端口列表中。

l              成員端口(Member Port):又稱組播組成員端口,表示交換機上朝向組播組成員一側的端口,如Switch A的Ethernet1/2和Ethernet1/3端口,以及Switch B的Ethernet1/2端口。交換機將本設備上的全部成員端口都記錄在IGMP Snooping轉發表中。

說明:

l    本文中提到的路由器端口都是指交換機上朝向組播路由器的端口,而不是指路由器上的端口。

l    如不特別指明,本文中提到的路由器/成員端口均包括動態和靜態端口。

l    在運行了IGMPSnooping的交換機上,全部收到源地址不爲0.0.0.0的IGMP廣泛組查詢報文或PIM Hello報文的端口都將被視爲動態路由器端口。

 

2. IGMP Snooping動態端口老化定時器

表1 IGMPSnooping動態端口老化定時器


定時器
說明 超時前應收到的報文 超時後交換機的動做
動態路由器端口老化定時器 交換機爲其每一個動態路由器端口都啓動一個定時器,其超時時間就是動態路由器端口老化時間 源地址不爲0.0.0.0IGMP廣泛組查詢報文或PIM Hello報文 將該端口從路由器端口列表中刪除
動態成員端口老化定時器 當一個端口動態加入某組播組時,交換機爲該端口啓動一個定時器,其超時時間就是動態成員端口老化時間 IGMP成員關係報告報文 將該端口從IGMP Snooping轉發表中刪除



說明:
 

IGMP Snooping端口老化機制只針對動態端口,靜態端口永不老化。


 IGMP Snooping協議對交換機的影響

IGMP  Snooping協議,它要求交換機既能分析IGMP  數據包,又必須支持VLAN。從協議層次框架上分析,TCP/IP  協議棧獲得IGMP  的報文,交由IGMP Snooping  協議進行處理, IGMP Snooping 協議根據處理結果更新VLAN。同時,當收到生成樹的TCN(拓撲結構變化通知)  時, IGMPSnooping  還須要從新計算組播VLAN  以減小網絡變化所帶來的影響。 

交換機在監聽主機與路由器之間的  IGMP  會話,  但這樣作意味着交換機必須複製並分析全部的組播幀才能找尋出全部的  IGMP  數據包。能夠想像這是一項繁重的任務,會嚴重影響交換機的性能,用專用芯片來實現這一處理過程能夠  釋解交換機的壓力,但同時會增長交換機的成本。 二層交換機的內部由三部分組成:CPU,CAM Table  和  Switching Engine。CAM Table  是核心,它的內容由  CPU  來維護,Switching  Engine  則依照  CAM  Table  的內容和  CPU  的指令來  完成端口間的交換任務。 

好了,如今讓咱們經過一個實例來說述  IGMP Snooping  會給交換機的  CPU  帶來多大的負擔。   主要內容都基於下面這幅圖。


首先,主機  1  發出報告,請求接收到達  224.1.2.3  的多播數據,CAM  表中沒有相關條目,因而這條消息被洪泛傳遞到全部接口。交換機在分析這個  IGMP  包後知道,知道端口 0(CPU,  爲了接收後續的組播包)、端口 1(路由器)和端口 2(主機  1)與這個組播地址有關,因而在  CAM  表中增長了以下條目:

 

 接下來是主機  4  也要加入這個多播組,根據  CAM  表,它發出的  IGMP  包只被轉發到端口  0,1和  2。但同時  CAM  表變成以下的形式:

 

接下來是主機  4  向  224.1.2.3  地址發送流量爲  6Mbps  的視頻信息,根據  CAM,這些數據包  將被轉發到端口  0,1  和  2。因此這種方式只能用於多播數據流較小的狀況下,實際網絡中一般沒法應用。 

Layer 3 Aware Switch 這種方法是在交換機內部加上一塊專門用來處理  IGMP  消息的三層感知芯片。同原來同樣,  全部的多播數據包仍然要送至  CPU,不過它們再也不由  CPU  而是由這塊專用芯片來處理。爲了實現這一點,最初的  CAM  表中應該包含下面的項目:

 

 如今若是主機4再發送  6Mbps  的數據到地址  224.1.2.3,將不會對  CPU  產生任何影響。由於根據  CAM  表中的具體條目,該信息流只會被送至  1,2  和  5  號端口。這種方式很好的解決了IGMP Snooping帶來的問題,可是卻增長了交換機的成本。



IGMP Snooping工做機制

運行了IGMPSnooping的交換機對不一樣IGMP動做的具體處理方式以下:

注意:

本節中所描述的增刪端口動做均只針對動態端口,靜態端口只能經過相應的配置進行增刪。

 

1. 廣泛組查詢

IGMP查詢器按期向本地網段內的全部主機與路由器(224.0.0.1)發送IGMP廣泛組查詢報文,以查詢該網段有哪些組播組的成員。

在收到IGMP廣泛組查詢報文時,交換機將其經過VLAN內除接收端口之外的其它全部端口轉發出去,並對該報文的接收端口作以下處理:

l              若是在路由器端口列表中已包含該動態路由器端口,則重置其老化定時器。

l              若是在路由器端口列表中還沒有包含該動態路由器端口,則將其添加到路由器端口列表中,並啓動其老化定時器。

2. 報告成員關係

如下狀況,主機會向IGMP查詢器發送IGMP成員關係報告報文:

l              當組播組的成員主機收到IGMP查詢報文後,會回覆IGMP成員關係報告報文。

l              若是主機要加入某個組播組,它會主動向IGMP查詢器發送IGMP成員關係報告報文以聲明加入該組播組。

在收到IGMP成員關係報告報文時,交換機將其經過VLAN內的全部路由器端口轉發出去,從該報文中解析出主機要加入的組播組地址,並對該報文的接收端口作以下處理:

l              若是不存在該組播組所對應的轉發表項,則建立轉發表項,將該端口做爲動態成員端口添加到出端口列表中,並啓動其老化定時器;

l              若是已存在該組播組所對應的轉發表項,但其出端口列表中不包含該端口,則將該端口做爲動態成員端口添加到出端口列表中,並啓動其老化定時器;

l              若是已存在該組播組所對應的轉發表項,且其出端口列表中已包含該動態成員端口,則重置其老化定時器。

說明:

交換機不會將IGMP成員關係報告報文經過非路由器端口轉發出去,由於根據主機上的IGMP成員關係報告抑制機制,若是非路由器端口下還有該組播組的成員主機,則這些主機在收到該報告報文後便抑制了自身的報告,從而使交換機沒法獲知這些端口下還有該組播組的成員主機。

 

3. 離開組播組

運行IGMPv1的主機離開組播組時不會發送IGMP離開組報文,所以交換機沒法當即獲知主機離開的信息。可是,因爲主機離開組播組後不會再發送IGMP成員關係報告報文,所以當其對應的動態成員端口的老化定時器超時後,交換機就會將該端口對應的轉發表項從轉發表中刪除。

運行IGMPv2或IGMPv3的主機離開組播組時,會經過發送IGMP離開組報文,以通知組播路由器本身離開了某個組播組。當交換機從某動態成員端口上收到IGMP離開組報文時,首先判斷要離開的組播組所對應的轉發表項是否存在,以及該組播組所對應轉發表項的出端口列表中是否包含該接收端口:

l              若是不存在該組播組對應的轉發表項,或者該組播組對應轉發表項的出端口列表中不包含該端口,交換機不會向任何端口轉發該報文,而將其直接丟棄;

l              若是存在該組播組對應的轉發表項,且該組播組對應轉發表項的出端口列表中包含該端口,交換機會將該報文經過VLAN內的全部路由器端口轉發出去。同時,因爲並不知道該接收端口下是否還有該組播組的其它成員,因此交換機不會馬上把該端口從該組播組所對應轉發表項的出端口列表中刪除,而是重置其老化定時器。

當IGMP查詢器收到IGMP離開組報文後,從中解析出主機要離開的組播組的地址,並經過接收端口向該組播組發送IGMP特定組查詢報文。交換機在收到IGMP特定組查詢報文後,將其經過VLAN內的全部路由器端口和該組播組的全部成員端口轉發出去。對於IGMP離開組報文的接收端口(假定爲動態成員端口),交換機在其老化時間內:

l              若是從該端口收到了主機響應該特定組查詢的IGMP成員關係報告報文,則表示該端口下還有該組播組的成員,因而重置其老化定時器;

l              若是沒有從該端口收到主機響應特定組查詢的IGMP成員關係報告報文,則表示該端口下已沒有該組播組的成員,則在其老化時間超時後,將其從該組播組所對應轉發表項的出端口列表中刪除。


IGMP SnoopingProxying

經過在邊緣設備上配置IGMPSnooping Proxying(IGMP Snooping代理)功能,能夠減小其上游設備收到的IGMP報告報文和離開報文的數量,有效提升其上游設備的總體性能。配置了IGMP Snooping Proxying功能的設備(稱爲IGMPSnooping代理設備),在其上游設備看來,至關於一臺主機;而在其下游主機看來,則至關於一臺查詢器。

說明:

儘管在其上游設備看來,IGMP Snooping代理設備至關於一臺主機,但主機上的IGMP成員關係報告抑制機制在IGMP Snooping代理設備上並不會生效。

 

圖3 IGMPSnooping Proxying組網圖

 

如圖 3所示,做爲IGMP Snooping代理設備的SwitchA,對其上游設備Router A來講是一臺主機,代理下游主機向Router A發送報告報文和離開報文;而對其下游的主機來講則是一臺查詢器,代理Router A向下遊主機發送廣泛組查詢報文和特定組查詢報文,維護組成員關係。

IGMP Snooping代理設備對IGMP報文的處理方式如表 2所示。

表2 IGMPSnooping代理設備對IGMP報文的處理方式


IGMP報文類型 處理方式
廣泛組查詢報文 收到廣泛組查詢報文後,向本VLAN內除接收端口之外的全部端口轉發;同時根據本地維護的組成員關係生成報告報文,並向全部路由器端口發送
特定組查詢報文 收到針對某組播組的特定組查詢報文時,若該組對應的轉發表項中還有成員端口,則向全部路由器端口回覆該組的報告報文
報告報文 從某端口收到某組播組的報告報文時,若已存在該組對應的轉發表項,且其出端口列表中已包含該動態成員端口,則重置其老化定時器;若已存在該組對應的轉發表項,但其出端口列表中不包含該端口,則將該端口做爲動態成員端口添加到出端口列表中,並啓動其老化定時器;若尚不存在該組對應的轉發表項,則建立轉發表項,將該端口做爲動態成員端口添加到出端口列表中,並啓動其老化定時器,而後向全部路由器端口發送該組的報告報文
離開報文 從某端口收到某組播組的離開報文後,向該端口發送針對該組的特定組查詢報文。只有當刪除某組播組對應轉發表項中的最後一個成員端口時,纔會向全部路由器端口發送該組的離開報文



交換機對組播協議報文的特殊處理規則 

支持IGMPSnooping功能的交換機使能了三層組播路由後,在不一樣的狀況下對各類組播協議報文的處理有所差別。具體規則以下:

(1)        若是交換機上只使能了IGMP,或同時使能了IGMP和PIM,進行常規處理。

(2)        若是交換機上只使能了PIM:

l              對於IGMP報文,將其看成未知報文在VLAN內進行廣播;

l              對於PIM Hello報文,則會爲其維護相應的動態路由器端口。

(3)        在交換機上關閉IGMP時:

l              若是未使能PIM,則刪除全部動態成員端口和動態路由器端口;

l              若是已使能PIM,則刪除動態成員端口,只保留動態路由器端口。

(4)        在交換機上關閉PIM時:

l              若是未使能IGMP,則刪除動態路由器端口;

l              若是已使能IGMP,則保留全部動態成員端口和動態路由器端口。

相關文章
相關標籤/搜索