IGMPv3包结构及工作机制讲解

                                                                                         IGMPv3

IGMPv3是为了配合SSM(Source-Specific Multicast)服务模型而发展的,增加了在报文中携带组播源地址的功能,即能加入到指定源的组播组

IGMPv3与IGMPv2相比,IGMPv3新增了一些功能:

  1. 查询报文中除了普遍组查询和特定组查询之外,还新增了特定源组查询报文(Group-and-Source-Specific Query),该报文由查询器共享网段内特定组播组成员发送,用于查询该组成员是否愿意接受特定源发送的数据,特定源组查询通过在报文中携带一个或多个源地址来达到这一目的

  2.  报告报文不仅告知路由器主机希望加入哪个组播组,并且可以指定只接受哪些组播源发往该组的数据,IGMPv3增加针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系,在IGMP表中表示为(G,INCLUDE,(S1,S2...)),表示只接受源为S1,S2...发往组G的数据,或者(G,EXCLUDE,(S1,S2...)),表示只不接受S1,S2...组播源发往组G的数据,也就是说S1,S2...其他都收

以下是IGMPv3普遍组查询报文结构:

                   0                   1                   2                   3
                  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  |  Type = 0x11  | Max Resp Code |           Checksum            |
                  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  |                         Group Address                         |
                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  | Resv  |S| QRV |     QQIC      |     Number of Sources (N)     |
                 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  |                       Source Address [1]                      |
                  +-                                                             -+
                  |                       Source Address [2]                      |
                  +-                              .                              -+
                  .                               .                               .
                  .                               .                               .
                  +-                                                             -+
                  |                       Source Address [N]                      |
                  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段

 说明

Type 0x11:报文类型,取值为0x11,IGMPv3只有该类型
Max Resp Code 最大相应时间,成员主机在收到IGMP查询器发出的普遍组查询报文后,需要在最大响应时间内做出回应

Checksum

校验和,在发送端计算出校验和之前,该字段为全0,当发送端计算出报文的校验和之后,必须将值插入该字段,接收端接收数据包时,必须在处理数据包内容前,完成对数据包的校验
Group Address 组播组地址,在普遍组查询中,该字段为0,在特定组查询中,该字段为要查询的组播组地址
Resv 保留字段,发送报文时该为0,接收报文时应忽略该位
S 该位为1时,所有收到查询报文的其他路由器不启动定时器刷新过程,但是此报文不抑制查询器选举和路由器对主机的处理
QRV 该字段表示查询器的健壮系数,健壮系数直的是,当查询器收到一个离组报文后,向该组发送几个特定组查询报文,如果健壮系数为5,那么就发送5个特定组查询报文,查询该组是否还有成员。如果该字段为0,则表示查询器的健壮系数大于7同时不做处理,如果非0,则表示查询器的健壮系数,其他非查询器会将自己的健壮系数,调整到与查询器一致
QQIC 表示IGMP查询器的查询间隔,单位为秒。每过x秒,发送一次普遍组查询报文,如果该字段位0,则不做处理,如果该字段非0,则将自己的查询间隔调整至该字段的值

Number of Sources

为数据包中包含组播源的数量,对于普遍组查询报文,该值为0,对于特定源组查询报文,该值非0,此参数的大小收到所在网络MTU值的大小
Source Address 组播源地址,其数量受到Number of Sources字段大小的限制

以下是成员报告报文:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Type = 0x22  |    Reserved   |           Checksum            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Reserved            |  Number of Group Records (M)  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                        Group Record [1]                       .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                        Group Record [2]                       .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                               .                               |
      .                               .                               .
      |                               .                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                        Group Record [M]                       .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段

说明

Type

报文类型,取值为0x22

Reserved

保留字段,发送时该字段应为0,接收端应忽略该字段

Checksum

校验和,在发送端计算出校验和之前,该字段为全0,当发送端计算出报文的校验和之后,必须将值插入该字段,接收端接收数据包时,必须在处理数据包内容前,完成对数据包的校验

Number of Group Records

报文中组记录的数量

Group Record

组记录,Group Record字段的格式如下图所示

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Record Type  |  Aux Data Len |     Number of Sources (N)     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Multicast Address                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Source Address [1]                      |
      +-                                                             -+
      |                       Source Address [2]                      |
      +-                                                             -+
      .                               .                               .
      .                               .                               .
      .                               .                               .
      +-                                                             -+
      |                       Source Address [N]                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                         Auxiliary Data                        .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

下表为Record Type字段的含义,并非全字段讲解

分类

组记录类型

含义

当前状态报告,相应查询报文

 IS_IN

值为0x01,表示组播组与源列表之间的对应方式为INCLUDE

IS_EX

值为0x02,表示组播组与源列表之间的对应方式为EXCLUDE

过滤模式报告,通告过滤模式发生变化

TO_IN

值为0x03,表示组播组与源列表之间的对应关系切换到INCLUDE,如果源列表为空,则表示离开该组播组

TO_EX

值为0x04,表示组播组与源列表之间的对应关系切换到EXCLUDE

源列表报告,通告源发生变化

ALLOW

值为0x05,表示在现有基础上,还希望从哪些源接收或不接受数据,如果当前对应关系为INCLUDE,则向现有源列表中添加某些组播源,如果当前对应关系为EXCLUDE,则从源列表中删除某些组播源
BLOCK 值为0x06,表示在现有基础上,还希望从哪些源接收或不接受数据,如果当前对应关系为INCLUDE,则从现有源列表中删除某些组播源,如果当前对应关系为EXCLUDE,则向现有源列表中添加某些组播源

以下是Group Record字段说明

字段 说明
Aux Data Len 辅助数据长度,在IGMPv3中不存在辅助字段,所以该值为0
Number os Sources 本记录中包含的组播源地址数量
Multicast Address 组播组地址
Sources Address 组播源地址
Auxiliary Data 辅助数据,为IGMP后续扩展或后续版本做预留,在IGMPv3中不会使用到任何辅助字段

IGMPv3工作机制

IGMPv3在工作机制上与前两个版本新增了主机对组播源的选择能力

特定源组加入

IGMPv3的成员报文会发向224.0.0.22(网段内所有运行IGMPv3的路由器),通过在报告报文中的记录,主机在加入组播组的同时,能够明确要求接受或不接受特定组播源发出的组播数据,以下图为例,网络中存在S1,S2两个组播源,均向组播组G发送组播数据,Host仅希望接收从S1发往组播组G的数据

IGMPv3包结构及工作机制讲解_第1张图片

##如果Host和路由器之间运行的协议是IGMPv1,或者v2,那么Host加入组播组时会同时接收到S1,S2发往组播组G的数据,无论是否需要,但如果采用IGMPv3,主机在加入组播组时就可以明确地指定,希望接收哪个组播源发往G的数据

  • 方法1:Host发送IGMPv3(G,INCLUDE(S1)),仅接收S1发往组播组G的数据
  • 方法2:Host发送IGMPv3(G,EXCLUD(S2)),不接受S2发往组播组G的数据,从而实现只接受S1的数据

                                                                                                                                                               本文部分来自华为技术手册

博主现为上海思邱实业公司总经理,诚意招商

营业范围:联想戴尔等主流厂商服务器,办公电脑,显示器

华为华三思科等主流厂商数通产品,路由器,交换机,防火墙,无线等等

提供企业网络应急维修,网络周期性维护,服务器应急维修,服务器周期性维护,云计算部署,云存储部署等等各种各样的服务

只要你有IT行业相关的需求,那就可以联系我们

联系方式:17621969147 李先生

你可能感兴趣的:(网络,组播)