目录
2.5.4 IPv6 组播地址
IPv6 在组播方面有更积极的应用,前缀 ff00::/8 被保留用于组播地址 112 位可用于保存组号,可支持 2^112 = 5,192,296,858,534,827,628,530,496,329,220,096 组的可能性 其一般格式如图 2-12 所示
图 2-12 基本的 IPv6 组播地址格式包括 4 个 标志 位(0:保留;R:包含汇聚点;P:使用单播前缀;T:临时的) 4 位 Scope 值指示出组播的范围(全局(global)、本地(local)等) 组 ID 用低 112 位编码 如果设置了 P 或 R 位,则会使用其它格式
IPv6 组播地址的第二个字节分为两部分,其中前半字节为 4 位的 标志 字段,后半字节为 4 位的 Scope ID 字段 Scope 字段用来指出分发 “ 寻址到某些特定组播地址的 ” 数据报时的限制 十六进制值 0、3 和 f 保留,6、7 以及 9 到 d 未分配 这些值如表 2-10 所示,这些值基于:[RFC4291] 的 2.7 节
表 2-10 IPv6 Scope 字段的值
许多 IANA 为永久使用分配的 IPv6 组播地址有意地跨越了多个 scope 每个这样的地址都定义了一个相对于每个 scope 的偏移量(因此这类地址被称为 scope 相对的(scope-relative)或 scope 可变的(variable-scope)) 例如 scope 可变的组播地址 ff0x::101 被 [IP6MA] 保留用于 NTP 服务器(NTP:Network Time Protocol(网络时间协议)) ff0x::101 中的 x 指出了可变的 scope 表 2-11 展示了一些为此定义的地址
表 2-11 为 NTP(101)保留的永久 scope 可变 IPv6 组播地址的例子
在 IPv6 中,当 P 和 R 位字段被设置为 0 时,会使用图 2-12 中展示的组播地址格式 当 P 设置为 1 时,对于不需要 “ 基于每个组的全局协议 ” 的组播地址存在两种替代方法,[RFC3306] 与 [RFC4489] 对此进行了描述 第一种叫做基于单播前缀的(unicast-prefix-based)IPv6 组播地址分配 一个由 ISP 或地址分配机构提供的单播前缀分配也有效地分配了一个组播地址集合,从而限制了为避免重复而需要的全局协调量 第二种方法,link-scoped IPv6 组播,使用了接口标识符,并且组播地址基于主机的 IID 为了理解这些可变的格式是如何工作的,我们需要首先理解 IPv6 组播地址中位字段使用的更多细节 表 2-12 展示了它们的定义
表 2-12 IPv6 组播地址标志
设置 T 位字段表示涉及的组地址是临时的或动态分配的,它不是 [IP6MA] 中定义的标准地址 当 P 位字段被设置为 1 时,T 字段也必须被设置为 1 当这样设置时,一个基于单播地址前缀的 IPv6 组播地址的特殊格式被开启,如图 2-13 所示
图 2-13 可以基于单播 IPv6 地址分配来创建 IPv6 组播地址 [RFC3306] 这种情况下,P 位字段会被设置为 1,单播前缀会在地址中进行携带,后边是一个 32 位长的组 ID 这种形式的组播地址分配减少了对全局地址分配协议的依赖
图 2-13 展示了使用基于单播前缀的寻址如何改变组播地址的格式以包含单播前缀长度字段与单播前缀字段,再加上一个较小的(32 位)组 ID 这个模式提供了一种无需新的全局机制即可分配全局唯一的 IPv6 组播地址的方法 因为 IPv6 单播地址已经以前缀为单位进行了全局分配(见 2.6 节) 可以在组播地址中使用这个前缀,从而利用已有的单播地址分配方法 例如,接收 3ffe:ffff:1::/48 单播前缀分配的组织也将因此接收基于单播的组播前缀分配:ff3x:30:3ffe:ffff:1::/96 其中 x 是任意有效的 scope 这个格式也支持 SSM,只要将前缀长度字段与前缀字段设置为 0 即可 IPv6 SSM 组播地址的前缀必须为 ff3x::/32(其中 x 是任意有效的 scope)
要创建 link-local scope 的唯一组播地址,可以使用基于 IID 的方法 [RFC4489] 当只需要 link-local scope 时,该方法优于基于单播前缀的分配方式 在这种情况下,使用了另一种形式的 IPv6 组播地址结构(如图 2-14)
图 2-14 IPv6 link-scope 组播地址格式 只适用于同一链路(或更小范围)scope 的地址,这类组播地址由 IPv6 接口 ID 与组 ID 结合形成 所有地址都使用 ff3x:0011/32 形式的前缀,x 是小于 3 的 scope ID(2 或小于 2)
图 2-14 中的格式与图 2-13 中的非常相似,只是前缀长度(Prefix Length)字段被设置为了 255 并且接下来的字段不再是前缀,而是 IPv6 IID 这个结构的组播地址的优势是不需要提供单播前缀 在没有路由可用的 AD-HOC(自组织)网络中,单个机器可以根据自己的 IID 形成唯一的组播地址,无需参与复杂的协商协议 然而,如前所述,这种格式只能用于链路本地或节点本地的组播 scope 当需要更大的 scope 时,可以使用基于单播前缀的寻址或永久组播地址 下面是这种格式的一个例子,IID 为 02-11-22-33-44-55-66-77 的主机使用组播地址:ff3x:0011:0211:2233:4455:6677:gggg:gggg 其中,x 是 2 或小于 2 的 scope 值,gggg:gggg 是一个 32 位组播组 ID 的十六进制表示
目前我们还没有讨论 R 位字段 这个字段会在使用了基于单播前缀的组播寻址(P 位被设置为 1) 并且使用了需要汇聚点信息(knowledge of a rendezvous point)的组播路由协议时使用
注意 汇聚点(rendezvous point (RP))是为处理一个或多个组播组的组播路由而设置的路由器的 IP 地址 PIM-SM 协议 [RFC4601] 使用 RP 来帮助参与同一组播组的发送者和接收者找到彼此 在部署互联网范围的组播时遇到的一个问题就是如何定位汇聚点 这个模式使 IPv6 组播地址过载以包含 RP 地址,只需选择适当的二进制位的子集,就可以轻松地从组地址中找到 RP
设置了 P 位的组播地址格式如图 2-15 所示
图 2-15 RP 的单播 IPv6 地址可以嵌入 IPv6 组播地址 [RFC3956] 这样做使寻找路由地址关联的 RP 变得直接 当发送者与接收者不在同一个子网中时,组播路由系统使用 RP 来进行协调
图 2-15 中展示的格式与图 2-13 中展示格式相似 但不再使用 SSM(因此前缀长度字段不能为 0) 另外,引入了一个新的名为 RIID 的 4 位字段 前缀长度(Prefix Length)字段中指示的位数根据前缀(Prefix)字段得到 RIID 字段的内容被用来作为 RP 地址的低 4 位,剩下部分用 0 填充 例如组播地址 ff75:940:2001:db8:dead:beef:f00d:face scope 为 5(站点本地(site-local)),RIID 字段的值为 9,前缀长度为 0x40 = 64 比特 前缀为 2001:db8:dead:beef,RP 地址为 2001:db8:dead:beef::9 更多例子请参考 [RFC3956]
与 IPv4 一样,也有许多保留的 IPv6 组播地址 除了前面提到的可变 scope 地址外,这些地址都会以 scope 进行分组 表 2-13 列出了 IPv6 组播空间的主要保留地址 更多其它信息,请参阅 [IP6MA]
表 2-13 IPv6 组播地址空间中的保留地址
目录
|