一、组播的基本介绍
组播指发送源将产生的单一IP数据包通过网络发送给一组特定接收者的网络传输方式。组播结合了单播和广播的优点,在进行点到多点传输时,发送源不需要关心接受者的数目,仅需要发送一份报文;路由器仅关心接口下是否有接收者,同样不需要关心接收者的数量,所以在路由器之间的链路上也仅传送一份报告。
和单播相比,组播减轻了发送源的负担,并且提高了链路的有效利用率。此外,发送源可以同时发送报文给多个接收者,可以满足低延时应用的需求。
和广播相比,组播方式下路由器仅在有接收者的接口复制报文,报文最终仅传递给接受者而非网络中的所有主机,可以节省大量网络带宽。另外,广播只能在同一网段中进行,而组播可以实现跨网段的传输。
组播的优点:
(1)组播可以增强报文发送效率,控制网络流量,减少服务器和CPU的负载
(2)组播可以优化网络性能,消除流量冗余。
(3)组播可以适应分布式应用,当接收者数量变化时,网络流量的波动很平稳。
同时,由于组播应用基于 UDP 而非 TCP,这就决定了组播应用存在 UDP 相应的缺点,如下所列。
(1)组播数据基于 Best Effort(尽力而为)发送,无法保证语音、视频等应用的优先传输。当报文丢失时,采用应用层的重传机制无法保证实时应用的低延时需求。
(2)不提供拥塞控制机制。当网络出现拥塞时,无法为高优先级的应用保留宽带。
(3)无法实现组播数据包重复检测。当网络拓扑发生变化时,接收者可能会收到重复的报文,需要应用层去剔除。
(4)无法纠正组播数据包乱序到达的问题。
组播技术主要应用在多媒体会议、IP视频监控、实时数据组播、游戏和仿真等方面。
二、组播技术体系架构
实现组播需要解决如下问题
(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位。
由于组播 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模型无法满足主机接收指定发送源发送的组播数据,如果主机收到多份来自不同发送源的相同组播组的数据,需要上层应用进行区分。
本文出自 “不朽字” 博客,请务必保留此出处http://buxiuzi.blog.51cto.com/11124867/1744435
原文:http://buxiuzi.blog.51cto.com/11124867/1744435