組播、IGMP、IGMP Snooping

 通過組播,可以實現一個主機同時向組內的多臺主機發送數據,節省網絡帶寬。

組播ip地址範圍是224.0.0.0-----239.255.255.255,其中224.0.0.0-----224.0.0.255是有特殊用途的保留地址,239.0.0.0-----239.255.255.255是私網地址,224.0.1.0-----238.255.255.255是用於公網上的組播地址。

 

組播有一系列的協議支持包括:

1、用於主機和路由器之間的IGMP協議。實現主機加入、離開組播組等功能。

2、路由器之間的組播協議有:PIM-SM、PIM-DM。實現嫁接、剪枝等功能。

 

還有一個IGMP Snooping,用在交換機上。開啓IGMP Snooping功能的交換機可以對經過它的IMGP報文進行解析,建立組播轉發表,這樣一來,交換機就可以根據組播轉發錶轉發組播數據。如果沒有開啓IGMP Snooping功能,交換機只能廣播組播數據。IGMP Snooping的實際應用意義是:減少了網絡上的主機由於接受到不必要的組播報文而產生的處理負荷。IGMP Snooping並不是一個協議,只能算是一個實現細節,一種應用。

 

IGMP Snooping分兩種,一種是passive方式的,另一種是active方式的。passive方式的只解析組播報文,不對報文進行過濾。active方式的會過濾掉一些對路由器沒有意義的組播報文。比如交換機下面有兩個主機都加入了同一個組,這樣交換機上面的路由器中就會有一條表項與之對應。如果一個主機想離開這個組,它就會發送離開報文給路由器(經過交換機轉發)。但是此時,即使路由器收到了離開報文,它也並不會刪除那條表項,因爲還有另一個主機在組播組中。active方式的IGMP Snooping使交換機可以過濾掉此類報文。

 

下面說說IGMP的工作原理:

IGMP目前有三個版本,分別是IGMPV1、IGMPV2、IGMPV3,功能逐漸增強

 

IGMPV1中定義了加入報文、查詢報文、響應報文三種報文。

1、當主機加入某組播組時,會向路由器發送加入報文,告訴路由器自己加入了一個組播組,路由器會記錄一條組播表項 。

2、查詢路由器(IP最小的路由器)會定時從所有端口向外發送查詢報文(按VLAN查詢,如果該端口加入了多個VLAN,則發送多次查詢報文),檢查這些端口下是否有主機屬於某組播組

3、主機收到查詢報文後,如果自己沒有加入任何組播組,則不進行響應;如果自己已經加入了某組播組,則會發現響應報文

4、主機離開組播組時,不發送任何報文,悄悄離開;路由器中紀錄的該組播的表項會因查詢超時而自動老化

5、查詢報文的目的地址是224.0.0.1(表示所有路由器和支持IGMP的主機),組地址是0(表示查詢所有組播組)

6、響應報文的目的地址是主機所在組的地址,組地址也是主機所在組的地址。如果網絡上有多個主機加入了同一個組,那麼只有一臺主機(隨機選取)會發送響應報文。由於響應報文的目的地址是主機所在組的地址,所以響應報文會被髮送到主機所在組內的所有主機,其他的主機在收到該報文後,發現已經有人向路由器進行報告了,於是他們就不會再額外發送響應報文了。

 

IGMPV2中多定義了一種離開報文,當主機離開某組播組時,會向路由器發送離開報文。路由器收到離開報文後,會發送查詢報文,查詢是否還有其它的主機屬於該組播組,如果沒有就刪除組播表項,有則不刪除。

需要注意的是,此時路由器發送的查詢報文的組地址已經不是0了,而是特定的組地址(發送離開報文的主機所在的組)。因爲此時路由器只想知道該特定組內是否有主機存在。這一點也是IGMPV2對IGMPV1的改進,名稱叫特定組查詢,IGMPV1中沒有該功能。

注意:

1、不論是IGMPV1還是IGMPV2,所有的加入報文和離開報文都要被上報到查詢路由器

2、非查詢路由器收到查詢報文後,從所有端口轉發該報文

3、非查詢路由器收到特定組查詢報文後,根據組播表進行轉發

4、特定組查詢報文的目的地址是要查詢的組地址

5、離開報文的目的地址是224.0.0.2(表示所有路由器)

 

IGMP報文格式:

8位報文類型-8最大響應時間-16位校驗和-32位組地址

 

報文類型:

0x11表示查詢報文,包括普通查詢和特定組查詢報文

0x16表示加入報文

0x17表示離開報文

0x12表示IGMPV1查詢報文

 

IGMPV3待續。。。

 

 

 

發佈了27 篇原創文章 · 獲贊 18 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章