跳到主要内容

2.7. Multicast Addresses (组播地址)

2.7. Multicast Addresses (组播地址)

IPv6组播地址是一组接口的标识符 (通常在不同节点上)。一个接口可以属于任意数量的组播组。组播地址具有以下格式:

|   8位  |  4位 |  4位 |                  112位                   |
+--------+------+------+---------------------------------------------+
|11111111| flgs | scop | group ID |
+--------+------+------+---------------------------------------------+

地址开头的二进制 11111111 将地址标识为组播地址。

                                +-+-+-+-+
flgs 是一组4个标志: |0|R|P|T|
+-+-+-+-+

高位标志是保留的, 必须初始化为0。

T = 0 表示永久分配的 ("众所周知的", Well-Known) 组播地址, 由互联网号码分配机构 (IANA, Internet Assigned Numbers Authority) 分配。

T = 1 表示非永久分配的 ("临时的", Transient 或"动态"分配的) 组播地址。

P 标志的定义和用法可以在 [RFC3306] 中找到。

R 标志的定义和用法可以在 [RFC3956] 中找到。

scop 是一个4位组播范围值, 用于限制组播组的范围。值如下:

0  reserved (保留)
1 Interface-Local scope (接口本地范围)
2 Link-Local scope (链路本地范围)
3 reserved (保留)
4 Admin-Local scope (管理本地范围)
5 Site-Local scope (站点本地范围)
6 (unassigned) (未分配)
7 (unassigned) (未分配)
8 Organization-Local scope (组织本地范围)
9 (unassigned) (未分配)
A (unassigned) (未分配)
B (unassigned) (未分配)
C (unassigned) (未分配)
D (unassigned) (未分配)
E Global scope (全局范围)
F reserved (保留)

Interface-Local scope (接口本地范围) 仅跨越节点上的单个接口, 仅对组播的环回传输有用。

Link-Local scope (链路本地范围) 跨越与相应单播范围相同的拓扑区域。

Admin-Local scope (管理本地范围) 是必须通过管理配置的最小范围, 即不会从物理连接或其他非组播相关的配置自动派生。

Site-Local scope (站点本地范围) 旨在跨越单个站点。

Organization-Local scope (组织本地范围) 旨在跨越属于单个组织的多个站点。

标记为 "(unassigned)" 的范围可供管理员定义其他组播区域。

group ID 标识给定范围内的组播组, 可以是永久的或临时的。组播组ID字段结构的其他定义在 [RFC3306] 中提供。

永久分配的组播地址的"含义"独立于范围值。例如, 如果"NTP服务器组"被分配了一个具有组ID 101 (十六进制) 的永久组播地址, 则:

  • FF01:0:0:0:0:0:0:101 表示与发送者在同一接口上的所有NTP服务器 (即同一节点)。

  • FF02:0:0:0:0:0:0:101 表示与发送者在同一链路上的所有NTP服务器。

  • FF05:0:0:0:0:0:0:101 表示与发送者在同一站点内的所有NTP服务器。

  • FF0E:0:0:0:0:0:0:101 表示互联网中的所有NTP服务器。

非永久分配的组播地址仅在给定范围内有意义。例如, 一个站点的非永久、站点本地组播地址 FF15:0:0:0:0:0:0:101 标识的组与另一个站点使用相同地址的组没有关系, 也与使用相同组ID但不同范围的非永久组没有关系, 也与具有相同组ID的永久组没有关系。

组播地址不能用作IPv6数据包中的源地址或出现在任何路由头中。

路由器不能转发超出目的组播地址中 scop 字段指示的范围的任何组播数据包。

节点不能向 scop 字段包含保留值0的组播地址发送数据包; 如果收到这样的数据包, 必须静默丢弃。节点不应向 scop 字段包含保留值F的组播地址发送数据包; 如果发送或接收到这样的数据包, 必须与发往全局 (scop E) 组播地址的数据包相同处理。


2.7.1. Pre-Defined Multicast Addresses (预定义的组播地址)

以下众所周知的组播地址是预定义的。本节中定义的组ID是为显式范围值定义的。

不允许将这些组ID用于任何其他范围值, 且T标志等于0。

Reserved Multicast Addresses (保留的组播地址):

FF00:0:0:0:0:0:0:0
FF01:0:0:0:0:0:0:0
FF02:0:0:0:0:0:0:0
FF03:0:0:0:0:0:0:0
FF04:0:0:0:0:0:0:0
FF05:0:0:0:0:0:0:0
FF06:0:0:0:0:0:0:0
FF07:0:0:0:0:0:0:0
FF08:0:0:0:0:0:0:0
FF09:0:0:0:0:0:0:0
FF0A:0:0:0:0:0:0:0
FF0B:0:0:0:0:0:0:0
FF0C:0:0:0:0:0:0:0
FF0D:0:0:0:0:0:0:0
FF0E:0:0:0:0:0:0:0
FF0F:0:0:0:0:0:0:0

上述组播地址是保留的, 永远不会分配给任何组播组。

All Nodes Addresses (所有节点地址):

FF01:0:0:0:0:0:0:1
FF02:0:0:0:0:0:0:1

上述组播地址标识所有IPv6节点的组, 范围为1 (接口本地) 或2 (链路本地)。

All Routers Addresses (所有路由器地址):

FF01:0:0:0:0:0:0:2
FF02:0:0:0:0:0:0:2
FF05:0:0:0:0:0:0:2

上述组播地址标识所有IPv6路由器的组, 范围为1 (接口本地)、2 (链路本地) 或5 (站点本地)。

Solicited-Node Address (请求节点地址):

FF02:0:0:0:0:1:FFXX:XXXX

请求节点组播地址是作为节点的单播和任播地址的函数计算的。请求节点组播地址是通过取地址 (单播或任播) 的低位24位并将这些位附加到前缀 FF02:0:0:0:0:1:FF00::/104 来形成的, 从而产生范围内的组播地址:

FF02:0:0:0:0:1:FF00:0000

FF02:0:0:0:0:1:FFFF:FFFF

例如, 对应于IPv6地址 4037::01:800:200E:8C6C 的请求节点组播地址是 FF02::1:FF0E:8C6C。仅在高位位 (例如, 由于与不同聚合相关联的多个高位前缀) 不同的IPv6地址将映射到相同的请求节点地址, 从而减少节点必须加入的组播地址的数量。

节点必须为已为节点接口配置的所有单播和任播地址 (手动或自动) 计算并加入 (在适当的接口上) 关联的请求节点组播地址。