在对等共享网络内进行数据请求调度的方法

文档序号:7923510阅读:163来源:国知局
专利名称:在对等共享网络内进行数据请求调度的方法
技术领域
本发明通常涉及对等网络(P2P)和对等网络内数据请求的调 度方法,特别涉及P2P网络内对流媒体数据的数据请求的调度系统和方法。
背景技术
内容提供商经常通过内容分发网络(CDN)从一个或多个服务 器流式传输(stream)数据,如音频、视频和/或其它内容到请求客户端。 例如,音乐或电影以低延迟和自由交互(诸如支持暂停、跳转、快进、倒 带等)被发送分布式用户的台式机。在此使用的"流媒体"是指任何类型 的数据(如音频、视频和/或其它内容类型),其以流方式被传送到接收方, 从而接收方可以在接收到所有流数据之前开始重放流数据(即接收方可以 重放接收到的流数据部分,而将要播放的其它流数据部分仍由接收方继续 接收)。在计算机领域,流媒体是一个众所周知的技术。通常,流媒体以一 种流或持续的方式展示数据(例如通常是音频和/或视频)给客户端。即使 用流媒体,客户端不需要接收完所有将要演示的信息,才开始演示。而是, 流媒体文件的内容重放可以在所有文件被客户端收到之前就开始,当接收 到的文件部分被重放时,文件的其它部分持续由客户端接收以便随后重放。在本领域已知有各种流媒体播放器。例如,流行的流媒体播放 器包括由RealNetworks (http:〃www.realnetworks.com)提供的那些播放 器,如RealPlayer 和RealOnePlayerTM流媒体播放器,以及由Microsoft 的Windows今媒体播放器(http:〃www.microsoft.com)。通常,每个流媒体 播放器有一个相关的缓存器,用来缓存接收到的流数据以提高流媒体播放 器重放这种流数据时的连续性(诸如为了保持流畅地重放流数据)。传统的客户机-服务器模型,其中每个请求客户机和服务器之 间建立有一个专用流,主要因为在服务器端繁重的服务器负载和有限的网 络带宽,其具有有限的可扩展性。最近,对等网络(P2P)已经越来越广 泛用于许多可扩展应用,如在全球范围的用户中间共享流和文件。在P2P系统里,协作对等方通常通过单播隧道(unicast tunnel)自组织自己到覆 盖网络(overlay network)内。每个对等方可以是一台个人计算机(PC)、 膝上型计算机、个人数字助理(PDA)、移动电话、或其它与P2P网络通 信连接的基于处理器的计算设备。每个对等方(有时被称为覆盖网络内的 一个覆盖节点)充当一个应用层代理方,高速缓存并转播数据到其它对等 方。另外,通过共享其资源,如存储和网络带宽,与传统的客户机-服务器 架构相比,极大地扩大了整个系统的容量。因此,终端系统(如客户机) 经常形成一个P2P网络,其中充当对等方的终端系统可以相互共享数据。 例如,充当对等方的终端系统可以贡献出其带宽和存储以协助在对等方之 间分发内容。已经提出有各种P2P技术。 一个例子,美国专利申请文献 2008/0155120 Al ,标题为"Method and System for Peer-to-Peer Content Dissemination(对等内容分发的方法和系统)"(本文以下称为",120文献"), 提议使用P2P网络在对等方之间进行内容分发。依照'120文献,发送方根 据已经从请求方接收到的字节数目决定要发送多少数据(参考'120文献的 段落0050-0055)。' 120文献的目的是避免P2P网络内的恶意攻击(malicious attack)或自私的对等方。但是,'120文献没有涉及实时流内容,其提出的 解决方案好像不适用于实时流内容,因为其相对较长的响应时间。另一个例子,美国专利申请文献2008/0140853 Al,标题为 "Peer-to-Peer Streaming of Non-Live Content (对等流非实时内容)"(本文 以下称为",853文献"),提议使用P2P网络用来流式传输非实时内容。,853 文献的方法是基于比特洪流(BitTorrent, BT), 一种基于最少优先策略
(rarest-first strategy)的知名调度算法。,853文献没有涉及实时流内容, 其提出的采用BitTorrent调度算法的解决方案好像不适用于实时流内容, 例如,因为缺乏有关请求数据的时间敏感性(time-sensitivity),。另 一个例子,美国专利申请文献2008/0037527 Al ,标题为 "Peer-to-Peer Interactive Media-on-Demand (对等交互式请求媒体)"(本文 以下称为",527文献"),提议一种在P2P网络内用于请求媒体(MoD)通 信的方法。'527文献提议组织和存储注册信息,包括媒体信息、播放开始 时间和注册对等节点的位置。然后, 一旦接收到请求,作出一个由父节点列表组成的决定,其可以最优地提供媒体下载服务给请求对等方,取决于 请求的媒体信息、媒体播放开始时间和请求对等方的位置信息。然后,请 求对等方被连接到至少一个父节点以接收、缓存和播放媒体。 ,527文献提议每个对等客户机缓存已经播放一段时间的媒体,
取决于其缓存的大小。客户机缓存分为三部分l)刚刚播放的,其高速缓
存对等方已经播放的媒体;2)准备播放的,其存储接收到的准备播放的流; 以及3)收集的,其是一个用来收集来自多个父节点的流的空间(参照,527 文献的段落0038-0041)。在'527文献里,对于一个成为另一个对等方x父 节点的对等方y,其刚刚播放的缓存必须包含由x收集的流数据。'527文 献提议使用DHT, 一种有效的P2P搜索技术,以识别一个对等方将连接到 的父节点,参考'527文献的段落0043-0046。 ,527文献还在段落0047里解释了其过程,具体如下在连接到一些父节点之后,对等方需要协调其父节点 以便流式传输媒体的非重叠部分。优选实施例将每个媒体分割成W 个片段,每个片段包含l-秒媒体,然后将每个片段进一步分割成M 个等尺寸的块。例如,比特率450 kbps的1-秒视频被分割成64个块, 因此每个块大约是900字节,其适合一个信息包。对媒体的每个片段, 一个位图(bitmap)表述被发送到一个请求数据块的父节点。片段里 的每个块是由一个比特表示,设为1的比特表示请求块。利用另一个 2-字节片段码,媒体里的所有数据块被唯一识别。 '527文献关注请求视频的内容分发,但没有涉及实时流内容。期望存在一种备选和/或改进的技术用来在P2P里调度数据请 求,特别是一种适合调度实时流数据的对等数据请求的调度技术。
发明概述本发明涉及一种在P2P网络里调度数据请求的系统和方法,特 别涉及用来调度流媒体数据的数据请求的系统和方法。依照本发明的实施 例,提供了一种方法,通过将请求的教据组块依照其相对时间紧迫性划分成几个区域,而提高一个对等方对整个P2P网络的贡献,然后调度数据请 求以保持每个区域内的数据可用性到一个对应的预设目标量。本发明实施例特别适用于调度实时流数据的数据请求。如在此
使用的,"实时流内容(或数据)"是指在流开始之后建立(持续)的媒体 流。因此,在一个实时流里,当较早建立部分的流被流到接收方时,持续 建立流的后部分。这样,可以区分实时流和非实时流,非实时流在流内容
开始之前需要建立所有元数据(metadata)(如时间戳、每个编码帧的字节 数目等)。在流开始之前有了所有元信息和真实媒体数据, 一个非实时流客 户机(如在P2P网络里的一个对等方)才可以调度以从流的任何点拉出数 据。对实时流而言,比特流是随着时间进行编码。因此,实时流客户机通 常需要仅保留一个合理的短延迟,如几秒到几分钟。在实时P2P系统里的 所有播放器都具有有限的存储器,所以在播放之后播放器通常仅缓存有限 持续时间的媒体数据,所以在一些时间之后一些旧数据可能不存在网络内。 这意味着有一个紧迫性的考虑因素,这是本发明的实施例适合涉及的部分。 一个实际的流系统的例子是电视节目无线广播(airbroadcast)。依照一个实施例,在P2P网络内的每个对等方上建立和保留一 个缓存位图,其中这种缓存位图至少标识将由对等方播放的流媒体的一个 未来部分。如在此所述,缓存位图还可以标识对等方上仍然缓存的流媒体 的之前播放部分。将播放的流媒体的未来部分逻辑上被分割成多个数据组 块(data chunk)。例如,每个数据组块可以对应一定长度重放时间(如1 秒)的流媒体。在缓存位图里组块可以以时间紧急程度的方式进行排列(如 依照每个组块何时被调度在流媒体重放时进行播放)。依照一个实施例,在缓存位图里标识的时间序列组块随后被分 割成相应的时间紧迫性区域。举个例子,第一区域可以被定义为从M到 M+7 (即区域产(M, M+l,…,M+7}),其中M是对等方的当前重放位 置;第二区域可以被定义为从M+8到M+23 (即区域2={]\4+8, M+9,..., M+23});以及第三区域可以被定义为从M+24到M+60(即区域产(M+24, M+25,…,M+60p。因此,根据这种数据组块的相应的时间紧迫性,建立起多个时间紧迫性次序的区域,相应的数据组块被分配到相应的区域。例如,最大 时间紧迫性的第一区域包括多个数据组块,它们是即刻时间紧迫性的(一
旦超过一定时间,比如说在以上区域i例子里的8秒,即由对等方播放);
次要时间紧迫性的第二区域(即中等时间紧迫性)包括不是即刻时间紧迫
性的多个数据组块,但它们应该在重放第一区域的数据组块之后被播放; 而更次要时间紧迫性的第三区域(即最小时间紧迫性)包括多个数据组块, 它们不在重放第二区域的数据组块之后被播放。尽管在此例子里讨论了三 个区域,应该认识到本发明的实施例并不限于这三个区域,相反也可以采 用任何数目"N"的区域对应时间紧迫性(即从最大时间紧迫性区域到最 小时间紧迫性区域)。随着对等方的重放且重放位置"M"的前移,时间次序数据 组块的区域分配会相应地变化。例如,在以上的例子里,当重放位置M前 进l秒(即M-M+1),数据组块的区域分配会相应地更新。因此,当重放 进行时,在以上例子里,之前分配给区域3的数据组块被升级分配给区域2, 同样,当重放时间靠近时,之前分配给区域2的数据组块被升级分配给区 域,。缓存位图内保留有一个相应的位图,其标识别在对等方上哪一 个数据组块是可用的。当已经接收到所有数据信息包时,数据组块在此被 称为"可用的"。位图可以以任何合适的方式进行实施,来标识在对等方上 哪一个数据组块是可用的。依照一个实施例,对在缓存位图里被标识的每 个数据组块,比特位图包括"1"或"0",其中"1"表示相应的组块是可 用的,而"O"表示相应的组块不是可用的。缓存位图还可以包括某些对等 方缓存的数据组块的标识,如对等方已经完成播放的数据组块、以及那些 数据组块,其可用于从该对等方传送到一个请求这些数据组块的邻近对等 方。在数据组块的时间次序里比当前重放位置靠前的数据组块(即 之前播放的组块)涉及一个"缓存—位移"(buffer—offset)。当前重放位置 涉及一个"播放—位移(M)" (play—offset(M))。因此,诸如一个缓存位图 数据结构可以具有以下格式{缓存—位移,播放一位移(M),位图}。对于 一个对等方,这种缓存位图数据结构的一个例子可能是{80, 84, 1111,1111, 0000, 1010},其显示缓存一位移位置是在组块ID 80上开始,而当 前播放—位移(M)是在组块ID 84上;数据结构的位图部分显示数据组块 80-83是可用的(如在位图里由首4个"1"表示),数据84-87是可用的(如 在位图里其次4个"1"表示),数据组块88-91不是可用的(如在位图里 由再其次4个"0"表示),而且数据组块92和94是可用的,但数据组块 93和95也不是可用的(如在位图里由最后的"1010"表示)。对缓存位图的每个时间紧迫性次序区域,可以确定期望的占有 率规则。即可以确定在每个预定区域内期望可用的期望数量(如比例)的 数据组块。依照本发明的实施例, 一个对等方的调度器根据对等方缓存位 图内的每个区域定义的占有率规则来请求其它对等方的数据。例如,对区域i定义一个Fi占有率的目标量,对区域2定义一
个F2占有率的目标量,以及对区域3定义一个F3占有率的目标量。通常,
较高紧迫性的区域定义有一个较高的目标占有率。例如,Fi可以被定义为 100%,即在对等方上区域!内100%的数据组块期望是可用的;F2可以被 定义为50%,即在对等方上区域2内50%的数据组块期望是可用的;以及 F3可以被定义为30%,即在对等方上区域3内30%的数据组块期望是可用 的。对等方的调度器可以监控对等方缓存位图的区域占有率,并至少部分 基于每个区域期望维持的预设目标占有率,来从其它对等方调度数据组块 请求。
依照一个实施例,调度器为所有区域{1, 2, ..., N},确定该
区域是否满足其预设的占有率目标,如果区域没有满足其预设的占有率目 标,调度器从还没有从另一个对等方请求的区域(即不在请求队列(QReq) 上)选择一个不可用的组块。在某些实施例里,区域不可用的组块可以随 机由调度器选择。因此,组块不一定是以时间次序方式进行选择,而是可 以以非次序方式从另 一个对等方请求其数据而进行选择。对等方可以周期性地与其邻近对等方交换缓存位图,从而对等 方的调度器能够从邻近缓存位图确定哪一个邻近对等方具有选择的组块。 调度器可以选择一个具有选择组块的邻近对等方(Pk),并发送一个请求到 这个选择的邻近对等方Pk以请求选择的数据组块。在某些实施例里,具有选择组块的一个邻近对等方(向该对等方请求该组块),是随机地由调度器 进行选择。本发明的实施例提供一种方法来调度首先请求哪一个可用数
据组块给对等方。实施例采用了一个基于区域的缓存位图,其根据时间紧 迫性进行分区。可以在给定区域内作出非序列性的请求,以增强共享的可 能性。某些实施例采用一种调度算法,尝试避免在最后几秒之前较早时间 的数据请求。调度是基于本地缓存占有率(组块可用性)和邻近对等方, 而不需要知道全局状态。因此,某些实施例增强了共享的可能性,即增加 了邻近对等方具有一些给定对等方需要的数据组块而这个给定对等方具有 一些邻近对等方需要的数据组块的机会。本发明实施例可以在拉取式(pull-based) P2P实时流网络下使 用。拉取式是指一旦收到请求就发送组块。对等方有方法从其邻近对等方 获得缓存位图状态。在P2P实施流系统理的一个媒体信道可以由多个用户 看到。 一个实时视频可以被分割成媒体组块(如每个组块有一秒的媒体数 据),实时视频在源对等方是可用的。观看视频的每个接收对等方与观看同 一视频的其它对等方高速缓存和共享组块。依照本发明的某些实施例,根据其时间紧迫性来安排媒体数据 组块的优先次序。数据请求被调度得以保持缓存占有率/空置在某个水平。 从而提高全局共享并增强重放流畅性。因此,本发明的实施例提供一种方 法,通过依照其时间紧迫性将请求数据组块划分成几个区域并保持数据可 用性到某个水平,以提高对等方对整个P2P网络的贡献。所以,本发明的 实施例能够增加P2P共享效率,如降低需要提供内容的网络资源。前述已经相当广泛地概括了本发明的特征和技术优势,以便可 以更好地理解以下本发明的详细描述。本发明的其它特征和优势将以随后 进行描述,其构成本发明权利要求的主题。本领域技术人员应该注意到, 可以轻松地利用披露的改变和具体实施例作为一个基础,用来修改或设计 能够执行本发明相同目的的其它结构。本领域技术人员也应该认识到,这 种等同构造没有偏移在附加权利要求内阐述的本发明精神和范围。被看作 本发明特性的新颖性特征,有关其组织和运作方法,与其它目的和优势一起,从以下结合附图的描述可以更好地理解。但是,应该深刻地认识到, 在此提供的每个附图仅是用作描述和说明用途,并不是意在作为限制本发 明的定义。


为了更完整地理解本发明,现结合附图参照以下的描述,其中图1是木发明一个实施例的一个典型P2P网络的模块示意图;图2是本发明一个实施例的一个给定接收对等方Pi的典型架构 的模块示意图;图3显示一个典型的缓存位图,依照本发明一个实施例其可以 被实施在图2的对等方上。图4显示本发明一个实施例运作例子的示意图;图5显示本发明一个实施例的运作流程图;图6是本发明一个实施例用于执行图5运作模块502的典型流 程图;图7是本发明一个实施例用于图5调度操作模块504的典型操 作流程图;和图8是本发明一个实施例的另一个典型操作流程图。 发明详述图1是依照本发明一个实施例的一个典型P2P网络100的模块 示意图。典型P2P网络100包括一个源对等方(SP) 101和各个接收对等 方(RP) 102-107。每个对等方101-1(T7可以是个人计算机(PC)、膝上型 计算机、个人数字助理(PDA)、移动电话、或其它通过P2P网路100与一个或多个邻近对等方通信连接的基于处理器的计算设备。在此例子里SP 101编码/建立内容流。即在某些实施例里,SP 101包含一个实时编码器以在P2P网络100内建立实时媒体流。RP 102-107 期望接收内容流。每个对等方(SP/RP)有其自己的一组邻近对等方。不 是每个对等方在其邻近列表里都有SP101。因此,SP101发送实时流内容 到网络100上,不同的RP 102-107期望接收流内容。不是每个RP 102-107 都从SP101传输流内容,而是, 一个或多个RP 102-107请求并从其它RP 102-107接收至少一部分流内容。如在此所述,不同的RP 102-107可能具 有不同的播放时间。即不同的RP可能不是以同步方式在相同时间播放实 时内容。可以用本领域内P2P网络的任何已知方法来确定P2P网络内每 个对等方的邻近对等方。作为一个例子,对等方可以相互交换信息,以使 每个对等方能够编辑其各自的邻近对等方列表。另一个例子,可以使用一 个跟踪服务器108来跟踪P2P网络内的对等方。例如,对等方可以在跟踪 服务器108上进行注册,然后跟踪服务器108可以确定并传送给每个对等 方其各自的邻近对等方列表。如在此所述,每个对等方保留一个缓存位图,其识别将由对等 方播放的至少另一部分流媒体。如在此所述,缓存位图也可以识别之前播 放的部分流媒体,其仍然被缓存在对等方上。可以从邻近对等方获得缓存 位图,以反映在每个对等方上的可用数据。例如,在某些实施例里,邻近 对等方可以周期性地相互交换其各自的缓存位图。依照某些实施例,数据 请求是纯粹基于本地需求和邻近缓存位图由一个对等方的调度器来确定 的。如在此所述,缓存位图被分割成/划分成多个层,各自包含具有不同相 对时间紧迫性的数据组块。对缓存位图的每个区预设一个占有率目标,调 度器尝试调度数据请求以满足每个区的占有率目标。图2是依照本发明一个实施例的一个给定接收对等方P,的典型 架构的模块示意图。例如,对图1的每个接收对等方102-107,可以实施 图2所示的典型构架。如图2所示,P;包括一个用来显示由Pi接收到的流内容的播放器201。这个播放器201可以包含任何合适的流媒体播放器, 如由RealNetworks (http:〃www.realnetworks.com)提供的媒体播放器,如 RealPlayer 和RealOnePlayerTM流媒体播放器,或Microsoft的Windows^ 媒体播放器(http://www.microsoft.com)。包含的缓存器202用来缓存将由 播放器201播放的流内容,从而使播放器201能够顺畅且不间断地显示流 内容重放。流媒体播放器的各种缓存技术在本领域内是已知的。而且,包含一个缓存位图203。缓存位图203包括信息,其至 少识别将由对等方Pi播放的流媒体文件的一个未来部分。如在此所述,缓 存位图203也可以识别流媒体文件的之前播放部分,其仍然被对等方Pi 缓存在缓存器202内。如在此所述,被缓存位图203识别出的流媒体文件 的将被播放部分,逻辑上被分割成多个数据组块。例如,每个数据组块对 应流媒体文件的某个重放时间长度(例如1秒)。在缓存位图203内组块可 以以时间紧急程度的方式排列(例如根据在流媒体重放时每个组块何时被 调度播放)。依照一个实施例,缓存位图203内依时间排序的组块然后被分 割成各个时间紧迫性区域。作为一个例子,第一区域可以被定义为从M到 M+7 (即区域产《M, M+l, ..., M+7}),其中M是对等方的当前重放位 置;第二区域可以被定义为从M+8到M+23 (即区域2^M+8, M+9,…, M+23});以及第三区域可以被定义为从M+24到M+60 (即区域3={M+24, M+25,…,M+60})。因此,基于这种数据组块的各个时间紧迫性,相应数据组块被 分配到一个相应区域,建立起多个时间紧急次序区域。例如,最大时间紧 急的第一区域包括多个数据组块,它们是即时时间紧迫性的(如,超过一 定时间,比如在以上例子里区域,的7秒,即由对等方播放);次要时间紧 急的第二区域(即中等时间紧迫性)包括不是即时时间紧迫性的多个数据 组块,但它们在重放数据组块的第一区域之后将被播放;而更次要时间紧 急的第三区域(即最小时间紧迫性)包括多个数据组块,它们不在重放数 据组块的第二区域之后被播放。尽管在此例子里讨论了三个区域,应该认 识到本发明的实施例并不限于这三个区域,而是可以采用任何数目"N"的时间紧迫性区域(如从最大时间紧迫性区域变化到最小时间紧迫性区域)。随着对等方的重放和重放位置"M"的前移,时间次序数据组 块的区域分配也会相应地变化。例如,在以上例子里,当重放位置M前进 l秒(即N^M+1),数据组块的区域分配会相应地更新。因此,当重放进 行时,在以上例子里,之前分配给区域3的数据组块被升级而被分配给区
域2,同样,当重放时间靠近时,之前分配给区域2的数据组块被升级而被
分配给区域i。缓存位图203也可以保留一个相应位图,其识别在对等方上哪 一个数据组块是可用的。如在此所述,调度器204至少部分基于缓存位图 203,确定从邻近对等方请求的数据组块。再者,在图2的所述实施例里,还包括一个对等方统计和缓存 位图205。在某些实施例里,周期性地如每秒一次,缓存位图可以在每个 邻近对等方之间进行交换。因此,对等方统计和缓存位图205可以包括对 等方Pi的邻近对等方的缓存位图。如在此所述,调度器204可以从此对等 方统计和缓存位图205确定这样一个或多个邻近对等方,对等方Pi需要的 数据组块可以从这样一个或多个邻近对等方得到。因此,如在此所述,调 度器204可以使用来自缓存位图203的信息(而识别确定Pi需要的数据组 块)和/或对等方统计和缓存位图205的信息(而识别确定一个或多个邻近 对等方,其具有可用的需要的数据组块),以便能够为Pt的数据请求从邻 近对等方调度数据。在缓存器202、缓存位图203和对等方统计和缓存位图205里 的数据可以存储到任何合适的计算机可读数据存储设备(如硬盘、存储器、 或其它合适的计算机可读数据存储设备),而且以任何合适的格式存储,如 文件、数据库、数据结构等。而且,播放器201和调度器204可以各自以 硬件逻辑和/或计算机可执行软件代码而执行在此所述的各个操作。例如, 在某些实施例里,计算机可执行软件代码被存储到一个计算机可读媒质(如 硬盘、存储器、或其它合适的计算机可读数据存储设备),并由对等方& 的一个处理器(如CPU)执行,使对等方Pi能够执行在此所述的播放器201和调度器204的动作。图2的对等方Pi还包括一个网络层206,以通过一个通信网络
与其它对等方如Pi,bPi,2,…,Pi,N进行通信连接,其中N是对等方Pi的邻近 对等方总数目。即对等方Pij是指对等方Pi的第j个邻近对等方。图3显示依照本发明一个实施例的典型缓存位图203。在此例 子里,缓存位图203包括-行组块ID301和相关的位图302,其显示对等 方Pi上哪一个组块当前是可用的。在此例子里,流媒体数据(如音频,视 频和系统信息,如时间戳)被多路复用到单个P2P信息包流。每秒的(或 其它预设时间周期)媒体数据被归类到一个组块内(由行301内的一个相 应组块ID标识)。每个数据组块还可以被分割成多个信息包。在如图3所 示的典型缓存位图203内,标识了组块ID 80-95。组块是按时间次序排列 的将由对等方Pi播放的部分流媒体文件。因此,如组块ID80标识一个将 在第一秒播放的数据组块,然后组块ID 81标识别一个将在下一秒播放的 数据组块,以此类推。对行301内标识的每个组块,位图302包括"1"或 "0",其中1表示相关组块在对等方&上是可用的(如存储在图2的缓存 器202里),而O表示相关组块在对等方Pi上不是可用的。在所述例子里,之前播放的数据组块(即在时间次序上比当前 重放位置更早前的部分)涉及一个"buffer—offset"(缓存—位移)。当前重 放位置涉及一个"play一offset(M)"(播放—位移(M))。因此, 一个缓存位图 数据结构可以具有以下格式{buffer_offset, play—offset(M), bitmap}。在图 3的所述例子里, 一个表示缓存位图203的相应缓存位图数据结构可能是 {80,84, 1111 1111 0000 1010},其表示缓存—位移位置是在组块ID80上, 而当前的播放—位移(M)是在组块ID 84上;并且此数据结构的位图bitmap 部分显示数据组块80-83是可用的(如在位图内由首四个1表示),数据组 块84-87是可用的(如在位图内由其后四个l表示),数据组块88-91是不 可用的(如在位图内由其后四个O表示),而数据组块92和94是可用的, 但数据组块93和95也是不可用的(如在位图内由最后"1010"表示)。因 此,在此例子里,之前播放的数据部分,其仍然在对等方&的缓存器202 上被缓存,是组块ID 80-83,其可用来发送到向对等方Pi请求这种数据的另一个邻近对等方。而且,流媒体文件的将被播放部分包括组块ID 84-95, 其中组块84-87、 92和94在对等方Pj上是可用的(可以发送到向对等方 Pi请求这种数据的另一个邻近对等方),而组块88-91、 93和95仍然是对 等方Pi所需要的。因此,调度器204尝试向对等方Pi的邻近对等方请求不 可用的组块88-91、 93和95,以在对等方Pi的各个重放时间之前获得那些 组块,以便保持在对等方Pi上顺畅地重放流媒体文件。图4是本发明一个实施例的运作例子的示意图。在图4,显示 两个对等方,Peen和Peer2。每个对等方有各自的缓存位图,其被分割成 时间紧迫性次序区域。例如,Pee"有一个缓存位图BMi,而Pee&有一个 缓存位图BM2。每个BMi和BM2可能包含组块ID和一个相应位图,如以 上图3所示缓存位图203的讨论,其显示在对等方上哪一个标识的组块是 可用的。在此例子里,每个缓存位图被分割成四个区域。 一个区域Regkmo, 表示之前播放的数据组块,其在各个对等方上仍然是可用的。三个剩余区 域是将被播放的流数据的时间紧迫性次序区域。这三个区域中的第一区域 Region是从M到M+7 (其中M是各个对等方的当前重放位置),三个区 域中的第二区域Regiori2是从M+8到M+23,而三个区域中的第三区域 Region3是从M+24至U M+60。因此,Region尸(M, M+l,…,M+7}; Region2={M+8, M+9, . ., M+23};以及Region3={M+24, M+25, ." M+60}。 由图所示,将被播放的区域中的第一区域Regies是时间最紧急的,因为 其包含即刻将要被播放的数据组块,而Region2具有较小的时间紧迫性, 因为其包含在重放Region!的组块之后将被播放的数据组块,而Region;具 有更小的时间紧迫性,因为其包含在重放Regi0n2的组块之后将被播放的 数据组块。在图4的所述例子里,Peen有一个M404的当前重放位置, 而Peer2有一个M=100的当前重放位置。而且,Peer,向Peer2请求数据组 块117 (其在Peer2的Region2内是可用的),而Peer2向Peet^请求数据组块 127 (其在Peert的Region3内是可用的)。图5显示本发明一个实施例的运作流程图。在运作模块501, 为一个给定对等方建立一个邻近列表。此邻近列表可以从一个跟踪服务器(如图1的跟踪服务器108)或通过连接对等方之间的交换而构建。在运
作模块502,到达给定对等方的一个本地套接口的数据是由此对等方接收
和处理的。在此典型实施例里,有以下的定义
P1:对等方i;
T:当前时间(秒);
B:预设的时间(如1秒);
TB,i:从P,接收最新缓存位图的时间;
Ts:呼叫最后数据请求调度器的时间;和
S:预设的数据调度间隔(如0.2秒)。在运作模块503,如果对所有i存在T-TB,〉B,向对等方Pi请 求一个缓存位图。在运作模块504,如果T-Ts 〉 S,运行数据请求调度器(如 图2的调度器204)。依照本发明的某些实施例,参照图6和图7,运作模 块502和504的典型实施将在以下分别进行讨论。依照本发明的一个实施例,图6显示执行图5运作模块502的 典型流程图。在运作模块601,数据是从对等方的本地套接口接收的(即 通过图2的网络层206)。在模块602,该对等方确定接收到的数据是否是 一个数据信息包。如果是,保存数据信息包的内容(到图2的缓存器202), 并且如果需要,该对等方更新其缓存位图203 (例如,如果接收到的数据 信息包导致一个可用的新数据组块)。如果在模块602确定接收到的数据不是一个数据信息包,运作 跳到模块604,该对等方确定接收到的数据是否是一个缓存位图更新的请 求。如以上所述,对等方可以周期性地向其邻近对等方请求缓存位图,如 每秒一次。如果在模块604上确定接收到的数据是一个缓存位图更新的请 求,在运作模块605上该对等方更新其缓存位图和请求对等方(其发送接 收到的数据给对等方)的时间戳。如果在模块606确定接收到的数据不是一个对等方列表更新的 请求,运作跳到模块608,处理该对等方接收到的任何其它类型数据(如 消息)。在任何情况下, 一旦处理完接收到的数据,运作返回到模块601, 从该对等方的本地套接口接收更多数据。如在此所述,可以对一个对等方的缓存位图的每个时间紧迫性 次序区域定义期望的占有率规则。即可以预设一个数据组块的期望目标量, 其在缓存位图的每个定义区域内是可用的。依照本发明的实施例, 一个对 等方的调度器204根据该对等方的缓存位图203 (图2)内的每个区域定义 的占有率规则向其它对等方请求数据。例如,对Region定义一个Fi的占有率目标量,对Regioii2定 义一个F2的占有率目标量,以及对Region定义一个F3的占有率目标量。 通常,较高紧迫性的区域有一个较高的占有率目标量。例如,F,可以被定 义为100%,其中在Region,内的100%数据组块期望在对等方上是可用的; F2可以被定义为50%,其中在Region2内的50%数据组块期望在对等方上 是可用的;F3可以被定义为30°/。,其中在Region3内的30%数据组块期望 在对等方上是可用的。对等方的调度器204可以监控对等方的缓存位图203 的每个区域的占有率,并至少部分基于定义的期望在每个区域内保留的目 标占有率,向其它对等方调度数据组块请求。依照一个实施例,调度器对所有区域{1,2, ...,N》确定区域是否 满足其定义的占有率目标,如果区域没有满足其定义的占有率目标,调度
器从还没有被另一个对等方请求的那个区域(即不在请求队列(QReq)上)选
择一个不可用的组块。在某些实施例里, 一个来自区域的不可用组块可以 随机由调度器进行选择。因此,组块不一定是以时间次序方式进行选择, 而是'组块可能是为另一个对等方请求数据时以非次序方式被选择。
对等方可以周期性地与其邻近对等方交换缓存位图,因此,对 等方的调度器可以从邻近缓存位图(即图2的统计和缓存位图205)确定 哪一个邻近对等方有选择的组块。调度器204可以选择一个具有选择组块 的邻近对等方(Pk),并发送一个请求到这个选择的邻近对等方Pk以请求选 择的数据组块。在某些实施例里,具有被请求的选择组块的邻近对等方中 的一个对等方是由调度器随机选择的。依照本发明一个实施例,图7显示图5运作模块504的调度操 作的一个典型运作流程图。在运作模块701,如果请求的数据已经接收到 或已经超时,调度器204 (图2)从对等方的请求队列(QReq)删除一项。在 运作模块702, "i"被设置为l,在最大时间紧迫性的区域RegiorM上开始 分析缓存位图区域。在模块703,调度器从对等方的缓存位图203确定区 域"i"的当前占有率是否满足此区域i的预设的目标占有率(欲占^^^" > = 要,游—占存率/V7)。例如,假设对Regioi^指定一个100M的预设目标占有 率(即要求游一占存率A/ = 在模块703调度器204确定当前Regio
是否是100%占有率(即在该对等方上有100%的数据组块是可用的)。如 果在模块703确定^夯^率^满足预设的目标占有率,运作会跳到模块706, 详情将在以下讨论。如果在模块703确定^^^^(^没有满足预设的目标占有率(即 评估下的Regkmi至少没有预设的要求游—A,率/V/那样满),那么运作跳 到模块704,调度器204从区域i随机选择一个不可用的组块,区域i不在 对等方的请求队列上。接着,在模块705,调度器204选择一个邻近对等 方Peerk,选择的不可用组块在Pe叫上是可用的(即选择的不可用组块在 任何一个不同邻近对等方上是可用的,可以由调度器294随机进行选择), 调度器204发送一个选择不可用组块的请求给邻近对等方peerk。在运作模块706, "i"被逐步递增来评估缓存位图的下一个区 域。在运作模块708,调度器204确定i是否大于N,其中N是缓存位图 的将被播放区域的总数目。如果是,所有的缓存位图区域将被评估,而运 作在模块709结束(和/或返回到运作模块701周期性地重复)。如果还没有评估所有区域(如i〈-N),运作从模块708跳到模块703以便评估对等 方的缓存位图203的下一个区域"i"。依照一个实施例,缓存位图是在邻近对等方之间周期性地进行 交换(比如说每1秒)。可以周期性地运行图7的调度器算法(比如说每 0.2秒)。图8显示本发明一个实施例的另一个典型运作流程图。在运作 模块81,在P2P网络内将由对等方播放的流媒体内容被逻辑地分割成多个 按时间排序的数据组块。如在可选子模块801上所示,每个数据组块可以 是一个预设长度,比如说l秒重放时间的流媒体内容。在模块82,对等方 的一个缓存位图(如图2的缓存位图203)被划分成多个时间紧迫性次序 区域。在模块83,对每个区域定义各个目标占有率。如在可选子模块802 内所示,目标占有率可以依区域不同而不同,取决于每个区域的相应时间 紧迫性。例如,对最大时间紧迫性的第一区域而定义的目标占有率可能比 较小时间紧迫性的另一个区域的目标占有率有较大的目标占有率。在模块84,缓存位图里填充有这样的信息,该信息标识流媒体 内容至少多个将被播放的数据组块,如以上图3内讨论的典型组块ID301。 在模块85,缓存位图里被填充有这样的信息,该信息标识哪一个将被播放 的数据组块在对等方上是可用的(如图3的位图302)。在运作模块86,依照多个将被播放的数据组块的相对时间紧迫 性,每个将被播放的数据组块被分配到缓存位图的一个时间紧迫性次序区 域。接着,在模块87,对于向一个或多个邻近对等方请求一个或多个将被 播放的数据组块,至少部分基于缓存位图和预设的区域目标占有率,确定 一个调度。例如,如在可选子模块803-805内所示,在某些实施例里,确 定调度包括对每个时间紧迫性次序区域,确定该区域分配的将被播放的 数据组块的数量,该被播放的数据组块在对等方上是可用的(模块803); 对每个时间紧迫性次序区域,确定区域的可用的将被播放的数据组块的数 量是否满足该区域定义的各个目标占有率(模块804);以及当确定该区域 的可用的将被播放的数据组块数量不能满足区域的目标占有率时,调度一个请求,从一个邻近对等方请求那个区域的至少一个不可用的将被播放的 数据组块(模块805)。在此描述的许多元素,当通过计算机可执行指令实施时,本质 上是定义运作的软件代码。例如,以上所述的调度器204可能包含用来执
行描述的相应运作的软件代码。可执行指令或软件代码可以从一个可读媒
质(如硬盘媒质、光媒质、EPROM、 EEPROM、磁带媒质、胶巻媒质、闪 存、ROM、记忆棒等)获得。在某些实施例里,依照本发明实施例CPU 可以执行各种逻辑指令。例如,依照结合以上图5-8所属的典型运作流程 图,CPU可以执行机器级指令。应该认识到,本发明不受限于在实施例上可以实施的系统架 构。例如,任何合适的基于处理器的设备可以被用来实施P2P网络内的上 述对等方,包括但不限于个人计算机、膝上型计算机、计算机工作站、和 多处理器服务器。而且,本发明实施例的某些方面(如实施调度器204) 可以被实施在专用集成电路(ASICs)或超大型集成电路(VLSI)上。实 际上,本领域技术人员可以使用任何数目的、能够依照本发明的实施例执 行逻辑运作的合适结构。虽然己经详细说明了本发明及其优越性,但应理解,在不脱离 所附权利要求定义的本发明的条件下可以做出各种改变,替换和变化。此 外,本申请的范围不限定到此处说明书中描述的处理方法,机器,制造, 物质构成,手段,方法和步骤等的特定实施例。从说明书可以容易理解, 可以利用实质上执行了与这里说明的相应实施例相同功能或实现了相同结 果的目前已有的或者将来会开发出的处理方法,机器,制造,物质构成, 手段,方法和步骤。因此,所附的权利要求书旨在包括这些处理方法,机 器,制造,物质构成,手段,方法或步骤。
权利要求
1. 一种方法,包括逻辑上将对等网络(P2P)内一个对等方将播放的流媒体内容分割成多个时间次序的数据组块;将对等方上的一个缓存位图划分成多个时间紧迫性次序的区域;对每个区域定义各自目标占有率;对缓存位图填充这样的信息,该信息标识流媒体内容的至少多个将被播放的数据组块;对缓存位图填充这样的信息,该信息显示哪一个将被播放的数据组块在对等方上是可用的;根据多个将被播放的数据组块的相对时间紧迫性,将每个将被播放的数据组块分配到缓存位图的一个时间紧迫性次序区域;和至少部分基于缓存位图和预设的区域目标占有率,确定一个调度,该调度向一个或多个邻近对等方请求一个或多个将被播放的数据组块。
2. 根据权利要求1所述的方法,其中所述确定调度包括对每个时间紧迫性次序区域,确定一个区域分配的将被播放的数据组 块的数量,将被播放的数据组块在对等方上是可用的;对每个时间紧迫性次序区域,确定区域的可用的将被播放的数据组块 的确定的数量是否满足该区域设定的各个目标占有率;和当确定区域的可用的将被播放的数据组块数量没有满足该区域的目标 占有率时,调度一个请求,从一个邻近对等方请求那个区域的至少一个不 可用的将被播放的数据组块。
3. 根据权利要求2所述的方法,其中所述的调度一个请求,从一个邻 近对等方请求那个区域的至少一个不可用的将被播放的数据组块,包括选择一个不可用的那个区域的将被播放的数据组块,其将从一个邻近 对等方请求。
4. 根据权利要求3所述的方法,其中所述的选择包括随机从区域的 所有不可用的将被播放的数据组块进行选择,所述不可用的将被播放的数 据组块是从一个邻近对等方请求。
5. 根据权利要求3所述的方法,其中所述的选择不需要选择区域的不 可用的将被播放的数据组块的一个最大时间紧迫性的数据组块。
6. 根据权利要求3所述的方法,其中所述的调度一个请求,从一个邻近对等方请求那个区域的至少一个不可用的将被播放的数据组块,还包括 确定一个或多个邻近对等方,在其上选择的不可用的将被播放的数据 组块是可用的。
7. 根据权利要求6所述的方法,其中所述的确定所述一个或多个邻近对等方包括在所述对等方上周期性接收邻近对等方的各个缓存位图;和从所述接收到的缓存位图确定所述一个或多个邻近对等方,在其上选 择的不可用的将被播放的数据组块是可用的。
8. 根据权利要求6所述的方法,还包括选择所述一个或多个邻近对等方中的一个对等方,在其上选择的不可 用的将被播放的数据组块是可用的,向其请求不可用的将被播放的数据组 块。
9. 根据权利要求8所述的方法,其中所述选择一个或多个邻近对等方 中的所述一个对等方,包括随机选择所述一个或多个邻近对等方的所述一个对等方。
10. 根据权利要求1所述的方法,其中对每个区域确定所述各个目标 占有率包括对第一所述区域确定第一 目标占有率; 对第二所述区域确定第二目标占有率;其中所述第一区域比所述第二区域具有更大的时间紧迫性,并且其中 所述第一 目标占有率比所述第二目标占有率大。
11. 根据权利要求10所述的方法,其中所述第一区域具有较大的时间 紧迫性,因为它被分配的所述多个将被播放的数据组块,将在所述第二区 域被分配的所述多个将被播放的数据组块之前播放。
12. 根据权利要求1所述的方法,其中对每个区域确定所述各个目标 占有率包括根据每个区域的相对时间紧迫性,对每个区域确定一个不同的目标占 有率。
13. 根据权利要求1所述的方法,其中对一个区域确定的所述目标占 有率,确定了将被分配到所述一个区域的将被播放的数据组块的数量,其 在对等方上是可用的。
14. 根据权利要求13所述的方法,其中一旦在对等方上已经接收到数 据组块的所有信息包,数据组块在对等方上是可用的。
15. 根据权利要求1所述的方法,其中所述多个时间次序的数据组块 中的每个数据组块包含一个预设长度重放时间的流媒体内容。
16. 根据权利要求1所述的方法,其中流媒体内容包含实时流媒体内容。
17. —种方法,包含逻辑上将对等网络(P2P)上一个对等方将播放的流媒体内容分割成多个时间次序的数据组块;将对等方上的一个缓存位图划分成多个时间紧迫性次序区域; 对每个区域定义各个目标占有率;将缓存位图填充这样的信息,该信息标识流媒体内容的至少多个将被 播放的数据组块;将缓存位图填充这样的信息,该信息标识别哪一个将被播放的数据组 块在对等方上是可用的;根据多个将被播放的数据组块的相对时间紧迫性,将每个将被播放的 数据组块分配到缓存位图的其中一个时间紧迫性次序区域;对每个时间紧迫性次序区域,确定其中可用的将被播放的数据组块数 量是否满足该区域的相应目标占有率;和当确定一个时间紧迫性次序区域内的可用的将被播放的数据组块数量 没有满足该区域的相应目标占有率时,向一个邻近对等方请求,从一个时 间紧迫性次序区域选择一个不可用的将被播放的数据组块。
18. 根据权利要求17所述的方法,其中所述选择所述不可用的将被播 放的数据组块包括向一个邻近对等方请求,从所述一个时间紧迫性次序 区域的所有不可用的将被播放的数据组块中随机地选择的所述不可用的将 被播放的数据组块。
19. 根据权利要求17所述的方法,其中所述选择不要求选择所述一个 时间紧迫性次序区域的不可用的将被播放的数据组块中的一个最大时间紧 迫性的数据组块。
20. 根据权利要求17所述的方法,其中对每个区域确定所述各个目标 占有率包括根据每个区域的相对时间紧迫性,对每个区域确定一个不同的目标占 有率。
21. 根据权利要求17所述的方法,其中对一个区域定义的所述目标占 有率,确定了分配给所述一个区域的将被播放的数据组块数量,其在对等 方上是可用的。
22. 根据权利要求21所述的方法,其中一旦已经在对等方上接收到数 据组块的所有数据信息包,数据组块在对等方上是可用的。
23. 根据权利要求17所述的方法,其中流媒体内容包含实时流媒体内容。
24. —种系统,包括一个对等方,通过对等网络(P2P)与一个或多个其它对等方通信连接,所述对等方包括一个播放器,用来显示流内容;一个缓存器,用来缓存流内容以便由播放器播放;一个缓存位图,其包括a) 信息,其识别流媒体内容的至少多个将被播放的时间次序 的数据组块,和b) 位图,显示哪一个将被播放的数据组块在对等方上是可用的;其中缓存位图被划分为多个时间紧迫性次序区域,根据多个将被 播放的数据组块的相对时间紧迫性,每个将被播放的数据组块被分配到缓 存位图的其中一个时间紧迫性次序区域;一个调度器,至少部分基于缓存位图和多个时间紧迫性次序区域 定义的目标占有率,从一个或多个邻近对等方请求一个或多个将被播放的 数据组块。
25. 根据权利要求24所述的系统,其中所述调度器被设置为 对每个时间紧迫性次序区域,确定该区域分配的在对等方上是可用的将被播放的数据组块数量;对每个时间紧迫性次序区域,确定区域的可用的将被播放的数据组块的确定数量是否满足区域设定的各个目标占有率;和当确定一个区域的可用的将被播放的数据组块数量没有满足该区域的 目标占有率时,调度一个请求,向一个邻近对等方请求那个区域至少一个 不可用的将被播放的数据组块。
全文摘要
本发明提供的系统和方法,用来在对等网络(P2P)内调度流媒体数据的数据请求。根据有关时间紧迫性将请求的数据组块划分成几个区域以提高一个对等方对整个P2P网络的贡献,并努力调度数据请求以维持每个区域内的数据可用性到一个对应的预设目标量。
文档编号H04L12/18GK101436946SQ20081018858
公开日2009年5月20日 申请日期2008年12月15日 优先权日2008年12月15日
发明者吴俊彦, 吴康恒, 林德荣, 陈良乔 申请人:香港应用科技研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1