首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

P2P视频直播系统改进设计

作者:刘奇 来源:现代电子技术


  摘 要:为了改善P2P视频直播系统的性能,介绍了P2P视频直播系统的相关知识,对比了当前主流P2P视频直播系统的三种主要结构,分析了三种结构各自的优缺点。针对现有大规模直播系统的不足,提出了一些系统改进方案,分别从节省服务器带宽、优化邻居选择策略、充分利用节点上载性能的角度对现有系统做了改进和优化。利用该改进建议,直播节目的服务提供商能够进一步节省开支,并提供更高质量的服务。
  关键词:P2P视频直播系统; push系统; pull系统; pull-push混合系统
  中图分类号:TN919-34文献标识码:A
  文章编号:1004-373X(2011)01-0032-03
  
  Improvement of P2P-based Live Streaming Systems
  LIU Qi
  (Network Lab of Electronic and Information Engineering School, Beijing Jiaotong University, Beijing 100044, China)
  Abstract: To improve the performance of the live streaming systems, the related knowledge about the live streaming systems is introduced, the three structures of major live streaming systems are compared, and the merits and demerits of these structures are analyzed. According to the shortcomings of the large scale systems, some schemes to save servers' bandwidth, to optimize the peer selection strategies and to fully utilize upload capacity of nodes are proposed. By the proposed schemes, the streaming system providers can not only cut their daily cost but also improve their service quality.
  Keywords: P2P live streaming system; push-based system; pull-based system; pull-push hybrid system
  
  基于P2P的流媒体应用目前已经成为互联网中最主要的应用之一,各种P2P视频直播(Live Streaming)、点播(VoD)系统的成功应用引起了研究人员的广泛关注。与传统的客户-服务器(Client-Server)模式的视频直播系统相比,P2P结构的视频直播系统可为更多的用户提供更好的观看质量,同时节省了服务器的带宽。理论上,P2P系统中观看的人数越多,服务质量就越好。但是,目前流行的大规模视频直播系统在观看质量、时延等方面还不能完全令人满意。本文简单介绍了P2P视频直播系统,分析了当前主要的三种系统结构的优缺点,并提出了崭新的系统改进方案。
  1 P2P视频直播系统概述
  由于视频流的数据量较大,仅依靠服务器的带宽无法支撑起一个大规模的视频直播系统,传统的客户-服务器模式已无法满足大量的用户需求。然而,P2P网络的特性则使得直播系统的大规模部署成为可能。这种系统由一台(或多台)服务器以及观看视频的用户构成,除了服务器提供的视频流,用户也会把自己已经拥有的视频数据上传给其他用户。这样,原本闲置的用户上载带宽被利用起来了,从而在一定程度上缓解了服务器的压力。
  在P2P视频直播系统中,一个完整的视频流被分成若干个视频数据块(chunks),服务器按播放时间顺序将这些数据块上传给网络中的一些节点(典型的流速率为500 Kb/s)。这些节点在收到数据块后再利用自己的上载带宽将它们转发给其他节点,这样就形成了一个P2P网络。一个节点收到的各个数据块可能来自不同路径,网络中又存在一定的传播时延,因此数据块很可能乱序到达。这样,每个节点就需要维护一个缓存(buffer),缓存中存放即将播放的数据(典型缓存大小为1 min)。如果数据块在其播放时间之前没有到达,那么这个数据块将无法被正常播放。
  数据块被服务器上传到网络中后,要经过一段时间才能被节点收到,这段时间被称为播放时延。每个节点的播放时延不同,因此各个节点的播放进度其实不是完全同步的。视频直播系统对播放时延比较敏感,而丢失少量的数据则是可以容忍的。
  2 系统结构
  2.1 tree-push结构
  早期的P2P视频系统都是push-based系统,如Zattoo[1]。在这样的系统中,服务器将特定速率的视频流上传到网络中的C个节点,收到视频流的每个节点在播放视频的同时,还要利用自己的上载能力将这个视频流上传给其他K个节点。而K个节点再进一步将视频流传给其他的节点,直到网络中所有的节点都能观看到视频。这样,整个P2P网络就形成了一棵树,树根就是视频流服务器(一台或多台),树的深度由观看视频节目的节点数而定。
  图1给出了C=3,K=2的例子,图中树的深度n=3。在实际应用中,随着用户数量的增加,树的规模可以扩展。C值的大小是由服务器带宽而定的,而一个节点上的K值则表示该节点可以同时为几个节点提供上载,与该节点的带宽有关。一个节点的上载带宽更大,这个节点就能为更多的节点提供视频流。当然,在实际网络中,各个节点的K值不同,而且往往随时间动态变化。
  图1 tree-push结构
  理论上,push-based系统中各节点的平均K值只要大于或等于1,系统就可以支持无限多用户在线观看视频。但在真实网络环境中,K值通常小于1,因此系统的用户数量总是存在一个极限[2]。而且,用户频繁的加入/离开行为给树形结构系统的稳定性带来了很大的挑战,结构性缺陷使得树形结构系统很难支撑起规模庞大的P2P直播系统。
  2.2 mesh-pull结构
  目前应用较为广泛的P2P视频直播系统,如PPLive,PPStream,UUSee等,都是pull-based系统。所谓pull,就是由节点主动发出请求信息(requests),向服务器或周围的节点索取该节点所需的数据块。在系统中,每个节点都会通过广播buffer map信息来告知邻居节点自己缓存中存放的数据块,因此每个节点知道自己的邻居拥有哪些数据块。这样的系统并不依赖push-based系统的树形结构来传播视频流,各节点可以向邻居列表中的任意邻居索取数据块,因此并不存在树形结构带来的问题。
  从图2中可以看出,每个节点只有主动发出request消息,邻居或服务器才会为其提供数据块。pull-based系统的部署比较简单,并且能够充分利用用户的上载带宽,从而使系统达到很高的吞吐量[3]。但是,节点频繁地发出request信息,给系统造成了很大的带宽开销。在有些系统中,request信息所占用的带宽甚至超过了数据流,这就造成了很大的带宽资源浪费。另外,在pull-based系统中,由于节点在收到数据包后并没有立刻将该数据包转发出去,而是在等其他节点来要,这就增加了播放时延,而且这种时延是逐跳积累的。因此,带宽开销和时延是pull-based系统存在的两个主要问题。
  
  图2 mesh-pull结构
  2.3 pull-push hybrid结构
  为了解决pull-based系统存在的问题,GridMedia,CoolStreaming,LStreaming等系统采用了推拉结合的结构,即pull-push hybrid结构。pull-push hybrid系统的网络拓扑结构和pull-based系统相似,都是一种无结构的mesh网络。在pull-push hybrid系统中,视频流被分成一些子流(sub-stream),每个子流由若干个数据块组成。
  图3中,一个完整的视频流被分成了3个子流,每个子流由3个数据块组成。某个节点A加入系统后,先以拉(pull)的方式向周围邻居节点请求数据块0,如果从邻居B要到了数据块0,B将以推送(push)的方式向A传送整个子流0(包括数据块3和6),而不需要A再逐个发出请求。同理,如果A要到了数据块1,B将向A推送整个子流1。
  图3 sub-stream
  在pull-push hybrid系统中,节点收到的95%以上的数据包都是邻居节点或服务器推送来的[4],只有在推送失败(因为丢包或传输时延)时,节点才会主动地位数据。这样,就解决了pull-based系统中请求(request)信息占用大量带宽的问题。同时,由于节点主动推送数据块而不必等别人来要,也在很大程度上减小了播放时延。
  这种混合系统具有吞吐量大、节点带宽开销小、播放时延小等优势。同时,这样的系统比pull-based系统更加节省服务器带宽[5]。当然,pull-push hybrid系统也不是完美的,由于网络中存在传播时延,系统中的节点会重复收到一些相同的数据包,而重复的数据包将会被丢弃,这也给系统带来了一些带宽开销。
  3 视频直播系统改进方案
  3.1 服务器带宽动态调整
  pull-based系统对服务器带宽的要求比较苛刻,服务器性能对系统吞吐量和用户观看质量起着决定性的作用。在用户相对比较集中的频道,大量的用户会抢走更多的服务器带宽,这使得其他用户数量较少的频道很难获得较好的观看质量。目前商用的pull-based系统在这方面都没有恰当的策略来保证服务器为“小频道”提供足够的带宽,这使得观看行为比较“小众”的用户总是无法得到满意的服务[6]。因此,在pull-based系统中,应当提供自适应带宽分配算法,使得在用户数量变化的动态环境中,各个频道都能够分配到合理的服务器带宽。算法应该既保障“小频道”得到服务器足够的支持,又不会在“大频道”中浪费多余的服务器带宽,从而在系统性能和资源开销之间达到一个平衡点。
  在pull-push hybrid系统中,系统性能对服务器带宽的依赖并不是很大(在pull-push hybrid系统中,服务器提供的带宽只要达到视频流速率的1.6倍就可以维持系统的正常运行[7]),因为节点之间相互推送的数据比较多。主要问题在于,系统中用户数量在不同的时段差异较大。比如,在晚上7点~9点之间系统中的用户数量一般会达到最大值,而在凌晨1点之后用户数量最少[8]。因此,服务器带宽应当在不同时段动态分配。在系统中人数很少的时候,如果系统中存在大量上载性能较高的节点,甚至可以关闭一定数量的服务器以节省开支。
  3.2 邻居选择策略
  在P2P视频直播系统中,每个节点在启动时都会获得一个邻居列表。节点可以从列表中随机选择几个邻居,并向这些邻居请求数据块。目前在主流的pull-push hybrid系统中,还没有实施特别高效的邻居选择策略。在实际系统中各节点的上载性能差异较大,有些高性能节点(以太网用户)可以提供很高的上载带宽,而另外一些低性能节点(ADSL用户)则对系统贡献不大。在pull-push hybrid系统中,为了使高性能节点充分发挥作用,服务器应当优先考虑把视频流推送给这些节点。这些“超级节点”在拥有足够多的数据块后会利用其强大的上载带宽将数据块推送给更多的邻居节点。“超级节点”在网络中就好像“放大器”一样,将收到的视频流复制多份供很多个低性能节点下载。充分利用“超级节点”的性能可以在很大程度上缓解服务器的压力,从而减小系统对服务器性能的依赖。
  图4中,“超级节点”A的上载带宽为1.5 Mb/s,而视频流的速率为500 Kb/s。服务器先向节点A推送数据,A节点收到流后就可以同时给3个普通节点(上传带宽256 Kb/s)推送数据。A节点将上载性能发挥到最大,在节省了服务器的带宽的同时,又使得视频流在网络中更快地传播开来。
  3.3 不同频道间的援助策略
  在P2P直播系统中,各个频道中用户数量的差异是巨大的。有些热门频道的即时观看人数可能会达到数万,而另外一些频道中可能只有几个人。据统计,在UUSee系统的795个频道中,平均观看人数超过5 000的频道只占2%,而观看人数少于100的频道约占12%,而大部分(约占51%)频道的观看人数在500~3 000之间[3]。事实上,在一些人数很少的频道中存在着一些高性能用户,即前面提到的“超级节点”。在现有的P2P直播系统中,这些“超级节点”的性能并没有被充分地利用起来。
  图4 邻居选择策略
  在图5中,某个频道中只有两个用户A、B,而这两个用户都是“超级节点”,拥有1.5 Kb/s的上载带宽。如果服务器直接将视频流推送给这两个节点,那么这两个节点就不需要给任何节点提供上载。在这种情况下,A和B的带宽资源将会闲置。但事实上,这两个节点的带宽也可以被充分地利用起来。虽然不需要为本频道中的用户上传数据(除非有新用户加入),但A和B可以为其他频道提供服务,尤其是那些低性能节点相对集中的频道。服务器可以将另一个视频流也推送给A、B,然后再由A、B向那个频道中的节点推送视频流。这样,既利用了A、B闲置的带宽,又可以改善另一个频道的观看质量。
  图5 不同频道间的援助
  4 结 语
  P2P直播系统主要依赖各个节点间的相互帮助,而并不单纯依靠服务器的支持,因此系统的拓扑结构可以有各种各样的变化。各种主流的商用系统都有自己的部署方案与核心技术,在很多细节方面缺乏可以参考的、规范性的协议。 P2P视频直播在当前的网络技术中还是一个有待发展完善的技术领域,进一步的发展需要研究人员、软件开发商以及政府相关部门的通力合作。
  本文的创新点在于,在分析了现有大规模P2P视频直播系统的优缺点后,提出一些可以进一步提高观看质量,节省服务器带宽的优化方案,有效解决了现有系统中存在的一些结构性和技术性的问题。
  参 考 文 献
  [1]WU Chuan, LI Baochun, ZHAO Shuqiao. Diagnosing network-wide P2P live streaming inefficiencies[C]// IEEE 2009 Proceedings of INFOCOM. Rio de Janeiro: IEEE, 2009: 2731-2735.
  [2]ZHANG Meng, ZHANG Qian, SUN Lifeng, et al. Understanding the power of pull-based streaming protocol: can we do better[J]. IEEE Journal on Selected Areas in Communications, 2007, 25 (9): 1678-1694.
  
  [3]SHAMI Khaldoon, MAGONI Damien, CHANG Hyunseok, et al. Impacts of peer characteristics on P2PTV networks scalability[C]// IEEE 2009 Proceedings of INFOCOM. Rio de Janeiro: IEEE, 2009: 2736-2740.
  [4]SILVERSTON T, FOURMAUX O. Measuring P2P IPTV systems[C]// Proceedings of 17th International Workshop on NOSSDAV.[S.l.]: NOSSDAV, 2007: 115-121.
  [5]HEI Xiao-jun, LIU Yong, KEITH W Ross. Inferring network-wide quality in P2P live streaming systems[J]. IEEE Journal on Selected Areas in Communications, 2007, 25 (9): 1627-1639.
  [6]TERPSTRA Wesley W, LENG Christof, LEHN Max, et al. Channel-based unidirectional stream protocol (CUSP)[C]// IEEE2010Proceedings of INFOCOM. San Diego, CA: IEEE, 2010: 1-5.
  [7]HEI Xiao-jun, LIANG Chao, LIU Yong,et al. A measurement study of large-scale P2P IPTV system[J]. IEEE Trans. on Multimedia, 2007, 9 (8): 1672-1687.
  [8]REJAIE R, ORTEGE A. Pals: peer-to-peer adaptive layered streaming[EB/OL].[2003-06-03]. http:// www.zdnetasia.com.
  [9]PPlive Inc. PPlive[EB/OL].[2007-04-20]. http://www.pplive.com.
  [10]UUSee Inc. UUSee[EB/OL].[2009-09-22]. http://www.uusee.com.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文