一、组播的基本介绍

    组播指发送源将产生的单一IP数据包通过网络发送给一组特定接收者的网络传输方式。组播结合了单播和广播的优点,在进行点到多点传输时,发送源不需要关心接受者的数目,仅需要发送一份报文;路由器仅关心接口下是否有接收者,同样不需要关心接收者的数量,所以在路由器之间的链路上也仅传送一份报告。

    和单播相比,组播减轻了发送源的负担,并且提高了链路的有效利用率。此外,发送源可以同时发送报文给多个接收者,可以满足低延时应用的需求。

    和广播相比,组播方式下路由器仅在有接收者的接口复制报文,报文最终仅传递给接受者而非网络中的所有主机,可以节省大量网络带宽。另外,广播只能在同一网段中进行,而组播可以实现跨网段的传输。


组播的优点

    (1)组播可以增强报文发送效率,控制网络流量,减少服务器和CPU的负载

(2)组播可以优化网络性能,消除流量冗余。

(3)组播可以适应分布式应用,当接收者数量变化时,网络流量的波动很平稳。


同时,由于组播应用基于 UDP 而非 TCP,这就决定了组播应用存在 UDP 相应的缺点,如下所列。

(1)组播数据基于 Best Effort(尽力而为)发送,无法保证语音、视频等应用的优先传输。当报文丢失时,采用应用层的重传机制无法保证实时应用的低延时需求。

(2)不提供拥塞控制机制。当网络出现拥塞时,无法为高优先级的应用保留宽带。

(3)无法实现组播数据包重复检测。当网络拓扑发生变化时,接收者可能会收到重复的报文,需要应用层去剔除。

(4)无法纠正组播数据包乱序到达的问题。


组播技术主要应用在多媒体会议、IP视频监控、实时数据组播、游戏和仿真等方面。


二、组播技术体系架构


实现组播需要解决如下问题

wKiom1bMG6ni7ISpAAIQnObxWfI375.jpg

    (1)组播的接收者是数目不定的一组接收者,无法像单播一样使用主机IP地址来进行标识,所有首先要解决如何在网络中标识一组接收者。

    (2)如果实现了对组的标识,还需要解决接收者如何加入和离开这个组,路由设备又如何维护组成员信息。

    (3)组播接收者可能分散在网络中的任何角落,那么组播源和组播接收者之间的转发路径基于什么模型,组播数据如何在路径上转发。

    (4)组播数据转发路径如何建立和维护


    上述技术需求通过组播架构中的一些重要机制来实现,包括组播地址组播组管理协议组播分发树模型组播转发机制组播路由协议


三、组播地址

    组播通信中使用组播地址来标识一组接收者,使用组播地址标识的接受者集合称为组播组。


    IANA(Internet Assigned Numbers Authority,因特网编号分配委员会)将 D 类地址空间分配给 IPv4 组播使用,地址范围为 224.0.0.0 -- 239.255.255.255,组播地址的分类和具体含义如下。

(1)224.0.0.0 — 224.0.1.255协议预留组播地址。除 224.0.0.0 保留不做分配外,其他地址供路由协议、拓扑查找和协议维护等使用。

(2)224.0.2.0 — 238.255.255.255用户组地址,全网范围内有效。

(3)239.0.0.0 — 239.255.255.255本地管理组地址,仅在本地管理域内有效。

组播地址解决了 IP 报文在网络层寻址的问题,但通信最终还要依赖于数据链路层和物理层,因此和单播一样,组播也需要考虑数据在链路层如何寻址。

以太网传输单播 IP 报文的时候,目的 MAC 地址使用的是接收者的 MAC 地址。由于组播目的地不再是一个具体的接收者,而是一个成员不确定的组,所以在链路层需要使用特定的组播 MAC 地址来标识一组接收者。

IANA定义 IPv4 组播 MAC 地址格式为 01-00-5E-XX-XX-XX

如下图所示,组播 MAC 地址中高24位固定为 0x01005E,第25位为0,低23位来自于组播IP地址的低23位。

wKioL1bMHj7AJckFAAGAP6yPLQ0045.jpg

    由于组播 IP 地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到组播MAC地址,这样组播地址中就有5位信息丢失。于是,就有32个组播IP地址映射到了同一个组播MAC地址上,从而在二层处理过程中,设备可能要接收一些本组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了。

    例如,组播 IP 地址为 228.128.128.128,其对应的组播 MAC 地址为 01-00-5E-00-80-80;组播 IP 地址为 229.128.128.128,其对应的组播 MAC 地址仍然为 01-00-5E-00-80-80。


四、组播组管理协议

解决了如何标识组播组的问题,还需要考虑接收者怎么加入组播组,如何维护组播组以及由谁在维护组播组等问题。在组播架构中使用组播组管理协议来实现上述需求。

组播组管理协议是运行于主机和路由器之间的协议。主机通过组播组管理协议通知路由器加入或离开某个组播组;路由器通过组播组管理协议响应主机加入请求,建立相应的组播表项,并通过查询消息维护组播组信息。


    常用的组播组管理协议为 IGMP(Internet Group Management Protocol,因特网组管理协议)


五、组播转发机制

单播通信中,发送源和接收者之间的路径是点到点的一条线,起点为发送源,目的地为一个接收者,该路径由单播路由协议建立。

组播通信中,由于目的地是数目不定的一组接收者,故采用组播分发树,接收者位于树形结构的叶子处,组播分发树由组播路由协议建立。


根据组播分发树树根位置的不同,组播分发树模型分为 最短路径树(Shortest Path Tree,SPT)模型和共享树(Rendezvous Point Tree,PRT)模型。

SPT树根为发送源,因此SPT也称为“源树”,其从发送源到每一个接收者的路径都是最优的。

RPT模型树根为网络中的某一台设备,称为汇聚点,从发送源到接收者的组播数据必须首先经过汇聚点,然后再由汇聚点发送到每一个接收者。因此RPT模型中,从发送源到接收者之间的路径不一定是最优路径。


单播通信中,IP报文转发的依据是报文的目的IP地址,网络中的路由器收到单播IP报文后只需要通过目的IP地址查找单播路由表,确定报文对应的下一跳地址,得出报文的出接口即可。

组播通信中,不能简单地通过查看报文的目的IP地址就得到报文传送的最优路径以及对应的出接口,因为组播报文的目的地址不是一台明确的主机,有可能路由器每一个接口都存在接收者。

于是,组播采用逆向路径转发的方式,判断组播报文是否从指向组播分发树树根的最短路径到达,只有来自于最优路径的组播报文才会被转发,来自于非最优路径的组播报文会被丢弃。并且可以消除组播路径环路。


单播转发的时候主要关心报文往哪里去,而组播转发的时候主要关心报文从哪里来。


六、组播路由协议

组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由协议建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。


组播路由协议根据作用范围组可以分为

  域内组播路由协议:DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议),MOSPF(Multicast Extensions to OSPF,组播扩展 OSPF 协议)和 PIM(Protocol Independent Multicast,协议无关组播)


  域间组播路由协议:MSDP(Multicast Source Discovery Protocol,组播源发现协议)、MBGP(Multicast BGP,组播BGP)


    域内组播路由协议根据建立的组播分发树可以分为:

  基于 SPT 的组播路由协议:PIM-DM(Protocol Independent Multicast - Dense Mode,协议无关组播 - 密集模式)、DVMRP、MOSPF

  基于 RPT 的组播路由协议:PIM-SM(Protocol Independent Multicast - Sparse Mode,协议无关组播 - 稀疏模式)


七、组播协议体系

组播协议主要包含主机和路由器之间的协议,路由器和路由之间的协议,以及组播域之间的协议。

主机和路由器之间的协议即组播组管理协议,IPv4 中通常使用IGMP。通过 IGMP,路由器可以了解在本地网段中,哪些组播组存在接收者,并维护组成员信息。

路由器和路由器之间的协议为组播路由协议,常用的组播路由协议为PIM。通过PIM,可以将组成员信息扩散到整个网络,从而建立从发送源到接收者之间的组播分发树。

组播域的边界通常为单播域的边界,由于域之间组播路由信息有可能无法直接交互,导致接收者无法跨域接收组播数据,此时需要在域之间运行域间组播路由协议,解决域间组播通信的问题,常用的域间组播路由协议为 MSDP


八、组播模型

根据接收者对组播源处理方式的不同,组播模型分为以下两类。

    (1)ASM(Any-Source Multicast,任意信源组播)模型。在ASM模型中,组播接收者无法指定组播源,任意组播源发送到同一个组播组的数据,都会被网络设备传送到组播接收者。

    (2)SSM(Source-Specific Multicast,指定信源组播)模型。在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其他源发送的信息。SSM模型为用户提供了一种能够在客户端指定组播源的传输服务。


SSM模型与ASM模型的根本区别,在于SSM模型中的接收者已经通过其他手段预先知道了组播源的具体位置。


ASM,当接收者通过组播组管理协议加入某组播组时,并不区分组播数据的发送源。


ASM模型无法满足主机接收指定发送源发送的组播数据,如果主机收到多份来自不同发送源的相同组播组的数据,需要上层应用进行区分。