一、IGMPv3概述
1、在PIM协议中,PIM可分为DM【密集模式】与SM【稀疏模式】,其中SM又可细分为【ASM】与【SSM】;
2、PIM-SSM指的是允许客户端指定某一特定的信源所发送的组播数据;
3、但IGMPv1与IGMPv2都不支持针对特定的组播源的查询;
4、因此需要一种新的IGMP来满足SSM网络带来的挑战;
5、IGMPv3最主要的改进在于允许客户端针对某一特定的信源发送特定的组播组查询消息;
6、SSM模型的组播地址范围:232.0.0.0-232.255.255.255
7、IGMPv3的大部分工作机制与IGMPv2一样:
7.1、拥有自身的查询路由器选举机制:根据IP地址最小的规则;
7.2、为向下兼容IGMPv1,IGMPv3也拥有普遍组查询机制;
7.3、为向下兼容IGMPv2,IGMPv3也拥有针对特定组播组的查询机制;
8、IGMPv3与IGMPv2的区别
8.1、IGMPv3的客户端不仅仅可以针对某一个组播组进行查询,还可以针对来自某一个组播源的组播组数据进行查询;
8.2、IGMPv3取消了客户端的报告机制的抑制机制;
8.3、IGMPv3取消了组成员的离开消息,用另一种报告消息来通知查询路由器组成员的离开;
9、IGMPv3的路由器查询报文共有3种
9.1、普遍组查询:为了向下兼容IGMPv1与IGMPv2;
9.2、特定组查询:为了向下兼容IGMPv2;
9.3、特定信源组查询:仅仅适用于IGMPv3;
10、IGMPv3的查询消息格式
10.1、类型字段:IGMPv3的查询消息类型为0x11;
10.2、最长响应编码字段:针对普遍组查询最长等待的响应时间(10s);
10.3、组地址字段:若该查询消息为普遍组查询,则该字段内容为【0.0.0.0】;若该字段为特定的组播组地址;
10.4、S字段:S标记,指出禁止路由器对该数据包进行处理;
10.5、QRV字段:查询方的健壮性值,表明查询消息的重传次数,默认为2;
10.6、QQIC字段:针对特定组查询的查询间隔时间,默认为1s;
10.7、信源数字段:若为特定信源的查询消息,该字段为非0;
10.8、信源地址字段:指明了可以接收的信源的IP地址;
11、IGMPv3的成员报告消息格式
11.1、IGMPv3的客户端发送的成员报告消息,除了包含希望接收的组播组地址外,还可以包含希望接收的信源地址,通过组播源主要有2种模式:
1)include:类似于白名单,希望接收来自组播源的组播流量;
2)exclude:类似黑名单,希望过滤的来自组播源的组播流量;
11.2、成员包含的组播组信息与组播源信息包含在【组记录】中,发送给查询路由器;
11.3、IGMPv3的成员报告消息发送至224.0.0.22;
11.4、IGMPv3的成员报告内容格式:
11.4.1、类型字段:组成员的报告消息类型为0x22;
11.4.2、组记录数字段:包含的组记录数,在IGMPv1与IGMPv2中,一个成员关系报告中只能包含1个组地址,若一个客户端想要接收来自多个组播组的数据,则客户端需要向查询路由器发送多个报告;而IGMPv3允许一个成员关系报告中同时包含多个组播组地址数量,因此IGMPv3中的报文数量大大减少;
11.4.3、组记录:是一系列包含有关发送方成员资源消息的字段(共分为3大类)
1)当前状态报告::用来通告查询路由器,当前客户端想要接收或不想要接收的信源及组播组,分为2种模式:mode_is_include(表示接收当前源地址所发送的组播组数据)、mode_is_exclude(表示拒绝接收当前源地址所发送的组播组数据)
2)过滤模式改变报告:当组的源的关系在include与exclude之间切换时所使用的报告,分为2种模式:change_to_include_mode(所谓的从黑名单切换成白名单时,表明过滤模式有exclude切换为include时使用的,接收源地址列表所包含的信源发送至组播组的数据)与change_to_exclude_mode(所谓从白名单切换成黑名单时,表明过滤模式由include切换为exclude时使用的,拒绝源地址列表所包含的信源发送至组播组数据)
3)源列表改变报告:指源列表发生的变化,会通告源列表变化的模式;
分为2种模式:allow_new_sources(表明在当前源列表的基础之上,接收来自源地址列表中包含的信源发送至组播组的数据)与block_old_sources(表明在当前源列表的基础之上,不再接收来自源地址列表中包含的信源发送至组播组的数控)
11.5、IGMPv3的组成员加入机制
11.5.1、IGMPv3的组成员加入机制与IGMPv2类似,其增加了一些新的内容:
1)客户端在对查询路由器的查询报告中,可以包含特定的信源信息;
2)客户端不再使用成员报告报文的抑制机制,所有接收到查询消息的客户端都需要向查询路由器发送report报告;
11.6、IGMPv3的组成员离开机制
11.6.1、IGMPv3的组成员在离开一个组播组时,不在发送leave消息,而是使用一种组成员报告消息来通知查询路由器;
11.6.2、IGMPv3的组成员发送【mode_is_exclude】或【change_to_exclude_mode】来通知查询路由器自身的离开
11.6.3、当IGMPv3的查询路由器接收到上述报告后,立即针对该组播组向其所连接的局域网段发送特定组查询消息;
11.6.4、该局域网段的其他组成员若想要继续接收该组播组的消息,则需要立即发送report报告;
11.6.5、查询路由器若能够接收到report报告,则继续维护该IGMP路由表项,继续向该局域网段传递组播消息;
11.7、IGMP各个版本之间的差异
1、IGMPv1:没有自身的选举机制,不支持组成员离开消息,不支持特定组查询,不支持特定的信源查询;
2、IGMPv2:拥有自身的选举机制,支持组成员离开消息,支持特定组查询,不支持特定的信源查询,向下兼容IGMPv1;
3、IGMPv3:拥有自身的选举机制,自持组成员离开消息,支持特定组查询,支持特定的信源查询,向下兼容IGMPv1、IGMPv2;