一种流媒体直播系统中控制流的树形网络组织方法

文档序号:7968003阅读:241来源:国知局
专利名称:一种流媒体直播系统中控制流的树形网络组织方法
技术领域
本发明属于对等流媒体领域,具体涉及到一种流媒体直播系统中控制流的树形网络组织方法。
背景技术
近年来,传统客户机/服务器模型、浏览器/服务器模型随着分布式技术和网络技术的进一步发展以及因特网用户规模的日益庞大,服务器逐渐成为系统性能的瓶颈。对等计算技术由于其自组织、非集中的特点,比较好地解决了上述模型的这些缺点。在对等计算网络中,节点同时担任客户机和服务器两种角色,既为其他节点提供服务,也享用其他节点的服务,因而在资源共享、对等协作、内容分布、知识管理等领域得到了广泛的应用。
在目前基于对等计算的流媒体直播系统中,一般采用树形架构,DHT架构或网状架构的拓扑。但无论采用何种拓扑结构,都要求尽可能的在少占用网络资源(如带宽)的情况下,传输更多的媒体数据。因此客观要求系统能够较好的利用各个节点的网络邻近性,让邻近的节点之间更多的转发数据。在研究网络邻近性方面主要集中在DHT的优化(Miguel Castro1,Peter Druschel2,Y.Charlie Hu3 and Antony Rowstronl,Proximityneighbor selection in tree-based structured peer-to-peer overlays,Technical Report,MSR-TR-2003-52)和网状结构的文件共享优化(YunhaoLiu,Xiaomei Liu,Li Xiao,Lionel M Ni,and Xiaodong Zhang.Location-Aware topology matching in P2P systems.InProc.of theIEEE INFOCOM 2004.Hong Kong,2004.),第一类由于结构型太强,很难做到网络邻近的节点交换媒体数据。第二类其主要思想是各个节点之间不断的交换RTT信息,进行动态的优化,但是这种方法并不适合流媒体直播,因为P2P流媒体直播系统中要求系统具有一定的稳定性,如果频繁的人为的让节点加入离开反而增加系统动荡性和不稳定性,影响系统性能。另外由于P2P流媒体系统天然的要求基于网状的构造方法(可以避免单点失效),因此大多数P2P流媒体系统的控制流也采用网状结构,不适合用上文提到的第二种优化方法,因此难以解决节点聚类、消息冗余等固有问题。

发明内容
本发明的目的在于提供一种流媒体直播系统中基于GUID的树形网络组织方法,本发明减少了网络流量,同时提高了P2P直播流媒体系统的性能。
本发明提供的一种流媒体直播系统中控制流的树形网络组织方法,系统任一节点P均按以下步骤进行处理启动守护进程,并行执行守护进程和主进程,其中,守护进程包括步骤(11)-(16),主进程包括步骤(21)-(29);(11)节点P从接受用户请求;(12)节点P判断所接收到的请求是否是加入请求,如果是,进入步骤(13);否则,进入步骤(14);(13)节点P主动加入;(14)节点P主动离开;(15)判断节点P是否离开P2P网络,如果是,结束守护进程;否则,回到步骤(11)继续接受用户请求;(16)节点P开始监听规定的网络端口,等待接收来自其他节点发送的请求包;(22)节点P判断是否收到来自其他节点的请求包,如果是,进入步骤(23);否则,转到步骤(27);(23)节点P判断所接收到的请求包是否是加入请求包,如果是,进入步骤(24);否则,进入步骤(25);(24)节点P根据收到的加入请求包,按照下述过程对加入请求进行处理
(C1)判断加入节点是否为外网节点,如是,转步骤(C2),否则转步骤(C15);(C2)计算加入节点的层次,如与本节点层次相同且L=MAX_LEVEL,转步骤(C3),否则转步骤(C10);(C3)检查自己的孩子节点列表中是否存在一个与加入者GUID邻近且层数与自己相同的外网孩子,如存在,转步骤(C9),否则转步骤(C4);(C4)检查自己是否还有空余孩子位置,如是,转步骤(C5),否则转步骤(C6);(C5)设置加入节点的层次为自己的层次L,把新加入者加入孩子节点列表中并发送Agree消息到新加入者,被加入流程结束,转步骤(27);(C6)判断加入节点是否是外网节点,如是,转步骤(C7),否则转步骤(C8);(C7)选择一个外网地址与被加入者GUID最近的孩子节点,发送重定向消息到选定的孩子并接收新加入者为自己的孩子,被加入流程结束,转步骤(27);(C8)拒绝加入者,被加入流程结束,转步骤(27);(C9)重定向新加入者到这个孩子节点,被加入流程结束,转步骤(27);(C10)查找孩子中层次比自己大1的节点,如存在转步骤(C11),否则转步骤(C14);(C11)若查到的孩子节点为外网节点,转步骤(C12),否则转步骤(C13);(C12)将加入者重定向到这个孩子,被加入流程结束,转步骤(27);(C13)选择一个外网地址与被加入者GUID最近的孩子节点,发送重定向消息到选定的孩子并接收新加入者为自己的孩子,被加入流程结束,转步骤(27);(C14)将新加入者的层次设为当前层次加1,把新加入者加入孩子节点列表中并发送Agree消息到新加入者,被加入流程结束,转步骤(27);(C15)是否存在一个与加入者GUID相同网关的内网孩子,如是,转步骤(C16),否则转步骤(C4);
(C16)重定向新加入者到这个孩子节点;被加入流程结束,转步骤(27);(25)节点P判断所接收到的请求包是否是离开请求包,如果是,进入步骤(26);否则,进入步骤(27);(26)节点P根据收到的离开请求包,对离开请求进行处理,删除请求者,然后转步骤(27);(28)判断节点P是否离开P2P网络,如果是,结束守护进程,同时停止监听规定的网络端口和收包工作,然后进入步骤(29);否则,回到步骤(22)继续监听;(29)结束。
本发明方法将控制流和数据流分开的双层拓扑结构,由控制树进行网络邻近节点的优化,网状逻辑覆盖网进行数据交换,较好的适应P2P在线流媒体需求。此外,控制树的组织引入了基于GUID(Global UniqueIdentifier)的节点聚类方法。本发明根据各个节点在网络中的位置,为其产生相应的GUID,最终根据此GUID,在逻辑层将邻近的节点组织在一起。本发明方法可以用于组织一种高效的用于传输控制流的树型网络来为流媒体直播系统。具体而言,本发明方法具有以下优点和用途(1)高可扩展性控制树只负责传输加入、离开、心跳等控制信息,并不负责媒体数据的传输,因此传输量很小,控制树的分支可以很大,因此大大提高了系统的可扩展性。
(2)稳定性心跳模块保证节点在父节点故障时会自动重新加入,而在子节点失效或正常退出时则会删除子节点信息,使自己能稳定存在于控制树中而不至于掉线,从而保证了系统的稳定性。
(3)覆盖网与物理网络相匹配控制树通过地理位置信息GUID将节点组织成一棵按地理位置分层的树,因此物理位置接近的节点在控制树上也相对接近。流媒体直播系统可以通过控制树在短时间内获得有效、邻近的服务节点并请求媒体数据,相比较传统的伙伴选择策略,能明显提高伙伴的质量,降低客户端播放响应延迟、提高流媒体服务质量。


图1为本方法的总体流程图;图2为守护进程中加入节点的流程图;图3为守护进程中节点离开的流程图;图4为主进程中被加入节点的处理流程图;图5为主进程中被离开节点的处理流程图;图6为心跳流程图;图7为本发明方法的实例图;图8为GUID示意图。
具体实施例方式
下面结合附图和实例对本发明作进一步详细的说明。
如图1(A)所示,本发明方法的具体步骤为进入直播系统的任一节点P均按以下步骤组织对等网络(1)节点P启动守护进程。守护进程和主进程并行执行,用于接受用户请求。主进程如图1(A)所示,包括步骤(21)-(29)所示,守护进程如图1(B)所示,其工作流程包括步骤(11)-(16),具体描述如下(11)节点P从接受用户请求,用户请求分为两种加入请求和离开请求;(12)节点P判断所接收到的请求是否是加入请求,如果是,进入步骤(13);否则,进入步骤(14);(13)节点P执行主动加入流程;主动加入的流程如图2所示(A1)设置加入对象Obj为根节点;(A2)设置连续加入此节点次数Obj.n为0;(A3)如果Obj.n>3,转步骤(A4),否则转步骤(A5);
(A4)如果Obj是根节点,加入过程无法完成,进入步骤(15),否则,设置加入对象Obj为根节点,然后转步骤(A5)。
(A5)将Obj.n修改为Obj.n+1,并发送加入消息给Obj,转步骤(A6);(A6)判断接收响应消息是否超时,如果接收超时,转步骤(A3),否则,转步骤(A7);(A7)判断收到的响应消息是否为拒绝消息,如果是拒绝消息,转步骤(A1),否则转步骤(A8);(A8)判断收到的响应消息是否为重定向消息,如果是,进入步骤(A9),否则转步骤(A10);(A9)设重定向指向的节点为要加入的节点,转步骤(A2);(A10)将此加入者作为父亲节点,初始化孩子节点;加入过程结束,进入步骤(15)。
(14)节点P执行主动离开流程;主动离开的流程如图3所示(B1)节点P向其父节点发送离开消息;(B2)节点P查询所有的子节点信息,同时向其子节点发送离开消息;(B3)节点P将其所有子节点信息从其孩子列表中删除,即清空孩子列表,同时中断与孩子节点的网络连接;(B4)节点P将其父节点和祖父节点信息置为空,同时停止接受和处理本频道的任何网络消息,离开流程结束,进入步骤(15)。
(15)判断节点P是否离开P2P网络,如果是,结束守护进程;否则,回到步骤(11)继续接受用户请求。
至此,流媒体直播系统的控制树部分的守护进程流程论述完毕。
(21)节点P开始监听规定的网络端口,等待接收来自其他节点发送的请求包,请求包的类型分为三种加入请求包,离开请求包和心跳包;(22)节点P判断是否收到来自其他节点的请求包,如果是,进入步骤(23);否则,转到步骤(27);(23)节点P判断所接收到的请求包是否是加入请求包,如果是,进入步骤(24);否则,进入步骤(25);(24)节点P根据收到的加入请求包,对加入请求进行处理,然后转步骤(27)。处理其它节点加入的流程如图3所示,其流程为(C1)判断加入节点是否为外网节点,如是,转步骤(C2),否则转步骤(C15);(C2)计算加入节点的层次,如与本节点层次相同且L=MAX_LEVEL,转步骤(C3),否则转步骤(C10)。可以下述步骤计算层次(d1)节点的层次定义为0,其它节点的层次范围为1和MAX_LEVEL之间,其中MAX_EVEL等于GUID中的字段数减1;(d2)设被加入节点的层次为L,如果加入节点与被加入节点GUID的前L个字段都相同,则定义其层次为被加入节点层次加1,否则定义其层次与被加入节点层次相同。
(C3)检查自己的孩子节点列表中是否存在一个与加入者GUID邻近且层数与自己相同的外网孩子,如存在,转步骤(C9),否则转步骤(C4);(C4)检查自己是否还有空余孩子位置,如是,转步骤(C5),否则转步骤(C6);(C5)设置加入节点的层次为自己的层次L,把新加入者加入孩子节点列表中并发送Agree消息到新加入者,被加入流程结束,转步骤(27)。
(C6)判断加入节点是否是外网节点,如是,转步骤(C7),否则转步骤(C8);(C7)选择一个外网地址与被加入者GUID最近的孩子节点,发送重定向消息到选定的孩子并接收新加入者为自己的孩子。具体效果就是交换了选定孩子与新加入者在控制树上的位置;被加入流程结束,转步骤(27)。
(C8)拒绝加入者。此时一定满足所有的孩子节点都是内网节点,加入者是不同的内网节点;被加入流程结束,转步骤(27)。
(C9)重定向新加入者到这个孩子节点;被加入流程结束,转步骤(27)。
(C10)查找孩子中层次比自己大1的节点,如存在转步骤(C11),否则转步骤(C14);(C11)若查到的孩子节点为外网节点,转步骤(C12),否则转步骤(C13);(C12)将加入者重定向到这个孩子;被加入流程结束,转步骤(27)。
(C13)选择一个外网地址与被加入者GUID最近的孩子节点,发送重定向消息到选定的孩子并接收新加入者为自己的孩子。具体效果就是交换了选定孩子与新加入者在控制树上的位置;被加入流程结束,转步骤(27)。
(C14)将新加入者的层次设为当前层次加1,把新加入者加入孩子节点列表中并发送Agree消息到新加入者;被加入流程结束,转步骤(27)。
(C15)是否存在一个与加入者GUID相同网关的内网孩子,如是,转步骤(C16),否则转步骤(C4);(C16)重定向新加入者到这个孩子节点;被加入流程结束,转步骤(27)。
(25)节点P判断所接收到的请求包是否是离开请求包,如果是,进入步骤(26);否则,进入步骤(27);(26)节点P根据收到的离开请求包,对离开请求进行处理,然后转步骤(27)。处理其它节点离开消息的具体步骤如图5所示,其流程为(E1)节点判断发送离开消息的节点的身份,如是自己的父亲,转步骤(E2),否则转步骤(E4);(E2)由于父亲节点离开,将祖父节点置为父节点;(E3)同父节点建立网络连接,并向新的父节点发送加入请求信息,重新执行加入过程,处理离开流程结束,转步骤(27);(E4)由于孩子节点离开,将发送者信息从其孩子列表中删除,停止处理来自发送者的消息,处理离开流程结束,转步骤(27)。
(27)节点P执行定期的心跳处理。节点的心跳流程如图6所示,具体过程为(F1)获取当前时间C,并初始化循环计数值K=1。
(F2)对孩子节点列表T中的节点T[K],计算当前时间C与最后一次收到该节点的心跳消息的时间的差值D。
(F3)判断差值D是否大于设定阈值,如果是转步骤(F4),否则转步骤(F5);(F4)说明子节点T[K]很长时间没有向自己发送心跳消息了,此时认为节点T[K]已经离开,系统将T[K]从孩子节点列表T中删除。
(F5)K=K+1,(F6)判断k小于列表大小?如果是转(F7),否则转(F2)。
(F5)检查是否需要中止线程,如果是,流程结束,否则睡眠一段时间后,转步骤(F1)。
(28)判断节点P是否离开P2P网络,如果是,结束守护进程,同时停止监听规定的网络端口和收包工作,然后进入步骤(29);否则,回到步骤(22)继续监听。
(29)结束。
实例在本方法中,每个节点都用一个GUID来唯一标识。GUID是当每个节点加入网络时由系统根据节点的信息生成的一个16字节共128位的值,它的结构如图7所示。其中节点类型表示此节点属于外网、内网、NAT和防火墙节点中的哪种类型;ISP表示节点所在的ISP(Internet Service Provider),城市表示节点所在的城市,邮编表示节点所在的邮政编码,外网IP字段和内网IP字段,如果节点是内网节点,对应的外网IP是其网关IP,内网IP是其IP;如果节点是外网节点,对应的外网IP和内网IP都是其IP值。预留字段目前尚未使用,留作日后扩充使用。
利用本发明所阐述的利用虚拟层次将GUID邻近(其实是位置邻近)的节点组织在一起的方法,为了叙述方便,GUID的各个组成部分被简化为小的整数,如图6-(a)所示。在新节点加入前,已经有许多的节点被组织在一颗层次树中,如图6-(b)所示。其中s为根节点,X为新加入节点。Hi(i=1,2,…11)为已加入节点。灰色的小矩形平面表示一棵子树与它带领的几个孩子节点处于同一层次上,小矩形之间是通过两个节点连接起来的,下一层的节点的层次是由上层加1。下一层表示相似度更高的节点进一步聚合。设置最大层次为4,每个节点可以接受5个孩子节点(实际上可以更多,因为这些连接并不传输媒体数据,只是传输控制数据)。
节点X(1,2,3)首先连接根节点S,发出加入覆盖网请求,节点S(0,0,0)计算X的层次,由于S的层次为0,那么应该比较加入者X的GUID的第0维与S的第0维是否相同,显然,1≠0,X的层次与S应该在同一层。简单起见,假设X为外网节点。S接着查找是否有GUID与X邻近的外网节点,由于存在H1(1,0,0)满足条件,X被重定向到H1。X收到重定向消息后,向H1发送加入消息。
H1的层次为0,在收到X的加入消息后,查找与X的GUID节点邻近的孩子节点,由于H5的GUID为(1,0,0),第0维与X的第1维相同,因此X被重定向到H5。每个节点收到加入消息后,使用相同准入协议,加入节点在收到重定向消息发出加入消息到指定节点。循环整个过程,直到加入成功或者被拒绝或者重新加入。
权利要求
1.一种流媒体直播系统中控制流的树形网络组织方法,系统任一节点P均按以下步骤进行处理启动守护进程,并行执行守护进程和主进程,其中,守护进程包括步骤(11)-(16),主进程包括步骤(21)-(29);(11)节点P从接受用户请求;(12)节点P判断所接收到的请求是否是加入请求,如果是,进入步骤(13);否则,进入步骤(14);(13)节点P主动加入;(14)节点P主动离开;(15)判断节点P是否离开P2P网络,如果是,结束守护进程;否则,回到步骤(11)继续接受用户请求;(16)节点P开始监听规定的网络端口,等待接收来自其他节点发送的请求包;(22)节点P判断是否收到来自其他节点的请求包,如果是,进入步骤(23);否则,转到步骤(27);(23)节点P判断所接收到的请求包是否是加入请求包,如果是,进入步骤(24);否则,进入步骤(25);(24)节点P根据收到的加入请求包,按照下述过程对加入请求进行处理(C1)判断加入节点是否为外网节点,如是,转步骤(C2),否则转步骤(C15);(C2)计算加入节点的层次,如与本节点层次相同且L=MAX_LEVEL,转步骤(C3),否则转步骤(C10);(C3)检查自己的孩子节点列表中是否存在一个与加入者GUID邻近且层数与自己相同的外网孩子,如存在,转步骤(C9),否则转步骤(C4);(C4)检查自己是否还有空余孩子位置,如是,转步骤(C5),否则转步骤(C6);(C5)设置加入节点的层次为自己的层次L,把新加入者加入孩子节点列表中并发送Agree消息到新加入者,被加入流程结束,转步骤(27);(C6)判断加入节点是否是外网节点,如是,转步骤(C7),否则转步骤(C8);(C7)选择一个外网地址与被加入者GUID最近的孩子节点,发送重定向消息到选定的孩子并接收新加入者为自己的孩子,被加入流程结束,转步骤(27);(C8)拒绝加入者,被加入流程结束,转步骤(27);(C9)重定向新加入者到这个孩子节点,被加入流程结束,转步骤(27);(C10)查找孩子中层次比自己大1的节点,如存在转步骤(C11),否则转步骤(C14);(C11)若查到的孩子节点为外网节点,转步骤(C12),否则转步骤(C13);(C12)将加入者重定向到这个孩子,被加入流程结束,转步骤(27);(C13)选择一个外网地址与被加入者GUID最近的孩子节点,发送重定向消息到选定的孩子并接收新加入者为自己的孩子,被加入流程结束,转步骤(27);(C14)将新加入者的层次设为当前层次加1,把新加入者加入孩子节点列表中并发送Agree消息到新加入者,被加入流程结束,转步骤(27);(C15)是否存在一个与加入者GUID相同网关的内网孩子,如是,转步骤(C16),否则转步骤(C4);(C16)重定向新加入者到这个孩子节点;被加入流程结束,转步骤(27);(25)节点P判断所接收到的请求包是否是离开请求包,如果是,进入步骤(26);否则,进入步骤(27);(26)节点P根据收到的离开请求包,对离开请求进行处理,删除请求者,然后转步骤(27);(28)判断节点P是否离开P2P网络,如果是,结束守护进程,同时停止监听规定的网络端口和收包工作,然后进入步骤(29);否则,回到步骤(22)继续监听;(29)结束。
2.根据权利要求1所述的方法,其特征在于步骤(13)中节点P主动加入过程包括如下步骤(A1)设置加入对象Obj为根节点;(A2)设置连续加入此节点次数Obj.n为0;(A3)如果Obj.n>3,转步骤(A4),否则转步骤(A5);(A4)如果Obj是根节点,加入过程无法完成,进入步骤(15),否则,设置加入对象Obj为根节点,然后转步骤(A5);(A5)将Obj.n修改为Obj.n+1,并发送加入消息给Obj,转步骤(A6);(A6)判断接收响应消息是否超时,如果接收超时,转步骤(A3),否则,转步骤(A7);(A7)判断收到的响应消息是否为拒绝消息,如果是拒绝消息,转步骤(A1),否则转步骤(A8);(A8)判断收到的响应消息是否为重定向消息,如果是,进入步骤(A9),否则转步骤(A10);(A9)设重定向指向的节点为要加入的节点,转步骤(A2);(A10)将此加入者作为父亲节点,初始化孩子节点;加入过程结束,进入步骤(15);
3.根据权利要求1或2所述的方法,其特征在于步骤(14)中节点P主动离开过程包括如下步骤(B1)节点P向其父节点发送离开消息;(B2)节点P查询所有的子节点信息,同时向其子节点发送离开消息;(B3)节点P将其所有子节点信息从其孩子列表中删除,同时中断与孩子节点的网络连接;(B4)节点P将其父节点和祖父节点信息置为空,同时停止接受和处理本频道的任何网络消息,离开流程结束,进入步骤(15)。
4.根据权利要求3所述的方法,其特征在于步骤(26)中节点P按照下述过程对离开请求进行处理(E1)节点判断发送离开消息的节点的身份,如是自己的父亲,转步骤(E2),否则转步骤(E4);(E2)由于父亲节点离开,将祖父节点置为父节点;(E3)同父节点建立网络连接,并向新的父节点发送加入请求信息,重新执行加入过程,处理离开流程结束,转步骤(27);(E4)由于孩子节点离开,将发送者信息从其孩子列表中删除,停止处理来自发送者的消息,处理离开流程结束,转步骤(27)。
5.根据权利要求4所述的方法,其特征在于步骤(24)中的步骤(C2)按照下述步骤计算层次(d1)节点的层次定义为0,其它节点的层次范围为1和MAX_LEVEL之间,其中MAX_LEVEL等于GUID中的字段数减1;(d2)设被加入节点的层次为L,如果加入节点与被加入节点GUID的前L个字段都相同,则定义其层次为被加入节点层次加1,否则定义其层次与被加入节点层次相同。
全文摘要
本发明公开了一种流媒体直播系统中控制流的树形网络组织方法,其步骤包括①启动守护进程;②监听规定的网络端口,等待接收来自于其他节点的请求包;③判断请求包的类型,根据包的类型,处理节点的加入,离开,重定向请求;④根据接收到的心跳包,更新本节点的子节点信息。本发明将控制流和数据流分开的双层拓扑结构,由控制树进行网络邻近节点的优化,网状逻辑覆盖网进行数据交换,适应P2P在线流媒体需求。控制树组织引入了基于GUID的节点聚类方法。根据各节点在网络中的位置产生GUID,并在逻辑层将邻近的节点组织在一起。本发明通过把物理位置临近的节点用树型组织在一起,极大的节省了网络流量,降低了网络负载,提高了P2P流媒体服务的服务质量。
文档编号H04L12/56GK1953413SQ200610124519
公开日2007年4月25日 申请日期2006年9月13日 优先权日2006年9月13日
发明者金海 , 廖小飞, 涂旭平, 刘科, 杨思睿, 张超, 袁泉 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1