IGMPv3报文格式

报文格式

IGMPv3包含查询报文和报告报文两种不同格式的报文。

图1 IGMPv3查询报文格式
字段 长度 描述
Type 8比特 成员关系查询 Type = 0x11。
Max Resp Code 8比特 设备接收到查询消息后发出响应报文的最大延迟时间,超过该时间没有发出响应报文,则查询设备认为此次查询超时,单位是1/10秒。
Checksum 16比特 IGMP消息的校验和。传送报文时,必须计算校验和并填入该字段中;接收报文时,必须在处理报文之前检验校验和,以判断IGMP消息在传输过程中是否发生了错误。
Group Address 32比特 对于普遍组查询消息,该字段置0。对于特定组查询消息、特定组/源查询消息,该字段为设置为欲查询的组播组的地址。
Resv 4比特 保留字段,发送报文时置0;接收到报文时,对该字段不做任何处理。
S 1比特 该比特位置1时,所有收到此查询消息的其他路由器不启动定时器刷新过程,但是此查询消息并不抑制查询器选举过程和路由器的主机侧处理过程。
QRV 3比特 查询者的健壮变量,如果不为0,QRV中包含中一个被查询者使用的[健壮变量]的值,如果查询者的健壮变量的值超过7,即QRV字段的最大值,那么QRV被设成0。路由器取最近收到的查询中的QRV值作为它们自己的健壮性变量的值,除非最近收到的QRV是0,在这种情况下,接收者使用缺省的健壮性变量值,或者是一个静态配置的值。
QQIC 8比特 查询器的查询间隔,单位是秒。非查询器收到查询报文时,如果发现该字段非0,则将自己的查询间隔参数调整为该字段的值。
Number of Sources (N) 16比特 消息中包含的组播源的数量。对于普遍组查询报文和特定组查询报文,该字段为0;对于特定组/源地址查询报文,该字段非0。此参数的大小受到所在网络MTU大小的限制。
Source Address [i] 32比特 组播源地址,其数量受到Number of Sources字段值大小的限制。

查询消息有三种类型的变体:

图2 成员报告消息的格式

成员报告消息是主机向组播路由器发送的报告消息,用报告加入某组播组并只接收由指定组播源发往该组的数据。

封装该消息的IP报文头的目的地址字段为224.0.0.22,本地网段上的所有IGMPv3路由器都能识别并接收。

图3 Group Record字段格式
字段 长度 描述
Type 8比特

Type = 0x22成员关系报告

Reserved 8比特 保留字段,在发送的时候是以0填充,在接收的时候是不作任何处理的。
Checksum 16比特 校验和是对整个IGMP消息以16位为一段进行取反求和。为了计算校验和,校验和字段首先必须被置0。当收到一个数据,在处理之前,必须先对校验和进行验证。
Reserved 16比特 T保留字段,在发送的时候是以0填充,在接收的时候是不作任何处理的。
Number of Group Records (M) 16比特 该字段表示该报告报文中包含有几个组记录。
Group Record 变长

一个主机可能需要点播多个组播地址的组播业务,每个记录包含了对应于其中一个组播地址的源地址列表等信息,它受到Number_of_Group_Records的大小的影响。

每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。

Record Type 8比特 Group Record消息的类型。
  • MODE_IS_INCLUDE:接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该消息为无效消息。
  • MODE_IS_EXCLUDE:不接收源地址列表包含的源发往该组的组播数据。
  • CHANGE_TO_INCLUDE_MODE:过滤模式由EXCLUDE转换到INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机离开组播组。
  • CHANGE_TO_EXCLUDE_MODE:过滤模式由INCLUDE转换到EXCLUDE,拒绝源地址列表中新组播源发往该组的组播数据。
  • ALLOW_NEW_SOURCES:表示在现有的基础上,需要接收源地址列表包含的源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为EXCLUDE,则从现有阻塞源列表中删除这些组播源。
  • BLOCK_OLD_SOURCES:表示在现有的基础上,不再接收从源地址列表包含的源组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为EXCLUDE,则向现有源列表中添加这些组播源。
Aux Data Len 8比特 辅助数据长度含有在组记录中的辅助数据的实际长度,其单位是32bit字。它有可能是0,这就表示辅助数据不存在。
Number of Sources (N) 16比特 源数量(N)字段标明在组记录中存在多少源地址。
Multicast Address 32比特 多播地址字段标明该组记录从属的多播IP地址。
Source Address [i] 32比特 源地址[i]字段是一个数组,含有n个单播地址。n就是该记录的源数量(N)字段的值。
Additional Data 变长 附加数据。如果收到的报告中的IP首部的数据报长度字段标明在最后一个组记录后面有附加的数据存在。IGMPv3的实现必须在计算和验证校验和的时候包含这些附加数据,但是同时必须忽略这些附加数据。当发送一个报告时,一个IGMPv3的实现在最后一个组记录后面不能包含附加数据。

报文示例

图4 IGMPv3 Membership Report (CHANGE_TO_INCLUDE_MODE)
图5 IGMPv3 Membership Report (CHANGE_TO_EXCLUDE_MODE)
图6 IGMPv3 Membership Report (BLOCK_OLD_SOURCES)
图7 IGMPv3 Membership Report (ALLOW_NEW_SOURCES)
图8 IGMPv3 Membership Query (General)
图9 IGMPv3 Membership Query (Special)

参考标准

标准 描述
RFC 3376 Internet Group Management Protocol, Version 3

本资料收集于互联网
2016 ©