(1)组播服务模型
组播服务模型的分类是针对接收者主机的,对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源IP地址,组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择,因此产生了ASM(Any-Source Multicast)和SSM(Source-SpecificMulticast)两种服务模型。这两种服务模型使用不同的组播组地址范围。
1.1.1. ASM模型
ASM模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合,任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。
为了提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。
ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,他们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。
1.1.2. SSM模型
SSM模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时,可以指定只接收哪些源的数据。加入组播组以后,主机只会收到指定源发送到该组的数据。
SSM模型对组地址不再要求全网唯一,只需要每个组播源上保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞。
(2)组播地址
为了使组播源和组播组成员进行通信,需要提供网络层组播,使用IP组播地址。为了在本地物理网络上实现组播信息的正确传输,需要提供链路层组播,使用组播MAC地址。必须存在一种技术将IP组播地址映射为组播MAC地址。
1.1.1. IPv4组播地址
IANA(Internet AssignedNumbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用。IPv4地址一共32位,D类地址最高4位为1110,因此地址范围从224.0.0.0到239.255.255.255,具体分类及含义见表1。
表1 IPv4组播地址的范围及含义 | |
---|---|
地址范围 | 含义 |
224.0.0.0~224.0.0.255 | 永久组地址。IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。常见的永久组地址如表2所示 |
224.0.1.0~231.255.255.255233.0.0.0~238.255.255.255 | ASM组播地址,全网范围内有效 |
232.0.0.0~232.255.255.255 | 缺省情况下的SSM组播地址,全网范围内有效 |
239.0.0.0~239.255.255.255 | 本地管理组地址,仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突 |
表2 常见的永久组地址列表 | |
永久组地址 | 含义 |
224.0.0.0 | 不分配 |
224.0.0.1 | 网段内所有主机和路由器(等效于广播地址) |
224.0.0.2 | 所有组播路由器 |
224.0.0.3 | 不分配 |
224.0.0.4 | DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器 |
224.0.0.5 | OSPF(Open Shortest Path First,开放最短路径优先)路由器 |
224.0.0.6 | OSPF DR(Designated Router,指定路由器) |
224.0.0.7 | ST(Shared Tree,共享树)路由器 |
224.0.0.8 | ST主机 |
224.0.0.9 | RIP-2(Routing Information Protocol version 2,路由信息协议版本2)路由器 |
224.0.0.11 | 移动代理(Mobile-Agents) |
224.0.0.12 | DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器/中继代理 |
224.0.0.13 | 所有PIM(Protocol Independent Multicast,协议无关组播)路由器 |
224.0.0.14 | RSVP(Resource Reservation Protocol,资源预留协议)封装 |
224.0.0.15 | 所有CBT(Core-Based Tree,有核树)路由器 |
224.0.0.16 | 指定SBM(Subnetwork Bandwidth Management,子网带宽管理) |
224.0.0.17 | 所有SBM |
224.0.0.18 | VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议) |
224.0.0.22 | 所有使能IGMPv3(Internet Group Management Protocol, Version 3,因特网组管理协议)的路由器 |
224.0.0.19 ~ 224.0.0.21224.0.0.23 ~ 224.0.0.255 | 未指定 |
1.1.2. IPv6组播地址
IPv6地址长度是128位,在RFC4291中对组播地址的定义如图1所示。
图1 IPv6组播地址的格式
和IPv4组播地址相比,IPv6组播地址有了明确的Group ID字段用于标识组播组。
· 0xFF:最高8位为11111111,标识此地址为组播地址。即IPv6组播地址总是以FF开头。
· Flags字段(4位),用来标识组播地址的状态。格式如下:
图2 Flags字段格式
表3 Flags字段各位取值及含义 | |
---|---|
位 | 取值说明 |
0位 | 最高位为保留位,必须为0 |
R位 | § 取0表示非内嵌RP的组播地址 § 取1表示内嵌RP的组播地址,此时P、T位也必须置1 |
P位 | § 取0表示非基于单播前缀的组播地址 § 取1则表示基于单播前缀的组播地址,此时T位也必须置1 |
T位 | § 取0表示永久分配组播地址 § 取1则表示非永久分配的组播地址 |
· Scope字段(4位):用来标识组播组的应用范围,例如是只包含同一本地网络、同一站点、同一机构中的节点,还是包含全球地址空间内的任何节点。其含义如下:
表4 Scope字段的取值及含义 | |
---|---|
取值 | 含义 |
0、3、F | 保留 |
1 | 节点(或接口)本地范围(node/interface-local scope) |
2 | 链路本地范围(link-local scope) |
4 | 管理本地范围(admin-local scope) |
5 | 站点本地范围(site-local scope) |
8 | 机构本地范围(organization-local scope) |
E | 全球范围(global scope) |
其他 | 未分配 |
· Group ID(112位):组播组标识号。用来在由Scope字段所指定的范围内唯一标识组播组,该标识可能是永久分配的或临时的,这由Flags字段的T位决定。
固定的IPv6组播地址的范围及含义如表3。
表5 IPv6组播地址的范围及含义 | |||
---|---|---|---|
范围 | 含义 | ||
FF0x::/32 | 保留组地址,具体请参见表6 | ||
FF1x::/32(x不能是1或者2)FF2x::/32(x不能是1或者2) | ASM组播地址,全网范围内有效 | ||
FF3x::/32(x不能是1或者2) | 缺省的SSM组地址范围,全网范围内有效 | ||
表6 IPv6常用组播地址范围及含义 | |||
范围 | IPv6组播地址 | 含义 | |
节点(或接口)本地范围 | FF01::1 | 所有节点(接口)地址 | |
FF01::2 | 所有路由器地址 | ||
链路本地范围 | FF02::1 | 所有节点地址 | |
FF02::2 | 所有路由器地址 | ||
FF02::3 | 未定义的地址 | ||
FF02::4 | DVMRP路由器 | ||
FF02::5 | OSPF IGP Routers | ||
FF02::6 | OSPF IGP DR | ||
FF02::7 | ST路由器 | ||
FF02::8 | ST主机 | ||
FF02::9 | RIP路由器 | ||
FF02::A | EIGRP路由器 | ||
FF02::B | 移动代理 | ||
FF02::D | 所有PIM路由器 | ||
FF02::E | RSVP封装 | ||
FF02::1:1 | Link Name | ||
FF02::1:2 | 所有DHCP代理 | ||
FF02::1:FFXX:XXXX | Solicited-Node地址,XX:XXXX表示节点IPv6地址的后24位 | ||
站点本地范围 | FF05::2 | 所有路由器地址 | |
FF05::1:3 | 所有DHCP服务器 | ||
FF05::1:4 | 所有DHCP中继 | ||
FF05::1:1000~FF05::1:13FF | 服务位置 | ||
1.1.3. IPv4组播MAC地址
以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,映射关系如图3所示。例如组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。
图3 IPv4组播地址与IPv4组播MAC地址的映射关系
IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址映射到同一MAC地址上。例如IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。网络管理员在分配地址时必须考虑这种情况。
1.1.4. IPv6组播MAC地址
IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。如图4所示,是IPv6组播地址FF01::1111:1的MAC地址映射举例。
图4 IPv6组播地址的MAC地址映射举例
可见IPv6中会有更多的组地址使用同一个MAC地址。