近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网络视频会议、网络音频/视频广播、AOD/VOD、股市行情发布、多媒体远程教育、CSCW协同计算、远程会诊。这就带来了带宽的急剧消耗和网络拥挤问题。为了缓解网络瓶颈,人们提出各种方案,归纳起来,主要包括以下四种:
比较而言,IP组播技术有其独特的优越性——在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加。这个优点使它成为当前网络技术中的研究热点之一。
本文简单介绍了组播的发展、分析了组播网络的体系结构、算法和协议,讨论了组播技术的应用,总结了组播技术的难点,希望通过本文能使读者对组播技术有总体的了解。

  • 增加互连带宽;
  • 服务器的分散与集群,以改变网络流量结构,减轻主干网的瓶颈;
  • 应用QoS机制,把带宽分配给一部分应用;
  • 采用IP Multicast(译为组播、多播或多路广播,下文不加区分)技术。

 

一、IP组播发展简史
20
世纪80年代中期,斯坦福大学的博士生S. E. Deering发表Host group: A multicast extension to the Internet Protocol (RFC0966) Host extensions for IP Multicasting (RFC0988) 两篇论文。他总结出:“OSPF的链路状态机制完全能被扩展用来支持组播……RIP的基本机制能被用来作为一种新的距离向量的组播路由协议的基础。这些论断提出了IP组播的可能性。
1988
年,D. Waltzman, C. Portridge, S. E. Deering发表题为《距离向量组播路由协议》的文章(RFC1075),它是组播路由协议的首次实践;
1991
12月,S. E. Deering发表了他的博士论文《数据报互连网络中的组播路由》(RFC1112)。它奠定了组播网络体系结构和路由协议的基础。该文也成为Internet组管理协议(IGMP)的原型;
1994
3月,形成了对OSPF协议的扩展协议MOSPFRFC1584);
1996
11月,出现了对于基于UNI3.0/3.1ATM组播网络支持协议(RFC2022);
1997
9月,有核树(CBTv2)组播路由体系结构形成(RFC2189);
1997
11月,组管理协议IGMPv2得到IETF的批准,成为标准(RFC2336);
1998
6月,评估可靠组播传输协议RMTPIETF标准出台(RFC2357);
1998
7月,在制定IPv6地址体系标准时,确定IPv6组播地址分配方案(RFC2373),这为组播技术在下一代Internet上的应用做出了必要的准备;
1999
10月,CiscoAT&TMicrosoft制定组播地址动态客户分配协议MADCAPRFC2730);
2000
年底2001年初,人们着手制定各种组播MIB库,这标志组播技术正向可管理、可控制方向发展。
二、组播网络的体系结构
组播网络体系结构包括:组播的基本工作原理、实现组播的条件、组播的地址分配方案及与MAC地址映射、Internet组管理协议。
2.1
组播的工作原理
组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播源把数据包发送到特定组播组,而只有属于该组播组的地址才能接收到数据包。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。图1 为基于三种通讯方式的网络结构和数据传递过程。

 

                                                           图1:单播、组播、广播传输模式

从图1的工作方式可以看出:

  • 单播(Unicast)传输:在发送者和每一接收者之间需要单独的数据信道。如果一台主机同时给很少量的接收 者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同一份拷贝时却很难实现。这将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务 质量需增加硬件和带宽。
  • 组播(Multicast)传输:它提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)。
  • 广 播(Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网主机都投递一份数据包,不论 这些主机是否乐于接收该数据包。然而广播的使用范围非常小,只在本地子网内有效,因为路由器会封锁广播通信。广播传输增加非接收者的开销。

 

2.2 实现IP组播的前提条件

 

实现IP组播传输,则组播源和接收者以及两者之间的下层网络都必须支持组播。这包括以下几方面:
前,IP组播技术得到硬件、软件厂商的广泛支持,比如,新生产的以太网卡几乎都支持组播;Cisco的路由器不仅支持DVMRPPIM路由协议、IGMP组管理协议,而且支持Cisco专有Cisco组管理协议CGMP,再如微软的Windows 95支持IP组播和IGMPv1,而Windows 98还支持IGMPv2。对于不支持IP组播传输的中间路由器采用IP隧道(Tunneling)技术作为过渡方案。这些说明IP组播技术的应用环境已基 本具备。

  • 主机的TCP/IP实现支持发送和接收IP组播;
  • 主机的网络接口支持组播;
  • 有一套用于加入、离开、查询的组管理协议,即IGMPv1,v2);
  • 有一套IP地址分配策略,并能将第三层IP组播地址映射到第二层MAC地址;
  • 支持IP组播的应用软件;
  • 所有介于组播源和接收者之间的路由器、集线器、交换机、TCP/IP栈、防火墙均需支持组播;

 

 

2.3 组播地址分配与MAC地址

在组播通信中,我们需要两种地址:一个IP组播地址和一个Ethernet组播地址。其 中,IP组播地址标识一个组播组。由于所有IP数据包都封装在Ethernet帧中,所以还需要一个组播Ethernet地址。为使组播正常工作,主机应 能同时接收单播和组播数据,这意味着主机需要多个IPEthernet地址。
IP
地址方案专门为组播划出一个地址范围,在IPv4中为D类地 址,范围是224.0.0.0239.255.255.255,并将D类地址划分为局部链接组播地址、预留组播地址、管理权限组播地址;在IPv6中为 组播地址提供了许多新的标识功能,图2IPv4IPv6的组播地址格式,其中IPv6中特殊域的定义见图2

 

 

                                     图2:IPv4IPv6的组播地址格式; IPv6中特殊域的定义

局部链接地址:224.0.0.0224.0.0.255,用于局域网,路由器不转发属于此范围的IP包;

 

 

预留组播地址:224.0.1.0238.255.255.255,用于全球范围或网络协议如ospf;

管理权限地址:239.0.0.0239.255.255.255,组织内部使用,用于限制组播范围;

2.3.1 以太网与FDDI组播MAC地址映射

IP组播帧都使用以0X0100.5EXX.XXXX24位前缀开始的MAC层地址,但只有其中的一半MAC地址可以被IP组播使用,剩下的MAC地址空间 23位作为第三层IP组播地址进入第二层MAC地址的映射使用。由于第三层IP组播的28位地址不能映射到只有23位的可用MAC地址空间,造成有32:1的地址不明确,所以主机CPU必须对收到的每一个组播数据包做出判断。这增加了主机CPU的开销。此外,还产生抑制第二层局域网交换的组播扩散问 题。
2.3.2
令牌环网组播MAC地址映射
令牌环网MAC地址格式与标准以太网MAC地址格式位序相反。令牌环网的缺点是其功能地 址位使得它对组播地址映射的不明确性高达228:1,这意味着令牌环网上的组播数据流将导致令牌环网点的CPU被环路上的每一个组播数据包中断,从这个角 度来说,令牌环网不适合于组播。
2.4
组播树
在单播模型中,数据包通过网络沿着单一路径从源主机向目标主机传递,但在组播模型中,组播源向某一组地址传递数据包,而这一地址却代表一个主机组。为了向所有接收者传递数据,一般采用组播分布树描述IP组播在网络里经过的路径。
组播分布树有四种基本类型:泛洪法、有源树、有核树和Steiner树。
2.4.1
洪泛法(Flooding
这是最简单的向前传送组播路由算法,并不构造所谓的分布树。其基本原理如下:当组播路由器收到发往某个组播地址的数据包后,首先判断是否是首次收到该数据包,如果是首次收到,那么将其转发到所有接口上,以确保其最终能到达所有接收者;如果不是首次收到,则抛弃该数据包。
泛法的实现关键是首次收到的检测。这需要维护一个最近通过的数据包列表,但无需维护路由表。它适合于对组播需求比较高的场合,并且能做到即使传输出现 错误,只要还存在一条到接收者的链路,则所有接收者都能接收到组播数据包。然而,洪泛法不适合用于Internet,因为它不考虑链路状态,并产生大量的 拷贝数据包。此外,对于高速网络而言,首次收到列表将会很长,占用相当大的内存;尽管它能保证不对相同的数据包进行二次转发,但不能保证对相同数据包 只接收一次。
2.4.2
有源树
有源树也称为基于信源的树或最短路径树(Shortest Path TreeSPT)。它是以组播源为根构造的从根到所有接收者路径都最短的分布树。如果组中有多个组播源,则必须为每个组播源构造一棵组播树。由于不同组 播源发出的数据包被分散到各自分离的组播树上,因此采用SPT有利于网络中数据流量的均衡。同时,因为从组播源到每个接收者的路径最短,所以端到端 end-to-end)的时延性能较好,有利于流量大、时延性能要求较高的实时媒体应用。SPT的缺点是:要为每个组播源构造各自的分布树,当数据流量 不大时,构造SPT的开销相对较大。
2.4.3
共享树
共享树也称RP树(RPT),是指为每个组播组选定一个共用根(汇合点RP 核心),以RP为根建立的组播树。同一组播组的组播源将所要组播的数据单播到RP,再由RP向其它成员转发。目前,讨论最多同时也是最具代表性的两种共享 树是Steiner树和有核树(CBT)。
Steiner
树是总代价最小的分布树,它使连接特定图(graph)中的特定组成员所需的链路数最 少。若考虑资源总量被大量的组使用的情况,那么使用资源较少最终就会减少产生拥塞的风险。Steiner树相当不稳定,树的形状随组中成员关系的改变而改 变,且对大型网络缺少通用的解决方案。所以Steiner树只是一种理论模型,而非实用工具。目前,出现了许多Steiner树的次优启发式生成算法。
核树是由根到所有组成员的最短路径合并而成的树。A. Ballardie19979月的《基于核的组播路由体系结构》(Core Based Trees (CBT) Multicast Routing Architecture(RFC2189RFC2201)中介绍了有核树。关于它的进一步讨论见下文。
共享树在路由器所需存储的状态信息的数量和路由树的总代价两个方面具有较好的性能。当组的规模较大,而每个成员的数据发送率较低时,使用共享树比较适合。但当通信量大时,使用共享树将导致流量集中及根(RP)附近的瓶颈。
2.5
组管理协议IGMP
主机使用IGMP通知子网组播路由器,希望加入组播组;路由器使用IGMP查询本地子网中是否有属于某个组播组的主机。
加入组播组
某个主机加入某一个组播组时,它通过成员资格报告消息通知它所在的IP子网的组播路由器,同时将自己的IP模块做相应的准备,以便开始接收来自该组播 组传来的数据。如果这台主机是它所在的IP子网中第一台加入该组播组的主机,通过路由信息的交换,组播路由器加入组播分布树。
退出组播组
IGMP v1中,当主机离开某一个组播组时,它将自行退出。组播路由器定时(120) 使用成员资格查询消息向IP子网中的所有主机的组地址(224.0.0.1)查询,如果某一组播组在IP子网中已经没有任何成员,那么组播路由器在确认这一事件后,将不再 在子网中转发该组播组的数据。与此同时,通过路由信息交换,从特定的组播组分布树中删除相应的组播路由器。这种不通知任何人而悄悄离开的方法,使得组播路 由器知道IP子网中已经没有任何成员的事件延时了一段时间,所以在IGMP v2.0中,当每一个主机离开某一个组播组时,需要通知子网组播路由器,组播路由器立即向IP子网中的所有组播组询问,从而减少了系统处理停止组播的延 时。