当组播中,成员端出现多跳路由,对于IGMP中会选出查询器,对于PIM,则会选出DR。
如下图:
1、当成员端最后一跳路由器存在两个,那么尝试一个单开启IGMP,另一个单开启PIM(此例使用PIM-SM)
对于开启IGMP的路由器,由于另外一边没开启IGMP,那么自然就成为了查询器(此为IGMPv2)
对于开启PIM-SM的路由器,由于另外一边没开启PIM-SM,那么也自然就成为了成员端DR
由于在查询器跟成员端DR都存在情况下会由成员端DR向RP发送join报文建立RPT树。
如果两边只开启IGMP,那么由查询器向RP发送join报文简历RPT树。此示例中,对于R1来说,它压根不会知道有DR存在,所以,当IGMP表项存在下游端口时就会向RP发送join报文。
但是DR这边,由于它没有IGMP表项,更别说存在下游端口了,所以它永远不会向RP发送join报文。
实验结果就是:RP(R4)会建立(*,G)表项,但下游端口为g0/0/0(由于Ensp中使用交换机做不了igmp-snooping的效果,所以用集线器代替了)
RP的下游为g0/0/0
2、当R1也开启PIM-SM,如下图:
那么此时会选出成员端DR,当优先级都相同时,ip地址大的成为DR,此时R1的g0/0/0中的ip地址比R2的g0/0/0地址小,R2是DR。
那么当pc2发送成员关系报告时,由于R1知道有DR存在了,所以即使其IGMP表项有下游端口,但不会向RP发送join消息。而对于R2来说,没有IGMP表项所以也不会向RP发送join消息,所以RPT树是建立不起来的。
当R1只启用PIM-SM,R2启用IGMP、PIM-SM时:
对于两者来说,都知道DR的存在,而这里R2是成员端DR,同时启用着IGMP。
当pc2发送成员关系报文后,R2的igmp表项存在下游,则会向RP发送join报文,建立RPT树。
RP中(*,G)表项下游端口为g0/0/1
所以,建议pim与igmp都开启吧。