IP组播简介
作为IP传输三种方式之一,IP组播通信指的是IP报文从一个源发出,被转发到一组特定的接收者。相较于传统的单播和广播,IP组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。
目的:
传统的IP通信有两种方式:单播(Unicast)和广播(Broadcast)。
- 对于单播通信,信息源为每个需要信息的主机都发送一份独立的报文。
- 对于广播通信,信息源将信息发送给该网段中的所有主机,而不管其是否需要该信息。
如果要将数据从一台主机发送给多个主机而非所有主机,可以采用广播方式,也可以由源主机采用单播方式向网络中的多台目标主机发送多份数据。
- 采用单播方式时,网络中传输的信息量与需要该信息的用户量成正比。当需要该信息的用户数量较大时,信息源需要将多份内容相同的信息发送给不同的用户,这对信息源以及网络带宽都将造成巨大的压力。因此,该传输方式不利于信息的批量发送,只适用于用户稀少的网络。
- 采用广播方式时,不需要接收信息的主机也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。因此,该传输方式不利于与特定对象进行数据交互,同时会浪费大量的带宽。
由上述可见,传统的单播和广播通信方式不能有效地解决单点发送、多点接收的问题。
组播(Multicast)可以很好的解决点到多点的数据传输,源只发送一份数据,网络中只有需要该数据的主机可以接收该数据,其他主机不能收到该数据。
组播相对单播和广播有如下优势:
- 相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
- 相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。
组播的优势:
- 提高效率:降低网络流量、减轻硬件负荷
- 优化性能:减少冗余流量、节约网络带宽、降低网络负载。
- 分布式应用:使多点应用成为可能
组播适用于任何“点到多点”的数据发布,主要包含以下几方面:
- 多媒体、流媒体的应用。
- 培训、联合作业场合的通信。
- 数据仓库、金融应用(股票)。
IP组播技术在ISP提供的互联网信息服务中已经得到了应用。例如:在线直播、网络电视、远程教育、远程医疗、网络电台和实时视/音频会议等。
组播的劣势:
组播技术有效地解决了单点发送多点接收的问题,实现了IP网络中点到多点的高效数据传送。但由于组播技术是基于UDP的,所以同时也存在着不足之处:
尽力而为
报文不能依赖组播网络进行可靠性保证,必须针对组播网络的这个特点进行特别设计。“可靠组播”目前仍然处于研究阶段。丢失是不可避免的。因此组播应用程序
没有拥塞避免机制
缺少TCP窗口机制和慢启动机制,组播可能会出现拥塞。如果可能的话,组播应用程序应该尝试检测避免拥塞。
报文重复
某些组播协议的特殊机制(如Assert机制和SPT切换机制)可能会造成偶尔的数据包的重复。组播应用程序应该容忍这种现象。
报文失序
同样组播协议有的时候会造成报文到达的次序错乱,组播应用程序必须自己采用某种手段进行纠正(比如缓冲池机制等)。
原理描述
组播基本概念:
组播传输的特点是单点发送,多点接收。
- 组播组:用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
- 组播源:信息的发送者称为“组播源”,一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。组播源通常不需要加入组播组,由源端DR负责管理组播源的注册和SPT(Shortest Path Tree)的建立。
- 组播组成员:所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
- 组播路由器:支持三层组播功能的路由器或交换机。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
组播服务模型:
组播服务模型的分类是针对接收者主机的,对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源地址,组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择,因此产生了ASM(Any-Source Multicast)和SSM(Source-Specific Multicast)两种服务模型。这两种服务模型默认使用不同的组播组地址范围。
ASM模型:
- ASM模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合,任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。
- 为了提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。
- ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。
SSM模型:
- SSM模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时,可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据。加入组播组以后,主机只会收到指定源发送到该组的数据。
- SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞。
组播地址:
为了使组播源和组播组成员进行通信,需要提供网络层组播,使用IP组播地址。同时,为了在本地物理网络上实现组播信息的正确传输,需要提供链路层组播,使用组播MAC地址。组播数据传输时,其目的地不是一个具体的接收者,而是一个成员不确定的组,所以需要一种技术将IP组播地址映射为组播MAC地址。
IPv4组播地址:
IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用。IPv4地址一共32位,D类地址最高4位为1110,因此地址范围从224.0.0.0到239.255.255.255,具体分类及含义见下表:
地址范围 | 含义 |
---|---|
224.0.0.0~224.0.0.255 | 永久组地址。IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。 |
224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255 | ASM组播地址,全网范围内有效。说明: 其中,224.0.1.39和224.0.1.40是保留地址,不建议使用。 |
232.0.0.0~232.255.255.255 | 缺省情况下的SSM组播地址,全网范围内有效。 |
239.0.0.0~239.255.255.255 | 本地管理组地址,仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突。 |
常见的永久组地址列表:
永久组地址 | 含义 |
---|---|
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.21 224.0.0.23 ~ 224.0.0.255 | 未指定 |
IPv6组播地址:
和IPv4组播地址相比,IPv6组播地址有了明确的Group ID字段用于标识组播组。
- FF:最高8位为11111111,标识此地址为组播地址。即IPv6组播地址总是以FF开头。
- Flags字段(4位),用来标识组播地址的状态。其含义如下:
-
- | 取值 | 含义 |
| :–: | ———————— |
| 0 | 表示是IANA指定的常用组播地址,也叫保留组地址 |
| 1 | 表示是ASM范围的组播地址 |
| 2 | 表示是ASM范围的组播地址 |
| 3 | 表示是SSM范围的组播地址 |
| 其他 | 未分配 |
- Scope字段(4位):用来标识组播组的应用范围,例如是只包含同一本地网络、同一站点、同一机构中的节点,还是包含全球地址空间内的任何节点。其含义如下:
- | 取值 | 含义 |
| —– | ————————————— |
| 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组播地址范围及含义:
范围 | 含义 |
---|---|
FF0x::/32 | 保留组地址。 |
FF1x::/32(x不能是1或者2)FF2x::/32(x不能是1或者2) | ASM组播地址,全网范围内有效。 |
FF3x::/32(x不能是1或者2) | 缺省的SSM组地址范围,全网范围内有效。 |
IPv4组播MAC地址:
以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,例如组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。
IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址映射到同一MAC地址上。
IPv6组播地址:
IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。
组播的相关协议:
组播协议包括用于主机注册的组播组管理协议,和用于组播选路转发的组播路由协议。
- IGMP(InternetGroup Management Protocol)在接收者主机和组播路由器之间运行,该协议定义了主机与路由器之间建立和维护组播成员关系的机制。
组播路由器之间运行组播路由协议,组播路由协议用于建立和维护组播路由,并正确、高效地转发组播数据包。
对于ASM模型,可以将组播路由分为域内和域间两大类。
域内组播路由协议用来在自治系统AS(AutonomousSystem)内发现组播源并构建组播分发树,将信息传递到接收者。域内组播路由协议包括:DVRMP、MOSPF、PIM。
- DVRMP是距离矢量组播路由协议(DistanceVector Multicast Routing Protocol)是一种密集模式协议。该协议有跳数限制,最大跳数32跳。
- MOSPF是OSPF路由协议的扩展协议。它通过定义新的LSA来支持组播。
- PIM(Protocol Independent Multicast为稀疏时,)是典型的域内组播路由协议,分为DM(DenseMode)和SM(SparseMode)两种模型。当接收者在网络中的分布较为密集时,适用DM;较适用SM。PIM必须和单播路由协议协同工作。
域间组播路由协议用来实现组播信息在AS之间的传递。
- MSDP(MulticastSource Discovery Protocol)能够跨越AS传播组播源信息。
- MPBGP(MultiProtocolBorder Gateway Protocol)的组播扩展MBGP(MulticastBGP)能够跨越AS传播组播路由。
对于SSM模型,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此可以借助PIMSM的部分功能直接创建组播传输路径。
参考资料:华为HedEx文档