浅析新一代P2P流媒体技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅析新一代P2P流媒体技术
摘要:首先对现有流媒体软件进行了分析,然后提出了新一代P2P技术的特性,根据与传统流媒体技术相对比,提出新的流媒体技术开发思路,加以实施。
关键词:流媒体流媒体软件P2P技术P2P流媒体
前言
流媒体技术是未来网络服务体系的重要组成部分,为众多应用提供了必需的平台。
流媒体技术的特点是边传输边播放,节约资源,实时性好。
但是承载流媒体的数据分发平台必须有足够的质量保证能力,以免流媒体出现断流和联接丢失等情况。
P2P技术是分布式计算的重要发展方向,是未来高速网络中内容分发的基础。
P2P技术的优势在于最大限度的利用数据分发体系中每一个节点的资源,分解了服务器的负担,提高了数据分发的效率、稳定性、可扩展性。
可以实现快速并且低成本的将数据分发到大量节点。
将流媒体技术和P2P技术两者相结合,构成了可持续发展的网络服务——P2P流媒体。
P2P流媒体可承载的服务包括并且不仅限于:视频会议、网络课堂、远程会诊(手术)、视频点播、广播电视转播、大型活动直播等等。
采用现有P2P流媒体技术的产品主要针对视频直播,在其技术体系已经相对比较成熟,但仍存在较大缺陷。
问题主要集中在不能保证单个节点的播放质量,关键节点上的节点退出会对数据分发网络造成较大的波动甚至出现局部乃至大范围的断流。
采用现有P2P流媒体技术的产品根本不适合视频会议、网络课堂、远程会诊等关键业务应用。
第一部分现有P2P流媒体软件
开发新的流媒体系统,充分了解现有的流媒体软件的优劣得失是必不可少的。
主流的软件pplive和ppstream就是分析的对象。
以下分析全部基于Sockmon5的数据包拦截。
手上资源有限,对协议的分析不很充分。
一、pplive:
这款软件的数据分发引擎和播放器是分离的,也给了我们专门分析数据分发引擎的机会。
pplive会打开本地的8888端口,作为windows media服务的端口。
对于windows media player来说,认为本地8888端口就是一个cs模式的windows media 服务(real格式类同)。
节点会在一个时段内集中向几十个其他节点发送udp数据包,每一个数据包略有区别,之后收到其他节点回复。
分析为确认节点存在的数据包,或许带有测速信息。
之后节点会和速度较高的几个节点建立连接。
传输的数据包格式无法解析,但是可以看到规律。
数据头为十六进制e9034601的数据包从19K到8K 不等,内容丰富。
其他规格的数据包头还有e9034401、e9034101等等。
e9034201似乎是连接断开的标志。
e9034501的数据包大小一致,每发送一次第六字节加
一,e9034401的数据分发每个数据包是一致的。
每一个节点都主动连接含有数据的上线,这可以从节点没有频繁和连续的accept动作看出。
否则用户在获取数据之前必定有一组连续accept的被连接过程。
一旦选择一个速度最高的节点,则播放所需所有数据都从这个节点获得。
这点从获取数据包的流密度和各IP数据包之间的对比可知。
在防火墙穿透策略上,经分析得知每个节点把自己的ip地址和开放的端口号汇报到服务器,服务器把这些信息通知有连接需要的节点。
节点不区分获得的ip是公网ip还是内网ip(丛发出的udp测速数据包目标经常为192.168.0.*网段可知)。
如果是公网的节点发起连接,连接公网ip的节点一般可以正常连接,如果连接内网ip的节点,肯定无法连接。
如果是内网节点发起连接,连接公网ip 的节点一般可以正常连接,如果连接内网ip的节点,分为两种情况:1、此节点位于不同局域网中,肯定连接不上;2、此节点位于同一局域网中,正好实现了内网互联。
由此可知数据分发引擎完全不具备不同局域网的节点连接能力,网络性能非常依赖公网节点数量。
按照这种模式开发流媒体产品,对不同媒体格式和媒体服务器的兼容性较好,节点之间连接策略的处理也比较简单高效。
但难点在于如何把流媒体服务器和数据分发层连接,和如何模拟流媒体服务器和播放器握手。
这部分技术确实可以解决,但之前没有考虑过实现细节。
节点开始播放流媒体之前,必须和服务器建立连接,获得节点列表,然后判断节点之间的联通性。
和可以连通的节点建立连接,尝试获得数据填充本地缓冲区。
在此过程中,判断速度较高的节点。
在持续连接建立后,已经可以获得稳定数据,继续保持低速的连接的发起,遇到更高速的节点,则转向由更高速的节点提供数据(此动作为分析得知,没有非常明确的证据)。
二、ppstream:
ppstream内嵌了浏览器,太多80端口的操作严重干扰了对socket的分析。
但是出乎意料,ppstream的连接建立过程比pplive清晰得多!
ppstream的缓冲等待画面位于播放窗口内,而不是像pplive那样由数据分发引擎的单独窗口显示。
具体内容为嵌入flash的html页面。
由61.172.197.242的服务器提供节目表和频道表等内容,web Server:Apache/2.0.54 (Unix) PHP/4.4.0。
61.152.199.56似乎是广告的web服务器。
ppstream和pplive共有的关键字串应该是验证协议。
连接61.152.240.252:11012,
回复xml格式的广播源信息,可阅读内容为从61.152.240.252获得广播源信息后,开始连接大量节点,握手过程等同于61.152.240.252。
从多次不同时段不同频道连接的情况看,此节点为超级node。
并且一个节点上同时承载了多路流媒体的广播。
分析可知1.0.0.2138为节点版本。
产生本地的回环连接,过程如下:
接受端口发送信息:连接到本地节点,之后连接断开。
发起端口接到信息:连接到本地节点,之后也断开连接。
这时已经从61.152.240.252:11012开始缓冲流媒体信息。
并且尝试两个新的节点连接。
4436端口完成绑定。
内嵌播放器打开http目录下的.asx文件,由4436端口发起连接至18988端
口,按照.asx文件内容请求.asf流媒体。
18898端口回复服务器信息及ok。
4436端口断开。
本地4441端口连接18898端口,请求播放.asf文件。
本地4444端口连接18898端口,请求播放.asf文件,获得数据信息。
规格等同广播源信息中所包含的可阅读内容。
与60.220.82.165握手后,接到信息:上层节点服务繁忙,希望进行降层操作,之后连接断开。
新连接的节点此时已经开始传输数据至本地缓存,保持稳定传输的有三个节点。
同时还有若干连接正在发起。
可以看出ppstream的每一个媒体数据包大小为4K。
远程向本地请求数据包,的规则同上。
握手信息的格式也相同。
分析ppstream所采用的是所连接节点向本地节点通知其它节点存在的方法。
预想中,这种调度算法认为与自己连接速度快的节点所连接的节点与自己的速度一般也快。
以这种优化手段逐步遍历节点树中所有可能高速的节点。
第二部分新一代P2P流媒体技术特点
作为一项高新技术,掌握P2P流媒体技术的企业很少。
并且现有P2P流媒体技术都基于旧的P2P设计思路,没有针对流媒体的特点进行优化,偏重对服务器负担较小的情况下实现大范围流媒体分发。
但是对于单个节点的播放质量并没有从网络结构的高度予以保证,在大范围应用的情况下,不同节点之间的用户体验相差很大!甚至单个节点在不同时刻的用户体验都大不相同。
新一代P2P流媒体技术改进了原有技术的弊端,从网络结构着手,切实保证每个节点的播放质量,针对实际应用,提出了在宽带网络模式下提高播放质量的具体手段:
一.服务器统治:除对等的节点之外,设立专门的服务器,除负责身份验证外,统领整个虚拟网络,调度每一台计算机的动作,控制数据流向。
每个节点对数据网络了解为0,只和在服务器控制下与自己相连的节点进行单向数据传递。
彻底杜绝了节点自治的盲目性,将每个节点的数据分发能力最大化。
而且这种服务器统一调度的方式使得升级调度算法或者修改网络结构的过程变得非常平滑。
二,多路供源:同一路数据每个节点从多个来源获得,最大限度地保证了流媒体播放的流畅性,减轻了P2P网络中单个节点的不稳定性对整个网络播放质量的影响。
配合服务器统治的特性,可以快速从分发网络的缺陷状态恢复,并且在这个过程中不会影响节点的播放质量。
在网络稳定运行和不稳定运行的状态都可以获得很高的服务质量保证。
三.统一的音频/视频编码规范:在P2P流媒体系统中,限定节点之间传送的数据采用统一的编码规范。
编码规范针对P2P流媒体技术优化,简化了每个节点生成和播放压缩数据的操作。
并且由于编码规范已知,可最优化网络上传输的数据流。
第三部分流媒体内容分发技术对比
传统流媒体内容分发技术结构图(箭头代表数据流向)
传统流媒体内容分发技术的主要缺点是数据源单一,所有播放端数据全部由内容来源提供,对内容提供端设备要求极高。
并且在现有硬件技术条件下,即使投入巨量资金,在极限状态下也无法满足播放端大规模增长的需求。
多服务器流媒体内容分发技术结构图(箭头代表数据流向)
多服务器流媒体内容分发技术解决了传统流媒体内容分发技术中,数据源单一的问题,是现阶段应用最广泛的流媒体内容分发方案。
利用配置多个服务器,分流数据的手段,降低了单个服务器的负载,提高了总的播放端承载量。
但是多服务器内容分发技术存在服务器内容实时同步能力差,单个服务器失效时造成被依赖播放端彻底断流等问题。
而且随着播放端数量的增长,必须增加服务器数量,以便分流额外的负载,内容分发的成本居高不下。
改进多服务器流媒体内容分发技术结构图(箭头代表数据流向)
改进多服务器流媒体内容分发技术的重要进步是一个播放端可以从多个服务器获得数据,解决了单个服务器失效造成的数据断流问题。
但是并没有为服务器内容实时同步性差的问题提供解决方案。
而且增加播放端同时保证质量的唯一方法仍然是增加服务器数量,成本问题依旧。
P2P流媒体内容分发技术结构图(箭头代表数据流向)
P2P流媒体内容分发技术成功解决了上述流媒体分发技术所存在的全部问题,提供了高效、低成本的大量节点同时播放解决方案。
但是P2P的树形结构带来了新的问题,枝干上的节点一旦退出,就会造成子树上的所有节点断流。
面积广大,后果严重,对流媒体内容分发服务造成灾难性破坏。
这种可以称之为缺陷的状况,在客户端数量庞大时必然出现,后果是整个子树的内容分发完全中断,服务崩溃。
这种缺陷是由于P2P的网络拓扑结构造成的,因而无法避免,也无法通过增加硬件投资或提高软件质量来弥补。
这个技术瓶颈极大的限制了P2P 流媒体技术的研发和推广,亟待突破。
新一代P2P流媒体内容分发技术结构图(箭头代表数据流向)
新一代P2P流媒体内容分发技术采用全新的网络拓扑结构,在保留P2P流媒体内容分发技术全部优点的同时,彻底解决了枝干退出造成整个子树断流的缺陷。
对于每一个节点,采用多重供源结构,并且由服务器调度保证每个数据源不在同一棵子树上,最大限度的避免数据源的相关性。
在大规模的网络中,多个供源节点同时退出的几率极小,使得这种解决方案几乎不会遇到例外,解决了流媒体内容分发的质量控制问题。
第四部分新一代P2P流媒体技术实现思路
流媒体的数据分发要求高效和快捷,一个节点同时和多个节点进行对等连接,非常符合以UDP方式传输数据。
而且很大一部分节点都位于防火墙之后,以UDP打洞方式穿透防火墙,方案成熟,实现相对比较容易,也省去了通过服务器转发数据的负担。
P2P技术的核心思想在于每一个节点对等,实现相同的功能。
但是这种架构并不完全适用于流媒体的P2P。
在流媒体的P2P中,只有少数节点产生数据,要求数据被迅速分发至其他节点,数据流向单一,实时性要求非常高。
因此在数据的传输过程中,节点之间要以非常优化的结构连接。
实现这种优化的网络拓扑结构,必须进行全局控制,节点之间的数据流向和连接顺序由一个了解整个网络中所有节点分布的计算机控制。
综合分析,P2P流媒体必须由专用服务器负责网络中的计算机虚拟网络分布。
服务器工作于Internet,所有节点必须连接至服务器进行身份验证和在线信息保持。
(服务器和节点之间保持连接还可以准确记录每个用户的在线时间,为计费和结算提供支持。
)所有节点加入虚拟网络中以后,必须时刻以心跳包的方式保持与服务器的连接。
发出流媒体数据的节点在服务器登记,由服务器为接收流媒体数据的节点确定流媒体转发的顺序。
出现节点断开的情况也由服务器负责节点间握手,建立新的连接。
以节点之间采用UDP联接为例,数据分发方案如下:
每个节点都兼有发出数据和接收数据的功能,节点之间由调度服务器分配建立连接,以心跳包确定各自存在。
每个节点随时保持大约三十个与其它节点的下载连接,并且持续更新连接,以新连接的最高速节点替换已连接的最低速节点。
由服务器调度保证各连接之间相关性最小。
数据由连接速度最高的节点持续发送至本地。
上传连接的最大数量也保持在三十个,是否传递数据由下级节点决定。
由于UDP的特性,网络中允许丢包。
建立丢包重发机制,如果收到的数据包不连续,则要求上级节点重传。
一旦本地缓冲区中数据达到警戒线,则不论上级节点是否保持心跳数据,都向候选的最高速节点请求数据。
应当设立多极警戒线,以应对多个候选节点失效或服务能力不足的情况。
服务器控制所有节点尽最大努力与接近数据源的节点连接并获取数据,只有当上级节点连接的下级节点数量达到上限时,才尝试与再下一级的节点连接。
在心跳保持的情况下,上级节点接到一次数据请求,就保持数据包发送,不需下级节点返回除补包请求外的确认信息,直到节点断开或中止请求。
所有节点以最高效将数据分发至下级节点为第一优先。
每一个节点都了解所播放和转发的一组流媒体的唯一编号。
在所播放的这一组流媒体中,每一个节点只了解数据由供应数据的节点传输,应该发送到目的节点。
除原始数据源以外,其他节点都不了解数据源头,所有节点都不了解网络结构。
所有节点通过流媒体的唯一编号由服务器控制组建虚拟网络并维护虚拟网络正常运转。
所有相连的节点之间由心跳包确定相互存在。
这种结构极大的简化并统一了数据处理,提高了整体效率。
系统构成:
调度服务器包括网络模块、控制模块、数据库模块。
网络模块负责数据收发,维持与节点之间的心跳连接。
控制模块负责处理和节点间交换的信息,并且控制整个网络的运行。
数据库模块负责保存每一个节点的信息,并储存流媒体分发的
网络结构。
媒体生成服务器包括媒体捕获模块、媒体编码模块、网络模块、文件读写模块。
媒体捕获模块负责视频音频数据的获取,可由其它流媒体服务器、视频捕捉卡、媒体文件或其他途径获得原始媒体数据。
编码模块负责将媒体数据按系统需求编码。
网络模块负责将媒体数据发送至超级节点。
文件读写模块可以把预先编码后的数据包保存至文件,在播放时直接提取数据包通过网络模块发送。
这种处理方式的优点是将编码的阶段提到了播放之前,消除了播放时媒体生成服务器的编码负担,并且可以把编码和播放的服务器分开,最大限度利用资源。
但是只能播放预先录制好的媒体,对于不可控的数据源,只能采用实时编码方案。
超级节点包括控制模块、网络模块。
超级节点可以看成一个简化的节点,取消流媒体播放模块,人为保证播放模块的稳定性和网络连接带宽。
唯一作用就是将媒体生成服务器产生的流媒体数据转发至网络。
节点包括流媒体播放模块、控制模块、网络模块。
网络模块负责数据收发,维持与服务器和节点之间的心跳连接。
控制模块控制节点之间连接的建立和断开,流媒体数据的接收、转发、播放,与服务器交换数据。
播放模块负责呈现数据缓冲区中的媒体数据。
节点事件多路分离采用ACE反应器模式,该模式适合处理同步低延迟的大量小型数据包,符合节点数据分发的需要。
缓存动作上,直播的流媒体数据因为是一过性的,所以不需要,也不能保存。
节点接到数据后会将在第一时间分发至下层节点。
播放队列和数据队列分离,数据获得后解码至播放队列,并且在本地缓冲区保留原始数据包,以备补包请求。
结束语
采用P2P技术后,每个用户可以与其他用户建立连接来分享数据,用户播放的流媒体内容可能完全来自于其它流媒体用户的设备中,而不象传统流媒体技术那样,完全来自于服务器。
P2P技术使得在较低的运营成本下实现海量用户并发访问互联网流媒体成为可能。
参考文献:
[1](美)Dreamtech研发组吴文辉等译对等网络编程代码解析电子工业出版社,2002年8月
[2]John Hebeler,Dana Moore.对等网.清华大学出版社,2003.2
[3]p2p技术一路走来. 颠覆互联网传统观念云南日报网,2004.12.
[4]电脑知识与技术2005年第25期
题目:浅析新一代P2P流媒体技术姓名:杨妮
单位:诸暨市实验职中
年龄:33
职称:中学一级
学历:本科
联系电话:7891687。