1.1 IGMP組
路由器介面下會記錄網段上使用者主機所加入的組播組,, 當路由器收到IGMP組加入報文之後, 介面維護IGMP組加入資訊並通知組播路由協議建立相應(*,G)表項,只要裝置介面使能了IGMP並收到組加入報文,就會為每個介面維護一個組加入資訊表項,組表項資訊如下:
任何組播路由協議都會有組播路由協議路由表。
1.2 IGMP路由表
IGMP路由表是由IGMP協議維護的,但它只有在介面沒有使能PIM協議的時才存在,它的作用主要是用來在組播路由協議無法工作的介面上,使用IGMP擴充套件組播路由表的出介面,組播資料可以根據IGMP路由表向非PIM介面轉發,以下是組播路由表示例:
1.3 PIM 路由表
PIM 路由表是由PIM協議根據單播路由協議產生, 根據RPF計算得到的.
1.4 組播路由表
當接收者所在的介面沒有啟用PIM時,組播報文的轉發行為依據IGMP路由表而定,但如果介面PIM協議啟用,組播報文是否轉發到當前介面,則參考PIM協議路由表,即PIM協議路由表優先於IGMP協議路由表。
另外,僅當路由器是IGMP Querier時,才有IGMP路由表,並執行IGMP路由轉發
驗證過程:
如圖: 按照拓撲完成IP地址配置, 在R2-3之間配置vrrp, 所有IGMP使用v2.主機加入組地址224.1.1.1。
配置完成後, 由於IGMP 查詢者是比較IP地址, 比小, 所以, 要在IP地址小這邊關閉PIM, 讓選舉成為查詢者的這邊不啟用PIM, 這樣, 我們才可以看到IGMP 路由表。
分析: 當組播流量流到R3-4之間的交換機上的時候, 由於R3 是查詢者,未開啟PIM,因此可以根據IGMP路由表執行路由, 而R2 是PIM路由器, 有PIM路由表, R2和R3 根據PIM和IGMP路由表分別轉發組播資料, 所以會發生PC收到多份重複的資料,由於PIM有斷言機制,R2會發assert 報文協商, 但是R3 沒有啟用PIM, 不能識別assert報文,所以協商不成功,R2 就一直髮送assert報文。
解決方法:
1: R2 和R3兩者都啟用PIM, 讓assert 協商可以成功, 由assert Winner負責轉發組播資料
2: R2 和R3 都不啟用PIM, 都啟用IGMPv2, 由IGMP查詢者負責轉發組播資料
如此,可以解決終端收到重複的組播流量問題.