首页> 中国专利> 一种客户端节点网络拓扑构造方法及流媒体分发系统

一种客户端节点网络拓扑构造方法及流媒体分发系统

摘要

本发明公开了一种客户端节点网络拓扑构造方法,应用于流媒体分发系统,所述流媒体分发系统包括:中心内容服务器CS-P、边缘服务器ES-P、用户请求调度服务器RRS-P以及P2P客户端节点;通过利用P2P客户端节点的上传能力来互相传输一部分流媒体数据,从而节约了内容服务器资源的消耗。通过构建P2P客户端网络拓扑,使得P2P客户端节点能够从其它P2P客户端节点获取一部分流媒体数据,实现在不降低服务质量的同时,降低了对服务器的负载能力要求,使得流媒体分发网络能提供高带宽、质量有保证的流媒体直播服务。

著录项

  • 公开/公告号CN101068186A

    专利类型发明专利

  • 公开/公告日2007-11-07

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN200710110570.6

  • 申请日2007-06-05

  • 分类号H04L12/44(20060101);H04L12/56(20060101);H04L29/06(20060101);H04N7/18(20060101);

  • 代理机构11291 北京同达信恒知识产权代理有限公司;

  • 代理人郭润湘

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

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

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-02-11

    授权

    授权

  • 2008-01-02

    实质审查的生效

    实质审查的生效

  • 2007-11-07

    公开

    公开

说明书

技术领域

本发明涉及计算机网络技术领域,尤其涉及一种P2P客户端节点网络拓扑构造方法、流媒体分发系统、系统相关实体及P2P客户端节点加入流媒体系统的方法。

背景技术

现有技术中产生了一种内容分发网络/媒体分发网络(content/mediadelivery network,CDN/MDN),通过将网站的内容从源节点发布到最接近用户的网络“边缘”节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。对于多媒体内容,如视频点播、视频直播等由于视频传输具有实时性、大容量的特点,通过将视频内容分布到靠近用户的边缘节点上,可以为用户提供更好的播放质量,同时又能大大降低对骨干网络的冲击。

现有技术中的CDN/MDN结构示意图如图1所示,其中:

全局服务器负载平衡(Global Server Load Balancing,GSLB),将用户对媒体内容的请求调度到靠近用户的边缘节点上。

服务器负载平衡(Server Load Balancing,SLB),负责本地用户的内容请求路由和负载均衡,根据内容分布和设备负载状况选择最优的媒体服务器(MS,Media Server)提供服务。

媒体管理器(Media Management,MM),进行媒体内容的分发,中心和边缘之间、边缘和边缘之间、边缘节点内多个MS之间的调度。

图1所示CDM/MDN结构中,由于边缘节点上MS的带宽是确定的,因此能服务的用户数量是有限的。要想满足用户的需求,边缘节点的能力要随用户数量的增加作线性增长,因此现有技术中这种CDM/MDN结构,对边缘节点的投资是很庞大的。由于用户的服务请求具有很大的不确定性,即使增加边缘节点的系统能力也不可能完全满足用户请求的突发性增长。因此一旦某个区域的用户请求超过网络的最大并发量,网络只能拒绝服务。

目前互联网上已经出现了很多纯P2P(peer to peer)的流媒体软件系统,这些系统的共同特点在于能够通过一个网络上的调度模块,在客户端之间建立互助关系,网络上的流服务器仅提供少量的流,客户端(peer节点)之间通过上述互助关系,相互分发流数据来实现大量客户端同时观看流媒体节目的功能。调度模块不记录节点网络的拓扑关系,节点之间的相互帮助采用“尽力而为”的方式。发明人在本发明过程中发现,现有技术中的这种P2P流媒体软件系统没有考虑地域性的问题,有可能造成大量的跨骨干网流量。且调度模块不记录节点网络的拓扑关系,不进行统一的资源调度,基本上只依靠节点相互之间进行数据分发,频道切换时间长,不能支持大码流节目,由于节点自身的不稳定和“尽力而为”的互助方式也可能造成节目播放的不稳定。

综上所述,现有技术中基于客户端/服务器(Client/Server)模式的流媒体系统,无论是完全中心式的模式,还是中心-边缘分布式(例如CDN)的模式,对媒体服务器的负载都是很大的。媒体服务器的能力决定了能同时提供服务的用户的数量,因而,为了满足大量用户的流媒体应用要求,对流媒体服务提供商来说,服务器的投资是很大的。而互联网上基于P2P技术的流媒体直播服务,由于服务器资源有限,服务器只提供很少的启动流媒体数据,大部分节点只能依靠其它节点的上传能力来观看视频,因此服务质量难以保证。同时,P2P技术由于受用户节点上传能力的限制,一般无法提供高码率的直播节目。

发明内容

本发明实施例提供一种P2P客户端节点网络拓扑构造方法及流媒体分发系统,用以提高现有技术中流媒体播放的传输速度和播放质量。

一种客户端节点网络拓扑构造方法,应用于流媒体分发系统,所述流媒体分发系统包括:中心内容服务器、边缘服务器、用户请求调度服务器以及客户端节点;该方法包括:

由所述用户请求调度服务器为中心内容服务器发送给边缘服务器的数据子流建立若干个子树,每一个子树用于传输一个数据子流;每一个子树包含一个或多个树干,每一个树干节点仅有一个树干子节点,每一个树干节点连接一个或多个叶节点;每一个所述树干节点和叶节点为客户端节点;一个客户端节点仅作为一个树干的树干节点,可作为多个不同子树的叶节点;

当用户请求调度服务器收到客户端节点发送的加入系统请求后,向客户端节点返回可连接的边缘服务器信息,返回指定所述客户端节点传输的数据子流标识,当判断出指定传输的数据子流对应子树存在树干底层节点时,还返回对应子树的树干底层节点信息,当判断出存在传输其它数据子流的空闲节点且所述客户端节点请求以观看节点的身份加入系统时,还返回传输其它数据子流的空闲节点信息;所述空闲节点为连接的叶节点数量没有达到设定的叶节点阈值的树干节点;

所述用户请求调度服务器接收所述客户端节点上报的节点状态信息,所述节点状态信息为所述客户端节点加入到对应子树后,根据建立连接的树干节点信息和叶节点数量,上报的树干节点连接关系和本节点是否为空闲节点信息;并根据上报的节点状态信息更新本地存储的客户端节点网络拓扑和空闲节点信息;

所述用户请求调度服务器接收到所述客户端节点发送的退出系统消息后,更新本地存储的客户端节点网络拓扑。

一种流媒体分发系统,包括:中心内容服务器、边缘服务器、用户请求调度服务器;

所述中心内容服务器用于将流媒体数据进行切片处理,形成多个数据子流,发送给所述边缘服务器;

所述边缘服务器用于缓存接收的数据子流并发送给加入到系统中的客户端节点;

所述用户请求调度服务器用于建立、存储并更新客户端节点网络拓扑和空闲节点信息;具体包括:

接收客户端节点发送的加入系统请求,向客户端节点返回可连接的边缘服务器信息,返回指定所述客户端节点传输的数据子流标识,当判断出指定传输的数据子流对应子树存在树干底层节点时,还返回对应子树的树干底层节点信息,当判断出存在传输其它数据子流的空闲节点且所述客户端节点请求以观看节点的身份加入系统时,还返回传输其它数据子流的空闲节点信息;所述空闲节点为连接的叶节点数量没有达到设定的叶节点阈值的树干节点;

接收客户端节点上报的节点状态信息,所述节点状态信息为所述客户端节点加入到对应子树后,根据建立连接的树干节点信息和叶节点数量,上报的树干节点连接关系和本节点是否为空闲节点信息;并根据上报的节点状态信息更新本地存储的客户端节点网络拓扑和空闲节点信息;

接收客户端节点发送的退出系统消息后,更新本地存储的客户端节点网络拓扑。

一种用户请求调度服务器,应用本发明实施例提供的流媒体分发系统,包括:存储单元、交互单元和更新单元;

所述存储单元,用于存储所述流媒体分发系统中的边缘服务器网络拓扑、客户端节点网络拓扑和空闲节点信息;

所述交互单元,用于接收所述客户端节点发起的加入系统请求,根据所述存储单元存储的所述网络拓扑和空闲节点信息,向发起加入系统请求的客户端节点返回可连接的边缘服务器信息,返回指定所述客户端节点传输的数据子流标识,当判断出指定传输的数据子流存在树干底层节点时还返回对应子树的树干底层节点信息,当判断出存在传输其它数据子流的空闲节点且所述客户端节点请求以观看节点的身份加入系统时,还返回传输其它数据子流的空闲节点信息;

还用于接收所述客户端节点在加入系统后上报的包含树干节点连接关系和本节点是否为空闲节点的节点状态信息,发送给所述更新单元;接收所述客户端节点发送的退出系统消息,发送给所述更新单元;

所述更新单元,用于根据所述交互单元发送的节点状态信息及退出系统消息,更新所述存储单元中保存的客户端节点网络拓扑和空闲节点信息。

一种客户端节点,应用于本发明实施例提供的流媒体分发系统,包括:加入系统功能单元、退出系统功能单元、树干功能单元、树叶功能单元、流媒体播放单元、信息存储更新单元和上报功能单元;

所述加入系统功能单元,用于向所述流媒体分发系统中的用户请求调度服务器发起加入系统请求,接收所述用户请求调度服务器返回的边缘服务器信息,接收指定所述客户端节点传输的数据子流标识,接收所述用户请求调度服务器判断出指定传输的数据子流对应子树存在树干底层节点时返回的树干底层节点信息,接收所述用户请求调度服务器判断出存在传输其它数据子流的空闲节点且所述客户端节点请求以观看节点的身份加入系统时,返回的传输其它数据子流的空闲节点信息;并将接收的所述边缘服务器信息、传输的数据子流标识以及所述树干底层节点信息发送给所述树干功能单元,将接收的所述空闲节点信息发送给所述树叶功能单元;

所述退出系统功能单元,用于向所述用户请求调度服务器以及建立连接的其它客户端节点发送退出系统消息并断开连接;接收其它P2P客户端发送的退出系统消息,通知给所述信息存储更新单元;

所述树干功能单元,用于与所述加入系统功能单元发送的边缘服务器或树干底层节点之一建立连接,将客户端节点加入到所述对应子树中作为树干节点接收指定的数据子流,发送给所述流媒体播放单元;并传输指定的数据子流给建立连接的叶节点;并将树干节点连接关系和建立连接的叶节点数量信息发送给所述信息存储更新单元;

所述树叶功能单元,用于与所述加入系统功能单元发送的传输其它数据子流的空闲节点建立连接,将客户端节点作为其它数据子流对应子树的叶节点接收其它数据子流,发送给所述流媒体播放单元;

所述流媒体播放单元,用于将接收的各数据子流合成流媒体数据通过本地播放器播放。

一种客户端节点加入流媒体分发系统的方法,应用本发明实施例提供的流媒体分发系统,该方法包括:

客户端节点向所述用户请求调度服务器发起加入系统请求,接收所述用户请求调度服务器返回的边缘服务器信息,接收指定所述客户端节点传输的数据子流标识,接收所述用户请求调度服务器判断出指定传输的数据子流对应子树存在树干底层节点时返回的树干底层节点信息,接收所述用户请求调度服务器判断出存在传输其它数据子流的空闲节点且所述客户端节点请求以观看节点的身份加入系统时,返回的传输其它数据子流的空闲节点信息;

所述客户端节点与接收的所述边缘服务器或树干底层节点之一建立连接,加入到所述对应子树中作为树干节点接收指定的数据子流,并传输指定的数据子流给建立连接的叶节点;

与接收的传输其它数据子流的空闲节点建立连接,作为其它数据子流对应子树的叶节点接收其它数据子流;

并当自身成功作为树干节点时,向所述用户请求调度服务器上报包含树干节点连接关系和本节点是否为空闲节点的节点状态信息。

本发明实施例通过构建P2P客户端之间的P2P网络拓扑来传输一部分流数据,降低了ES-P内容服务器的负载,相对于P2P流媒体直播网络能提供高带宽、质量有保证的直播服务。同时,本发明实施例提供的流媒体分发网络避免了P2P直播中节点间长距离传输数据对骨干网络的冲击,使P2P节点间的数据传输被局限在网络边缘的小区域内,有利于节点间流媒体数据的互助下载,在节点退出时能快速恢复网络拓扑,有效地降低因此带来的网络扰动。

附图说明

图1为现有技术中的CDN/MDN结构示意图;

图2为本发明实施例提供的流媒体分发系统结构示意图;

图3为本发明实施例提供的流媒体分发系统中RRS-P的结构示意图;

图4为本发明实施例提供的流媒体分发系统中P2P客户端节点的结构示意图之一;

图5为本发明实施例提供的流媒体分发系统中P2P客户端节点的结构示意图之二;

图6为本发明实施例提供的P2P客户端节点网络拓扑示意图;

图7为本发明实施例提供的P2P客户端节点加入流媒体分发系统的流程图;

图8为本发明实施例提供的P2P客户端节点以帮助节点身份加入流媒体分发系统的流程图;

图9为本发明实施例提供的P2P客户端节点作为叶节点加入到P2P客户端节点网络拓扑中的对应子树的流程图;

图10为本发明实施例提供的节点退出流媒体分发系统的流程图。

具体实施方式

本发明实施例通过构建P2P客户端之间的P2P网络拓扑,使得P2P客户端节点能够从其它P2P客户端节点获取一部分流媒体数据(不足的部分仍然向内容服务器请求),实现在不降低服务质量的同时,降低了对服务器的负载能力要求。本发明实施例的侧重点是通过P2P客户端节点间网络拓扑的构建,使P2P客户端节点间的连接都局限在局部网络中,从而提供相对有保证的传输质量并减少跨网络的流量。

下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。

本发明实施例提供的流媒体分发系统结构如图2所示,包括:最终用户接口(Ender User Portal,EU-Portal)、支持P2P技术的中心内容服务器(P2P CentreServer,下面的描述中简写为CS-P)、支持P2P技术的用户请求调度服务器(Request Routing Server,下面的描述中简写为RRS-P)、支持P2P技术的边缘服务器(P2P Edge Server,下面的描述中简写为ES-P)以及若干个P2P客户端节点。

流媒体分发系统中的CS-P、RRS-P、ES-P为1+1+N配置,即CS-P、RRS-P各一对(双机热备份),ES-P为一个以上,地理位置接近的多个ES-P组成边缘P2P自治域;同一个边缘P2P自治域中的各ES-P共享接收的数据子流。

EU-Portal负责流媒体直播内容的展示、检索,供用户点播不同的流媒体节目。

CS-P用于将流媒体数据进行切片处理,形成多个数据子流,发送给ES-P。CS-P将流媒体数据进行切片处理形成n个数据切片,并使用冗余算法生成m个冗余切片,将n个数据切片和m个冗余切片编码成n+m个独立的数据子流发送给所述ES-P。例如,1Mbps码流的数据,将每秒的流量按照时间切分成20份,利用RS(Reed-Solomon里德所罗门)算法生成22个包,相当于整个码流形成了22条子流,这些子流被发送到ES-P上。

ES-P用于缓存接收的数据子流并发送给加入到系统中的P2P客户端节点。

RRS-P用于存储ES-P网络拓扑,还用于建立并存储P2P客户端节点网络拓扑,每一个P2P客户端节点网络拓扑中包括n+m个子树,每个子树分别用于传输一个CS-P发送给ES-P的独立的数据子流,RRS-P还存储P2P客户端节点上报的空闲节点信息,所述空闲节点为连接的叶节点数量没有达到设定的叶节点阈值的树干节点。

P2P客户端用于向RRS-P发起加入/退出系统请求,接收RRS-P返回的ES-P信息,接收指定所述P2P客户端节点传输的数据子流标识,接收RRS-P判断出存在指定传输的数据子流对应子树树干底层节点时返回的对应子树的树干底层节点信息,接收RRS-P判断出存在传输其它数据子流的空闲节点且所述P2P客户端节点请求以观看节点的身份加入系统时,返回的传输其它数据子流的空闲节点信息;并加入到对应子树中作为树干节点接收并传输指定的数据子流,与返回的传输其它数据子流的空闲节点建立连接,作为其它数据子流对应子树的叶节点接收其它数据子流,将接收的各数据子流合成流媒体数据通过本地播放器播放。

特别的,系统中的ES-P不止一个,地理位置接近的多个ES-P组成边缘P2P自治域;同一个边缘P2P自治域中的各ES-P共享接收的数据子流。

特别的,在RRS-P中,对每一个流媒体直播频道,为每一个边缘P2P自治域存储一个对应的P2P客户端节点网络拓扑。

特别的,如图3所示,本发明实施例所述的请求调度服务器RRS-P包括存储单元101、交互单元102和更新单元103和检测单元104,其中:

存储单元101,用于存储流媒体分发系统中的ES-P网络拓扑、P2P客户端节点网络拓扑和空闲节点信息。

交互单元102,用于接收P2P客户端节点发起的加入系统请求,根据存储单元101存储的网络拓扑和空闲节点信息,向发起加入系统请求的P2P客户端节点返回可连接的ES-P信息、指定P2P客户端节点传输的数据子流对应子树的树干底层节点信息、传输其它数据子流的空闲节点信息。

还用于接收P2P客户端节点在加入系统后上报的包含树干节点连接关系和本节点是否为空闲节点的节点状态信息,发送给更新单元103;接收P2P客户端节点发送的退出系统消息,发送给更新单元103。

更新单元103,用于根据交互单元102发送的节点状态信息及退出系统消息,更新存储单元101中保存的P2P客户端节点网络拓扑和空闲节点信息。

检测单元104,用于检测P2P客户端节点是否异常退出;当检测到P2P客户端节点异常退出时,更新存储单元101中保存的P2P客户端节点网络拓扑。

如图4所示,本发明实施例所述的P2P客户端节点包括加入系统功能单元201、退出系统功能单元202、树干功能单元203、树叶功能单元204、流媒体播放单元205、信息存储更新单元206和上报功能单元207,其中,

加入系统功能单元201,用于向流媒体分发系统中的RRS-P发起加入系统请求,接收RRS-P返回的ES-P信息、指定P2P客户端节点传输的数据子流对应子树的树干底层节点信息、传输其它数据子流的空闲节点信息;并将接收的ES-P信息、树干底层节点信息发送给树干功能单元203,将接收的空闲节点信息发送给树叶功能单元204。

退出系统功能单元202,用于向RRS-P以及建立连接的其它P2P客户端节点发送退出系统消息并断开连接;接收其它P2P客户端发送的退出系统消息,通知给信息存储更新单元206。

树干功能单元203,用于与加入系统功能单元201发送的ES-P或树干底层节点之一建立连接,将P2P客户端节点加入到对应子树中作为树干节点接收指定的数据子流,发送给流媒体播放单元205;并传输指定的数据子流给建立连接的叶节点;并将树干节点连接关系和建立连接的叶节点数量信息发送给信息存储更新单元206。

树叶功能单元204,用于与加入系统功能单元201发送的传输其它数据子流的空闲节点建立连接,将P2P客户端节点作为其它数据子流对应子树的叶节点接收其它数据子流,发送给流媒体播放单元205。

流媒体播放单元205,用于将接收的各数据子流合成流媒体数据通过本地播放器播放。

信息存储更新单元206,用于接收退出系统功能单元202发送的通知以及树干功能单元203发送的树干节点连接关系,更新并存储所属树干的上级树干节点信息;并根据建立连接的叶节点数量确定出本节点是否空闲;还接收、存储或发送上级树干节点信息给树干子节点,接收、存储或发送空闲节点信息给上下级树干节点和叶节点。

上报功能单元207,用于从信息存储更新单元206获取树干节点连接关系及本节点是否空闲信息,向RRS-P上报包含树干节点连接关系和本节点是否为空闲节点的节点状态信息。

特别的,如图5所示,加入系统功能单元201包括:

第一功能子单元2011,用于向RRS-P发起加入系统请求,并在加入系统请求中指明作为观看节点的身份加入系统;接收RRS-P返回的ES-P信息、传输其它数据子流的空闲节点信息指定P2P客户端节点传输的数据子流对应子树的树干底层节点信息;并将接收的ES-P信息、树干底层节点信息发送给树干功能单元203,将接收的空闲节点信息发送给树叶功能单元204。

第二功能子单元2012,用于向RRS-P发起加入系统请求,并在加入系统请求中指明作为帮助节点的身份加入系统;接收RRS-P返回的ES-P信息、指定P2P客户端节点传输的数据子流对应子树的树干底层节点信息;并将接收的ES-P信息、树干底层节点信息发送给树干功能单元203。

本发明实施例所提供的P2P客户端节点网络拓扑的构造方法如下:

由RRS-P为CS-P发送给ES-P的数据子流建立若干个子树,每一个子树用于传输一个数据子流;每一个子树包含一个或多个树干,每一个树干节点仅有一个树干子节点,每一个树干节点连接一个或多个叶节点;每一个树干节点和叶节点为P2P客户端节点;一个P2P客户端节点仅作为一个树干的树干节点,可作为多个不同子树的叶节点;

当RRS-P收到P2P客户端节点发送的加入系统请求后,向P2P客户端节点返回可连接的ES-P信息、指定P2P客户端节点传输的数据子流标识,以及指定传输的数据子流对应子树的树干底层节点信息(如果有对应子树的树干底层节点信息)、传输其它数据子流的空闲节点信息(如果有空闲节点信息);

P2P客户端节点加入到对应子树后,根据建立连接的树干节点信息和叶节点数量,向RRS-P上报包含树干节点连接关系和本节点是否为空闲节点的节点状态信息;RRS-P接收到P2P客户端节点上报的节点状态信息后,更新本地存储的P2P客户端节点网络拓扑和空闲节点信息;

RRS-P接收到P2P客户端节点发送的退出系统消息后,更新本地存储的P2P客户端节点网络拓扑。

特别的,RRS-P根据CS-P发送给ES-P的数据子流的数量n,建立n个子树,每个子树用于传输一个对应的数据子流。

特别的,每个子树的树干节点和叶节点起始为空;RRS-P指定最初接入的n个P2P客户端节点作为传输每个数据子流的对应子树的第一个树干节点;向所述P2P客户端节点返回可连接的ES-P信息、指定所述P2P客户端节点传输的数据子流和传输其它数据子流的空闲节点信息。

特别的,RRS-P设定每个子树的树干节点数量阈值;当RRS-P收到P2P客户端节点发送的加入系统请求后,指定其加入的对应子树,并检查对应子树的树干节点数量是否达到设定的阈值;若对应子树的树干节点数量没有达到设定的阈值,则返回对应子树的树干底层节点信息;

若对应子树的树干节点数量已达到设定的阈值,则指示所述P2P客户端节点从返回的ES-P处获取指定传输的数据子流,创建新树干。

本发明实施例中,原始流媒体数据被编码成多个独立的子流s1、s2、s3......sn,通过构建独立的拓扑树结构来分别传输各个子流。传输子流s1的拓扑树就称为子树s1,传输子流sn的拓扑树就称为子树sn。一个P2P客户端节点要想收看流媒体节目,需要加入多个子树获取流媒体数据的不同子流,然后解码复原成原始流媒体数据才能观看。

如图6所示,为本发明实施例提供的P2P客户端节点网络拓扑结构示意图,图中,流媒体数据流s被分为独立的3个子流s1、s2和s3,并形成子树s1、子树s2和子树s3。子树s1中,节点1、4、7、10为树干节点,子树s2中,节点2、5、8、10为树干节点,子树s3中,节点3、6、9、12为树干节点。每个树干节点只有唯一的一个树干子节点。以子树s1为例,树干节点1为树干节点4的树干父节点,树干节点7为树干节点4的树干子节点,节点4只有唯一的树干父节点1和唯一的树干子节点7。

节点2、3、5、6、8、9、11、12是子树s1的叶节点,叶节点只能通过相应的树干节点获取子流s1,但不能转发子流s1。例如,图6中,节点2、3与子树s1的树干节点1建立连接,节点2、3作为节点1的叶节点,从节点1获取子流s1。

子树s1的树干节点如果作为观看节点加入系统的话,为了获取到完整的数据流,仍然需要获取子流s2与s3,需要作为子树s2和s3的叶节点。图6中,节点1加入子树s2,获取子流s2,作为子树s2的叶节点,其对应的叶子父节点为子树s2的树干节点2;同时,节点1还加入子树s3,获取子流s3,作为子树s3的叶节点,其对应的叶子父节点为子树s3的树干节点3。

子树s1的叶节点2、3、5、6、8、9、11、12同时也是子树s2或s3的树干节点,当然,这些节点也可以不作为任何子树的树干节点,仅作为每个子树的叶节点,从相应的树干节点处获取子流。

特别的,如果一个节点通过P2P方式不能从其它节点处获取全部的数据子流,该节点直接向相应的ES-P请求对应数据子流。

基于上述实施例提供的流媒体分发系统及P2P客户端节点网络拓扑,本发明实施例提供了一种P2P客户端节点加入流媒体分发系统的方法,如图7所示,包括如下步骤:

步骤1,假设P2P客户端节点N1请求加入某个直播频道的P2P网络。P2P客户端节点N1向RRS-P发送请求加入系统消息,消息中携带所要加入的直播频道以及自身的IP地址、端口信息Port。

RRS-P需要判断节点N1所发送的消息中携带的IP、Port和实际与N1连接的IP、Port是否相同。如果IP、Port不相同,则N1连接在网络地址转换(NAT,Network Address Translation)后面,N1是私网节点,不能接收连接请求,因而也就只能接收流媒体节目进行观看,不能作为树干节点转发数据子流给其它的P2P客户端节点;如果IP、Port相同,说明N1是公网节点,可以接收连接请求,作为树干节点转发数据子流。

步骤2,RRS-P根据N1的实际连接IP地址,选择一个或多个与N1在网络上距离较近且有空闲资源的ES-P,并将ES-P信息返回给N1。通常可以选择与N1在同一个自治域的ES-P,而且ES-P的带宽和CPU负荷都比较空闲。

如果N1是公网节点,RRS-P进一步要指定N1分发的数据子流。例如,RRS-P指定N1分发子流s1,也就是指定N1加入子树s1作为树干节点,那么RRS-P要向N1返回与N1位于相同自治域的子树s1的底层树干节点的信息。为了控制传输延迟,每个子流的树干节点的层次不能太多,因此一个子树可以有多个树干,这样就会有多个底层树干节点,此时,RRS-P需要向N1返回子树s1的一定数量的底层树干节点,具体返回哪些底层树干节点需要考虑树干的层级,对于超过一定层级的树干将不返回其底层树干节点给N1。对其它的子树,由于N1不用分发这些子树传输的子流,因此RRS-P可以任选一些与N1位于相同自治域的空闲节点(空闲节点一定是树干节点,只不过其当前连接的叶节点数量还没有达到设定的叶节点阈值)返回给N1。

步骤3,N1向指定子树的底层树干节点请求作为树干子节点加入,本实施例中N1尝试加入子树s1获取子流s1。N1向RRS-P返回信息中的子树s1的树干底层节点(由于一个子树可能存在多个树干,因此可能返回一个或多个树干底层节点)建立连接,然后逐一向这些树干底层节点请求作为树干子节点加入。

如果N1请求的树干底层节点没有树干子节点,则接受N1的加入请求,N1断开与其它树干底层节点的尝试连接并向RRS-P报告自己的连接关系。如果N1请求的树干底层节点已经有树干子节点了,则该树干底层节点向N1返回该树干子节点信息,N1将该树干子节点加入备选节点,并试图连接该树干子节点。重复以上过程直到有树干节点接受N1的连接请求。

N1新加入为树干节点后,接收树干父节点发送的一个或多个上级树干节点的对应节点信息,存储并转发给树干子节点。

特别的,树干节点转发上级树干节点的对应节点信息的层级可以根据需要设定,例如,可以在每一个树干节点的对应节点信息(包含树干节点的IP地址和端口信息port)中携带生成时间TTL值,每一个树干节点接收树干父节点发送的一个或多个上级树干节点的对应节点信息后,将其对应TTL值减1,当TTL值大于0时,转发对应节点信息给树干子节点,当TTL的值为0时,树干节点不再向树干子节点转发。每一个树干节点根据接收的一个或多个上级树干节点的对应节点信息及携带的TTL值的大小,确定出自己的树干父节点以及其它上级树干节点。

例如,设定每个树干节点最多可以存储4个上级树干节点的信息,其存储格式如下:

((父节点IP/port,3),(祖父节点IP/port,2),(曾祖父节点IP/port,1),(曾曾祖父节点IP/port,0))。

其中父节点对应的TTL为3,祖父节点对应的TTL为2,曾祖父节点对应的TTL为1,曾曾祖父节点对应的TTL为0。

如果N1向所有的树干底层节点失效或连接建立都失败,导致没有树干底层节点接收N1的连接请求,或者RRS-P最初就没有返回子树s1的树干底层节点信息(在P2P客户端节点网络拓扑建立起始时,子树s1还没有任何节点加入,不存在树干节点,因此RRS-P不可能返回树干底层节点信息),那么N1直接向RRS-P返回的ES-P请求子流s1。

步骤4,N1向其它子树的树干节点请求作为叶节点加入。具体为:

N1与RRS-P返回信息中的其它子树的空闲节点建立连接,请求作为叶节点加入。如果被请求节点空闲,则接受N1作为它的叶节点,否则拒绝。

特别的,被请求的树干节点能否接受新加入的叶节点N1的加入请求,取决于当前已经接受的叶节点的数量:如果该树干节点所连接的叶节点的数量已经达到设定的叶节点阈值,则该树干节点不空闲,不能接受新的叶节点加入;如果连接的叶节点数量没有达到设定的叶节点阈值,则该树干节点和节点N1建立连接,接收N1作为自身的叶节点。

特别的,当树干节点由于接受新的叶节点加入从空闲变成不空闲,或者当前建立连接的叶节点中有叶节点退出,使该树干节点从不空闲变成空闲,树干节点都要通知RRS-P、所属树干的树干父节点和树干子节点。当有新的节点请求加入系统时,RRS-P就可以将保存的空闲节点信息返回给请求的节点。在同一个树干上,树干节点收到树干父节点发送或转发的空闲节点信息后向下级树干节点转发,收到树干子节点发送或转发的空闲节点信息后向上级树干节点转发。这样,每个树干节点可以知道树干上多个节点是否空闲。树干节点在有新节点作为叶节点加入时,将自己所知道的空闲节点信息发送给建立连接的叶节点,以后每次收到空闲节点信息后也转发给建立连接的叶节点。这样,叶节点可以比较及时准确地知道当前获取子流的一些空闲节点信息,当叶节点连接的树干节点退出或失效时,叶节点可以直接向这些空闲节点请求该子流,无需重新向RRS-P请求,从而降低RRS-P的负担。

如果N1在尝试一定次数之后,仍然找不到能够接受N1作为叶节点连接的树干节点,N1直接向ES-P请求对应子流。

特别的,如果N1不是一个公网节点,N1在所有的子树中都尝试以叶节点的方式加入并获取子流。

步骤5,N1加入子树s1后,成为子树s1的一个树干底层节点,需要向RRS-P上报自身的信息,包括树干节点连接关系、自身是否空闲等。同时,需要预留一部分带宽以便接受树干子节点的加入请求。N1还可以接收其它节点作为叶节点加入。

以上所述是N1作为观看节点加入网络的主要过程,实际上,节点N1还可以以帮助节点的身份加入网络,当N1作为帮助节点时,只作为一个子流的树干节点存在,不用加入到其它子树中获取其它子流。

如图8所示,为本发明实施例提供的P2P节点作为帮助节点加入系统的主要过程示意图,包括如下步骤:

步骤1,P2P客户端N1请求加入P2P网络帮助分发数据。N1向RRS-P发送消息,消息中携带自身的IP、Port。

步骤2,RRS-P根据N1的实际连接IP地址,选择一个或多个与N1在网络上距离较近且有空闲资源的ES-P,并将ES-P信息返回给N1。通常可以选择与N1在同一个自治域的ES-P,而且ES-P的带宽和CPU负荷都比较空闲。

RRS-P进一步要指定N1帮助分发的频道和子流。例如,ES-P指定N1分发某个频道的子流s1,也就是指定N1加入子树s1作为树干节点,那么RRS-P要向N1返回与N1位于相同自治域的子树s1的树干底层节点的信息。

为了控制传输延迟,每个子流的树干节点的层次不能太多,因此一个子树可能有多个树干,这样就会存在多个底层树干节点,此时,RRS-P需要向N1返回子树s1的一定数量的底层树干节点,具体返回哪些底层树干节点需要考虑树干的层级,对于超过一定层级的树干将不返回其底层树干节点给N1。

步骤3,N1向指定子树的树干底层节点请求作为树干子节点加入,N1尝试加入s1子树,与RRS-P返回信息中的子树s1树干底层节点(一个或多个)建立连接,然后逐一向这些树干底层节点请求作为树干子节点加入。

如果N1请求的树干底层节点当前没有树干子节点,则接受N1的加入请求,N1断开与其它树干底层节点的尝试连接并向RRS-P报告自己的连接关系。如果N1请求的树干底层节点已经有树干子节点了,则向N1返回该树干子节点信息,N1继续试图连接该树干子节点。重复以上过程直到有树干节点接受N1的连接请求。

如果所有的树干底层节点都失效或连接建立失败,导致没有树干底层节点接收N1的连接请求,或者RRS-P最初就没有返回s1的树干底层节点信息,那么N1直接向RRS-P返回的ES-P请求子流s1。

步骤4,N1加入子树s1后,成为子树s1的一个树干底层节点,因而需要预留一部分带宽以便接受树干子节点的加入请求。N1还可以接收其它节点作为叶节点加入。

特别的,为了不妨碍这些帮助节点正常使用其它网络应用,规定只占用本身带宽的一部分作为上传带宽,也就是只接纳预先设定数量的叶节点为他们提供子流。例如,目前很多用户是通过ADSL宽带上网,普遍的上行带宽是512Kbps,可以规定帮助节点用于分发子流的最大带宽为250Kbps。

特别的,N1在成为子树的一个树干节点后,向RRS-P进行节点状态的信息上报,上报的内容包括:树干节点的连接关系、本节点是否空闲以及自身是否为帮助节点的信息。

新加入网络的节点或私网节点以叶节点方式加入对应子树的流程如图9所示,包括:

步骤1,新加入的P2P客户端节点N1向子树s1、s2至sn的多个空闲节点同时发出连接请求。

步骤2,N1向连接成功的各子树的树干节点请求作为叶节点加入。

特别的,如果所有的空闲节点均无法响应N1的连接,也就是没有同N1连接成功的空闲节点,则连接失败,P2P客户端节点以叶节点方式加入网络过程结束。

步骤3,如果被请求的空闲节点同意N1作为叶节点加入,则向N1返回同意加入的响应,并返回本地保存的该子树的其它空闲节点信息,并且以后每次收到空闲节点信息后也转发给连接的所有的叶节点。这样,叶节点可以比较及时准确的知道当前获取子流的一些空闲节点信息,当叶节点所连接的树干节点退出或失效时,叶节点可以直接向这些空闲节点请求该子流,降低RRS-P的负担。

特别的,如果当前请求的树干节点拒绝N1的加入请求,N1断开与该树干节点的连接,并删除该树干节点作为备选空闲节点的信息,执行步骤2,继续向其它空闲节点请求加入。

步骤4,如果该树干节点所连接的叶节点的数量在N1加入后达到预先设定的叶节点阈值,从空闲状态转变为不空闲状态,则该树干节点需要通知RRS-P、树干父节点和树干子节点。

步骤5,N1作为已建立连接并返回同意作为叶节点加入的树干节点的一个叶节点接入网络,断开与其它空闲节点之间的连接。

实际应用中,RRS-P接收到P2P客户端节点发起的加入系统请求后,检测到当前的某个树干已经达到一定层数,则不会将新发起加入请求的P2P客户端节点调度到该树干上。如果某个子树所有的树干都达到设定的层数阈值,则RRS-P不会向新加入的节点返回树干底层节点信息。这时新节点直接向返回的ES-P请求对应数据子流。

相应的,本发明实施例还提供一种节点退出网络的方法,如图10所示,为节点处理树干父节点的断开或退出的过程示意图,包括:

步骤1,P2P客户端节点N1、N2、N3都是子树s1上的树干节点,N2是N1的树干父节点,N3是N1的树干子节点。节点N4是N1的树叶父节点,节点N5是N1的叶子节点。

当节点N1正常退出或断开时,N1向RRS-P、所有的父节点和子节点发送退出消息。N1的树干子节点N3和叶子节点N5都可以收到N1的退出消息,N3与N5也可以通过对N1的连接状态扫描而检测到与N1的连接失败。

步骤2,节点N3将上级树干节点,也就是N1的树干父节点N2以及N2以上的各级树干节点加入备选节点列表,依次向N2以及N2的上级树干节点发送请求,请求加入为树干子节点。请求的顺序为:N2、N2的父节点、N2的祖父节点依次向子树的上级树干节点请求。

相应的,RRS-P收到N1发送的退出消息或检测到N1退出后,在N1所在的树干拓扑数据中删除N1的相关信息。

树干父节点N2收到N1的退出消息或检测到N1退出后,将N1的连接信息清除,这样,N2就可以接受其它节点作为树干子节点加入的请求。

N1的树叶父节点N4收到N1发送的退出消息或检测到N1退出后,删除N1的相关信息。进一步,需要判断自身连接的叶节点数量是否小于设定的叶节点阈值,若是,确定自身变为空闲节点,通知给RRS-P、树干父节点和树干子树点;RRS-P更新本地存储的空闲节点信息;N4的树干父节点和树干子树点更新本地存储的空闲节点信息并转发给上/下级树干节点以及连接的叶节点。

N1的树叶节点N5收到N1的退出消息或检测到N1退出后,首先尝试从本地记录的子树s1中的空闲树干节点获取子流。本地记录的各子树空闲树干节点的数据有两个来源:接入系统时RRS-P返回的数据和从N1获取的空闲节点数据信息。如果本地记录的空闲树干节点不能提供子流s1,叶节点N5向RRS-P请求子树s1的空闲树干节点信息,然后向这些节点请求加入获取子流。如果还是不能获取子流s1,则直接向ES-P请求子流s1。

步骤3,N2在接收到N3的连接请求后,如果没有树干子节点,则接收N3作为树干子节点加入的请求。如果N2拒绝N3的加入请求,则向N3返回拒绝消息,N3向RRS-P报告N2失效,并继续向N2的上级树干节点发送请求。

上级树干节点接受N3的加入请求后,向N3通报空闲节点信息。

如果N3经过多次尝试仍然不能建立与上级树干节点的连接并作为树干子节点加入子树,则直接向ES-P请求子流。这里的最大尝试连接次数根据每个树干节点保存的上级树干节点的个数设定,例如,设定每个树干节点最多可以存储4个上级树干节点的信息,为:

((父节点IP/port,3),(祖父节点IP/port,2),(曾祖父节点IP/port,1),(曾曾祖父节点IP/port,0));则最多尝试三次。

步骤4,N3向RRS-P上报节点状态信息,包括新建立的树干连接关系、各级节点是否空闲等信息。

新的树干连接关系建立后,N3更新自己的上级树干节点信息并发送给建立连接的树干子节点。

N1退出系统时,还通知树叶父节点N4;树叶父节点N4在接收到节点N1的退出通知或检测到N1的退出时,需要判断自身连接的叶节点数量是否小于设定的叶节点阈值,若是,确定自身变为空闲节点,通知给RRS-P、自身的树干父节点和树干子树点;RRS-P更新本地存储的空闲节点信息;N4的树干父节点和树干子树点更新本地存储的空闲节点信息并转发给上/下级树干节点以及连接的叶节点。

综上所述,本发明实施例通过通过构建P2P客户端网络拓扑,利用P2P客户端节点的上传能力来互相传输一部分流媒体数据,从而节约了内容服务器资源的消耗。且由RRS-P构建P2P客户端节点网络拓扑,统一进行传输数据子流的指定和空闲节点的发送,使P2P客户端节点间的连接都局限在局部网络中,从而提供相对有保证的传输质量并减少跨网络的传输流量。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号