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字段值大小的限制。 |
查询消息有三种类型的变体:
成员报告消息是主机向组播路由器发送的报告消息,用报告加入某组播组并只接收由指定组播源发往该组的数据。
封装该消息的IP报文头的目的地址字段为224.0.0.22,本地网段上的所有IGMPv3路由器都能识别并接收。
字段 | 长度 | 描述 |
---|---|---|
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消息的类型。
|
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的实现在最后一个组记录后面不能包含附加数据。 |
标准 | 描述 |
---|---|
RFC 3376 | Internet Group Management Protocol, Version 3 |