在IGMP中V1版只有通过PIM来得到查询器,注意查询器并不是DR,DR在V1版里是查询器,
IGMPV2版可以自动选举出查询器,是利用IP地址来选择的,IP地址小就是。
DR的选举是为源进行注册,以及向RP通告加入消息,或当查询器使用选举是按照OSPF的方式来做的
选比较优先级,再比较IP地址都是选大的。
之后是断言机制(ASSERT),先比较优先级别小的优先,再比较路由的优先级别小优先,最后选择ip地址,大的优先。
BSR的选举,先比较优先级别,大的优先,再比较IP大的优先。
C-RP的选择,如果一个组播范围内有多个C-RP则会比较优先级别,数值小优先,再用HASH去计算一系列的数值,小优先,最后比较IP大优先。
pim-sm中从S---RP的距离是(S,G),RP---接受者 (*,G)也可以是2个都存在的,最后如果PIM-DM与SM共存则可以是(*,*,rp)表示所有组,PIM-SM也会进行RPF检查但是它检查的是RP的路
PIM-SM中有的时候要进行RP的负载,手动方式是在2台路由器上做ip一样的loopback地址,
然后都为某组提供RP
1个组只可以 有1个RP,但一个RP可以为多个组工作。
关于过滤策略,可以在IGMP上用过滤策略匹配,过滤成员加入的组,
在PIM路由器上可以使用邻居策略,以及源策略来做对应的过滤。
注意减枝和加入都是 组播,嫁接应答是单播,嫁接是组播,PIM-SM里的加入就是嫁接因此是组播。
减枝消息中不一定是IGMP周围的时候没有接受者要发,有的时候PIM和上游之间只有一个出接口也会

IGMP可以配置策略来定义,谁可以加入组播组即接受谁的加入消息。
组播的普通查询目标是所有设备即0.0.0.0,组播在服务器和路由器,以及路由器之间发送的是组播MAC,因此要注意会FLOOD。再来PIMSM里的RPT切换SPT时发送S,G的加入消息,发送*,g的裁剪消息。
一个RP可以属于多个组播组,但一个组播组只能有一个RP。可以定义RP工作的组范围,这个主要是用RP的GROUP-POLICY做的,
RP是由BSR产生的,BSR是从C-BSR中选举的,BSR的mask是用来定义RP的范围的,即谁可能成为RP,HASH算法中匹配掩码的长度,取值范围为 0~32。长度越大,C-BSR
的离散离散性越小;长度越小,C-BSR的离散离散性越大。它会定义某些不同的组,用不同的RP,当然同一个组那之可以有一个RP,如果一个组有多个RP存在,那就要比较C-RP的优先级别了。
C-BSR为DR选择RP的过程:
1 所有的C-BSR首先进行比较选择出BSR。
2 BSR将在PIM-SM所管辖的范围内,通告自举消息
3 所有C-RP将自己的自我介绍,主要是,本RP能够为那些组播组提供服务的介绍。(默认的时候C-RP是为所有组播提供服务的)以单播的形式发送给BSR。
4 BSR进行赛选,为某些组播组,或者是所有的组播组,(如果RP配置为默认,即对所有组播组提供服务,则BSR认为该RP可以属于所有组播组)选择出真实的RP。
5 再将RP的自举消息以组播的形式散播到整个PIM-SM区域。
6 DR使用HASH映射算法得知RP的位置之后向该RP发送加入消息。