original link http://louisnetwork.blog.sohu.com/111972027.html
在工作中,有的實驗會牽扯到IGMP snooping,談到IGMP snooping,又難免會想到IGMP proxy,有的時候多想像,多思考一下或許有更深的體會哦.
那他們之間的區別是什麼呢,先來看下面這個圖,l2 switch開啟了IGMP snooping,router1是一個遠程multicast router,用PIM協議來轉寄組播包.
對於PIM,沒有用過也沒研究過,它和IGMP一樣,都是組播路由協議,有時間在看一下把,光RFC就有幾百頁.
下面是它的定義,Protocol-Independent Multicast (PIM) is a family of multicast routing protocols that can provide one-to-many and many-to-many distribution of data over the Internet. The "protocol-independent" part refers to the fact that PIM does not include its own topology discovery mechanism, but instead uses routing information supplied by other traditional routing protocols such as Border Gateway Protocol (BGP).
開啟IGMP snooping的作用是偵聽IGMP router 和IGMP client之間的IGMP report,query,leave資訊,在這個過程中,對於IGMP report,它會在switch的MAC filter database記錄下GDA(組目的地址) mac address和哪個連接埠關聯.
對於leave message(IGMP v2),當switch收到client發來的leave message時,switch會發送組查詢來查看是不是真的沒有這個組的PC了,如果沒有回複,就會刪除那條entry.
對於IGMPV1沒有leave message的情況下,IGMP router會周期的發224.0.0.1查詢,switch會根據database發給關聯的port,如果連續3次沒回,就會把那條entry 刪除掉.
IGMP snooping的好處是什麼呢?說了這麼多,大家應該明白了吧..
1,對於不支援IGMP snooping的switch收到組播包後,會flood到每個連接埠去,因為對應於組播地址來說,它的MAC address是GDA(01:00:5E:XX:XX:XX),在switch裡面並不存在這樣的entry,這樣可以節省頻寬.
2, 對於收費節目來說可以控制訪問.
下面來看一下IGMP proxy,
topo和上面的一樣,只不過在layer2 switch上開啟IGMP proxy.
proxy,就是代理的意思,和http proxy,arp proxy過程差不多.
IGMP router通過攔截IGMP 報文來建立組播表,它的功能分兩塊來看,
1,上聯連接埠執行主機角色,下聯連接埠執行路由器角色.
上聯連接埠執行主機的角色,響應來自路由器的查詢,當新增使用者組或者某組最後一個使用者退出時,主動發送成員報告包或者離開包。
下聯連接埠執行路由器的角色,完全按照IGMP中規定的機制執行,包括查詢者選舉機制,定期發送通用查詢資訊,收到離開包時發送特定查詢等.
IGMP snooping 的實現機理是:交換器通過偵聽主機向路由器的IGMP成員報告訊息的方式,形成群組成員和交換器介面的對應關係;交換器根據該對應關係將收到組播資料包只轉給具有群組成員的介面。
IGMP Proxy與IGMP Snooping實現功能相同但機理相異:IGMP Snooping只是通過偵聽IGMP的訊息來擷取有關資訊,而IGMP Proxy則攔截了終端使用者的IGMP請求並進行相關處理後,再將它轉寄給上層路由器.
所以在IGMP snooping裡面形成的table是群組成員和交換器介面的對應關係,在IGMP Proxy裡面形成的是組播路由表.
相當於IGMP snooping來說,實現了IGMP proxy的二層網路裝置,對使用者側承擔Server的角色,定期查詢使用者資訊,對於網路路由側又承擔Client的角色,在需要時將當前的使用者資訊發送給網路.不僅能夠達到抑制二層組播泛濫的目的更能有效地擷取和控制使用者資訊,同時在減少網路側協議訊息以降低網路負荷方面起到一定作用。