著录项信息
专利名称 | 一种P2P系统中物理拓扑相关的邻居节点选取方法 |
申请号 | CN200910084291.6 | 申请日期 | 2009-05-15 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2010-02-10 | 公开/公告号 | CN101645925 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 中国科学院声学研究所 | 申请人地址 | 河南省郑州市高新技术产业开发区长椿路6号西美大厦东塔16层1601房间
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 郑州芯兰德网络科技有限公司 | 当前权利人 | 郑州芯兰德网络科技有限公司 |
发明人 | 王劲林;冯侦探;鲁逸峰;苏少炜;任浩;苏杭 |
代理机构 | 北京法思腾知识产权代理有限公司 | 代理人 | 杨小蓉 |
摘要
本发明涉及一种P2P系统中物理拓扑相关的邻居节点选取方法,包括如下步骤:1)确定一组地标节点;2)以每个地标节点为中心建立群,所述群包括群首节点和成员节点;所述地标节点为群首节点,从群内的各成员节点到所述群首节点的延时均小于预定的阈值;所述群首节点存储群内延时表,所述群内延时表记录所属群内各成员节点至该群首节点的延时,并按所述延时大小依序排列;3)某请求节点向该节点所属群的群首节点请求邻居节点列表;4)所述群首节点根据所述群内延时表向所述请求节点返回邻居节点列表。本发明能够使P2P系统提高数据交换效率、实现负载均衡、降低维护开销。
1.一种P2P系统中物理拓扑相关的邻居节点选取方法,包括如下步骤:
1)确定一组地标节点;
2)以每个地标节点为中心建立群,所述群包括群首节点和成员节点;所述地标节点为群首节点,群内的各成员节点到所述群首节点的延时均小于预定的阈值;所述群首节点存储群内延时表,所述群内延时表记录所属群内各成员节点至该群首节点的延时,并且群内各成员节点至该群首节点的延时按所述延时大小依序排列;
3)某请求节点向该请求节点所属群的群首节点请求邻居节点列表;
4)所述群首节点根据所述群内延时表向所述请求节点返回邻居节点列表。
2.根据权利要求1所述的邻居节点选取方法,其特征在于,所述步骤1)包括如下子步骤:
11)在P2P系统初始化时,部署若干节点作为地标节点;P2P系统中的索引服务器将地标节点存储在地标节点列表中;
12)每个节点在首次加入P2P系统时,首先和索引服务器联系,所述索引服务器根据预先设定的在线时长阈值和邻居节点个数阈值,从所有在线节点列表中选择若干节点作为地标节点并加入所述地标节点列表;
13)当某地标节点退出时,索引服务器将所述地标节点从地标节点列表中删除。
3.根据权利要求1所述的邻居节点选取方法,其特征在于,所述步骤2)中,所述群内还设置备份地标节点,当群首节点失效时,所述备份地标节点充当所属群的群首节点。
4.根据权利要求1所述的邻居节点选取方法,其特征在于,所述步骤2)中,每个节点在加入P2P系统时,首先和索引服务器联系,获取地标节点地址,所述节点测量该节点至所有地标节点间的延时,找出与本地延时最小的地标节点并加入所述延时最小的地标节点所属的群。
5.根据权利要求4所述的邻居节点选取方法,其特征在于,所述步骤4)中,所述群首节点将群内延时最小的若干个节点加入邻居节点列表,并将邻居节点列表返回给所述请求节点。
6.根据权利要求5所述的邻居节点选取方法,其特征在于,所述步骤4)中,当邻居节点列表内的邻居节点数目不足时,请求节点找出与本地延时次小的地标节点并加入所述延时次小的地标节点所属的群,然后进入所述步骤3)。
7.根据权利要求1所述的邻居节点选取方法,其特征在于,所述步骤2)中,所述群首节点记录所属群内各节点的延时矢量,所述节点的延时矢量记录该节点至所有地标节点的延时。
8.根据权利要求1所述的邻居节点选取方法,其特征在于,还包括步骤5),所述步骤5)如下:
设邻居节点列表中的邻居节点数目为k,请求节点获得邻居节点列表后,
51)请求节点p从k个节点中选出m个节点进行数据交换,剩余的k-m个节点作为备份节点,随着数据调度的进行,在进行数据调度的同时统计合作节点的延时信息,若邻居节点列表中某节点q与请求节点p交互延时超过预先设定的阈值,则节点p会给节点q发送一个贫瘠服务消息;
52)节点q在累计收到的贫瘠服务消息超出预先设定的阈值时,所述节点q重新测量本地至所有地标节点间的延时,找出与本地延时最小的地标节点并加入所述延时最小的地标节点所属的群;
53)当节点p邻居列表内的节点不能满足服务时,节点p重新向群首节点发送邻居节点请求信息,该请求信息附有节点p已有的邻居节点信息,避免群首节点返回重复的邻居节点。
一种P2P系统中物理拓扑相关的邻居节点选取方法\n技术领域\n[0001] 本发明涉及计算机网络技术领域,具体地说,本发明涉及一种P2P系统中物理拓扑相关的节点选取方法。\n背景技术\n[0002] 近年来,随着宽带通信和多媒体技术的迅猛发展,在线直播,视频点播,文件下载等各种互联网应用也应运而生,对传统的客户端/服务器(C/S)模式的服务系统提出了新的挑战,随着用户规模的增大,传统的客户端/服务器(C/S)模式的服务系统需要消耗更多的软硬件资源,已经不能满足大规模用户的需求,因此基于P2P的服务系统迅速发展并逐渐成为相对成熟的应用。\n[0003] 从功能上看,P2P系统一般主要有2类逻辑层构成:1)覆盖网层(Overlay Layer),该层主要是描述P2P服务系统中节点之间如何组织,为进一步选择合作节点和数据交互打下基础;2)数据调度层(Data Schedule Layer),该层主要负责合作节点之间如何进行数据调度,满足节点正常服务需求的同时最大化节点服务能力,从而提高系统整体性能。\n[0004] 目前,大多数传统的P2P系统在选择合作节点时没有采用有效的方法来选择物理网络中实际相邻的节点,一般采用树形或者网状拓扑来构造覆盖网层,当新节点加入系统时,根据网络中其他节点的服务能力,新节点采用某种方法加入到已有的网络,节点之间是依靠服务能力松散的连接在一起的,这样若选取的节点在物理网络中距离比较远,数据交换时延时较大,单位时间内节点收到的数据包会变少,若不能满足播放需求节点就会向网络中其他节点继续请求数据,这样在一定程度上增加了调度负担。\n发明内容\n[0005] 本发明的目的是通过基于地标(Landmark)节点的网络测量的方式来估算出网络中节点之间的延时,并构建物理拓扑相关的覆盖网层,使P2P系统能选择物理位置临近的节点作为邻居节点来进行数据调度,从而提供一种能缩短数据包在网络中的传输延时,提高数据交换效率的邻居节点选取方法。\n[0006] 为实现上述发明目的,本发明提供的P2P系统中物理拓扑相关的邻居节点选取方法,包括如下步骤:\n[0007] 1)确定一组地标节点;\n[0008] 2)以每个地标节点为中心建立群,所述群包括群首节点和成员节点;所述地标节点为群首节点,群内的各成员节点到所述群首节点的延时均小于预定的阈值;所述群首节点存储群内延时表,所述群内延时表记录所属群内各成员节点至该群首节点的延时,并且群内各成员节点至该群首节点的延时按所述延时大小依序排列;\n[0009] 3)某请求节点向该请求节点所属群的群首节点请求邻居节点列表;\n[0010] 4)所述群首节点根据所述群内延时表向所述请求节点返回邻居节点列表。\n[0011] 其中,所述步骤1)包括如下子步骤:\n[0012] 11)在P2P系统初始化时,部署若干节点作为地标节点;P2P系统中的索引服务器将地标节点存储在地标节点列表中;\n[0013] 12)每个节点在首次加入P2P系统时,首先和索引服务器联系,所述索引服务器根据预先设定的在线时长阈值和邻居节点个数阈值,从所有在线节点列表中选择若干节点作为地标节点并加入所述地标节点列表;\n[0014] 13)当某地标节点退出时,索引服务器将所述地标节点从地标节点列表中删除。\n[0015] 其中,所述步骤2)中,所述群内还设置备份地标节点,当群首节点失效时,所述备份地标节点充当所属群的群首节点。\n[0016] 其中,所述步骤2)中,每个节点在加入P2P系统时,首先和索引服务器联系,获取地标节点地址,所述节点测量该节点至所有地标节点间的延时,找出与本地延时最小的地标节点并加入所述延时最小的地标节点所属的群。\n[0017] 其中,所述步骤4)中,所述群首节点将群内延时最小的若干个节点加入邻居节点列表,并将邻居节点列表返回给所述请求节点。\n[0018] 其中,所述步骤4)中,当邻居节点列表内的邻居节点数目不足时,请求节点找出与本地延时次小的地标节点并加入所述延时次小的地标节点所属的群,然后进入所述步骤\n3)。\n[0019] 其中,所述步骤2)中,所述群首节点记录所属群内各节点的延时矢量,所述节点的延时矢量记录该节点至所有地标节点的延时。\n[0020] 其中,还包括步骤5),所述步骤5)如下:\n[0021] 设邻居节点列表中的邻居节点数目为k,请求节点获得邻居节点列表后,[0022] 51)请求节点p从k个节点中选出m个节点进行数据交换,剩余的k-m个节点作为备份节点,随着数据调度的进行,在进行数据调度的同时统计合作节点的延时信息,若邻居节点列表中某节点q与请求节点p交互延时超过预先设定的阈值,则节点p会给节点q发送一个贫瘠服务消息;\n[0023] 52)节点q在累计收到的贫瘠服务消息超出预先设定的阈值时,所述节点q重新测量本地至所有地标节点间的延时,找出与本地延时最小的地标节点并加入所述延时最小的地标节点所属的群;\n[0024] 53)当节点p邻居列表内的节点不能满足服务时,节点p重新向群首发送邻居节点请求信息,该请求信息附有节点p已有的邻居节点信息,避免群首返回重复的邻居节点。\n[0025] 相对于现有技术,本发明具有如下技术效果:\n[0026] 1、本发明根据节点之间的时延来构建拓扑网络,能快速选取延时较小的节点做为合作节点(即邻居节点),进而提高数据交换效率。\n[0027] 2、本发明分散存储节点延时信息,降低了索引服务器压力,实现了负载均衡。\n[0028] 3、本发明中,节点在进行合作的同时监测数据包传输延时,能够对拓扑网络的结构进行实时维护,同时也降低维护开销。\n附图说明\n[0029] 图1为P2P服务系统结构和主要流程示意图;\n[0030] 图2为节点加入系统流程图;\n[0031] 图3为节点选择流程图;\n[0032] 图4为邻居节点维护流程图。\n具体实施方式\n[0033] (1)地标节点的选择\n[0034] 每个节点在首次加入系统时首先和索引服务器联系,索引服务器(Index Server)负责记录节点在线时长,节点的邻居个数等基本信息,根据节点的基本信息,IS从所有在线节点列表中选择若干服务能力较强的节点作为地标节点(一般来说在线时间越长,邻居节点个数越多,服务能力越强。具体实现上,可以先设定阈值,当某一在线节点在线时间和邻居节点个数均超过所述阈值时,将该在线节点作为地标节点)。为增加系统稳定性,在初始阶段可以事先部署若干节点作为地标节点。为了避免作为地标节点退出,而造成群内节点脱离系统,在下一节中描述了一种地标节点备份方式,当某地标节点退出时,告知索引服务器,索引服务器更新地标节点列表。\n[0035] (2)分布式距离信息存储\n[0036] 设节点集合为C={ci|i=0,1,2,...m},地标节点集合为L={lj|j=0,1,\n2,...n},节点ci到L的延时矢量 表示,\n[0037] 其中dij为节点ci到lj的延时,即dij=delay(ci,lj),则总的延时集合为本实施例中,地标节点是从节点集合C中选取的,因此地标节点\n也是节点集合C中的元素。\n[0038] 若D统一存储在索引服务器上来进行节点选取,可能会因索引服务器压力过大而造成单点故障,本实施例将 分散存储在特定的地标节点上。\n[0039] 对 Uj={ci|dij=min(di0,di1,di2,...din),ci∈C},即Uj是满足如下条件的节点ci的集合:节点ci到lj的延时比到其他地标节点的延时都要小。称集合Uj为lj所属的群,lj为群首节点。群首节点lj记录群内每个节点(包括成员节点和地标节点)到L的延时矢量 ,即群首节点lj记录延时矢量集合: 群首节点lj还记\n录群所包含的节点数目s,s=|Uj|。为增加系统可靠性,本实施例中从Uj选取α个节点(α=1,2),来作为lj的备份节点结合,将 保存在该备份节点上,若lj失效退出,则备份节点充当新的地标节点。\n[0040] (3)邻居节点选择算法\n[0041] 根据三角不等式原理,直觉的距离概念如下:假设要估测节点cs和ct的距离,如果有足够多的地标节点l,则\n[0042] 使得delay(cs,ct)=dsj+dtj=min{delay(cs,lk)+delay(lk,ct)},其中lk∈L(本实施例中,延时没有方向概念,ct至lk的延时就是lk至ct的延时)。\n[0043] 根据(2)中的存储方式,本实施例作如下变换:\n[0044] 即 其 中\n[0045] 对任意两个矢量 意指满足如下条件:存在 否则,\n[0046] 若 不成立,则\n[0047] 于是有:\n[0048] 即 其中\n[0049] \n[0050] 由上所述,参照图3若节点p∈Uj,则有如下节点选取算法来选取p的合作节点:\n[0051] 步骤3.1,按照Uj内节点到群首lj的延时的升序来选择有服务能力的节点。\n[0052] 步骤3.2,如果返回的邻居节点数目不够,选择与节点p延时次小的群首l′j,更新Uj为新的群首,返回步骤3.1。如果返回的邻居节点数目足够,进行下一步的数据调度。\n[0053] (4)节点的加入和离开\n[0054] 节点p加入系统时,首先和索引服务器联系,获取地标节点列表信息,节点测量和地标节点间的延时并加入与自己延时最小的地标节点为首的群,根据(3)返回所需要的合作节点列表。\n[0055] 节点p离开系统时,首先告知邻居节点,邻居节点将该节点从自己的列表中删除,之后再通知该群群首节点,群首节点将p从列表中删除,并定期向索引服务器报告,索引服务器删除掉退出节点。\n[0056] (5)邻居节点的维护\n[0057] 节点p获得合作节点列表后,见图4:\n[0058] 1)节点p从k个节点中选出m个节点进行数据交换,剩余的k-m个节点作为备份节点,随着数据调度的进行,在进行数据调度的同时统计合作节点的延时信息,若某节点q与节点p交互的服务质量较差(一般是指延时过大,具体实现上,可以通过设定阈值的方式判定是否延时过大),节点p会给节点q发送一个贫瘠服务(POOR_SERVICE)的消息。\n[0059] 2)节点q在累计收到若干贫瘠服务消息后会重新进行节点距离测量,确保自己在正确的群中。\n[0060] 3)当节点p邻居列表内的节点不能满足服务时,节点p会重新向群首发送邻居节点请求信息,该请求信息附有节点p已有的邻居节点信息,避免群首返回重复的邻居节点。\n[0061] 参见图1、图2,本实施例中实现邻居节点选取的步骤如下:\n[0062] 步骤1,节点P加入系统时,首先联系索引服务器(Index Server)节点,获得地标节点列表。如图1中的L1,L2,L3为地标节点。\n[0063] 步骤2,节点P向每个地标节点发送探测报文(PING_MSG),地标节点返回响应报文(PONG_MSG),并记录节点到各个地标节点之间的延时。若经过一定时间仍未收到响应报文,则不再等待,继续进行下一步骤。\n[0064] 步骤3,节点P到地标节点的时延值构成一个矢量,节点向时延值最小的地标节点发送JOIN_CLUSTER消息,申请加入以该地标节点为首的群(cluster),图1中方框内的节点为一个群。群首间维护一张一跳到达路由表(Landmark Route Table),该路由表存储在索引服务器上。当地标节点发生变化时,将通知索引服务器,索引服务器更新地标节点列表并通知其他地标节点更新路由表。\n[0065] 步骤4,收到JOIN_CLUSTER消息的地标节点从自己管辖的群内按照一定算法(参见具体实现方法3)选取合作节点并返回。\n[0066] 下面通过一个更加具体的实例来说明本发明提供的方法的具体应用场景:在本场景中有以下设备,索引服务器,数据源服务器,3个地标节点L1,L2,L3以及以其为群首的群。\n[0067] 假设此时用户P启动客户端软件,希望收看某频道节目,下面描述P如何通过本发明的方法获得较近的邻居节点并进行收看,以及退出等过程的步骤:\n[0068] (1)用户节点P点击某频道后连接索引服务器,获得地标节点列表。\n[0069] (2)用户节点P测量与各个地标节点的距离,根据测量结果,发现与地标节点L3较近,则向该地标节点发送JOIN_CLUSTER消息。\n[0070] (3)L3收到JOIN_CLUSTER消息后,将节点P加入到自己的群节点列表中,并存储节点P到其他各个地标节点的时延。\n[0071] (4)L3根据具体实现方法(3)来选择邻居节点。\n[0072] (5)如果L3群内的节点不满足P节点的需求,则L3通过Landmark Route Table向距离P节点次近的地标节点L2发送节点请求信息。\n[0073] (6)L2重复L3使用的节点选取算法,直到节点P获得足够的邻居节点。\n[0074] (7)节点P退出后,向P邻居节点发送退出消息,同时向L3发送退出消息。\n[0075] (8)L3定期向索引服务器发送该群内有哪些节点(不仅有L3,可能还有其他节点)退出了网络,索引服务器将这些节点从索引服务器中删掉。\n[0076] 通过基于地标(Landmark)节点的网络测量的方式来估算出网络中节点之间的延时,并构建物理拓扑相关的覆盖网层,使P2P系统能选择物理位置临近的节点作为邻居节点来进行数据调度,这样能缩短数据包在网络中的传输延时,提高数据交换效率。同时在存储节点到地标节点的延时表是分散存储在地标节点而不是索引服务器上,避免索引服务器频繁的受到节点请求和更新信息,实现了负载均衡。再者,本发明地标节点之间可以互相通信,能彼此交换邻居节点,从而避免形成孤岛。
法律信息
- 2021-08-10
专利权的转移
登记生效日: 2021.07.29
专利权人由中国科学院声学研究所变更为郑州芯兰德网络科技有限公司
地址由100190 北京市海淀区北四环西路21号中国科学院声学研究所变更为450001 河南省郑州市高新技术产业开发区长椿路6号西美大厦东塔16层1601房间
- 2012-07-25
- 2010-04-14
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 200910084291.6
申请日: 2009.05.15
- 2010-02-10
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-04-16
|
2007-11-22
| | |
2
| |
2008-05-14
|
2007-11-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |