组播技术简介

介绍组播的产生背景、组播传输机制和相关协议

Posted by Bokala on March 20, 2016

产生背景

传统的IP通信方式主要有单播及广播两种方式。

单播: 在源主机与目的主机之间的点对点通信;

广播: 在源主机与同一网段中所有其他主机之间点对多点的通信。

缺点: 欲要将信息发送给多个主机而非所有主机,若采用广播的方式,不仅会将信息发送给不需要的主机而浪费资源,而且也不能够实现跨网段发送;若采用单播的方式,重复的IP包不仅会占用大量带宽,而且会增加源主机的负载。

组播: 指在IP网络中,将数据包以尽力传送的形式发送给某个确定的节点集合(即组播组),其基本思想是:源主机(组播源)只发送一份数据,其目的地址为组播组地址,组播组中的所有接受者都可收到同样的数据拷贝,并且只有组播组内的主机可以接收该数据包,其他主机则不能接收。

技术优点

有效地解决了单点发送、多点接收的问题,实现了IP网络中点到多点的高效数据传送,能节约大量的网络带宽、降低网络负载。网络的组播特性可以提供更加丰富的业务,如在线直播、网络电视、远程教育、网络电台、实时视频会议等信息服务。

实现

  • 组播源向一组确定的接受者发送信息,如何来标识这组确定的接受者?–组播地址机制
  • 接收者通过加入组播组来实现对组播信息的接收,接收者是如何动态地加入或离开组播组的? –组成员关系管理
  • 组播报文在网络中是如何被转发并最终到达接受者的?–组播报文转发
  • 组播报文的转发路径(组播转发树)是如何构建的?–组播路由协议

1. 组播地址机制

1.1 IP组播地址

组播地址格式

IP组播地址用于标识一个IP组播组,D类地址空间之分配给组播使用的,范围是224.0.0.0~239.255.255。

IP组播地址划分

1.2 IP组播地址到链路层的映射

IP组播地址到组播MAC地址的映射

IANA将MAC地址范围01:00:5E:00:00:00~01:00:5E:7F:FF:FF分配给组播使用,这就要求将28位的IP组播地址空间映射到23位的组播MAC地址空间中,具体的映射方法是将组播地址中的低23位放入MAC地址的低23位 。由于IP组播地址的后28位中只有23位被映射到组播MAC地址,这样会有32个IP组播地址映射到同一组播MAC地址上。

2. 组成员关系管理

组成员关系管理是指在路由器/交换机上建立直联网段内的组成员关系信息,具体就是各接口/端口下有哪些组播组的成员。

2.1 IGMP

IGMP运行于主机和与主机直连的路由器之间,其实现的功能是双向的:一方面,主机通过IGMP通知路由器希望接收某个特定组播组的信息;另一方面,路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护。通过IGMP,在路由器中记录的信息是某个组播组是否在本地有组成员,而不是组播组与主机之间的对应关系。

目前共有三个版本的IGMP:

  • IGMPv1(RFC 1112)中定义了基本的组成员查询和报告过程;
  • IGMPv2(RFC 2236)在 IGMPv1 的基础上添加了组成员快速离开的机制等;
  • IGMPv3(RFC 3376)中增加的主要功能是成员可以指定接收或拒绝来自某些组播源的报文,以实现对 SSM 模型的支持。

下面是IGMPv2的工作原理图:

IGMPV2工作原理

当同一个网段内有多个IGMP路由器时, IGMPv2通过查询器选举机制从中选举出唯一的查询器。查询器周期性地发送普遍组查询消息进行成员关系查询,主机通过发送报告消息来响应查询。而作为组成员的路由器,其行为也与普通主机一样,响应其它路由器的查询。

当主机要加入组播组时,不必等待查询消息,而是主动发送报告消息;当主机要离开组播组时,也会主动发送离开组消息,查询器收到离开组消息后,会发送特定组 查询消息来确定该组的所有组成员是否都已离开。

通过上述机制,在路由器里建立起一张表,其中记录了路由器各接口所对应子网上都有哪些组的成员。当路由器收到发往组G的组播数据后,只向那些有G的成员的接口转发该数据。至于组播数据在路由器之间如何转发则由组播路由协议决定,而不是IGMP的功能。

2.2 IGMP Snooping

IGMP是针对IP层设计的,只能记录路由器上的三层接口与IP组播地址的对应关系。但在很多情况下,组播报文不可避免地要经过一些交换机,如果没有一种机制将二层端口与组播MAC地址对应起来,组播报文就会转发给交换机的所有端口,这显然会浪费大量的系统资源。

IGMP Snooping的出现就可以解决这个问题,其工作原理为:主机发往IGMP查询器的报告消息经过交换机时,交换机对这个消息进行监听并记录下来,为端口和组播MAC地址建立起映射关系;当交换机收到组播数据时,根据这样的映射关系,只向连有组成员的端口转发组播数据。

3. 组播报文转发

3.1 组播转发树

组播报文在网络中是沿着树型转发路径进行转发的,该路径称为组播转发树,可分为源树和共享树两类。

源树: 指以组播源作为树根,将组播源到每个接受者的最短路径结合起来构成的转发树,源树也称为最短路径树(SRT)。

源树的优点是能构造组播源和接收者之间的最短路径,使端到端的延迟达到最小。但付出的代价是,在路由器中必须为每个组播源保存路由信息,这样会占用大量的系统资源,路由表的规模也比较大。

共享树: 以某个路由器作为路由树的树根,该路由器称为汇集点(RP),共享树就是由RP到所有接收者的最短路路径所共同构成的转发树。使用共享树时,对应某个组网络中只有一棵树。所有的组播源和接收者都使用这棵树来收发报文,组播源先向树根发送数据报文,之后报文又向下转发到达所有的接收者。

共享树的最大优点是路由器中保留的路由信息可以很少,缺点是组播源发出的报文要先经过RP,再到达接收者,经由的路径通常并非最短,而且对RP的可靠性和处理能力要求很高。

3.2 组播报文转发机制

当路由器收到组播数据报文时,根据组播目的地址查找组播转发表,对报文进行转发。与单播报文的转发相比,组播报文的转发相对复杂:在单播报文的转发过程中,路由器并不关心报文的源地址,只关心报文的目的地址,通过其目的地址决定向哪个接口转发;而组播报文是发送给一组接收者的,这些接收者用一个逻辑地址(即组播地址)标识,路由器在收到组播报文后,必须根据报文的源地址确定其正确的入接口(指向组播源方向)和下游方向,然后将其沿着远离组播源的下游方向转发——这个过程称为逆向路径转发(RPF)。

在RPF执行过程中会利用原有的单播路由表确定上、下游的邻接节点,只有报文从上游节点所对应的接口(称为RPF接口,即路由器上通过单播方式向该地址发送报文的出接口)到达时,才向下游转发。 RPF的主体是RPF检查,通过RPF检查除了可以正确地按照组播路由的配置转发报文外,还可以避免可能出现的环路。路由器收到组播报文后先对其进行RPF检查,只有检查通过才执行转发。

RPF检查的过程为:路由器在单播路由表中查找组播源或RP对应的RPF接口(使用SPT时查找组播源对应的RPF接口,使用RPT时查找RP对应的RPF接口),如果组播报文是从RPF接口接收下来的,则RPF检查通过,报文向下游接口转发;否则,丢弃该报文。

4. 组播路由协议

  • 域内组播路由协议:根据 IGMP 协议维护的组成员关系信息,运用一定的组播路由算法构造组播分发树,在路由器中建立组播路由状态,路由器根据这些状态进行组播数据包转发;
  • 域间组播路由协议:根据网络中配置的域间组播路由策略,在各自治系统间发布具有组播能力的路由信息以及组播源信息,使组播数据能在域间进行转发。

5. 组播模型分类

  • ASM模型:即任意源组播模型。在 ASM 模型中,任一发送者都可作为组播源向某组播组地址发送组播信息,接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。在 ASM 模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开组播组。
  • SSM模型:即指定信源组播模型。在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。 SSM 模型为用户提供了一种能够在客户端指定组播源的传输服务。