《IPv6精髓(第2版)》——3.10 多播地址

3.10 多播地址

本节主要讨论多播地址的格式,有关多播以及多播侦听者发现(Multicast Listener Discovery,MLD)或多播组管理(Multicast Group Management)的内容请参见第4章。

多播地址是由高阶字节FF(或二进制1111 1111)标识的一组节点(如表3-2所示)。一个节点可以属于一个或多个多播组。将数据包发送给多播地址时,该多播组的所有成员都要处理该数据包。IPv4中虽然也有多播,但是IPv6对多播做了重新定义和改善。多播地址的格式如图3-9所示。

第一个字节表示该地址是多播地址,接下来的4比特是标志(Flag)字段,定义如下:标志字段的第一个比特必须为0,保留给将来使用;第二个比特指示该多播地址是否内嵌了RP(Rendezvous Point,聚合点),RP是多播网络中指定多播流的分发点(RFC 3596);第三个比特指示该多播地址是否内嵌了前缀信息(本章将在后面进行讨论,RFC 3306);标志字段的最后一个比特指示该多播地址是永久分配的多播地址(如由IANA分配的周知多播地址)还是临时多播地址。范围(Scope)字段的作用是限定多播地址的范围,取值情况如表3-5所示。

3.10.1 周知多播地址
根据RFC 4291,多播地址中的最后112比特是多播组ID(group ID)。在上一个版本的规范中,组ID被限定为32比特,以简化组地址到MAC地址的映射。RFC 3307“Allocation Guidelines for IPv6 Multicast Addresses”采用的就是32比特组ID。在实际应用中,通常也都将组ID限定为32比特。

RFC 2375定义了最初永久分配的IPv6多播地址。某些多播地址有固定的范围,而某些多播地址则适用于所有范围。表3-6列出了已分配的有固定范围的周知多播地址。请注意,表3-5列出的范围值位于多播标识符FF(第一个字节)之后。

由于RFC 2375中的术语“节点本地范围(node-local scope)”已被更改为“接口本地范围(interface-local scope)”,因而大家有时可能会同时遇到这两个术语。与范围无关的已分配的永久多播地址列表非常长,可以参考本书附录和RFC 2375。这些地址都以FE0X开头,其中,X是一个范围值可变的占位符。

IPv4的广播地址被替换成链路本地范围的全部节点多播地址FF02::1。IPv6没有与IPv4的子网广播地址相对应的地址。

下面来看一个RFC 2373中描述的多播地址。这里为全部NTP服务器定义了一个多播组ID,该多播组ID是0x101。该组ID与不同的范围值结合得到不同的多播地址。

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

Internet上的全部NTP服务器。

临时分配的多播地址仅在限定范围内有意义。

提示

多播地址不应该被用作IPv6包的源地址,也不应该出现任何路由报头中。
IPv6利用基于ICMPv6的MLD来管理多播。如果希望了解如何管理多播地址,可以参见第4章中的“MLD”一节。

3.10.2 请求节点多播地址
请求节点多播地址(solicited-node multicast address)是每个节点都必须为其每个单播地址和任播地址加入的多播地址,通常用于邻居发现进程(详见第4章)。请求节点多播地址的相关规范定义在RFC 4291中。

对IPv4来说,ARP请求(用于确定接口的MAC地址)会被发送到MAC层广播地址,因而链路上的每个接口都要处理该消息。而对IPv6来说,解析接口MAC地址的工作是通过向请求节点多播地址(而非链路本地范围内的全部节点多播地址)发送邻居请求(Neighbor Solicitation)消息(详见第4章)来完成的。通过这种方式,只有注册到该多播地址的节点才会检查该数据包。

该地址的构成方式是将IPv6地址的低阶24比特(主机ID的最后部分)附加到周知前缀FF02:0:0:0:0:1:FF00::/104上,因而请求节点多播地址的取值范围从FF02:0:0:0:0:1: FF00:0000到FF02:0:0:0:0:1:FFFF:FFFF。

例如,主机Marvin的MAC地址为00-02-B3-1E-83-29,IPv6地址为fe80::202:b3ff: fe1e:8329,相应的请求节点多播地址就是FF02::1:ff1e:8329。如果该主机有其他IPv6单播地址或任播地址,那么每个地址也都一个相应的请求节点多播地址。

3.10.3 多播地址的动态分配
RFC 3306扩展了多播地址的体系,允许分配基于单播前缀的多播地址(unicast prefix-based multicast addresses)和指定源多播地址(source-specific multicast addresses)。该规范基于修改后的包含了前缀信息的多播地址格式,其目标是减少需要分配多播地址的协议数量。

图3-10给出了扩展后的多播地址格式。

在最初的规范中,标志字段仅使用最后一个比特(T)来指示该多播地址是永久分配的周知多播地址还是临时多播地址。这里给出的扩展后的多播地址格式使用倒数第二个比特(P)来指示该多播地址基于网络前缀(值为1)还是不基于网络前缀(值为0)。P比特为1表示这是一个遵循扩展格式的多播地址。范围字段的使用方式没有变化,如果P标志为1,那么范围字段后面的8比特就被保留且被置为0。接下来的8比特(PLen)指定了前缀字段中的前缀长度。如果前缀长度小于64比特,那么前缀字段中的其他未用比特都应该被置为0。组ID为32比特。请注意,如果P比特为1(扩展的多播地址),那么T标志也应该被置为1(临时多播地址)。

有关指定源多播地址的信息可参考RFC 3569。在传统的被称为ASM(Any-Source Multicast,任意源多播)的多播模型中,多播侦听者无法控制从哪个多播源接收数据。有了SSM(Source-Specific Multicast,指定源多播)之后,接口就可以注册到多播组并为数据指定源端。利用MLDv2和扩展的多播地址格式即可实现SSM。

提示

有关多播和MLD的更多信息请参见第4章。
对于指定源多播地址来说,T标志和P标志均为1,前缀长度和网络前缀均为0,因而相应的多播地址是FF3X:/32,其中X是范围值。IPv6报头中的源地址标识该多播地址的所有者,所有SSM地址的格式都是FF3X::/96。

目前有一个草案标准对IPv6协议的多播地址体系做了扩展。该扩展可以使用接口标识符来分配链路本地范围的多播地址。该草案标准是draft-ietf-ipv6-link-scoped-mcast-09.txt,在本书印刷之前即将成为RFC。在该多播地址中,标志字段被设置为二进制0011;范围字段被设置为2,表示链路本地范围;PLen字段被设置为FF(二进制全1);64比特网络ID字段被用作接口标识符。生成的组ID标识多播应用,而且只要在该主机上具有唯一性即可。

时间: 2024-11-01 21:45:58

《IPv6精髓(第2版)》——3.10 多播地址的相关文章

《IPv6精髓(第2版)》——导读

前言 本书讲述的是下一代互联网协议.大家已经熟知了IPv4的优缺点,知道如何设计和配置IPv4,也知道如何排查IPv4的故障,为何还要学习一种新协议呢?一切都要从头开始吗?完全不必!IPv6的设计人员从15年以上的IPv4发展经验中学到了很多.他们从20世纪90年代就开始开发这种新协议,保留了IPv4的优点,将地址空间从32比特扩展到128比特,增加了IPv4曾经缺失的功能.他们还制定了多样化的过渡机制,允许IPv4和IPv6和平共处,实现两种协议之间的平滑过渡.事实上,这也是制定新协议版本的主

《IPv6精髓(第2版)》——1.7 IPv6状态和厂商支持情况

1.7 IPv6状态和厂商支持情况 如前所述,目前绝大多数最新的路由设备和操作系统都已经支持IPv6.对于标准设备来说,至少也可以假定其将在下一个重要版本中支持IPv6.因而在为企业网指定IPv6集成方案时,必须评估每个厂商的IPv6支持状态和支持程度.绝大多数厂商都提供了与IPv6相关的信息站点 http://www.<厂商名>.com/ipv6. 可以说,目前IPv6在网络层的支持已经成熟,经过了大量测试和优化验证,包括IPv6路由.过渡机制以及DNS.DHCPv6也已经于2004年实现标

《IPv6精髓(第2版)》——1.4 常见误解

1.4 常见误解 既然IPv6拥有如此多的优势,那么就很自然地会问到"为什么不部署IPv6呢?"在与客户交流时,经常会发现他们对IPv6都有类似的误解,使得他们不愿意考虑IPv6,其中最常见的误解如下所示. "引入IPv6会给当前的IP网络及业务带来风险." 这种顾虑是毫无事实根据的.制定IPv6标准的一个重要考虑因素就是创建一种允许两种协议和平共处的融合机制.IPv6既可以与IPv4同时使用,也可以独立于IPv4使用.完全可以在保证IPv4传统业务不受影响的情况下

《IPv6精髓(第2版)》——3.2 地址类型

3.2 地址类型 IPv4有单播地址.广播地址和多播地址,IPv6则不使用广播地址,而代之以多播地址.这对网络来说是一个好消息,因为广播对大多数网络来说都是一个需要解决的问题.RFC 1546引入了一种新型地址--任播地址,虽然任播地址在IPv4中也有使用,但是IPv6将在一个更大的范围内使用该类地址. 3.2.1 单播.多播和任播地址IPv6地址分为以下三类. 单播(Unicast)地址 单播地址可以唯一地标识IPv6节点的接口,发送到单播地址的数据包会被传送给该地址所标识的接口. 多播(Mu

《IPv6精髓(第2版)》——3.7 特殊地址

3.7 特殊地址 本节将讨论一些重要的特殊地址.IPv6地址空间的第一块前缀为0000 0000的地址被保留,该前缀之外的特殊地址定义情况如下. 未指定地址(unspecified address) 未指定地址为0:0:0:0:0:0:0:0,因而也被称为全0地址(all-zeros address)它与IPv4中的0.0.0.0相似,表示无有效地址.例如,处于启动阶段的主机可以将该地址用作源地址,此时主机需要向外发送请求地址配置信息的消息.如果采用本章前面所讨论的记法习惯,未指定地址也可以缩写

《IPv6精髓(第2版)》——3.11 必需的地址

3.11 必需的地址 标准规定,每台主机为了标识自己都必须分配以下地址: 为每个接口分配的链路本地地址: 任何已分配的单播地址和任播地址: 环回地址: 全部节点多播地址: 为每个已分配的单播地址和任播地址生成的请求节点多播地址: 该主机所属其他多播组的多播地址. 除了上述地址之外,路由器还必须能够识别以下地址: 为每条链路上充当路由器的接口分配的子网路由器任播地址: 该路由器配置的所有任播地址: 全部路由器多播地址: 该路由器所属其他多播组的多播地址.

《深入解析IPv6(第3版)》——2.2 Windows的IPv6协议特性

2.2 Windows的IPv6协议特性 Windows中的IPv6协议包含以下特性. 默认已安装.启用,且已选用. 基本IPv6栈支持. IPv6协议栈增强. 通过GUI(图形用户界面)和命令行进行配置. 集成了对IPSec的支持. Windows防火墙支持. 临时地址. 随机接口ID. 域名系统(DNS)支持. 源地址和目的地址选择. ipv6-literal.net域名支持. 链接本地组播域名解析(Link-Local Multicast Name Resolution, LLMNR).

《深入解析IPv6(第3版)》——1.6 部署IPv6

1.6 部署IPv6 尽管IPv6协议提供了许多技术进步和创新,但对它的应用仍然需要来自商业角度的考验,并由终端用户组织和ISP的IT职员进行部署.在网络架构中部署支持本地IPv61的环境需要规划并设计好(它与IPv4的)并存性和迁移策略,以及软硬件的安装和维护方式.综合考虑IT员工.软硬件资源.迁移所需时间等因素,特别是要考虑到其他更显而易见的或者在短期内更有利可图的新兴技术,这些对于评估是否在本地部署支持IPv6的网络意义重大. 还有一点必须加以考虑,那就是Internet这项技术,从一个用

PC版Windows 10硬件需求公布

  继手机版Windows 10的硬件需求公布之后,现在微软又公布PC版Windows 10的硬件需求. 从官方提供的图表来看,Windows 10 PC版32位最低需要1GB内存.16GB硬盘,而64位版则最低需要2GB内存及20GB硬盘,除此之外还有DX9显卡,屏幕分辨率必须大于800×600. 相比Windows 8的硬件需求来看,Windows 10几乎没有任何提升,而且刻意的没有强调处理器性能,看来微软是觉得目前绝大部分的处理器都能够满足Windows 10的需求. 值得一提的是,微软