引入节点重要性的对等网络超级节点选择和资源搜索方法

文档序号:7664944阅读:206来源:国知局

专利名称::引入节点重要性的对等网络超级节点选择和资源搜索方法
技术领域
:本发明提出一种对等网络中的超级节点选择和资源搜索方法,属于计算机网络、对等网络
技术领域
。技术背景目前的对等网络应用中,Gnutella是最成熟和最多开发支持的无中心节点的对等网络协议。Gnutella是一份开放的协议,任何人都可以开发Gnutella兼容软件,开发者们互相竞争、改进,创造了一个不断改进、迅速变化和完善的用于文件共享的对等网络。任何人只需要把他希望共享的文件放在硬盘的一个目录下,然后利用Gnutella网络就可以将资源共享给所有该对等网络的用户。Gnutella是没有中心的,Gnutella允许用户与其他Gnutella节点直接联系,可以分享任何种类文件,大多数文件共享的系统集中于媒体文件。目前Gnutella己经在大规模运行,而且主机量已经达到上万级别,共享的文件数量已经达到数十万。Gnutella在起初使用的0.4版本协议是无中心节点的,主要通过洪泛的方式进行査询等操作,在一段时间内,0.4版本协议取得了很大的成功。为了改进网络利用率,随后提出了0.6版本协议。GnutellaO.6版本提出了超级节点和普通节点的概念,当网络运行一段时间后,网络中一些运行稳定、利用率和效率较高的节点(一般为在线时间长并且邻居节点数多的节点)将被选举为超级节点,这些节点构成整个Gmrtella0.6网络消息通信的骨干。其他节点将变为普通节点,他们优先连接到一个或几个超级节点上,由超级节点管理节点间通信和查询等操作的消息传递等。超级节点的选取问题又是该种网络设计的重点问题之一。GnutellaO.6中一般是采用计算自己的在线时间和节点度,如果超过相应的阈值,而自己的邻居中又没有超级节点时,则向自己的邻居广播自己成为超级节点,然后此信息向网络中扩散,普通节点就会越来越多的直接将超级节点添加为邻居节点,这样超级节点就拥有了更多的邻居,也即拥有了更多的资源,来引导网络中资源的搜索。GnutellaO.6设计的另一个重要问题是如何解决超级节点的失效问题,这是提高网络效率、增强网络鲁棒性的关键。超级节点承载比较大的负载,所以网络的负载情况很不均匀,为了提高超级节点对等网络的鲁棒性,GnutellaO.6协议规定每个叶结点可以同时属于d个不同超级节点,每个叶结点必须把自己的文件索引传送给超级节点,这样会增加网络流量,且占用超级节点的有效带宽,使得超级节点数目增加,且规定d最大不超过3。与Gnutella0.4不同的是,Gnutella0.4的消息在所有的节点之间进行泛洪,以节点为单位进行消息的核查处理;而Gnutella0.6的消息仅在超级节点之间进行泛洪,以簇为单位进行消息的查找工作。对Gnutdla0.6而言,虽然不对消息的发起节点做消息查找,但显然不能将消息传给所有和它相邻的节点,而是首先要在消息的发起节点所在的簇进行本地査找,若消息的发起节点是叶节点,那还需要找到管理该叶节点的超级节点,然后再由管理该簇的超级节点将消息发送给所有和该超级节点相邻的其他超级节点。
发明内容本发明的目的是通过提出一种分布式迭代的计算对等网络中节点重要性的方法来改善对等网络中的资源搜索性能。本发明的目的通过以下技术方案实现-一种引入节点重要性的对等网络超级节点选择和资源搜索方法,它包括以下步骤1)计算网络中各节点的重要性;2)根据重要性确定超级节点;3)进行资源搜索过程。所述步骤l)进一步包括以下子步骤1.l)将对等网络中的节点抽象为图中的节点,在可直接通信的节点之间建立边;1.2)计算每条边的权重和每个节点的邻居节点数;1.3)采用分布式迭代的算法计算各节点的重要性值。所述步骤2)进一步包括以下子步骤2.l)给定网络中超级节点数量的期望值和选取超级节点的阈值,将节点重要性大于阈值的节点选为超级节点;2.2)若所得的超级节点的数量与期望值有偏差,则调整阈值后重新选取超级节点。所述步骤3)进一步包括以下子步骤3.l)构造簇,即确定每个超级节点所管辖的叶节点范围;3.2)构建超级节点之间拓扑关系。本发明的特点是通过确定网络中每个节点重要性,来指导超级节点的选择,优化资源搜索过程;阐述了根据节点负载因子作为节点重要性评估的方法进而可以作为选取网络中超级节点的标准,并且此算法是动态的,超级节点会随着网络拓扑是动态变化发生变化;提出了根据节点负载因子在超级节点附近选择其他邻居节点进行通信来缓解超级节点的负载压力,使网络的拓扑结构更加稳定。本发明的有益效果是首先引入节点重要性,替代现有的节点邻居数作为选择标准,提出分布式迭代的重要性计算方法,根据节点重要性选择超级节点,保证了网络的查全率(系统在一个预定的时间内,检索到合格答案的数量占系统当时所有在线结点维护合格答案总数的比率)。此外,因采用了更合理的评估网络节点重要性的方法,故利用本发明检索文件所产生的消息量要小于Gnutella产生的消息量。另外,由于本发明可动态调整超级节点,因而可提高网络的稳定性,使得在超级节点崩溃后,出现分片或者死区的概率降低。本发明利用网络的拓扑结构信息,更合理地计算网络中节点的重要性,在此基础上选择超级节点并进行资源搜索。相对于目前仅仅利用节点度的做法,本发明更好地反映了节点在网络中的价值。相应的超级节点选择、资源搜索算法也更有效率。本方法根据网络的拓扑结构,釆用分布式迭代的方法计算出节点的重要性值,灵活高效,不存在单点故障问题,能够在网络结构动态变化的P2P网络环境中快速计算节点在P2P网络中重要性。图l是计算重要性算法实例;图2是负载因子偏差示意图;图3是调整网络提高网络稳定性示意图;图4是增加链路报文的格式。具体实施方式本发明所涉及的引入节点重要性的对等网络超级节点选择和资源搜索方法,可以划分为三个步骤1)计算节点重要性,2)根据重要性确定超级节点,3)资源搜索过程。以下分别对这三方面内容进行说明。1、计算节点重要性1.1节点重要性的计算方法节点重要性是对其能给网络提供的服务的度量,与节点的邻居数目、拓扑关系都有关系。最直接的测量节点重要程度的方法是统计最近一段时间每个节点转发的报文数目。统计的时间段过短,突发的流量会影响估计的结果;而当统计的时间段过长,又不能及时反映出目前网络中网络流量的变化情况。因此,需要寻找一种通过网络拓扑结构对节点的影响因子进行估计的方法,利用局部信息实现对节点影响因子做出准确估计,以便应用到规模较大的网络中。假设对等网络中节点之间的通信具有随机性,节点的邻居数目越多,其对网络的知识也就越多,能够为对等网络提供高质量的服务。或者有重要的节点和该节点相连时,该节点的重要性也较高。这种特性在对等网络中非常普遍,当一个节点是大量节点的逻辑邻居或者是某一(几)个关键节点的逻辑邻居时,其本身也就重要,将要承担的网络通信量也更大。由于对等网络中,节点可以分为普通节点、超级节点两类,使得不同的边可能具有不同的权重,若直接采用上述方法则无法体现出该特点。在具体的计算过程中,通过区分超级节点之间、超级节点与普通节点、普通节点之间的链路,赋予不同的权重,实现了更合理的重要性评估。考虑到网络中存在这样的情况,节点的链路是不对称的,有时普通节点A的邻居列表中存在超级节点B,但是超级节点B的邻居列表中并没有普通节点A。所以P2P网络是非对称的通信网络。设节点u重要性为重要性函数(IF,ImportantFunction),可以表示为IF(u)。节点u到节点v之间链路的权重表示为W(u,v),若u、v均为普通节点则权重为1,若u、v分别为超级节点和普通节点或者均为超级节点,则它们之间链路的权重W(n,v)表示为2。Tl,T2,...,Tn为将A视为邻居的所有节点,则节点A重要性满足以下关系IFn(A)=(l-d)+d.(tlFnl(Ti)--,,乃)-)(1)其中,d为阻尼因子,取0.S5,控制着影响因子计算过程的收敛速度,d越大收敛越快。Degree(Ti)是节点Ti的邻居的数目,SuperDegree(Ti)是Ti的邻居中超级节点的数目。例如图1所示,当A、B、C都是普通节点时,3个节点的重要性需要满足IF(A)=0.15+0.85*IF(C)*1/1(注节点C的邻居数为1,超级节点数全部为0)IF(B)=0.15+0.85*IF(A)*1/2(注:节点A的邻居数为2)IF(C)=0.15+0.85*(IF(A)伞l/2(注:节点A的邻居数为2)+IF(B)*1/1)(注:节点B的邻居数为1)图中IF(A卜0.4,IF(B)=0.2,IF(C)=0.4是一组满足该条件的解,由于重要性值具有相对性,及同时乘以一个常数后仍能使上述等式成立。公式(1)所定义的节点重要性,是由视该节点为邻居的节点数目及各自的重要性决定的。对于节点重要性的计算,可采用与公式(1)形式相似的迭代公式(2)完成,如下IF0(A)=1(2)<formula>formulaseeoriginaldocumentpage7</formula>公式中IFq(A)=1在迭代开始前所有节点重要性全部设置为相同,将IF"(A)表示第n-l轮迭代的结果,IF"A)表示第n轮计算的结果,通过该公式即可最终求得所有节点的重要性值。仍以图l为例子,为简化计算过程,这里取了(1=1,则经过30轮迭代后重要性收敛,其中开始与结束的几轮迭代的结果如表1所示-<table>tableseeoriginaldocumentpage7</column></row><table>表1总的来说,网络中所有节点的IF(u)满足的约束是一个n元一次方程组,利用迭代求出数值解,其实质就是首先设置每个节点的重要性值为1,不断根据上述公式使用其邻居节点的重要性值重新计算自身重要性。其具体流程如下1.l)将对等网络中的节点抽象为图中的节点,在可直接通信的节点之间建立边;1.2)计算每条边的权重;计算每个节点的邻居节点数;1.3)采用分布式迭代的算法计算各节点的重要性值。其分布式体现在节点在计算节点重要性值时无需整个网络的信息,仅根据节点收集的自己的邻居信息来完成本节点重要性值的计算过程,具体计算过程如下;1.3.1)为每个节点设置初始重要性值1;1.3.2)采用迭代公式(2)开始迭代,节点根据各自邻居的重要性重新计算各自重要性值;1.3.3)对网络拓扑持续变化的网络,返回上一步骤继续迭代;1.3.4)对于静态网络,根据重要性值是否趋于稳定判断是否终止计算;而对于动态网络,可以设定一个时间周期,在一个周期内根据重要性值是否趋于稳定判断是否终止本周期的计算,直到进入下一个时间周期继续做迭代运算,并且节点设置的初始重要性值为本周期的计算结果。趋于稳定的标志是两次迭代的结果之间相差比较小的值,也即llFn(")-HV|〈=e,其中e为一个比较小的值。IFn(")为第n轮计算得到的节点u的重要性值。本方法根据网络的拓扑结构,采用分布式迭代的方法计算出节点的重要性值,灵活高效,不存在单点故障问题,能够在网络结构动态变化的无线自组织网络环境中快速计算节点在自组织网络中重要性。1.2通告报文设计节点周期性计算出重要性值之后向节点物理邻居通告节点的重要性值信息,如图2所示其中,字段的解释如下PacketLength:整个数据包的长度;PacketSequenceNumber:数据包的序号;SourceNodeID:源节点的节点ID;ValidateTime:从此报文中得到的信息有效时间,超过时限没有更新的话应被删除;MessageType:标识消息类型,根据不同类型的消息有不同的取值,分别表示不同的通告报文;MessageSize:报文中所包含信息单元的个数,不同消息有不同含义;NodeImpactFactor:节点的重要性估计值;SumofWeight:节点的所有邻居节点的链路权重之和;AcktoNeighbours:对之前收到的邻居的重要性值通告报文进行确认。1.3存储表设计具体计算中,每个节点需要维护l)逻辑邻居表、2)重要性信息表,这两张表的定义如下逻辑邻居表(logical—neighbour—table),增加对链路建立原因的历史记录,便于追踪为维持网络稳定性而建立的链路。每条表项可表示为一个三元组<neighbour,build—reason,lifetime>。其中,neighbour是邻居节点的ID;build—reason是对于建立原因的说明;lifetime表示邻居信息有效时间;重要性信息表(IF一info—table)记录节点两跳邻居范围内的所有节点的IF信息,每条表项表示为一个四元组<neighbour,hop,IF,lifetime>。其中neighbour是邻居节点的ID;h叩是该邻居离节点本身的跳数,可以取l或者2;IF是该邻居目前的IF值;lifetime表示邻居信息有效时间。节点与邻居定期交换所拥有的信息并完成重要性的计算。节点重要性值的计算要求按轮进行迭代,但P2P网络规模较大实现同步比较困难,为降低对同步的需求,协议实现中只假设节点的时钟推进速度一致,节点只保证按照相同的时间间隔通告、调整节点重要性值。重要性值反映该节点对网络的影响力,可用于选择超级节点,指导资源搜索过程,以下将进一步描述。2、根据重要性确定超级节点在本发明所设计的方法中,节点分为两种类型叶子节点和超级节点。为此给节点添加类型属性。对于一个节点来说,它不仅拥有物理邻居,还有逻辑邻居,所以需要给节点添加一个逻辑邻居表,为了方便管理超级节点,每个超级节点还需要维护超级节点之间的邻居表,这个邻居表只有超级节点才有。此外还需增加一些相应的获得这些属性的操作,如获得逻辑邻居表的操作、获得节点类型的操作等。根据重要性取出一定数目超级节点,在此仅根据每个节点的重要性来进行超级节点的选取,实际系统中还考虑节点在网络中持续时间等因素。假定以STANDER一IMPACT为选取超级节点的阈值,节点重要性大于阈值的节点则被选为超级节点。阈值的选定会影响到产生出的超级节点数目。若所得到的超级节点数与期望值有一定偏差,则可以调整阈值继续计算。若得到的值小于期望值,则可以适当减小阈值,反之则对STADNER一IMPACT不断增大,直到所得的超级节点小于或者等于期望值。最终选取合适的STANDER一IMPACT值作为选取超级节点的标准。由于节点负载能力有限且系统负载动态变化,所以节点容易超载,造成网络割裂,资源利用率降低。为了缓解超级节点的负载情况,本发明增添少量邻接关系,在系统总开销变化较小的前提下,减少负载变化对超级节点的压力。应用节点对于自身影响因子的估计值,实现维持网络稳定的调整的局部化算法是完全可行的,调整的目标是尽可能减小邻居节点之间影响因子的差值。假设待调整网络的局部拓扑如图3所示图中,节点u为超级节点,节点v、w为u的逻辑邻居节点,考虑在v、w之间建立链路时,IF(u),IF(v),IF(w)的l次迭代时的变化情况,当节点v、w之间建立链路后,v、w的链路总权值上升,相应的链路uw、uv在节点v、w的所有链路中所占的比值下降,因此IF(u)值降低,而IF(v)与IF(w)的和没有变化,由于W(v,w)=W(w,v),在u、w各自的链路总权值相等的情况下,IF值较大的节点的IF值会稍微降低,而IF较小的则会有所增加,但总的说来,其值将升高。可见,通过增加节点v、w之间的链路,所涉及的3个节点的IF值趋于平均,网络整体将趋于稳定。增加链路报文格式如图4所示其中,字段的解释如下-PacketLength:整个数据包的长度;PacketSequenceNumber:数据包的序号;SourceNodeID:源节点的节点ID;ValidateTime:从此报文中得到的信息有效时间,超过时限没有更新的话应被删除;MessageType:标识消息类型,根据不同类型的消息有不同的取值,分别表示不同的通告报文;MessageSize:报文中所包含信息单元的个数,不同消息有不同含义;Linkenda:表示增加链路的一端节点v;Linkendb:表示增加链路的一端节点w。节点接收到此报文后,在自己的逻辑邻居列表中增添相应的邻居节点信息。3、资源搜索过程超级节点选取出来后,还要构造簇,即确定每个超级节点所管辖的叶节点范围。关于如何确定超级节点所管辖的叶节点可以有不同方法,在此仅为每个超级节点随机地指派平均数目的叶节点。构建了簇之后还要构建超级节点之间的拓扑关系。这些产生拓扑图的方法都是对网络的节点的邻居表项中增添邻居节点的相关信息得到。网络构建好之后,还要对消息的传播处理方式做相应改动。不再采用Gnutella中消息在所有的节点之间进行泛洪的方式,本发明采用的方法是消息仅在超级节点之间进行泛洪,以簇为单位进行消息的査找处理。而本发明不将消息传给所有和它相邻的节点,而是首先要在消息的发起节点所在的簇进行本地查找,若消息的发起节点是叶节点,那还需要找到管理该叶节点的超级节点,然后再由管理该簇的超级节点将消息发送给所有和该超级节点相邻的其他超级节点。可以根据本节点所保存的超级节点的重要性值划分为不同的超级节点等级,如向大于一定值VAL_1的超级节点转发TTL值为ri査询报文的査询报文,而向重要性值介于VAL—1和VAL_2之间的超级节点转发查询报文TTL值为n-1的查询报文。VAL_1、VAL—2等值可以根据资源的查询效率来自动调整。基于当前Gnutella网络统计特性的分析,重点分析了影响搜索性能的因素超级结点。分析结果表明上述指标对于设计一个新的搜索策略非常重要,它们构成了判断节点是否转发搜索请求的重要指标。在据此判断指标所提出的新型搜索机制中,每个节点就可以在选择邻居转发搜索请求时更加有目的性,搜索成功率会更高。与基于洪泛策略和基于随机行走策略的传统搜索机制相比较,此搜索策略在保持高搜索成功率的前提下能够大大减少消息通信量,从而减少系统开销,提高系统效率。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求1.一种引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于包括以下步骤1)计算网络中各节点的重要性;2)根据重要性确定超级节点;3)进行资源搜索过程。2.如权利要求1所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于-所述步骤l)进一步包括以下子步骤-1.l)将对等网络中的节点抽象为图中的节点,在可直接通信的节点之间建立边;1.2)计算每条边的权重和每个节点的邻居节点数;1.3)采用分布式迭代的算法计算各节点的重要性值。3.如权利要求2所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于-在步骤1.2)中按如下规定计算每条边的权重两个普通节点之间的边的权重为1,超级节点与普通节点或超级节点之间的边的权重为2。4.如权利要求3所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于-所述步骤1.3)进一步包括以下子步骤1.3.1)为每个节点A设置初始重要性值1;1.3.2)采用以下迭代公式开始迭代,节点根据各自邻居的重要性重新计算自己的重要性值:IFn(A)=(1-d)+d(td(Ti)--')-)其中,W(A,Ti)为节点A到节点Ti的权重,Tl,T2,...,Tn为将A视为邻居的所有节点,d为阻尼因子,Degree(Ti)是节点Ti的邻居节点的数目,SuperDegree(Ti)是节点Ti的邻居节点中超级节点的数目;1.3.3)对网络拓扑持续变化的网络,返回上一步骤继续迭代;1.3.4)对于静态网络,根据重要性值是否趋于稳定判断是否终止计算,而对于动态网络,可以设定一个时间周期,在一个周期内重要性值是否趋于稳定判断是否终止本周期的计算,直到进入下一个时间周期再基于本次的值继续做迭代运算。5.如权利要求4所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于在所述步骤1.3.4)中,当两次迭代的结果之差比较小时,则认为网络已趋于稳定。6.如权利要求1所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于所述步骤2)进一步包括以下子步骤2.l)给定网络中超级节点数量的期望值和选取超级节点的阈值,将节点重要性大于阈值的节点选为超级节点;2.2)若所得的超级节点的数量与期望值有偏差,则调整阈值后重新选取超级节点。7.如权利要求1所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于-所述步骤3)进一步包括以下子步骤3.1)构造簇,即确定每个超级节点所管辖的叶节点范围;3.2)构建超级节点之间拓扑关系。8.如权利要求1或7所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于-在所述步骤3)中,査询消息仅在超级节点之间进行泛洪,即,不将消息传给所有和它相邻的节点,而是首先要在消息的发起节点所在的簇进行本地核査,若消息的发起节点是叶节点,则还需要找到管理该叶节点的超级节点,然后再由管理该簇的超级节点将消息发送给所有和该超级节点相邻的其他超级节点。9.如权利要求8所述的引入节点重要性的对等网络超级节点选择和资源搜索方法,其特征在于-将超级节点依据其重要性值划分为不同的等级,且根据超级节点不同的重要性值赋予不同级别的TTL值。全文摘要本发明涉及引入节点重要性的对等网络中超级节点选择和资源搜索方法,属于对等网络
技术领域
。它通过计算节点重要性来识别维持通信、保证服务性能的高效节点。其步骤如下1)计算网络中各节点的重要性;2)根据重要性确定超级节点;3)进行资源搜索过程。本发明所采用的分布式迭代的节点重要性计算方法是局部化的算法,具有灵活高效、不存在单点故障问题、能够快速适应对等网络的网络拓扑变化的特点,其效果明显优于传统的根据节点邻居数选择网络超级节点的方法。文档编号H04L12/24GK101145976SQ200710176639公开日2008年3月19日申请日期2007年10月31日优先权日2007年10月31日发明者威吴,忠周,刚罗,蔡军霞,赵沁平申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1