一种覆盖网洪泛式文件搜索方法

文档序号:6469596阅读:207来源:国知局
专利名称:一种覆盖网洪泛式文件搜索方法
技术领域
本发明涉及一种计算机覆盖网络拓扑构造技术,特别涉及一种覆盖网洪 泛式文件搜索方法。
背景技术
非结构化P2P (Peer to Peer,对等计算)网络被实际应用于文件共享P2P
系统中。由于本身没有固定的索引存储结构,其网络维护量小,因此得以广 泛应用。实际中得到应用的有Gnutella (—种基于P2P网络的实用文件共享 网络)和KaZaA (另一种文件共享网络)。它们的文件定位是由洪泛方法完成 的,而洪泛本身存在严重的可扩展性问题,而且会产生很大的网络流量。有 文献显示在一个只有50000个结点的Gnutella网中,即便95%的结点对少于 7个覆盖跳,洪泛算法仍然要产生流量330TB/月。KaZaA虽然使用了超级结点 及TTL约束洪泛(TTL-constrained flooding)等技术,网络流量仍然很高。
目前常用的P2P系统在査询效率上还有较大的提升空间。例如在查询流 行文件时,现有系统就存在着诸如过量负载以及延迟较长等缺点;査询非流 行文件时又有太多重复消息等方面的不足。
在査询流行文件时,实际应用中的Gnutella与KaZaA都是用TTL约束洪 泛的方法来进行搜索,其基本思路是搜索不断扩大范围的邻居直到找到所要 求的文件。假设搜索过程中每个中间结点平均拥有c个子结点(如c=10,即表 示有c个直接连接),并设在第一次搜索到文件的一个备份时所经历的结点个 数为Q。为了覆盖Q个结点,TTL约束洪泛的TTL值要增大到llo&Q |,在
log"l近邻中被搜索的结点个数大致为c^g川。由于llog"l可能会接近于log^ + i,搜索负载可以表示为,g,二c,Q。搜索负载为Q的c倍,即搜 索负载可以达到多于需要结点c-l倍的结点数。由此可见这是一个严重的负 载问题。除TTL约束洪泛以外,有限度洪泛和概率洪泛都是常用的搜索方法。 有限度洪泛通过人为控制c值来控制洪泛流量,每个中间结点向"个(〈c)随 机选择的邻居转发査询信息,其中"是一个可调参数。为覆盖Q个结点,TTL 值须选择llogaQl,而该值大于llo&Ql。相应的被搜索之结点个数会减少到 "Q。不过, 一个更大的TTL意味着一个査询信息不得不传输更多的覆盖跳数 来完成一轮搜索,这显然会造成更大的査询延迟。概率洪泛是通过按一定概 率来选择邻居以转发査询信息,它具有与有限度洪泛类似的问题。除了上面 提到的有限度洪泛以及概率洪泛,还有一种方法叫做随机漫步,它通过一些 随机的路径来传递一次査询信息。
另2个重要问题体现在1)这些方法在査询文件时都会有大量重复访问 结点的情况发生,这也大大增加搜索的负载;2)通过对大量网络连接统计分 析,由于存在反映连接延时的长尾效应(Long-tail)问题,这些方法设置的 查询搜索超时时限不得不偏大,这无形中影响了搜索时间问题的改善。

发明内容
本发明是针对在Gnutella与KaZaA中均采用的TTL约束洪泛方法在性能 上存在着网络流量高,过量搜索负载以及可扩展性差的问题,提出了一种覆 盖网洪泛式文件搜索方法,结合了 TTL约束洪泛和有限度洪泛两者的优点, 正如TTL约束洪泛那样,第一阶段通过每次向所有邻居转发査询信息从而降 低了洪泛树的深度,也就减少了査询的延迟;另外和有限度洪泛一样,它也 降低了在连续的查询轮次中负载的急剧增加。除此以外,通过参数",本算法使得负载增加变成可调节的。算法中的阶段二也是为了更有效率地转发査询 信息,减少了重复访问结点的次数,从而有助于减少网络流量,同时达到减 少査询跳数和降低网络流量的有效均衡。
本发明的技术方案为 一种覆盖网洪泛式文件搜索方法,基于票据的搜 索方法,票据是对某个结点搜索的许可,所述搜索方法包括如下步骤
1) 第一阶段对源结点进行搜索,假定一个源结点,査询首先从源结点发起, 源结点的査询信息中携带了一定数量的票据以及其它一些信息,结点接收到 査询信息后自己消费一张票据,并继续向它们的邻居传递查询信息,如此向 下传递直到这一轮查询中的票据被消费完或找到査询结果返回,如果这一轮 查询未找到结果或已经超时,则这时票据按"步长因子增长然后继续下一轮查
询,如些重复直到找到结果或票据数增加到;in从而进入阶段二的査询,其中
n表示系统中的结点数,义(〈1)是一个系统参数;
2) 第二阶段实施分段环状传送,所有的覆盖网结点通过前驱结点和后继结
点的引入,形成一个自然的环状连接结构,将上述随机阶段最后一轮查询所
访问到的结点称为随机结点,这些随机结点将环划分成若干段,每个随机结
点负责其中的一段,查询信息就在环上进行分段环状传送,每个随机结点都
向它环上的后继结点发送查询信息,它将查询信息沿后继结点传送,后者又 继续向其后继结点传送查询信息直到遇到一个接收到过查询信息的结点为止。
所述第一阶段的搜索过程可以用随机采样和随机锚点策略来进行优化。 所述随机采样策略为每一轮査询信息携带的票据中都含有一定量的采样 票据,查询过程中每个消费掉一张采样票据的结点都会向源结点发回一个通知,在某一轮査询过程中当源结点收到采样票据通知数达到采样票据总数的P 百分比时,如果这时的时间未到超时时间,则直接发起下一轮査询。
所述随机锚点策略为第一轮查询时设定锚点,查询从锚点发起,这时锚 点可以从它的邻居里随机选择一个结点当作下一轮查询的锚点,进行这轮査 询时结点都不会向该锚点发送査询信息,即使是它们的邻居,如果这次未找 到结果,下一轮査询从上一轮定的锚点开始,然后又会从它的邻居里随机选 择一个结点当作新的锚点并继续下面的査询,如果还未找到结果则上一轮定 的锚点成为第三轮查询的源结点,它又会按照相同的方法选择新的锚点然后 进行查询。
本发明的有益效果在于本发明覆盖网洪泛式文件搜索方法,加快了査询 的速度,提高了效率,减少了网络流量。


图1为本发明覆盖网洪泛式文件搜索方法中算法在阶段一的示例图; 图2为本发明覆盖网洪泛式文件搜索方法中算法在阶段二的示例图; 图3为本发明覆盖网洪泛式文件搜索方法中一颗査询树示意图; 图4为本发明覆盖网洪泛式文件搜索方法中随机锚点策略示意图。
具体实施例方式
覆盖网洪泛式文件搜索方法的网络架构仍沿用KaZaA的索引结构,该结 构有2种类型结点超级结点(SN)和普通结点(0N)。超级结点组成一个覆 盖网, 一个超级结点管理若干普通结点。当0N通过某个SN提供文件服务, 它将自身文件索引信息报告给SN。当一个结点要査找一个文件,首先向其对 应的SN发出一个请求,而SN将启动在覆盖网上定位文件的搜索进程。由于本发明主要针对SN组成的覆盖网,以下将SN简称为结点。
基于票据的搜索方法使用票据来设定在TTL约束洪泛中一轮搜索的结点 数。 一张票据表示对某个结点搜索的许可。如果某一轮未找到文件,通过"因 子来增加下一轮票据数。在每一搜索轮次中,当一个结点首次接收到一个査 询信息,它自己将消费一张票据,而如果査询信息携带了足够票据,它将票 据分摊并随査询信息向其邻居转发。 基本算法如下
A查询定位源结点s执行以下算法过程*/
1 ) t:=min_tickets
2 ) seq—n跳-一个大的随机数
3) while(K/ln)
4) sid: =s I seq_num
5) 将Lookup (msg, t, sid, O)发送给源结点s的所有随才几邻居
6) 等待到一个结果返回或超时
7) if接收到一个返回结果then
8) 返回该结果
9) else
10) t:="
11 ) seq_num=seq-num+l 12) t:=/ln
12)将Lookup (msg, t, sid, l)发送给s的所有随机邻居/*当结点x接收到查询定位请求信息Lookup(msg, t, sid, f),将执行以下 算法过程*/ /*阶段一随机搜索阶段*/
1) if t〉0 and x是首次4妄收标识为id的msg then
2) if x拥有该待查询文件then
3)
4)
6)
8)
9)
10)
11)
12)
13)
向源结点发回响应
=t — l
for r个随才几邻居中每一个邻居y do
转发Lookup (msg,
,sid, O)给y
if
>0 then
for (^-r)个随机邻居中的每一个邻居y do
发送Lookup (msg,
,sid, O)给y
/*阶段二环形搜索阶段*/
if f=l and x没有向successor (x)发送才示i己为sid的查询消
息then
将Lookup(msg, 0, sid, l)发送给successor (x)
14) /*阶段二环形搜索阶段*/
15) else if t=0 and f=l and x没有向successor (x)发送标记为sid的查询消息then
将Lookup (msg, 0, sid, l)发送给successor (x)
16 ) else
丢弃该查询消息
其中,s表示源结点,mirutickets与An分别表示在第一阶段随机搜索 结点的最小与最大数。这里n表示系统中的结点数,;i (〈1)是一个系统参数,
理论证明;1 = 0
时算法在搜索延时和流量负载方面取得很好的均衡性
logc"
能。 一个査询要求Lookup至少包含4个域,msg是查询信息,t为票据数, id用来唯一标识该轮搜索,标志f用来标识算法是在执行第一阶段还是第二 阶段(O表示第一阶段,1表示第二阶段)。另外"是一个步长因子("e (1, c]), 每轮查询的票据数按"步长因子增长。successor (x)表示是结点x在一个非 DHT (Distributed Hash Table)环上的后继结点。这里对非DHT环做一简单 说明所有SN结点都是该环上一个结点,但和DHT环(如Chord)不同的是, 非DHT环上结点的位置并不遵循哈希计算而固定,而是可处于环上任意位置, 显然环的维护问题变得非常简单了。环的构造方法原则是 一个新结点x加 入环时,如果它发现有一个结点z已经在环上,那么x就可以通知z让z把x 当作新的后继结点,然后x把z原来的后继结点当成它自己的后继结点。
通过分析可知,在随机搜索阶段因为被搜索结点数是按一个具有《因子的 步长增长("e(l,c]),搜索发出的最大票据数不会超过"Q。当"较小时, 票据数将远小于CQ。在査询流行文件时,票据传播直到找到目标结点的过程很少出现重复接收情况,搜索过程大致遵循一个树型结构,树中结点平均度
为c。因此,大部分票据将会在lo&W〈log^+l跳内消耗。
该算法有两个程序组成。第一个是在查询源结点执行的算法过程。这一 过程中,票据数不断增加以进行一轮又一轮的搜索直到找到结果或票据数超
过阈值;in (在这种情况下,算法转向阶段二)。另一个程序是当任意结点x 接收到査询定位请求信息Lookup (msg, t, sid, f)时执行的算法过程,这一过程 中结点自身消费一张票据,并将剩余票据分摊给它的邻居并随查询信息一起 给邻居发送。
1、随机采样策略
本随机釆样策略通过每个査询轮次之间的超时设置来对查询延迟的减少 作出贡献。 一般情况下下一轮次的查询都是在前一轮次结束后才开始的,且由 于考虑到一轮査询会有链路延时较大的最差的情况发生,超时时间设置得一 般较大。然而互联网上的延迟是遵循长尾分布的,即大部分路径的延迟都是 在一定范围内的,而一小部分路径的延迟是非常大的,这使得当某一轮次查 询在很短时间内就能到达大部分结点时,而超时时间设置的过大会严重损害 总体搜索效率。
我们发现并不一定要严格在前一轮次査询完成之后再进行下一轮次查询。 例如我们可以在上一轮次的查询信息到达占结点数百分比为/ (比如75%) 这么多个结点时就进行下一轮次的査询。为了让这占/ 百分比的这些结点能覆
盖Q个结点,由本发明提出的算法产生的票据数至少为^Q,实际的票据将是 ";Q,和"Q相比有一定的增加,但这点增加是可以接受的。本发明中采用随机采样策略的方法来实现上述功能。其主要思想是査询 信息携带的票据中有一些特殊的票据我们称之为采样票据,当一个结点第一 次接收到査询信息时,它将消费从査询信息携带的票据里随机选择的一张票 据,如果碰巧它消费的是一张采样票据,那么它就向源结点发回一个通知消 息。假设源结点在t。时间发生一轮査询,并且它在t时间收到的通知消息数 占所有采样票据数的百分比达到/ ,如果t,时间比(t。+超时时限)设置的时 间还早,那么源结点将立即发起下一轮次的査询。
2、随机锚点策略
现实算法及本发明基本算法中每一轮次的查询都会重复访问上一轮次中 访问过的结点,这就带来重复访问的问题,本发明对其优化的办法是采用随 机锚点策略。其主要思想是让每一轮次的査询都从不同的结点开始,这些结 点称之为锚点。第一个锚点为査询源结点,它从它的邻居里随机选择一个结 点作为下一轮次査询的锚点。源结点向它邻居里除了下一个锚点以外的所有 结点发送查询信息。查询信息中也携带下一个锚点的信息,这样接收到信息 的结点在转发查询信息时不会向该锚点转发,即使该锚点是它的邻居。开始 下一轮次査询时,该锚点会被通知,然后它又会从其邻居里选择下一轮査询 的锚点,接着再开始向邻居转发信息,搜索重复如此过程直到找到结果。通 过这样的方法可以减少每轮査询之间重复访问结点的次数。结合随机采样策
略和随机锚点策略的本发明算法可表示如下
/*在锚点anchor执行以下算法过程*/
1) t: =min_tickets (t中包含数量为count的采样票据)
2) seq—謡一个大的随机数3 ) 锚点anchor =第一个发起查询的结点s
4) while(t<;in)
5) s id: =anchor I seq—num
6 ) 下一个4苗点nextanchor=anchor随冲几的一个邻居结点
7) 将Lookup (msg, t, sid, 0, nextanchor)发送给锚点anchor的所有 随机邻居(除nextanchor外),等待到一个结果返回或超时或锚点 anchor才妄受到的采才羊票才居通4口数notices满足notices/count=/
8) if4妄收到一个返回结果then
9) 返回该结果
10 )t: = a t ( t中包含数量为count = "count的采样票据)
11 )seq—num=seq_num+l
12) anchor=nextanchor
13) t:=;tn
14) 将Lookup (msg, t, s id, 1, nextanchor)发送给锚点anchor的所有随
机邻居
/*当结点x接收到查询定位请求信息Look叩(msg, t, id, f),将执行以下 算法过程*/ /*阶段一*/
1) if t〉0 and x是首次,接收标识为id的msg then
2) if x拥有该待查询文件then 3 ) 向anchor发回响应4) else
5) t:=t-l
6 ) i f结点x消费的票据为 一采样票据
7 ) 向anchor发回一个通知消息notice
8) r:=t-、

9 ) for r个随机邻居中每一个邻居y (nextanchor除夕卜)do
10) 转发Lookup (msg, _ ,sid,O, nextanchor)给y
11) if 丄〉0 then
12) for r)个随机邻居中的每一个邻居y do
13) 发送Lookup (msg,一 ,sid, 0, nextanchor)
给y
14) /*阶段二*/
15) if f=l and x没有向successor (x)发送标记为id的查询消
息then
将Lookup (msg, 0, sid, l)发送给successor (x)
16) /*阶段二*/
17) else if t=0 and f=l and x没有向successor (x)发送标记为id的 查询消息then
将Lookup(msg, 0, sid, l)发送给successor (x)
18 ) else丢弃该查询消息
在以上算法中,査询过程Lookup增加了一个信息域锚点nextanchor。 3、搜索流量冗余控制策略
本发明提出一种基于反馈的非结构化P2P网络搜索技术的流量限制策略。 在査询过程中,査询信息的转发行为并不因査询源结点得到査询结果而结束, 此后的査询信息转发造成流量冗余问题。针对此搜索技术特点,通过对超级 结点进行阈值限制,向源结点询问査询是否结束,由源结点提供反馈信息, 决定查询信息是否继续转发。主要是在搜索算法第二阶段,每个超级结点在 接到前驱结点发来的査询请求时,先判断自己的跳数或延时是否大于阈值, 如果是,则询问源结点,源结点获得了査询结果,则不再转发查询信息;否 则继续;对于跳数和平均延时小于阈值,则不需询问源结点,直接转发査询 信息。这样可以大大减少源结点的数据传输负担。
阈值的选择通过计算平均延时和平均跳数来获得或者通过实验统计,可 以得到一个较稳定的平均延时和平均跳数。从实验结果看可减少多达40%的转
下面举例说明本发明中用到的网络模型是基于KaZaA的索引结构。假设 N为结点集合,n为N中结点的个数,G为结点x的邻居个数,xeN。而c为 c.的期望值,可称之为每个结点平均邻居个数或结点的平均度。虽然技术方案 上并不严格要求结点邻居选择上的严格随机性,为了简化,这里假定结点邻 居是全网随机分布的。
如图l所示算法在阶段一的示例图,假设N中有15个结点,结点平均度 为2,即11=15, c=2。本发明算法分为两个阶段,在阶段一 (也称随机搜索阶段),假定结点s为源结点,查询首先从这里发起,s首先向它的2个邻居
i和j发送査询信息,查询信息中携带了一定数量的票据以及其它一些信息, i和j接收到査询信息后继续向它们的邻居传递査询信息,如此向下传递直到 这一轮査询中的票据被消费完或找到査询结果返回。如果这一轮査询未找到 结果或已经超时,则这时票据按"步长因子增长然后继续下一轮查询,如些重
复直到找到结果或票据数增加到本发明算法中描述的义n从而进入阶段二的 查询。
阶段一主要用于査询流行文件,而在查询流行文件时,票据传播过程很 少出现重复接收情况,搜索过程大致遵循一个树型结构。因此图l中的査询 过程可以用图3的一棵查询树来表示。这个过程可以用随机采样和随机锚点 等策略来进行优化。当采用随机采样策略时,每一轮查询信息携带的票据中 都含有一定量的采样票据,查询过程中每个消费掉一张采样票据的结点都会 向s发回一个通知,在某一轮查询过程中当源结点s收到采样票据通知数达 到采样票据总数的/ 百分比时,如果这时的时间未到超时时间,则直接发起下 一轮查询,而不是等超时时刻到来时再发起下一轮査询,这样就可以减小超 时设置带来的对査询延迟的影响。
随机锚点策略的一个简单示意图如图4所示。采用随机锚点策略时图4 中结点s就不是每一次査询的源结点了。如图4 (a)所示,第一轮査询时s 是锚点,査询从这里发起,这时s可以从它的邻居里随机选择一个(比如j) 当作下一轮査询的锚点,进行这轮査询时结点都不会向该锚点发送查询信息, 即使j是它们的邻居。如果这次未找到结果,下一轮查询开始时j则成为了 新的査询源结点,如图4 (b)所示,然后j又会从它的邻居里随机选择一个结点(比如k)当作新的锚点并继续下面的査询,如果还未找到结果则结点k
成为第三轮查询的源结点,如图4 (c)所示,它又会按照相同的方法选择新 的锚点然后进行査询,如此重复以上过程来完成査询直到找到结果。通过这 种方法可以有效减少重复访问结点的次数。
当票据在搜索的第一阶段已经足够大时,如果继续采用这种沿随机邻居连 接方向传送信息方式来搜索新的未被传送到的结点,必然会导致重复访问结 点问题越来越严重,效率将会越来越低。本发明算法中在随机阶段当票据数 较大却还未找到结果时会转入第二阶段査询即阶段二 (也称环行搜索阶段, 实际上,加入该阶段主要是更好解决非流行文件的搜索,如果目的是将本发 明应用于流行文件搜索,可以不引入阶段二)。该阶段实施分段环状传送。我 们将随机阶段最后一轮査询所访问到的结点称为随机结点,正是这些随机结 点将环划分成若干段,每个随机结点负责其中的一段。査询信息就在环上进 行分段环传送,每个随机结点都向它环上的后继结点发送査询信息,它将査 询信息沿后继结点传送,后者又继续向其后继结点传送査询信息直到遇到一 个接收到过査询信息的结点为止。在图1中,假设第一阶段査询的最后一轮 到达如图所示的7个结点,那么结点组成环的分段情况则如图2所示,图中7 个随机结点把环分成了7段,每个随机结点负责一个分段。环形阶段避免了 完全洪泛等算法在转发消息后期产生的大量重复接收信息的现象。
权利要求
1、一种覆盖网洪泛式文件搜索方法,基于票据的搜索方法,票据是对某个结点搜索的许可,所述搜索方法其特征在于,包括如下步骤1)第一阶段假定一个源结点,查询首先从源结点发起,源结点的查询信息中携带了一定数量的票据以及其它一些信息,接收到查询信息后自己消费一张票据,并继续向它们的邻居传递查询信息,如此向下传递直到这一轮查询中的票据被消费完或找到查询结果返回,如果这一轮查询未找到结果或已经超时,则这时票据按α步长因子增长然后继续下一轮查询,如些重复直到找到结果或票据数增加到λn从而进入阶段二的查询,其中n表示系统中的结点数,λ(<1)是一个系统参数;2)第二阶段实施分段环状传送,所有的覆盖网结点通过前驱结点和后继结点的引入,形成一个自然的环状连接结构,将上述随机阶段最后一轮查询所访问到的结点称为随机结点,这些随机结点将环划分成若干段,每个随机结点负责其中的一段,查询信息就在环上进行分段环状传送,每个随机结点都向它环上的后继结点发送查询信息,后者又继续向其后继结点传送查询信息直到遇到一个接收到过查询信息的结点为止。
2、 根据权利要求1所述覆盖网洪泛式文件搜索方法,其特征在于,所述第一阶段搜索可以用随机采样策略和随机锚点策略来进行优化。
3、 根据权利要求2所述覆盖网洪泛式文件搜索方法,其特征在于,所述随机采样策略为每一轮查询信息携带的票据中都含有一定量的采样票据,查询过程中每个消费掉一张采样票据的结点都会向源结点发回一个通知,在某一轮査询过程中当源结点收到采样票据通知数达到采样票据总数的/ 百分比时,如果这时的时间未到超时时间,则不等待査询超时设置直接发起下一轮査询。
4、根据权利要求2所述覆盖网洪泛式文件搜索方法,其特征在于,所述随机锚点策略为第一轮査询时设定锚点为源结点,査询从锚点发起,这时锚点可以从它的邻居里随机选择一个结点当作下一轮査询的锚点,进行这轮査询时结点都不会向下一轮查询的锚点发送查询信息,即使是它们的邻居,如果这次未找到结果,下一轮査询从上一轮定的锚点开始,然后又会从它的邻居里随机选择一个结点当作新的锚点并继续下面的査询,如果还未找到结果则上一轮定的锚点成为第三轮査询的源结点,它又会按照相同的方法选择新的锚点然后进行査询。
全文摘要
本发明涉及一种覆盖网洪泛式文件搜索方法,第一阶段通过每次向所有随机邻居转发查询信息从而降低了洪泛树的深度,也相应减少了查询的延迟;另外它有效降低了在连续的查询轮次中搜索负载无谓的急剧增加。除此以外,通过参数α,本算法使得负载增加变成可调节的。算法中的阶段二也是为了更有效率地转发查询信息,减少了重复访问结点的次数,从而有助于减少网络流量。另外,针对第一阶段搜索过程中的问题,引入了算法优化策略。
文档编号G06F17/30GK101510198SQ20081020408
公开日2009年8月19日 申请日期2008年12月5日 优先权日2008年12月5日
发明者涛 李, 磊 赵, 陈世平, 饶凯华 申请人:上海理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1