第1页共8页浅析新一代P2P流媒体技术摘要:首先对现有流媒体软件进行了分析,然后提出了新一代P2P技术的特性,根据与传统流媒体技术相对比,提出新的流媒体技术开发思路,加以实施。关键词:流媒体流媒体软件P2P技术P2P流媒体前言流媒体技术是未来网络服务体系的重要组成部分,为众多应用提供了必需的平台。流媒体技术的特点是边传输边播放,节约资源,实时性好。但是承载流媒体的数据分发平台必须有足够的质量保证能力,以免流媒体出现断流和联接丢失等情况。P2P技术是分布式计算的重要发展方向,是未来高速网络中内容分发的基础。P2P技术的优势在于最大限度的利用数据分发体系中每一个节点的资源,分解了服务器的负担,提高了数据分发的效率、稳定性、可扩展性。可以实现快速并且低成本的将数据分发到大量节点。将流媒体技术和P2P技术两者相结合,构成了可持续发展的网络服务——P2P流媒体。P2P流媒体可承载的服务包括并且不仅限于:视频会议、网络课堂、远程会诊(手术)、视频点播、广播电视转播、大型活动直播等等。采用现有P2P流媒体技术的产品主要针对视频直播,在其技术体系已经相对比较成熟,但仍存在较大缺陷。问题主要集中在不能保证单个节点的播放质量,关键节点上的节点退出会对数据分发网络造成较大的波动甚至出现局部乃至大范围的断流。采用现有P2P流媒体技术的产品根本不适合视频会议、网络课堂、远程会诊等关键业务应用。第一部分现有P2P流媒体软件开发新的流媒体系统,充分了解现有的流媒体软件的优劣得失是必不可少的。主流的软件pplive和ppstream就是分析的对象。以下分析全部基于Sockmon5的数据包拦截。手上资源有限,对协议的分析不很充分。一、pplive:这款软件的数据分发引擎和播放器是分离的,也给了我们专门分析数据分发引擎的机会。pplive会打开本地的8888端口,作为windowsmedia服务的端口。对于windowsmediaplayer来说,认为本地8888端口就是一个cs模式的windowsmedia服务(real格式类同)。节点会在一个时段内集中向几十个其他节点发送udp数据包,每一个数据包略有区别,之后收到其他节点回复。分析为确认节点存在的数据包,或许带有测速信息。之后节点会和速度较高的几个节点建立连接。传输的数据包格式无法解析,但是可以看到规律。数据头为十六进制e9034601的数据包从19K到8K不等,内容丰富。其他规格的数据包头还有e9034401、e9034101等等。e9034201似乎是连接断开的标志。e9034501的数据包大小一致,每发送一次第六字节加第2页共8页一,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的服务器提供节目表和频道表等内容,webServer: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端第3页共8页口,按照.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流媒体技术优化,简化了每个节点生成和播放压缩数据的操作。并且由于编码规范已知,可最优化网络上传输的数据流。第4页共8页第三部分流媒体内容分发技术对比传统流媒体内容分发技术的主要缺点是数据源单一,所有播放端数据全部由内容来源提供,对内容提供端设备要求极高。并且在现有硬件技术条件下,即使投入巨量资金,在极限状态下也无法满足播放端大规模增长的需求。多服务器流媒体内容分发技术解决了传统流媒体内容分发技术中,数据源单一的问题,是现阶段应用最广泛的流媒体内容分发方案。利用配置多个服务器,分流数据的手段,降低了单个服务器的负载,提高了总的播放端承载量。但是多服务器内容分发技术存在服务器内容实时同步能力差,单个服务器失效时造成被依赖播放端彻底断流等问题。而且随着播放端数量的增长,必须增加服务器数量,以便分流额外的负载,内容分发的成本居高不下。改进多服务器流媒体内容分发技术的重要进步是一个播放端可以从多个服务器获得数据,解决了单个服务器失效造成的数据断流问题。但是并没有为服务器内容实时同步性差的问题提供解决方案。而且增加播放端同时保证质量的唯一方法仍然是增加服务器数量,成本问题依旧。改进多服务器流媒体内容分发技术结构图(箭头代表数据流向)内容提供端内容提供端内容提供端内容提供端内容播放端内容播放端内容播放端内容播放端多服务器流媒体内容分发技术结构图(箭头代表数据流向)内容提供端内容提供端内容提供端内容提供端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端传统流媒体内容分发技术结构图(箭头代表数据流向)内容提供端内容播放端内容播放端内容播放端内容播放端第5页共8页P2P流媒体内容分发技术成功解决了上述流媒体分发技术所存在的全部问题,提供了高效、低成本的大量节点同时播放解决方案。但是P2P的树形结构带来了新的问题,枝干上的节点一旦退出,就会造成子树上的所有节点断流。面积广大,后果严重,对流媒体内容分发服务造成灾难性破坏。这种可以称之为缺陷的状况,在客户端数量庞大时必然出现,后果是整个子树的内容分发完全中断,服务崩溃。这种缺陷是由于P2P的网络拓扑结构造成的,因而无法避免,也无法通过增加硬件投资或提高软件质量来弥补。这个技术瓶颈极大的限制了P2P流媒体技术的研发和推广,亟待突破。新一代P2P流媒体内容分发技术采用全新的网络拓扑结构,在保留P2P流媒体内容分发技术全部优点的同时,彻底解决了枝干退出造成整个子树断流的缺陷。对于每一个节点,采用多重供源结构,并且由服务器调度保证每个数据源不在同一棵子树上,最大限度的避免数据源的相关性。在大规模的网络中,多个供源节点同时退出的几率极小,使得这种解决方案几乎不会遇到例外,解决了流媒体内容分发的质量控制问题。新一代P2P流媒体内容分发技术结构图(箭头代表数据流向)内容提供端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端P2P流媒体内容分发技术结构图(箭头代表数据流向)内容提供端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端内容播放端第6页共8页第四部分新一代P2P流媒体技术实现思路流媒体的数据分发要求高效和快捷,一个节点同时和多个节点进行对等连接,非常符合以UDP方式传输数据。而且很大一部分节点都位于防火墙之后,以UDP打洞方式穿透防火墙,方案成熟,实现相对比较容易,也省去了通过服务器转发数据的负担。P2P技术的核心思想在于每一个节点对等,实现相同的功能。但是这种架构并不完全适用于流媒体的P2