首页 > 代码库 > 组播的应用和实现
组播的应用和实现
一、引言
1.1、 问题的引出
近年来,随着网络技术的发展,使得各种单一媒体相继成为网络传输中的数据,进而各种媒体的融合使得网络多媒体运用层出不穷。目前,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网络视频会议 (可视化IP电话会议系统)、网络音频/视频广播、多媒体远程教育、远程会诊,而传统网络最初是为数据传输而设计的,是典型的点点通信模式,是为保证数据可靠传输而设计的,所用的传输协议多为点到点的协议。其所具有的特点将增加网络发送负载,带来网络延时。这就带来了带宽的急剧消耗和网络拥挤问题。为了缓解网络瓶颈,人们提出各种方案:增加互连带宽,改变网络流量结构,IP组播技术等等,其中,IP组播技术有其独特的优越性——在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加。
组播技术可形象的描述如下:
假设一个企业分布于各地的子公司(两个以上)之间需要通过Internet进行实时的交换信息(数据,声音,图像),他们的计算机可能不属于同一物理网络,甚至不属于同一自治系统,这种通信的特点是“多点”式的。子公司发出的数据希望其他子公司都能收到,而总部发出的指示全体子公司都应收到。这种多点通信方式为组内广播,即组播技术,也称多播技术,多目网关技术。
1.2、TCP/IP传送方式
组播技术是TCP/IP传送方式的一种。在我们讨论组播技术之前先来看看
TCP/IP传送方式。TCP/IP传送方式有三种:单播,广播,组播。
单播(Unicast)传输:在发送者和每一接收者之间需要单独的数据信道。如果一台主机同时给很少量的接收者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同一份拷贝时却很难实现。这将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。
组播(Multicast)传输:它提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)。
广播(Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网主机都投递一份数据包,不论这些主机是否乐于接收该数据包。然而广播的使用范围非常小,只在本地子网内有效,因为路由器会封锁广播通信。广播传输增加非接收者的开销。
二、组播技术
2.1、组播技术的原理
组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播源把数据包发送到特定组播组,而只有属于该组播组的地址才能接收到数据包。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。它提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络(如果有组播路由器的支持)。
2.2、实现组播技术的前提条件
实现IP组播传输,则组播源和接收者以及两者之间的下层网络都必须支持组播。这包括以下几方面:
* 主机的TCP/IP实现支持发送和接收IP组播;
* 主机的网络接口支持组播;
* 有一套用于加入、离开、查询的组管理协议,即IGMP(v1,v2);
* 有一套IP地址分配策略,并能将第三层IP组播地址映射到第二层MAC地址;
* 支持IP组播的应用软件;
* 所有介于组播源和接收者之间的路由器、集线器、交换机、TCP/IP栈、防火墙均需支持组播;
2.3、组播地址
在组播通信中,我们需要两种地址:一个IP组播地址和一个Ethernet组播地址。其中,IP组播地址标识一个组播组。由于所有IP数据包都封装在 Ethernet帧中,所以还需要一个组播Ethernet地址。为使组播正常工作,主机应能同时接收单播和组播数据,这意味着主机需要多个IP和 Ethernet地址。 IP地址方案专门为组播划出一个地址范围,在IPv4中为D类地址,范围是224.0.0.0到239.255.255.255,并将D类地址划分为局部链接组播地址、预留组播地址、管理权限组播地址。
局部链接地址:224.0.0.0~224.0.0.255,用于局域网,路由器不转发属于此范围的IP包;
预留组播地址:224.0.1.0~238.255.255.255,用于全球范围或网络协议;
管理权限地址:239.0.0.0~239.255.255.255,组织内部使用,用于限制组播范围;
D类地址的最后28比特没有结构化,即没有网络ID和主机ID之分。响应某一个IP多播地址的主机构成一个主机组,主机组可跨越多个网络。主机组的成员数是动态的,主机可以通过IGMP协议加入或离开某个主机组。IP多播地址影射到以太网地址的方法见下图。因为IP多播地址的高5位未影射,因此,影射的以太网地址不是唯一的,共有32个IP多播地址影射到一个以太网地址。
2.4、组播协议:
组播协议主要包括组管理协议(IGMP)和组播路由协议(密集模式协议(如DVMRP,PIM-DM)、稀疏模式协议(如PIM-SM,CBT)和链路状态协议(MOSPF))
* 组管理协议IGMP
主机使用IGMP通知子网组播路由器,希望加入组播组;路由器使用IGMP查询本地子网中是否有属于某个组播组的主机。
* 加入组播组
当某个主机加入某一个组播组时,它通过“成员资格报告”消息通知它所在的IP子网的组播路由器,同时将自己的IP模块做相应的准备,以便开始接收来自该组播组传来的数据。如果这台主机是它所在的IP子网中第一台加入该组播组的主机,通过路由信息的交换,组播路由器加入组播分布树。
* 退出组播组
在IGMP v1中,当主机离开某一个组播组时,它将自行退出。组播路由器定时(如120秒) 使用“成员资格查询” 消息向IP子网中的所有主机的组地址(224.0.0.1)查询,如果某一组播组在IP子网中已经没有任何成员,那么组播路由器在确认这一事件后,将不再在子网中转发该组播组的数据。与此同时,通过路由信息交换,从特定的组播组分布树中删除相应的组播路由器。这种不通知任何人而悄悄离开的方法,使得组播路由器知道IP子网中已经没有任何成员的事件延时了一段时间,所以在IGMP v2.0中,当每一个主机离开某一个组播组时,需要通知子网组播路由器,组播路由器立即向IP子网中的所有组播组询问,从而减少了系统处理停止组播的延时。
* 组播路由协议
要想在一个实际网络中实现组播数据包的转发,必须在各个互连设备上运行可互操作的组播路由协议。组播路由协议可分为三类:密集模式协议(如DVMRP,PIM-DM)、稀疏模式协议(如PIM-SM,CBT)和链路状态协议(MOSPF),下面分别介绍各个协议的工作原理。
* 距离向量组播路由协议(Distance Vector Multicast Routing Protocol:DVMRP)
DVMRP由单播路由协议RIP扩展而来,两者都使用距离向量算法得到网络的拓扑信息,不同之处在于RIP根据路由表前向转发数据,而DVMRP则是基于RPF。为了使新加入的组播成员能及时收到组播数据,DVMPR采用定时发送数据包给所有的LAN的方法,然而这种方法导致大量路由控制数据包的扩散,这部分开销限制了网络规模的扩大。另一方面,DVMRP使用跳数作为计量尺度,其上限为32跳,这对网络规模也是一个限制。目前提出了分层DVMRP,即对组播网络划分区域,在区域内的组播可以按照任何协议进行,而对于跨区域的组播则由边界路由器在DVMRP协议下进行,这样可大大减少路由开销。
* 开放式组播最短路径优先协议(Multicast Open Shortest Path First:MOSPF)
MOSPF是一种基于链路状态的路由协议,是对单播OSPF协议的扩展。同OSPF类似,MOSPF定义了三种级别的路由:
a、 OSPF区域内组播路由:用于了解各网段中的组播成员,构造(源网络S,组G)对的SPT;
b、 MOSPF区域间组播路由:用于汇总区域内成员关系,并在自治系统(AS)主干网(区域0)上发布组成员关系记录通告,实现区域间组播包的转发。
c、 OSPF AS 间组播路由:用于跨AS的组播包转发。
* 协议无关组播(Protocol Independent Multicast:PIM)
PIM由IDMR(域间组播路由)工作组设计,顾名思义,PIM不依赖于某一特定单播路由协议,它可利用各种单播路由协议建立的单播路由表完成RPF检查功能,而不是维护一个分离的组播路由表实现组播转发。由于PIM无需收发组播路由更新,所以与其它组播协议相比,PIM开销降低了许多。 PIM的设计出发点是在Internet范围内同时支持SPT和共享树,并使两者之间灵活转换,因而集中了它们的优点提高了组播效率。 PIM定义了两种模式:密集模式(Dense-Mode)和稀疏模式(Sparse-Mode)。
* 有核树组播路由协议(Core-Based Trees: CBT)
CBT的基本目标是减少网络中路由器组播状态,以提供组播的可扩展性。为此,CBT被设计成稀疏模式(与PIM-SM相似)。 CBT使用双向共享树,双向共享树以某个核心路由器为根,允许组播信息在两个方向流动。这一点与PIM-SM不同(PIM-SM中共享树是单向的,在RP 与组播源之间使用SPT将组播数据转发到RP),所以CBT不能使用RPF检查,而使用IP包头的目标组地址作检查转发缓存。这就要求对CBT共享树的维护就需非常小心,以确保不会产生组播路由循环。
2006-1-4 00:37 秋风如刀
三、组播技术的应用系统实现——可视化Ip电话会议系统
上面讨论了组播技术的各个技术细节,下面我们以多媒体应用——可视化Ip电话会议系统为例来探讨组播技术在应用系统的实现。
可视化Ip电话会议系统: 是利用计算机,多媒体通信技术和设备,通过传输信道在两地或多个地点之间开会的一种通信手段。在召开会议时,处于两地或不同地点的与会代表,既可以听到对方的声音,又可以看到对方的形象,同时还能看到对方会议室的场景,以及在会议中展示的事物、图片、表格、文件等,缩短了与会代表的距离,使大家好像在同一会议室参加会议一样。它的广泛应用必然产生巨大的社会效益和经济效益。
会议的组织,召开,管理由主会场来完成。因此,主会场的视频,声音,通知,指示,下达的文件资料各分会场都应该收到。当某分会场发言时,其视频,声音同样要传送给其他会场。(如下图所示)上述所有动作的完成依赖组播技术。通过组播技术把主会场的各种数据发送到参加会议的分会场中,而且把发言分会场的视音频数据发送给其他会场:即主会场和发言分会场的各种数据只要在网上发送一次,其他会场都将收到此数据,(这就是有别于点对点通信方式的地方)而与这两个会场在同一网段却不参加会议的非成员不会收到数据(只要设备支持,这也是有别于广播的地方)。因此,当会议成员增加时,不会产生信息传输量剧增,带来无法忍受的网络延时和抖动。
根据上面对组播技术的讨论我们可以得出要实现可视化IP电话会议必须解决如下几个方面问题:
3.1、组播地址
根据上面的讨论我们知道应用系统中可采用组播地址的范围是:224.0.1.0~238.255.255.255。那么在我们的应用系统中应如何使用组播地址呢?有两种方法使用组播地址:静态设置,动态获取。
* 静态获取:
在会议系统中设置好组播地址,以后永远不变。这种方式虽然比较简单,在目前会议系统使用不多时没有问题,但是如果有两个此类会议系统运行,或使用相同组播地址的不同系统运行(由于没有统一管理组播地址,开发商互相不知道),那就会出现无法解决的冲突。因为本应属于两个不同的组却由于使用相同的组播地址而合为一组。这对于将来会议系统的广泛应用是不可行的。
* 动态获取:
会议系统用到的组播地址是不定的,只在运行时临时确定。动态获取组播地址的方法大概有三种:通告方式获取,算法推导方式取得,采用Internet组播地址动态分配体系结构(RFC2908)。
通告方式获取:当会议系统建立时,先侦听10-20分钟左右,以确定当前已使用的组播地址,防止冲突。
算法推导:根据本地的特殊条件,通过一定的算法,求出当前使用的组播地址。
采用上述三种方式获取组播地址可有效防止地址冲突问题。虽然比较复杂,也较耗费资源,但是有利于将来的多媒体应用的扩展。
3.2、网络设置:
由于我们以前的Internet应用大多集中于数据的交换、共享,因此在目前的通信方式中,主要采用的是单播和广播,对组播的考虑不是很多。但随着多媒体应用(视频,音频)的发展,要求Internet网络必须很好的支持组播,这也是会议系统得以运行的前提条件。因此,所有介于组播源和接收者之间的路由器、集线器、交换机、TCP/IP栈、防火墙均需支持组播。
在路由器上要安装相应的软件:组管理协议软件,组播路由协议软件等等。
如果要采用RFC2908--Internet组播地址动态分配体系结构,还应配置相应的组播地址分配服务器。
目前绝大多数集线器、交换机只是简单的把组播数据当成广播来发送接收。
假设某网段某一成员参加会议(采用会议系统),则处于同一网段(由交换机、集线器连接)的其他非会议成员其实都可收到多媒体流。这样,非会议成员的真正可使用带宽将急剧下降;如果有多个类似的会议系统(组)同时存在,那么将导致网络拥塞,直至网络瘫痪。同时,由于数据流被广播,很可能会被其他非法成员利用,造成安全隐患。因此,在当今流行的用交换机组建园区网,小区网、专用局网Intranet的网络设计中,应充分考虑到将来多媒体应用发展将会带来的安全问题和带宽问题。
3.3、防火墙:
可视化IP电话会议系统运行在Internet上,我们必须要考虑防火墙的问题。由于目前病毒泛滥,为了保护自身的安全,许多机构用一台防火墙计算机作为在公用互联网和本机构的专用网,即内部局网Intranet网之间的安全性网关。目前的防火墙大多基于单播通讯来设计的,而组播与单播的原理是有很大不同的:
单播通讯是由一对参与者会话的形式组成的,因此搞清楚单播通讯的安全性是基于这些参与者(每位被授权的参与者),此外"单播通讯之间的"信任"必须建立在每一个参与者的"可信任"之上,也必须建立在数据的"可信任"上。
组播的范围有随意性,它含盖了不同集合的参与者,有的可能还不知道这些参与者是否具有资格。(这是它的特点,而不是BUG),因此组播的安全性不能依赖其参与者,而应该是依赖数据。特别是组播通讯是通过对包数据授权而进行授权的,例如使用数字签名--这种数据是专门加过密的,所以组播间的信任是通过这些数据的神圣的信任关系来建立的。
为了处理组播安全问题,防火墙应该做三件事情:
* 支持所选择的组播安全策略。(这个策略建立了正在等候的准备转发的特殊的组播群),组播策略是由特殊的一组受允许通过防火墙转发的组播群(和相应的UDP口)组成的安全集合。
* 动态地作出决定何时需要转发每一个侯选组。组播组是动态变化的,只有确定有必要转发时它才会转发。
* 通过防火墙转发每一个侯选组的数据。 用来转发侯选组播包的实际机制将有赖于防火墙的实质,普通的防火墙设置使用两个站点:intranet的部分,外部internet部分。这种情况下,组播包可在两节点间使用管道协议转发(再到另一侧重新组播)。
四、总结
本文对组播技术做了全面的介绍,并对组播技术在实际的应用系统应解决的问题组播地址、网络设置、防火墙进行了深入的阐述。
组播的应用和实现