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地址将映射到相同的请求节点地址, 从而减少节点必须加入的组播地址的数量。
节点必须为已为节点接口配置的所有单播和任播地址 (手动或自动) 计算并加入 (在适当的接口上) 关联的请求节点组播地址。