首页> 中国专利> 一种基于带宽保证技术实现P2P流媒体系统的方法

一种基于带宽保证技术实现P2P流媒体系统的方法

摘要

本发明公开了一种基于带宽保证技术实现P2P流媒体系统的方法,包括发送数据端以时间顺序为下载请求设定优先级的步骤。其中,在发送数据端的数据提供能力未知的前提下,还包括步骤:该发送数据端直接为高优先级的接收数据端提供数据;该发送数据端在2-5秒内检测实际平均发送速度V1;当连续2-4次检测出V1<正常速度时,该发送数据端确认已达最大数据提供能力;否则重复上述步骤直至最大数据提供能力。本发明节省了外部探测的资源,降低了共享网络的相互影响,有益于带宽的最大利用,并缩短了寻找数据源的时间,提高效率;为peer的流媒体稳定播放提供了强有力的保障。

著录项

  • 公开/公告号CN101286928A

    专利类型发明专利

  • 公开/公告日2008-10-15

    原文格式PDF

  • 申请/专利权人 蒋一;曲言威;

    申请/专利号CN200810011361.0

  • 发明设计人 曲言威;蒋一;

    申请日2008-05-08

  • 分类号H04L12/56(20060101);H04L29/06(20060101);H04L1/00(20060101);H04L12/18(20060101);

  • 代理机构21215 大连智慧专利事务所;

  • 代理人刘琦

  • 地址 116000 辽宁省大连市沙河口区中长东四街34号2-13-6号

  • 入库时间 2023-12-17 20:53:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-11-13

    专利权的转移 IPC(主分类):H04L12/56 变更前: 变更后: 登记生效日:20131021 申请日:20080508

    专利申请权、专利权的转移

  • 2012-05-02

    授权

    授权

  • 2008-12-10

    实质审查的生效

    实质审查的生效

  • 2008-10-15

    公开

    公开

说明书

技术领域

本发明涉及一种流媒体的实现方法,更具体地说,涉及一种依靠优化服务器数据提供的方式改进P2P技术实现流媒体系统的方法。

背景技术

1.P2P的流媒体技术介绍

当前P2P的流媒体技术为人们所重视,其主要使用方式包括软件加载、服务器端信息注册、获得媒体资源信息,以及实现互连、数据传输和进一步的缓冲播放。该技术具有两方面优势:

a、不需要互联网路由器和网络基础设施的支持,因此性价比高且易于部署;

b、流媒体用户不只是下载媒体流,而且还把媒体流上载给其他用户,因此,这种方法可以扩大用户组的规模,且由更多的需求带来更多的资源。

P2P流媒体系统的网络结构,大部分系统都可以归类为计算机理论中树的方法或概念。在这种方法中,节点被组织成某种传输数据的拓扑(通常是树,如图1所示),每个数据分组都在同一拓扑上被传输。拓扑结构上的节点(peer)有明确定义的关系,例如,树结构中的“父节点-子节点”关系。这一方法是典型的推送方法,即:当节点(peer)收到数据包,它就把该数据包的拷贝转发到它的每一个子节点。

图1中,上面网状结构中的父节点,也就是整个树状结构的最顶部,我们称之为父节点服务器,其余的子节点,也就是树的枝叶部分,我们称之为peer或者peer服务器,每个peer都是由“c/s模式”客户端服务器共存的方式存在,既下载又提供下载。

2.P2P流媒体中的关键技术

由于P2P流媒体系统中节点存在不稳定性,因此P2P流媒体系统需要在媒体流定位技术、节点选择技术、容错以及安全机制方面有所突破。

A、媒体流定位:基于目录的P2P流媒体点播系统,其媒体文件的查找方式是通过目录服务器来维护所有媒体服务器信息和客户信息(包括IP地址、缓冲大小等)。当新客户的请求到达时,在目录中查找请求的媒体文件,快速返回侯选节点,侯选节点可以是媒体服务器,也可以是可提供该影片片段的客户,从而具有P2P的特性。

B、节点的选择:在一个典型的P2P覆盖网络中,网络中的节点来自各个不同自治域,节点可以在任一时间自由地加入或离开覆盖网络,导致覆盖网络具有很大的动态性和不可控性。因此,如何在服务会话初始时,确定一个相对稳定的可提供一定服务质量(QoS)保证的服务节点或节点集合是P2P流媒体系统迫切需要解决的问题。

C、容错机制:由于P2P流媒体系统中节点的动态性,正在提供服务的节点可能会离开系统,传输链路也可能因拥塞而失效。为了保证接受服务的连续性,必须采取一些容错机制使系统的服务能力不受影响或尽快恢复。

D、安全机制:网络安全是P2P流媒体系统的基本要求,必须通过安全领域的身份识别认证、授权、数据完整性、保密性和不可否认性等技术,对P2P信息进行安全控制。对产权的控制,现阶段可采用DRM技术控制;对于基于企业级的P2P流媒体播出系统可以安装防火墙阻止非法用户访问;因特网上的P2P流媒体系统可以通过数据包加密方式保证安全。在P2P流媒体系统内,可采用用户分级授权的办法,阻止非法访问。

3.p2p流媒体传输的问题

P2P流媒体中服务器包括子节点peer服务器和父节点服务器。每一服务器部分采用的是一对多的服务模式,需要并发处理大量的子节点peer数据下载请求,服务的具体体现就是对外提供媒体流数据,与本地带宽的关系非常紧密,并且处理请求时,必须要考虑服务器的自身能力问题(主要指上传带宽),每个peer服务器的自身能力,在初始时,都是未知的;服务器部分处理peer请求的速度,在很大程度上影响了服务器的服务效率。如果处理请求速度慢,服务效率肯定就会比较低;如果处理的快,处理结果相应的准确性就会降低。在自身能力未知的情况下,准确的响应每个peer的数据请求,就成为了服务器高效服务的关键问题。只有充分的利用了本身的资源,实现了网络数据共享最大化,并且快速准确的响应peer请求,才算实现了高效率服务。此处比较难办的就是peer服务器的上行带宽的探测问题。普通的做法是,首先完成带宽的探测,即去某一个地址下载(上传/下载)一部分数据,通过下载(上传/下载)的数据量与下载(上传/下载)耗用时间来计算带宽。众所周知,网络带宽的稳定性是谁都无法保证的,那么首先这种做法的准确性就是值得怀疑的,其次就是上行带宽与下行带宽的比例上也存在问题,而且启动就去下载(上传/下载)这么一份数据,带宽消耗也是比较大的。针对于p2p技术的peer端而言,原本的带宽就非常有限,再进行这种意义不大的消耗,启动初期的效率应该是比较差的。

4.概念汇总

服务器,如图1所示,包括子节点peer服务器和父节点服务器,即二者统称为服务器。

流媒体,是指采用流式传输的方式在Internet/Intranet播放的媒体格式,如音频、视频或多媒体文件。

接收数据端,某一节点(peer)接收其他服务器提供的数据,该节点(peer)称为接收数据端。

发送数据端,某一服务器为其他peer节点提供数据,该服务器称为发送数据端。本文中发送数据端既包括正在发送数据的节点,也包括相对接收数据端可以发送数据的节点。

发明内容

在服务器本身资源未知的情况下,既要充分利用这部分未知资源,又要快速准确的做出响应,这种情况是最理想的方式。但是,这也是几乎不可能做到的。为此,本发明的目的是尽量向这种理想的方式靠近。抛弃现有技术中首先完成带宽探测的步骤,而是在带宽未知条件下,以最大、最直接的方式为节点提供数据,并根据实际的下载速度确定带宽的状态以及采取的动作。从而达到实时响应最快,数据发送效率最高。

为了达到上述目的,本发明一种基于带宽保证技术实现P2P流媒体系统的方法,包括如下步骤:一个接收数据端确认多个发送数据端是否具有其所需文件以及向具有其所需文件的发送数据端发送下载请求的步骤;发送数据端以时间顺序为多个接收数据端的下载请求设定优先级的步骤。情况a在发送数据端的数据提供能力未知的前提下,本发明还包括如下步骤:(a1)该发送数据端直接为高优先级的一个接收数据端提供数据;(a2)该发送数据端在2-5秒内检测出向该接收数据端的实际平均发送速度为V1;(a3)设该发送数据端保证该接收数据端正常播放流媒体文件所需的下载速度为T,当连续2-4次检测出V<T时,该发送数据端确认已达最大数据提供能力并确知该能力,并且暂时不为该接收数据端以及更小优先级的接收数据端提供数据;当V<T的情况没有被连续2-4次检测出来,则继续该发送数据端与该接收数据端的数据传输,并且该发送数据端为下一优先级的接收数据端发送数据,重复(a2)后的步骤,直至确认该发送数据端已达最大数据提供能力并确知该能力。

本发明基于带宽保证技术实现P2P流媒体系统的方法,在情况b发送数据端的数据提供能力确知的前提下,还包括如下分步骤:(b1)该发送数据端直接以最大数据提供能力为优先级高的接收数据端提供数据下载,直至达到最大数据提供能力;(b2)该发送数据端已经达到最大数据提供能力,则该发送数据端对于其他优先级低的接收数据端的下载请求,暂不提供数据。

其中,上述步骤(b1)的情况多发生在发送数据端与接收数据端的数据传输断开时,此时,由于发送数据端的数据提供能力确知,因此直接为优先级高的接收数据端提供数据下载,直至达到最大数据提供能力即可。而数据传输断开的情况包括所需文件下载完毕断开连接或者数据传输错误断开连接。

此外,本发明基于带宽保证技术实现P2P流媒体系统的方法,其进一步改进在于,还包括步骤:每一接收数据端在3-6秒内检测出从某一发送数据端的实际下载速度V2,当V2<T2时,该接收数据端会主动断开与发送数据端的连接,重新找寻数据源。

本发明基于带宽保证技术实现P2P流媒体系统的方法主要通过如下三个阶段实现数据发送和接收。

a,能力值未知:初始时,自身能力值肯定是0;此时我们可以认为,这个节点(peer)或服务器的能力非常大,处理数据请求时,全部采用肯定的回复方式,并探测自身能力值。此时的目的就是在请求的数据达到本身的最大能力之前可以对外提供高效率服务。

b,能力值未知:在不断的接受请求,发送数据的过程中,发送的数据量已经临近自身最大能力,而探测的部分却不能够探测出已经达到最大能力,还会继续接受请求,对外提供数据。这个时候就会发生,自身的能力不能够满足外部请求的数据的情况,而导致后来请求的peer与先来的peer争用带宽,如果先来的peer被挤占了带宽就会发生非常严重的peer大量上线下线,使得整个网络不稳定。我们在此处的做法是,按照优先级排序发送数据(按照接受子节点peer下载数据请求的顺序,分配由高到低的优先级,提供数据时,优先为优先级高的子节点peer提供),以此来保障在达到最大能力值之前就已经开始下载的peer,能够正常发送数据,不会受到后来的peer的影响,更加不会出现网络不稳定的情况。此时的目的就是在探测能力最大值的最后部分,避免带宽争用情况,保障peer数据的稳定传输,保障网络的稳定性,并能够高效率服务。

c,能力值已知:当发生自身能力不能够满足所有的数据请求时,就可以确定已经达到最大能力,通过数据统计的方式,计算出最大能力值。此时就相对比较简单了,只需要进行简单的计算就可以准确的做出响应了;此时的目的是,在能力值已知的情况,快速准确的响应peer请求,实现高效率服务。

本发明基于带宽保证技术实现P2P流媒体系统的方法,针对P2P技术的特点,在不断的对外提供服务过程中,探测计算出本身的最大能力值,不存在带宽无意义的消耗,稳定性也是有所保证的。具体说,本发明具有如下有益效果:

1、子节点peer下载数据速度稳定,为peer的流媒体稳定播放提供了强有力的保障。

2、可以控制子节点peer的频繁上线下线行为,对关联的其他子节点peer所造成的影响,将影响控制在一个很小的范围之内,不会对整个数据共享网络造成影响。

3、自身完成最大能力值计算,节省了外部探测的资源,而且更加准确,有益于有限带宽的最大化利用。

4、服务器快速准确的答复子节点peer的下载数据请求,大幅度的缩短了peer寻找数据耗用的时间,提高了服务效率。

附图说明

图1是现有技术P2P系统的网络结构示意图;

图2是本发明以时间顺序为下载节点排列优先级的说明示意图;

图3是本发明基于带宽保证技术实现P2P流媒体系统的方法流程图。

具体实施方式

本发明首先满足“快速准确处理请求”的条件,其次是保证在最大能力值的探测过程中的处理效率,再次就是将最大能力值探测的影响减小到最小。最大能力值探测完成后的处理就比较简单了,将以上几点保证好,就基本上可以发挥客户端的最大能力,在自身能力条件下,提供高效率的提供服务。

实现以上的目的,需要三个部分协调完成:

a、服务器端接受子节点peer下载数据请求的过程中,完成自身能力探测。

b、服务器端按照接受“子节点peer下载数据请求“时分配的优先级,为peer发送数据。

c、peer客户端下载速度检测。

下面参据实施例具体描述整个处理过程:

与现有技术P2P流媒体系统及其他P2P软件相同,待接收数据的接收数据端需要确认那些发送数据端具有其所需的文件,并向这些发送数据端发送下载请求。其中本发明中所称的“所需文件”是指播放的某一流媒体文件经拆分形成的多个小文件。具体拆分方式,可以参据本申请人与本发明同日申请的中国发明专利“一种基于数据拆分技术实现P2P流媒体系统的方法”。当然本发明并非局限于文件拆分,而是着眼于拆分后文件的传输,因此本发明适用于各种P2P流媒体系统需要文件传输的情况(无论何种拆分方式,甚至不拆分文件)。

当多个接收数据端向同一发送数据端请求数据下载时,该发送数据端以时间的先后顺序为这些接收数据端的下载请求设定优先级;时间越早,优先级越高。如图3所示流程如下:

1、程序初始化,一个peer服务器或者发送数据端提供服务的能力肯定是未知状态(这一能力称为最大数据提供能力),此时添加一个peer下载请求(高优先级的接收数据端请求),发送数据端无法保证能够满足对方的下载要求,但却必须立即做出响应并提供数据。

应对策略:大胆假设,并探测最大能力值。假设自己能够满足对方的下载要求,直接给予下载peer肯定的答复。意思就是说,我能够给你提供你要求的数据,你在我这下吧。因为本身的提供数据的能力还不清楚,是不能够保证速度的,所以此时需要对这个下载peer进行发送数据速度检测。以指定时间为标准检测时间,时间在2到5秒钟内指定,统计出标准时间内发送的数据的总量,得到实际上每秒钟发送的数据量,称为实际平均发送速度。为每个peer的发送数据的速度可以根据peer的状态来确定,称之为正常发送速度,即该发送数据端保证该接收数据端正常播放流媒体文件所需的下载速度。

如果实际平均发送速度大于或等于正常发送速度,得到检测结果“正常”,并继续数据传输。此时,该发送数据端将能力“计数加一”,并且设置为可以为下一优先级的接收数据端发送数据,从而根据请求的优先级添加下一优先级的下载连接,而且每添加一个peer都需要作检测,直到探测出最大能力值为止。其中,该发送数据端将能力“计数加一”,其目的是,通过计数方式发送数据端统计出在下载能力发挥最大状态下所能连接的最大数目,从而为后续阶段(如断开连接/重建数据通道/发送数据的过程)提供参照,利用这个作为参照的最大数目,做减一加一计数,即可决定某些通道的传输状态。

如果实际发送速度小与正常发送速度,得到检测结果“慢”;“慢”的时候需要进行次数累计。而到达最大能力值的检测标准是连续检测出为指定个数(个数在2到4个内指定)的子节点peer提供数据速度“慢”。注意,是连续几个,这么做的原因是,如果中间出现了下载慢的,而后面的又能够正常下载,这种情况跟自身的提供能力无关,属于网络问题,或者是对方的问题。如果连续检测到几个慢的,说明当前提供服务能力已经达到最大,并且已经超出能力范围。此时确定最大能力值已产生,并开始计算具体数据,通过统计一段时间内的发送数据的总量来确定最大能力值。并且通常,此时接收数据端会主动断开连接。

2、在探测最大能力值时,只有提供数据量超出了本身提供能力的时候,才能够探测出最大能力值。那么超出能力之外的数据应该怎么解决呢?例如本身一秒钟能提供1M的数据,而需要发送的数据却是一秒钟1.2M,此时那1M的数据到底应该发送给谁,剩余的0.2M数据应该怎么处理就成了此处的关键。采取的办法为:在达到数据最大提供能力的情况下,发送数据端暂时不为低优先级的接收数据端提供数据。具体应对策略如下:

为了保障网络的稳定性,以“后来的peer不影响先来的peer”的原则进行的;此处按照请求的时间顺序,赋予每个来请求数据的peer对应的优先级,先来的优先级比后来的优先级高。给peer发送数据时,不直接将数据发送到网络中,而是发送到优先级队列中,优先级队列会按照数据所属peer的优先级进行排列。peer的优先级最高的会排在整个队列的最顶部,首先被发送。每个下载peer都有一个线程往返于优先级队列与网络之间,发送数据,每个线程都只会发送排在优先级队列最顶部的数据。如图2所示有六个peer正在下载数据,每个peer的发送速度是0.2M每秒,共1.2M每秒,可是底层remote peer(发送数据端)的发送能力只有1M每秒,此时优先级的高低就至关重要了。按照序号排序,下载peer1优先级最高,下载peer6优先级最低,每个peer都发送一个数据到优先级队列中,那么此时就会发现peer1-5的数据都能够正常发送,peer6的数据却一直存在优先级队列中,不能够发送。当数据发送不符合发送要求时,每个都peer都会产生第二组数据放在优先级队列中进行“占位”行为,发送线程只会发送队列中优先级最高的数据,这样就确保了优先级高的peer的数据发送稳定性,避免了被后来的peer所影响。

3、通过上面的处理,可以发现最后有一个下载peer无法得到数据,这样同样是会对这个peer产生影响的。对此,服务器部分(发送数据端)无能为力,但是也不能放任不管。

应对策略:每个下载peer(接收数据端)本身在得到肯定的答复后,都会进行接收数据速度检测,以固定时间(时间在3-6秒内选择)为一次检测时间,从收到答复的时间开始,统计固定时间内共收到了多少数据,如果低于正常下载速度的一半,会直接断开与服务器的连接,另外寻找数据源。到此处,服务器的状态就应该是最大的发挥了,也就是基本达到了我们上面说的充分利用自身有效的资源,提供高效服务的状态。

上述正常下载速度与正常发送速度相同,具体举例:假设30个发送数据端(服务器)为一个接收数据端peer提供一个每秒30帧的视频文件,并且每个发送数据端对应提供视频文件每秒钟不同帧的数据。此时,每个发送数据端只要保证1帧/秒的速度发送数据,而接收数据端保证1帧/秒的速度接收每个服务器的数据,即可保证接收数据端视频文件30帧/秒的正常播放,此时这个1帧/秒就是正常下载速度或正常发送速度。

4、此时再来peer请求下载,应该如何处理呢;

应对策略:此时可以确定提供数据的能力已经达到自身的最大能力,但是最大能力的具体数值还没有计算出来。接下来在计算最大能力的一段时间内不能够接受任何的子节点peer下载数据请求。但是不要紧,因为在实际上能力在当前时间已经被最大使用,不可能再为其他的子节点peer提供数据下载,可以认为暂时没有能力再对外提供数据。此时可以给予否定答复,告诉对方我不能够提供给你。也就是说,此时,该发送数据端对于其他优先级低的接收数据端下载请求,暂不提供数据,拒绝下载;而接收数据端在3-6秒内检测出实际下载速度小于正常速度的一半时,该接收数据端会主动断开与发送数据端的连接,重新找寻数据源。

此外,具体的最大能力值(“最大连接数”),计算完成之后,还要直接统计一次当前的发送数据总和,通过将所有下载peer的下载速度累加,得到当前对外提供数据的速度总和,称为“当前连接数”。每次下载peer添加,删除都要更新一次当前连接数。再接到请求时,就可以直接用最大连接数与当前连接数的差值与请求的下载速度进行比较,大于下载速度就提供数据,小于就不提供数据。例如在所需文件下载完毕或者数据传输错误时,某一连接断开,此时由于发送数据端的数据提供能力已经确知,发送数据端直接以最大数据提供能力为优先级高的接收数据端提供数据下载,直至达到最大数据提供能力即可。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号