设为首页收藏本站优领域

优领域

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
优领域 优领域 IT领域 开发技术 其它 查看内容

基于P2P技术的流媒体直播系统的研究与实现

2012-3-26 10:16| 发布者: Saiu| 查看: 1365| 评论: 0

摘要: 摘 要 本文介绍了P2P技术和流媒体的技术框架,并对它们进行研究和分析,并在此基础上设计和实现了一个高质量的流媒体直播系统。 关键词 P2P;流媒体;系统设计;系统实现 1 引言 近几年来,随着网络技术和流媒体 ...
    摘  要  本文介绍了P2P技术和流媒体的技术框架,并对它们进行研究和分析,并在此基础上设计和实现了一个高质量的流媒体直播系统。
    关键词  P2P;流媒体;系统设计;系统实现
 

1  引言

    近几年来,随着网络技术和流媒体技术的发展,远程教学管理、视频聊天室、IPTV、视频会议等流媒体系统正在兴起或被广泛应用。然而,在当前的Internet上传输媒体并没有任何服务质量(QoS)的保证,并且实时媒体的传输有带宽,时延和丢包等问题的出现。另外,网络和终端的异构性使得带宽效率和服务的适应能力也有所下降。但是,随着P2P技术越来越被广泛研究和运用,这些问题都得到了解决。并且,P2P已经在分布式计算、网络游戏、文件共享、深度搜索、协同工作方面得到了广泛的应用[1]。因此,利用P2P技术进行实时的分发传输,便能充分利用客户端闲置的CPU、存储器、网络带宽等资源,减轻服务器和网络带宽负担,构建出一个成本低、扩展性好、并有一定QoS保证的流媒体直播系统。

2  P2P技术

    P2P(peer to peer)即对等计算或对等网络,通常简称为P2P,可以简单地定义成通过直接交换,共享计算机资源和服务[2]。P2P技术从根本上颠覆了C/S(Client/Server)这一传统模式。新的模式模糊了服务提供者与使用者的界限,甚至不再有传统意义上的服务器,服务提供者的作用大为减弱。P2P具有的自组织、容错性好、可扩展性强等优点使其在文件共享,流媒体技术,即时通讯等方面广泛应用[3]
    P2P网络按照集中化程度可以分为纯P2P和混合P2P两类:纯P2P网络完全没有中央服务器,通过基于P2P的客户端软件搜索网络中存在的对等节点,每个节点都是完全平等的,节点之间可直接建立连接,如Gmitella。
    混合P2P网络设有中央服务器,它主要作为索引服务器。与C/S模式中的服务器不同,P2P网络中的索引服务器只记录内容的索引和节点的必要信息,辅助节点之间建立连接,而内容本身存储在节点中,内容的传送只在节点之间进行,不通过服务器。如早期的NaPster和现在的BT,eMule,QQ等。本文采用的就是混合P2P网络。 

3  流媒体直播技术

    在流媒体的应用中,媒体经过压缩技术存在硬盘上,流媒体服务器接收客户端的请求,根据QoS的要求以及网络状况调整压缩的媒体流的参数(如比特率),然后流媒体传输层对其进行打包,通过P2P技术进行连续媒体分发,客户端接收到媒体流后,通过媒体同步技术进行播放。整个过程涉及到六个技术领域:媒体压缩技术,应用层的QoS控制,应用层组播技术,视频服务器技术,媒体同步技术和流媒体传输协议,彼此之间的相互转换传输如图1所示。

4  基于P2P技术的流媒体直播系统的设计

    在P2P技术和流媒体技术的研究基础上,综合研究了当前P2P系统的内容分发技术,提出一个基于P2P技术的流媒体直播系统模型。该模型主要包括以下三个部分的设计:

4.1系统模型的结构设计

    如图2所示,系统模型结构主要包含了四个主要的模块,分别是P2P网络覆盖层模块,流媒体数据分发算法模块,视频源编码,终端解码模块,P2P网络安全模块以及认证计费模块。
    (1)P2P网络覆盖层模块:该模块使用一个中心服务器维护系统中所有活跃节点的信息视图,也就是说用强劲的服务器来换取节点之间交换节点信息带来的不便。
    (2)流媒体数据分发算法模块:该模块是系统中最核心的模块之一,共包括四个部分:伙伴管理,数据缓冲区管理,数据调度,传输协议设计。
    (3)视频源编码,终端解码模块:视频源编码模块即是频道服务器中的读取媒体数据模块,该模块连接媒体编码器(比如Windows Media Eneoder),并读取媒体数据,送给流媒体数据分发模块处理。终端解码模块即是频道接收端中的提供媒体数据模块,该模块连接媒体播放器(比如Windows Media Player),并把流媒体数据分发模块送出的媒体数据发送到媒体播放器以供播放。
    (4)P2P网络安全模块以及认证计费模块:P2P网络安全模块负责保护网络安全,阻止恶意攻击。该模块在连接建立时交换加密密钥,以后的传输数据进行流加密保护。认证计费系统使用RADIUS协议,以便产品商业化和运营推广。

4.2  系统模型中的P2P网络覆盖模型设计

    在P2P网络层中将同时请求同一节目的所有普通节点(peers)归为一组,我们称为同一个频道(channel)。这个频道的源节点(发布服务器)我们称为root。应当注意到root节点在网络中也具有普通节点的行为,它和普通节点的一个主要区别就是普通节点的媒体数据是从P2P网络中获取的,而root的媒体数据是通过别的方式中获取的,比如编码器。
    该模型主要包括以下四个部分:
    1)注册新节点
    一个新的想观看频道的节点想进入到P2P网络中,第一步必须先注册到中心服务器。频道终端发送注册请求,携带自己要观看的频道信息。中心服务器收到后检索对应的频道是否存在,如果不存在,发送注册失败的信息。如果存在,则为新节点分配一个ID,加入到节点列表中,并返回注册成功的信息。
    2)心跳信号
    成功加入到P2P网络中后,节点必须定期的向中心服务器发送一个心跳包,表示自己在这个网络中还是活跃的,以便其它的节点能够通过服务器找到。同时中心服务器收到一个节点的心跳包后,首先找到该节点在列表中的位置,更新这个节点的最后活跃时间。如果没找着,则发回一个节点无效的信息,要求该节点再注册一次。中心服务器定时(比如,15秒)的对节点列表刷新,删除那些最后活跃时间距现在超出预期(比如,15秒)的节点。
    3)查询邻居节点
    当节点想要获取一些邻居节点时,向中心服务器发送一个查询请求,查询请求包括欲返回的节点数。中心服务器收到该请求后,检索出符合要求的邻居节点,返回给请求节点。
    4)NAT反向穿透
    当有终端节点是处于内网时,别的终端节点没法直接与其进行连接。需要中心服务器协助进行连接,即辅助建立NAT内的节点与NAT外的节点的连接。

4.3 系统模型中的流媒体内容分发方案设计

    流媒体数据分发算法模块是系统中最核心的模块之一,共包括以下四个部分,模块关系如图3所示。

图3  流媒体分发设计方案
    (1)节点管理:负责管理与邻居节点建立的连接的集合。包括发起,接受连接,检测并删除无效连接,节点优化策略,统计节点优先级及收发信息。
    (2)缓冲区管理以及负责生成缓存映射(BufferMap,以下简称为BM):视频数据被分割成相同大小的片断(Segment),节点使用一个环形队列的缓冲区存储片断。用一个缓存映射BM来表示节点中是否拥有某个片断的数据。节点和伙伴通过不断交换BM来了解相互间的缓存情况。
    (3)数据调度:负责动态的和其它结点交换数据。数据调度的目的就是根据节点和伙伴的BM,如何从伙伴节点那里获取数据。
    (4)传输协议的选择:传输媒体数据的可供选择的协议有TCP,UDP,UDT等。本论文使用UDP协议传输。

5  系统实现

    在系统的功能模块上,整个系统是由编码系统、加密系统、分发系统、终端系统以及用户认证计费管理系统五大子系统组成的。各模块的算法实现在上面已经描述,以下主要描述下系统软件的算法实现。

5.1 数据分发算法的具体实现

    数据调度算法的一个前提就是buffermap的交换是在一个“流”的连接上进行,更严格的要求是buffermap的交换和流媒体数据的传输是在同一个“流”上进行的。也就是说,邻居关系是靠一个面向连接的链路来维持的,比如TCP。一个典型方案就是两个节点建立有一个TCP的连接,在这个连接上交换buffermap,传输流媒体数据。然而,现有的TCP实现在传输效率等方面并不如人意,为此,可以使用UDT(UDP-based Data Transfer Library)来大幅度提升传输性能。UDT是一个TCPoverUDP的开源项目,它使用UDP来实现TCP的一系列功能,提供了与TCP相同的函数接口。同时它还可以对拥塞控制、流量控制实行自定义。实验测得UDT的性能优于TCP百倍以上,是一个相当高性能的网络程序库。
    在实际中,本人推荐使用UDT作为底层传输模块以提供类TCP的连接特性,例如在系统中,可以利用UDT的类TCP的连接特性使节点之间的节点管理消息、BM交换以及真正的媒体数据都可以在这同一个连接上进行的。

5.2 基于UDP的TCP的实现

    如上所述,在系统中使用UDP将具有很好的网络性能,但是这将丧失了TCP的可靠性和连接特性,也就是说每一次的数据交换都是一次全新数据的发送没有任何的连接的概念。而UDT虽然使用了UDP来模拟了TCP的连接特性,但是针对该系统,它有两个限制:①UDT是一个规模比较大的网络库,如果要修改它来适应该系统,将是一个工作量比较大的事情。②UDT它本身模拟TCP的连接时,每一个UDT连接实质上都是一个UDP的连接,也就是说,如果开多个UDT连接的话,这将要占用多个UDP端口。
    为了避免上面的这些弊端,本人开发了一个轻量级的基于UDP模拟TCP连接特性的连接库。

图4  基于UDP的TCP连接实现
    如图4所示,针对节点A而言,它和其它的节点B,C,D的连接实质上都是基于UDP的,并且都是从一个端口中连接出去的。这样我们就克服了UDT所带来的每一个连接都开一个端口的问题,如果要想使得每个连接都具有TCP的连接特性,这就要求系统能够模拟TCP的可靠性和连接特性,本人是这样实现的:
    (1)在系统中的每一个连接都是一个对象,用连接对象本身的不同来区分连接是针对不同的节点的。
    (2)在每一个连接对象内,都根据了节点自身与其它节点数据交换的情况来进行连接的拥塞控制。
    (3)为了保持连接,使得每一秒都会进行BM信息的数据交换,如果一个连接对象在6秒之内都没有进行一次数据交换,那么就认为这个连接已经失效。
    (4)在系统中本人用一个单例对象来管理所有的连接对象。

6  结束语

    本文建立了一个基于P2P技术的流媒体直播系统,该系统主要功能是实现在Internet上进行视频直播。系统模型已基本构建,软件功能模块在完善中,涉及系统的安全性问题、搜索效率、QoS等技术难点会进一步研究和探讨,并希望能与流媒体点播领域相呼应,进一步提高系统流媒体的QoS。

参考文献

[1] 张联峰,刘乃安,钱秀槟,等.综述:对等网P2P技术[J].计算机工程与应用,2003.03
[2] 张文等,P2P网络技术原理与C++开发案例.人民邮电出版社,2008年8月
[3] 唐占红,兰聪花.P2P技术及其应用.甘肃科技纵横[J],2008,01

相关阅读

网站统计|优领域|优领域 ( 粤ICP备12011853号-1 )  

GMT+8, 2019-3-22 14:48 , Processed in 0.039308 second(s), 12 queries .

Copyright © 2008-2014 优领域

回顶部