跳到主要内容

3. Packet 格式

本节描述 MLDv2 packet format 的细节. 所有 MLDv2 message 都在 ICMPv6 packet [RFC2463] 中发送.

3.1. Multicast Listener Query Message

Multicast Listener Query Message 由 multicast router 发送, 用于查询相邻 interface 的 multicast reception state. 其格式如下:

 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 = 130 | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Maximum Response Code | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Multicast Address |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Resv |S| QRV | QQIC | Number of Sources (N) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Source Address [1] |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Source Address [2] |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . .
. . .
. . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Source Address [N] |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.1.1. Type

130 (Multicast Listener Query)

3.1.2. Code

由发送方初始化为零; 接收方忽略.

3.1.3. Checksum

标准 ICMPv6 checksum.

3.1.4. Maximum Response Code

指定发送响应 Report 之前允许的最长时间. 实际允许时间称为 Maximum Response Delay, 以毫秒为单位表示, 并按如下方式从 Maximum Response Code 派生:

如果 Maximum Response Code < 32768, 则 Maximum Response Delay = Maximum Response Code

如果 Maximum Response Code >= 32768, 则 Maximum Response Code 按如下方式表示一个 floating-point value:

 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Maximum Response Delay = (mant | 0x1000) << (exp + 3)

3.1.5. Reserved

由发送方初始化为零; 接收方忽略.

3.1.6. Multicast Address

  • 对于 General Query, Multicast Address 字段设置为零.
  • 对于 Multicast-Address-Specific Query, 它设置为被查询的 multicast address.
  • 对于 Multicast-Address-and-Source-Specific Query, 它设置为被查询的 multicast address.

3.1.7. S Flag (Suppress Router-Side Processing)

当设置为 1 时, 表示任何接收该 Query 的 multicast router 都要抑制其在听到 Query 时通常执行的 timer update.

3.1.8. QRV (Querier's Robustness Variable)

如果非零, 则包含 Query 发送方使用的 [Robustness Variable] 值. 如果发送方的 [Robustness Variable] 超过 7, 则发送最大值 7.

3.1.9. QQIC (Querier's Query Interval Code)

指定 Querier 使用的 [Query Interval]. 实际间隔称为 Querier's Query Interval (QQI), 以秒为单位表示, 并按如下方式从 Querier's Query Interval Code 派生:

如果 QQIC < 128, 则 QQI = QQIC

如果 QQIC >= 128, 则 QQIC 按如下方式表示一个 floating-point value:

 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+

QQI = (mant | 0x10) << (exp + 3)

3.1.10. Number of Sources (N)

指定 Query 中存在多少个 source address. 对于 General Query 和 Multicast-Address-Specific Query, 该数字为零; 对于 Multicast-Address-and-Source-Specific Query, 该数字非零.

3.1.11. Source Address [i]

Source Address [i] 字段是由 n 个 IPv6 unicast address 组成的 vector, 其中 n 是 Number of Sources (N) 字段中的值.

3.2. Multicast Listener Report Message

Multicast Listener Report Message 由 multicast listener 发送, 用于报告其当前 multicast reception state. 其格式如下:

 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 = 143 | Reserved | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Nr of Mcast Address Records |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. Multicast Address Record [1] .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. Multicast Address Record [2] .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
. . .
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. Multicast Address Record [M] .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.2.1. Type

143 (Version 2 Multicast Listener Report)

3.2.2. Reserved

由发送方初始化为零; 接收方忽略.

3.2.3. Checksum

标准 ICMPv6 checksum.

3.2.4. Nr of Mcast Address Records (M)

指定该 Report 中存在多少个 Multicast Address Record.

3.2.5. Multicast Address Record

每个 Multicast Address Record 具有如下内部格式:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Record Type | Aux Data Len | Number of Sources (N) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Multicast Address |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Source Address [1] |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . .
. . .
. . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
* *
| Source Address [N] |
* *
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. Auxiliary Data .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.2.6.1. Record Type

参见第 4 节.

3.2.6.2. Aux Data Len

该 Multicast Address Record 中 Auxiliary Data 字段的长度, 单位为 32-bit word.

3.2.6.3. Number of Sources (N)

指定该 Multicast Address Record 中存在多少个 source address.

3.2.6.4. Multicast Address

该 Multicast Address Record 所对应的 multicast address.

3.2.6.5. Source Address [i]

Source Address [i] 字段是由 n 个 IPv6 unicast address 组成的 vector, 其中 n 是 Number of Sources (N) 字段中的值.

3.2.6.6. Auxiliary Data

与该 Multicast Address Record 关联的附加数据. 当前未定义 Auxiliary Data, 因此 Aux Data Len 设置为 0, 且该字段不存在.