论文部分内容阅读
摘要:视频点播(VOD)是一种以用户为主导的音视频信息系统。传统的VOD系统多是C/S模式采用服务器机群或者代理缓存的方式来实现,这会带来较大的硬件和管理开销,系统扩展性也难以得到保证。文中提出了一种基于P2P结构的视频点播的设计方案,分析了采用P2P技术以后视频点播系统对于节点闲散资源的利用和保证播放质量等方面的优势,并探讨了在系统设计与实现中的相关技术与方法。
关键词:视频点播;P2P;缓存策略
中图分类号:TP37文献标识码:A文章编号:1009-3044(2008)06-10ppp-0c
A Video Based on P2P Sharing System Research and Implementation
JIANG Song
(Computer Science and Engineering Institute, UESTC, Chengdu, Sichuan 610054)
Abstract: video-on-demand(VOD) is a user-driven audio and video information systems. More traditional VOD system is C/S mode using cluster or proxy cache server approach to achieve this will bring greater hardware and management costs, expansion of the system can hardly be guaranteed. This paper proposes a structure based on P2P VOD design, analysis after using P2P technology for video-on-demand system idle node in the use of resources and guarantee the quality of players, and other areas, and explored in the system design and implementation of the relevant Techniques and Methods.
Key words: VOD; P2P; cache strategy
1 引言
视频点播(Video-On-Demand) 是基于流媒体技术而实现的一种网络多媒体系统,它满足了人们自主收看节目,获取视频信息的需求。随着Internet的不断发展,一方面,主干网和接入速率的不断提高为各种宽带应用提供了良好的硬件基础设施;另一方面,越来越多的人愿意交互式地观看并分享音视频节目,这些都为视频点播技术的发展创造了条件。
传统的网络流媒体播放系统一般基于C/S模式。但是,由于流媒体播放需要消耗大量的网络带宽和服务器资源,因此,这种模式严重限制了网络流媒体业务的发展。以一个占用带宽为300kbps的网络视频流为例,当有1000个用户同时观看时,需要的带宽是300Mbps。这样的性能要求对于大多数服务器来说是满足不了的。如果要支持几万甚至几十万的用户,采用这种C/S模式几乎是不可能的。当然,增加服务器数量和提高带宽是一个解决方式,但是这种方式需要巨大的成本开支,所以我们需要通过新的技术手段解决这个问题。
IP组播是解决网络流媒体多路传输消耗大量带宽的一种技术。利用组播,可以将一份数据同时发送给一组特定的用户,从而避免了数据的重复发送,不会造成网络带宽的浪费,非常适合网络流媒体传输。但是,IP组播也具有自身的问题。因为Internet是个异构网络,硬件平台千差万别,互连设备在对组播的支持上也存在差异,因此,IP组播在实际应用中存在部署的困难。
所有接入P2P 网络的设备都作为一个对等点而存在并最终连接组成一个对等网,各对等点之间可任意通讯而不需要通过服务器的中转,系统提供的服务分布在各个对等点上,从而消除了单点故障,提高了资源利用率,增强了网络的健壮性。 同时,各对等点可任意加入或退出,使系统具有良好的升级能力和几乎无限的扩充能力,能够完全适应网络伸缩性的变化。 本文主要介绍在校园网宽带环境中如何实现一个实用的、可扩展的P2P 流媒体视频点播系统。
2 相关技术背景
2.1 P2P技术的兴起
不同于传统的C/S模式,P2P中每个节点的地位都是对等的,也就是说节点既充当服务器为其他节点提供服务,也可以当客户端向其他节点发送请求。其网络结构可以分为非结构化和结构化两种。非结构化P2P网络模型主要有:
(1)集中式定位模型:需要一台或多台有特殊用途的服务器为对等点提供索引服务,如Napster[];
(2)分散式定位模型:该模型中的节点只知道直接与它通信或预先定义的那些节点,通过它们参与到大型网络中,如Gnutella[];
(3)组播式定位模型:类似于分散式定位,该模型利用网络自身提供的特性来定位和确认节点和资源,使用IP组播来实现查询,如JXTA[]。结构化P2P网络模型有很多,其中比较著名的是基于DHT的分布式结构化P2P模型。这种模型避免了类似Napster的索引目录中央服务器,也不像Gnutella那样基于广播的泛洪式查找,而是通过分布式Hash函数,将输入的关键字唯一映射到某个节点上,然后通过某种路由算法找到该节点并与它建立连接。这种发现机制的典型代表如Chord[]。
2.2 流媒体播放技术
传统的网络传输音视频等多媒体信息的方式是完全下载后再播放,下载常常要花数分钟甚至数小时。而采用流媒体技术,则可以实现音视频信息的边传输边播放。为了避免因带宽抖动影响播放的质量,基于流媒体的播放往往采用缓存技术予以辅助,也即播放前需要几秒或十几秒的启动延时。流媒体实现的关键技术是流式传输,实现流式传输有两种方法:实时流式传输(Real time streaming)和顺序流式传输(Progressive streaming)。实时流式传输是指保证媒体信号带宽与网络连接匹配以使媒体可被正常播放;顺序流式传输是顺序下载,在下载的同时用户可以观看媒体,它不像实时流式传输在传输期间根据用户网络状况做调整。典型的流媒体解决方案有微软公司的Windows Media[]技术,RealNetworks 公司的RealMedia[]技术和Apple公司的QuickTime[]技术。
2.3 流媒体播放技术
(1)容错性好,没有单一的失败点。所有的资源和服务都是分散在网络中各个节点上的, 而且这些分布的资源往往是存在冗余的。网络中的某台主机出现错误,或网络中的某个部分出现错误,并不影响网络中其余部分的工作。
(2)可扩展性好,易于增加节点。因为没有集中的服务器,网络中Peer的数量不受某些主机性能的影响。增加主机数量不会引起瓶颈问题。
(3)用户具有很高的灵活性。在P2P网络中,Peer可以随时加入或退出网络。加入某个网络与否不受限制,何时加入不受限制,提供什么样的资源,使用什么样的服务不受限制。
(4)自组织性。和C/S模式不同,P2P网络是根据peer的兴趣自主建立起来的,不需要管理者干预。兴趣相同的peer就可以组建一个P2P网络,当它们兴趣不同时,就可以退出网络。
(5)资源利用率高。每一个peer可以充分利用网络上其它对等体的信息资源、处理器周期、高速缓存和磁盘空间,而不像C/S模式那样只使用网络中服务器上的资源。
(6)匿名性。由于网络中没有统一的管理,因为peer不需要向某个管理者申请权限,提供自己的信息。只要是兴趣相同的peer,就可以组建一个独有的P2P网络。
3 关键技术研究
3.1 视频点播与P2P的结合
随着计算机硬件性能的提高和制造成本的下降,普通PC机的处理能力和存储能力已经今非昔比,它们具有一定的闲散资源,诸如计算资源、存储资源和网络资源等。而P2P技术正是提供了一种有效使用这些闲散资源的方法。借助P2P技术,通过资源分片、节点缓存并服务其他节点的方法可以有效地解决传统视频点播方案中服务器存储和网络带宽的瓶颈。采用节点缓存并服务其他节点的方法具有以下优势:首先,这种方法是基于应用层的,不需考虑下层网络,这种方法中不需要引入专门的服务器或者是“边界代理”,节点只需在回放的同时缓存媒体的一部分数据,由于各个节点开始接收媒体的时间存在差异,所以缓存的数据并不相同,一个节点可以从其他节点中获得所需的数据而保证连续播放,从而这些节点形成一个流传输覆盖。其次,由大量这些节点构成的流传输覆盖的性能不会随着节点数量的增多而下降,并且比C/S模式中媒体资源提供者的带宽开销要小,因为节点在消耗其他节点带宽的同时也在贡献自己的部分带宽。再次,每个节点都可以根据一定的QoS要求来选择源节点,当覆盖网络中有多个能够提供所需资源的节点的时候,节点可以选择其中性能最好(例如延迟最低) 的节点来保证服务质量。
假设媒体资源R被分成若干片,最初由节点N0提供。为由节点Ni(i=0,……,n)发出的请求定义两个属性:Ti表示开始接收资源的时间,Oi 表示开始接收时相对资源开始处的偏移。120节点缓存的长度用Bi表示。一段时间以后节点Nj也请求R资源,如果满足以下不等式:(Ti-Oi)<(Tj-Oj)<(Ti-Oi) Bi,那么Nj就能从Ni处获得数据了。节点Ni能够向其他节点提供的分片资源数取决于它的上行带宽,对于不能由节点缓存来提供的分片,可以由原始节点N0来提供。
3.2 内存缓存策略
在对等VOD系统中,一般地,假设内存的最大缓存量为T,即内存最多可以缓存Ts的数据,并定义四个变量来对内存缓存进行描述,分别为:Z表示内存中连续的时间槽的最小位置;M表示内存中连续的时间槽的最大位置;W表示整个内存缓存的最大位置;C表示当前播放位置。对于每个节点来说,这四个值应该满足以下条件:
W-Z=T
M-Z≤2T/3
Z≤C≤M≤W
内存缓存采用循环队列结构来存储时间槽。缓存中,时间槽的更替采用先进先出(FIFO)的策略。用户从其他节点或视频服务器取得新的时间槽后,按照其时间顺序将收到的时间槽放入缓存,更新Z,M和W的值,并从内存中淘汰Z之前的时间槽,利用空出的空间缓存新的时间槽。
3.3 节点加入算法
图1
节点加入算法描述了一个节点如何加入一个P2P直播网络。下面以图1的例子说明节点加入P2P网络的算法。节点F要加入P2P流媒体直播系统,首先应该给服务器S发送请求。服务器收到节点F的请求之后,首先判断自己的直接子节点个数是否已经达到上限。如果没有达到上限,则把节点F作为自己的直接子节点;如果直接子节点已经达到上限,则通过节点管理器来查询哪个子树的节点最少,然后把节点F的IP地址、端口号发送给它的相应直接子节点。该节点通过自己的伙伴管理器,判断节点F是否可以作为自己的直接子节点。如果可以,则把节点F作为直接子节点并建立连接;如果不可以,则把节点F的请求向子节点个数最少的分支转发。依此类推,直到节点F与某个节点子节点建立连接。节点F被某个节点接收后,向服务器S发送消息,服务器S记录下节点F在P2P网络中的信息
3.4 节点离开和失效恢复算法
由于网络的动态特性,每个节点都处在不稳定的状态,随时有可能退出P2P网络。在节点的退出方式上,可以分为正常退出和非正常退出。无论节点是哪种方式退出,都会影响到P2P网络直播。因此,我们需要在节点退出后进行节点失效恢复。在本系统中,每个节点除了保存父节点和子节点的信息,同时还保存自己的祖父节点和孙子节点的信息。对于正常的退出,节点需要向服务器发送退出消息,同时,节点还要向所有的直子节点发送消息,直接子节点随机选择一个子节点把退出消息继续向下转发,直到退出消息到达组播树的叶节点。假设节点C要退出,把退出消息发送给子节点D和E,节点D和E各自随机选择一个子节点继续向下转发,直到退出消息最终到达两个叶节点,然后这两个叶节点收到退出消息后,向节点C发送消息。节点C选择消息最先到达的那个节点作为自己的替换节点,由该叶节点代替自己接收父节点B的数据并向子节点D和E分发数据。对于非正常的退出,不妨假设节点C非正常退出。在正常情况下,节点C和节点B,D,E每隔两秒发送消息以确定对方是否还在网络中存活。当节点C在某个时刻非正常退出,节点B,D,E最迟在两秒之后就会发现节点C已经死亡。由于在本系统中,每个节点都保存着自己的父亲节点、祖父节点、儿子节点和孙子节点的信息,所以节点B保存着节点D和E的信息,同时节点D和E也保存着节点B的信息。由于B和D,E可以相互通信,于是节点B向服务器和节点D,E发送C退出的消息。节点D,E则按照节点C正常退出的算法,选择出一个叶子节点替代节点C。
对于比较极端的情况,即组播树中几个连接节点同时非正常退出。不妨假设节点B和C在某个时刻同时退出。在这种情况下,节点A和D, E将失去联系。对于这种情况,一旦D和E发现父节点和祖父节点同时死亡,则它们向服务器发送信息,由服务器按照新节点加入算法,重新加入到P2P网络中。由于每个节点都有缓存,提前缓存了一部分流媒体数据,因此在D和E断开的短时间内,播放器可以继续播放。如果能快速恢复连接,继续接收流媒体数据,则不会影响到播放质量和效果。如果在短时间不能恢复连接,则需要等到恢复连接后才能继续播放。
4 性能与总结
在网络流媒体播放系统中,对于整个系统具有重要影响的因素主要是时间延迟、网络带宽、服务器处理能力、部署难易度和扩展能力等。我们就此分析一下基于P2P的流媒体直播系统。
(1)对于服务器的处理能力和带宽的要求。由于本系统中,服务器只是对外提供两路单播流媒体,对于300kbps的流媒体来说,服务器只需要具有大于600kbps的带宽即可以满足需求。对于服务器的处理能力,当前的机器一般都具有足够的内存和处理器能力满足提供两路流媒体单播的能力。
(2)对于部署的情况。由于在本系统中,各个Peer都具有TCP/IP网络通信的能力,因此只要节点能与互联网进行连接,就可以很方便地加入该系统,不存在部署的问题。
(3)对于扩展的情况。由于本系统采用的是P2P模式,流媒体主要是在Peer之间进行通信和传输,对于服务器端几乎没有什么影响。因此,本系统具有很高的扩展能力。
(4)关于时间延迟。由于在本系统中,每个Peer在播放之前需要缓存一段时间的流媒体数据,这就会导致用户看到的流媒体不是实时的数据,因此实时性稍差。
视频点播系统(VOD)是当前高带宽网络上一个很有前景的音视频信息服务系统。针对传统C/S模式下VOD系统的不足,提出了一种基于P2P网络的视频点播系统的具体设计与实现方案,对实现过程中的相关技术和方法作了一定探讨。它对网络带宽和服务器处理能力的要求都比较低,同时还具有容易部署和扩展能力高的特点,但是同时也具有时间长的缺点。对于实时性要求不高的流媒体直播,在综合考虑各种因素的情况下,该系统是一个具有较高性价比的大规模流媒体直播解决方案,可以在将来提供更好的网络流媒体播放服务。
参考文献:
[1]Stern R. Napster: a walking copyright infringement[J]. Micro IEEE,2000,20(6):4-5.
[2]Jovanovic M A. Modeling large-scale peer-to-peer networks and a case study of Gnutella[D]. Ohio: Universit y of Cincinnati , 2001.
[3]Li Gong. Project JXTA: A technology overview[R]. [s.l.]:SUN Microsystems,2001.
[4]Stoica I, Morris R, Karger D, et al. Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications[R]. TR-819. [s.l.]:MIT,2001.
[5]陆其明. DirectShow实务精选[M]. 北京:科学出版社,2004.
[6]RealNetworks,Inc.Realmedia[EB/OL]. https://he2.lixcommunity.org/. 2005.
[7]Apple, Inc. Quicktime[EB/OL]. http://developer.ap2ple.com/quicktime/. 2006.
关键词:视频点播;P2P;缓存策略
中图分类号:TP37文献标识码:A文章编号:1009-3044(2008)06-10ppp-0c
A Video Based on P2P Sharing System Research and Implementation
JIANG Song
(Computer Science and Engineering Institute, UESTC, Chengdu, Sichuan 610054)
Abstract: video-on-demand(VOD) is a user-driven audio and video information systems. More traditional VOD system is C/S mode using cluster or proxy cache server approach to achieve this will bring greater hardware and management costs, expansion of the system can hardly be guaranteed. This paper proposes a structure based on P2P VOD design, analysis after using P2P technology for video-on-demand system idle node in the use of resources and guarantee the quality of players, and other areas, and explored in the system design and implementation of the relevant Techniques and Methods.
Key words: VOD; P2P; cache strategy
1 引言
视频点播(Video-On-Demand) 是基于流媒体技术而实现的一种网络多媒体系统,它满足了人们自主收看节目,获取视频信息的需求。随着Internet的不断发展,一方面,主干网和接入速率的不断提高为各种宽带应用提供了良好的硬件基础设施;另一方面,越来越多的人愿意交互式地观看并分享音视频节目,这些都为视频点播技术的发展创造了条件。
传统的网络流媒体播放系统一般基于C/S模式。但是,由于流媒体播放需要消耗大量的网络带宽和服务器资源,因此,这种模式严重限制了网络流媒体业务的发展。以一个占用带宽为300kbps的网络视频流为例,当有1000个用户同时观看时,需要的带宽是300Mbps。这样的性能要求对于大多数服务器来说是满足不了的。如果要支持几万甚至几十万的用户,采用这种C/S模式几乎是不可能的。当然,增加服务器数量和提高带宽是一个解决方式,但是这种方式需要巨大的成本开支,所以我们需要通过新的技术手段解决这个问题。
IP组播是解决网络流媒体多路传输消耗大量带宽的一种技术。利用组播,可以将一份数据同时发送给一组特定的用户,从而避免了数据的重复发送,不会造成网络带宽的浪费,非常适合网络流媒体传输。但是,IP组播也具有自身的问题。因为Internet是个异构网络,硬件平台千差万别,互连设备在对组播的支持上也存在差异,因此,IP组播在实际应用中存在部署的困难。
所有接入P2P 网络的设备都作为一个对等点而存在并最终连接组成一个对等网,各对等点之间可任意通讯而不需要通过服务器的中转,系统提供的服务分布在各个对等点上,从而消除了单点故障,提高了资源利用率,增强了网络的健壮性。 同时,各对等点可任意加入或退出,使系统具有良好的升级能力和几乎无限的扩充能力,能够完全适应网络伸缩性的变化。 本文主要介绍在校园网宽带环境中如何实现一个实用的、可扩展的P2P 流媒体视频点播系统。
2 相关技术背景
2.1 P2P技术的兴起
不同于传统的C/S模式,P2P中每个节点的地位都是对等的,也就是说节点既充当服务器为其他节点提供服务,也可以当客户端向其他节点发送请求。其网络结构可以分为非结构化和结构化两种。非结构化P2P网络模型主要有:
(1)集中式定位模型:需要一台或多台有特殊用途的服务器为对等点提供索引服务,如Napster[];
(2)分散式定位模型:该模型中的节点只知道直接与它通信或预先定义的那些节点,通过它们参与到大型网络中,如Gnutella[];
(3)组播式定位模型:类似于分散式定位,该模型利用网络自身提供的特性来定位和确认节点和资源,使用IP组播来实现查询,如JXTA[]。结构化P2P网络模型有很多,其中比较著名的是基于DHT的分布式结构化P2P模型。这种模型避免了类似Napster的索引目录中央服务器,也不像Gnutella那样基于广播的泛洪式查找,而是通过分布式Hash函数,将输入的关键字唯一映射到某个节点上,然后通过某种路由算法找到该节点并与它建立连接。这种发现机制的典型代表如Chord[]。
2.2 流媒体播放技术
传统的网络传输音视频等多媒体信息的方式是完全下载后再播放,下载常常要花数分钟甚至数小时。而采用流媒体技术,则可以实现音视频信息的边传输边播放。为了避免因带宽抖动影响播放的质量,基于流媒体的播放往往采用缓存技术予以辅助,也即播放前需要几秒或十几秒的启动延时。流媒体实现的关键技术是流式传输,实现流式传输有两种方法:实时流式传输(Real time streaming)和顺序流式传输(Progressive streaming)。实时流式传输是指保证媒体信号带宽与网络连接匹配以使媒体可被正常播放;顺序流式传输是顺序下载,在下载的同时用户可以观看媒体,它不像实时流式传输在传输期间根据用户网络状况做调整。典型的流媒体解决方案有微软公司的Windows Media[]技术,RealNetworks 公司的RealMedia[]技术和Apple公司的QuickTime[]技术。
2.3 流媒体播放技术
(1)容错性好,没有单一的失败点。所有的资源和服务都是分散在网络中各个节点上的, 而且这些分布的资源往往是存在冗余的。网络中的某台主机出现错误,或网络中的某个部分出现错误,并不影响网络中其余部分的工作。
(2)可扩展性好,易于增加节点。因为没有集中的服务器,网络中Peer的数量不受某些主机性能的影响。增加主机数量不会引起瓶颈问题。
(3)用户具有很高的灵活性。在P2P网络中,Peer可以随时加入或退出网络。加入某个网络与否不受限制,何时加入不受限制,提供什么样的资源,使用什么样的服务不受限制。
(4)自组织性。和C/S模式不同,P2P网络是根据peer的兴趣自主建立起来的,不需要管理者干预。兴趣相同的peer就可以组建一个P2P网络,当它们兴趣不同时,就可以退出网络。
(5)资源利用率高。每一个peer可以充分利用网络上其它对等体的信息资源、处理器周期、高速缓存和磁盘空间,而不像C/S模式那样只使用网络中服务器上的资源。
(6)匿名性。由于网络中没有统一的管理,因为peer不需要向某个管理者申请权限,提供自己的信息。只要是兴趣相同的peer,就可以组建一个独有的P2P网络。
3 关键技术研究
3.1 视频点播与P2P的结合
随着计算机硬件性能的提高和制造成本的下降,普通PC机的处理能力和存储能力已经今非昔比,它们具有一定的闲散资源,诸如计算资源、存储资源和网络资源等。而P2P技术正是提供了一种有效使用这些闲散资源的方法。借助P2P技术,通过资源分片、节点缓存并服务其他节点的方法可以有效地解决传统视频点播方案中服务器存储和网络带宽的瓶颈。采用节点缓存并服务其他节点的方法具有以下优势:首先,这种方法是基于应用层的,不需考虑下层网络,这种方法中不需要引入专门的服务器或者是“边界代理”,节点只需在回放的同时缓存媒体的一部分数据,由于各个节点开始接收媒体的时间存在差异,所以缓存的数据并不相同,一个节点可以从其他节点中获得所需的数据而保证连续播放,从而这些节点形成一个流传输覆盖。其次,由大量这些节点构成的流传输覆盖的性能不会随着节点数量的增多而下降,并且比C/S模式中媒体资源提供者的带宽开销要小,因为节点在消耗其他节点带宽的同时也在贡献自己的部分带宽。再次,每个节点都可以根据一定的QoS要求来选择源节点,当覆盖网络中有多个能够提供所需资源的节点的时候,节点可以选择其中性能最好(例如延迟最低) 的节点来保证服务质量。
假设媒体资源R被分成若干片,最初由节点N0提供。为由节点Ni(i=0,……,n)发出的请求定义两个属性:Ti表示开始接收资源的时间,Oi 表示开始接收时相对资源开始处的偏移。120节点缓存的长度用Bi表示。一段时间以后节点Nj也请求R资源,如果满足以下不等式:(Ti-Oi)<(Tj-Oj)<(Ti-Oi) Bi,那么Nj就能从Ni处获得数据了。节点Ni能够向其他节点提供的分片资源数取决于它的上行带宽,对于不能由节点缓存来提供的分片,可以由原始节点N0来提供。
3.2 内存缓存策略
在对等VOD系统中,一般地,假设内存的最大缓存量为T,即内存最多可以缓存Ts的数据,并定义四个变量来对内存缓存进行描述,分别为:Z表示内存中连续的时间槽的最小位置;M表示内存中连续的时间槽的最大位置;W表示整个内存缓存的最大位置;C表示当前播放位置。对于每个节点来说,这四个值应该满足以下条件:
W-Z=T
M-Z≤2T/3
Z≤C≤M≤W
内存缓存采用循环队列结构来存储时间槽。缓存中,时间槽的更替采用先进先出(FIFO)的策略。用户从其他节点或视频服务器取得新的时间槽后,按照其时间顺序将收到的时间槽放入缓存,更新Z,M和W的值,并从内存中淘汰Z之前的时间槽,利用空出的空间缓存新的时间槽。
3.3 节点加入算法
![](http://img1.qikan.com/qkimages/dnjl/dnjl200806/dnjl20080626-1-l.jpg)
图1
节点加入算法描述了一个节点如何加入一个P2P直播网络。下面以图1的例子说明节点加入P2P网络的算法。节点F要加入P2P流媒体直播系统,首先应该给服务器S发送请求。服务器收到节点F的请求之后,首先判断自己的直接子节点个数是否已经达到上限。如果没有达到上限,则把节点F作为自己的直接子节点;如果直接子节点已经达到上限,则通过节点管理器来查询哪个子树的节点最少,然后把节点F的IP地址、端口号发送给它的相应直接子节点。该节点通过自己的伙伴管理器,判断节点F是否可以作为自己的直接子节点。如果可以,则把节点F作为直接子节点并建立连接;如果不可以,则把节点F的请求向子节点个数最少的分支转发。依此类推,直到节点F与某个节点子节点建立连接。节点F被某个节点接收后,向服务器S发送消息,服务器S记录下节点F在P2P网络中的信息
3.4 节点离开和失效恢复算法
由于网络的动态特性,每个节点都处在不稳定的状态,随时有可能退出P2P网络。在节点的退出方式上,可以分为正常退出和非正常退出。无论节点是哪种方式退出,都会影响到P2P网络直播。因此,我们需要在节点退出后进行节点失效恢复。在本系统中,每个节点除了保存父节点和子节点的信息,同时还保存自己的祖父节点和孙子节点的信息。对于正常的退出,节点需要向服务器发送退出消息,同时,节点还要向所有的直子节点发送消息,直接子节点随机选择一个子节点把退出消息继续向下转发,直到退出消息到达组播树的叶节点。假设节点C要退出,把退出消息发送给子节点D和E,节点D和E各自随机选择一个子节点继续向下转发,直到退出消息最终到达两个叶节点,然后这两个叶节点收到退出消息后,向节点C发送消息。节点C选择消息最先到达的那个节点作为自己的替换节点,由该叶节点代替自己接收父节点B的数据并向子节点D和E分发数据。对于非正常的退出,不妨假设节点C非正常退出。在正常情况下,节点C和节点B,D,E每隔两秒发送消息以确定对方是否还在网络中存活。当节点C在某个时刻非正常退出,节点B,D,E最迟在两秒之后就会发现节点C已经死亡。由于在本系统中,每个节点都保存着自己的父亲节点、祖父节点、儿子节点和孙子节点的信息,所以节点B保存着节点D和E的信息,同时节点D和E也保存着节点B的信息。由于B和D,E可以相互通信,于是节点B向服务器和节点D,E发送C退出的消息。节点D,E则按照节点C正常退出的算法,选择出一个叶子节点替代节点C。
对于比较极端的情况,即组播树中几个连接节点同时非正常退出。不妨假设节点B和C在某个时刻同时退出。在这种情况下,节点A和D, E将失去联系。对于这种情况,一旦D和E发现父节点和祖父节点同时死亡,则它们向服务器发送信息,由服务器按照新节点加入算法,重新加入到P2P网络中。由于每个节点都有缓存,提前缓存了一部分流媒体数据,因此在D和E断开的短时间内,播放器可以继续播放。如果能快速恢复连接,继续接收流媒体数据,则不会影响到播放质量和效果。如果在短时间不能恢复连接,则需要等到恢复连接后才能继续播放。
4 性能与总结
在网络流媒体播放系统中,对于整个系统具有重要影响的因素主要是时间延迟、网络带宽、服务器处理能力、部署难易度和扩展能力等。我们就此分析一下基于P2P的流媒体直播系统。
(1)对于服务器的处理能力和带宽的要求。由于本系统中,服务器只是对外提供两路单播流媒体,对于300kbps的流媒体来说,服务器只需要具有大于600kbps的带宽即可以满足需求。对于服务器的处理能力,当前的机器一般都具有足够的内存和处理器能力满足提供两路流媒体单播的能力。
(2)对于部署的情况。由于在本系统中,各个Peer都具有TCP/IP网络通信的能力,因此只要节点能与互联网进行连接,就可以很方便地加入该系统,不存在部署的问题。
(3)对于扩展的情况。由于本系统采用的是P2P模式,流媒体主要是在Peer之间进行通信和传输,对于服务器端几乎没有什么影响。因此,本系统具有很高的扩展能力。
(4)关于时间延迟。由于在本系统中,每个Peer在播放之前需要缓存一段时间的流媒体数据,这就会导致用户看到的流媒体不是实时的数据,因此实时性稍差。
视频点播系统(VOD)是当前高带宽网络上一个很有前景的音视频信息服务系统。针对传统C/S模式下VOD系统的不足,提出了一种基于P2P网络的视频点播系统的具体设计与实现方案,对实现过程中的相关技术和方法作了一定探讨。它对网络带宽和服务器处理能力的要求都比较低,同时还具有容易部署和扩展能力高的特点,但是同时也具有时间长的缺点。对于实时性要求不高的流媒体直播,在综合考虑各种因素的情况下,该系统是一个具有较高性价比的大规模流媒体直播解决方案,可以在将来提供更好的网络流媒体播放服务。
参考文献:
[1]Stern R. Napster: a walking copyright infringement[J]. Micro IEEE,2000,20(6):4-5.
[2]Jovanovic M A. Modeling large-scale peer-to-peer networks and a case study of Gnutella[D]. Ohio: Universit y of Cincinnati , 2001.
[3]Li Gong. Project JXTA: A technology overview[R]. [s.l.]:SUN Microsystems,2001.
[4]Stoica I, Morris R, Karger D, et al. Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications[R]. TR-819. [s.l.]:MIT,2001.
[5]陆其明. DirectShow实务精选[M]. 北京:科学出版社,2004.
[6]RealNetworks,Inc.Realmedia[EB/OL]. https://he2.lixcommunity.org/. 2005.
[7]Apple, Inc. Quicktime[EB/OL]. http://developer.ap2ple.com/quicktime/. 2006.