基于节点轨迹标签的无结构p2p副本一致性维护方法

文档序号:7954352阅读:133来源:国知局
专利名称:基于节点轨迹标签的无结构p2p副本一致性维护方法
技术领域
本发明涉及电子计算机网络技术,进一步是指一种基于节点轨迹标签的无结构P2P副本一致性维护方法。
背景技术
副本的存在是提高P2P系统可扩展性、容错性、可用性和减少查询响应时间的有效手段。P2P系统最大的特点就是用户之间直接共享资源,为了提高P2P系统的容错性、可用性并减少查询响应时间,P2P系统中文件都保存多个副本。目前P2P副本的研究重点集中在文件副本的建立放置策略和定位查找方法,以便合理地配置副本资源的位置,通过优化资源查找来保证网络的负载均衡。
无结构分散式P2P副本一致性维护问题是指在无结构分散式P2P网络中,一个或者多个副本节点由于动态读写原因,副本出现改动时,通过节点间消息传递,确保相关节点保存的文件副本一致性。然而,以往研究认为P2P系统中共享的是静态资源,没有经常需要更新的内容,对这些资源的访问通常是只读形式,如mp3、video等。随着P2P的新型应用如P2P游戏、信任管理、目录服务、联机拍卖、远程协作等的出现,共享的文件以只读的形式转换为可读写形式,文件更新频繁,确保其副本的一致性是保证其正确运行的关键。因此,设计P2P网络多个资源副本的一致性维护方法,确保P2P新业务的开展,是十分迫切的事情。一方面,如果没有有效的一致性维护方法,P2P应用就只能局限于提供静态的非频繁更新的文件共享;另一方面,新业务的开展需要一致性维护方法来为动态内容更新提供保障。
目前,针对P2P副本一致性维护的研究并不是很多。在结构化P2P网络中,如Chord、CAN等,各节点的连接具有某种规则的结构,通过特殊设计的方法来严格控制数据存放和网络拓扑,一致性维护往往可以借助分布式哈希表完成,如“副本分割树”的结构化P2P网络副本一致性维护方法。在无结构P2P网络中,如Gnutella、Freenet等,由于这类系统由大范围的自愿节点组成,没有对拓扑结构和文件存放的控制,对于数据的可用性和持久性通常只提供松散的保证,现有的无结构P2P网络中存在的副本一致性维护方法有基于洪泛(Flooding)的副本一致性维护方法、基于谣言(Gossip)的副本一致性维护方法和基于副本链(Replica Chain)一致性维护方法。但洪泛法(Flooding)会在网络中产生大量的冗余信息,其跳步Time-to-Live(TTL)选择具有盲目性;而谣言法(Gossip)在减少冗余信息和所有副本都得到一致性维护之间需要权衡;副本链(Replica Chain)一致性维护方法虽然可以有效的减少冗余消息的产生,但是每个节点必须维护一个周围节点的副本链,在无结构分散P2P网络中,节点只知道其直接相连的邻居节点,构造和维护一个副本链带来了额外通信交互开销,而且此方法性能参数k的选择也如洪泛法中TTL选择一样是一个折中的结果。
已经存在的无结构P2P网络副本一致性维护方法,要么传输消息的冗余量大,要么需要额外构造表现网络的拓扑信息结构来辅助更新消息传输,参数确定困难,方法实现受一定限制,判断更新消息是否冗余是在消息报文传播后,不能在传输的源头进行控制,不便于P2P系统的扩展。

发明内容
本发明要解决的技术问题是,针对目前无结构P2P副本一致性维护方法对已经更新过的节点没有记忆性,产生大量的消息冗余这一缺陷,提出一种基于节点轨迹标签的无结构P2P副本一致性维护方法;该方法从更改传播消息报文的角度出发,在报文头部增加一个用于记录已经收到更新消息节点的地址轨迹标签,将已经获得更新的节点地址信息作为更新消息的一部分进行传输,当需要发起新一轮消息传输时,借助节点轨迹标签,对邻居节点进行地址查询检查判断邻居节点是否已经收到更新消息,完成对冗余消息的提前检测,减少消息的冗余传输,同时为了减少附加到报文中的节点地址的长度,提出用BloomFilter优化节点地址链表轨迹标签表示和节点地址查找一致性维护方法。
本发明的技术解决方案是,所述基于轨迹标签的无结构P2P副本一致性维护方法为从直接更改传输副本更新消息报文的角度出发,通过在报文头部增加一个已经收到更新的节点轨迹标签,每轮更新消息传输时,消息传输源节点将所有发送的目标节点添加到这个节点轨迹标签中,完成对已经传输节点的记录,收到消息的节点通过检查报文中的节点轨迹标签,完成对冗余消息的提前检测,减少消息在节点间的冗余传输。
本发明所述方法可以大大减少副本冗余传输消息数目,降低了副本一致性维护代价,增强P2P网络的可扩展性,为P2P网络开展动态文件更新的新业务提供保障。
以下对本发明方法做出进一步说明。
图1(a)Gnutella中采用洪泛法(Flooding)进行一致性维护时消息发送过程。节点①是更新的发起者,第一轮传输时,节点①向其邻节点发送更新消息 ①->②,①->③,①->④;第二轮传输时,节点 ②,③,④向其邻节点发送消息 ②->③,②->④,②->⑤,③->②,③->④,③->⑤, ④->②,④->③,④->⑤;第三轮传输时,节点⑤向其邻节点发送消息⑤->③,⑤->④,三轮传输过后共产生更新消息19条,平均每个节点收到2个重复的更新消息。
大量冗余消息的产生,来自盲目的洪泛,该方法中每轮的传输都只排除一个节点(消息来源节点)。如第二轮中 ②,③,④都是节点①的邻居节点,是①的直接近邻。他们之间的互传消息 ②->③,②->④,③->②,③->④, ④->②,④->③都是冗余消息。
基于节点轨迹标签一致性维护方法是将已经接收更新的节点地址记录下来,将其放在更新消息报文头中发送给其他节点,使其他节点不再发送更新消息到已经记录过的节点,从而减少消息冗余。根据无结构P2P网络中的假定(每个节点只知道与其直接相连的邻居节点的信息),本发明方法通过在传输的消息报文中预留一个节点轨迹标签,将每次发送的目标邻居节点集记录在此标签中,收到消息后,首先检查节点轨迹标签,更新消息只发往不在标签中的邻居节点,这样就可以避免消息在近邻节点间的冗余传输。其节点轨迹标签方法的消息传输过程如图1(b)所示,①向其邻节点 ②,③,④发送副本更新消息,第一轮①将发送目标节点集和自身 作为节点轨迹添加到更新报文头部,第一轮产生更新消息 ①->②,①->③,①->④;第二轮传输,节点 ②,③,④收到更新消息后,首先检查其邻节点是否已记录在节点轨迹标签,只向不在标签中的节点发送更新消息②->⑤,③->⑤,④->⑤,同时在标签中记录新的节点⑤,这样,第二轮中减少更新消息10条;节点⑤收到的更新消息标签中已包含了其所有邻居节点,所以不再传输,这样减少2条更新消息。虽然基于节点轨迹标签的方法思路简单,却可以有效减少传输冗余,而且可以减少一致性维护时间(如,最后一轮节点⑤不再继续传输更新消息给其他节点)。
基于节点轨迹标签的P2P一致性维护方法的消息报文如图2所示第一部分是添加的节点地址轨迹链表标签,第二部分是副本更新消息。
节点轨迹标签一致性维护方法其思想是在更新消息报文头部添加已经传输的节点地址信息,节点在每发起新一轮传输时,首先检查自己的邻居目标节点是否已经在更新消息的节点轨迹标签中,如果已经存在,说明此邻居节点已经得到更新消息,不向此节点发送,否则就向此节点发送,方法的具体实施流程如图3所示,包括三个主要步骤步骤1产生新添加到报文中的地址轨迹链表标签。收到副本更新消息的节点首先检查自己是否为第一次收到更新消息,如果是第一次收到更新消息,就发起一轮新的传输。其产生新的轨迹标签过程为1)老标签剥离收到副本更新消息的节点从传输消息报文头部得到附加的节点地址轨迹链表标签,2)新标签产生将本轮需传输的目标邻居节点地址通过插入运算添加到老的地址轨迹标签中,得到的新的地址链表标签。
步骤2判断目标邻居节点是否需要发送更新消息。通过检查接收到的副本更新消息报文的地址轨迹标签链表是否包含邻居节点来判断是否向邻居节点发送更新消息,如果包含,说明此邻居节点已经获得更新消息,不再向此节点发送,否则就向此节点发送。其具体的操作是在地址轨迹链表标签中进行查找运算,逐个比较查询本轮传输的邻居节点地址是否在轨迹链表中,如果查找结果为真,不向此节点发送,否则就向此节点发送。
步骤3发送副本更新消息。将消息报文中的地址轨迹链表标签用步骤1产生的新标签替代,发送到步骤2得到的需要发送副本更新消息的邻居节点。
上述方法具有以下优点首先,节点轨迹标签保存了更新消息传输轨迹,可以杜绝消息传输循环;其次,保证了近邻之间的消息不传递;最后,消息发送源节点可以主动判断来避免产生消息冗余,减少传输带宽。
本发明进一步提出的Bloom Filter优化地址标签无结构P2P副本一致性维护方法,是对直接存储节点地址链表的轨迹标签法的优化,通过Bloom Filter结构缩小轨迹标签的存储空间,简化节点是否在轨迹中的查询判断。亦即,它是利用Bloom Filter数据结构表示地址轨迹标签和节点地址掩码,缩小节点轨迹表示空间复杂度,简化邻居节点是否在轨迹中的查询判断,同时降低查询算法的时间复杂度。
虽然节点轨迹标签的副本更新方法可以减少消息传播数量,但是由于其在报文的头部增加了节点地址信息,消息报文变长,添加的地址链表长度是网络节点的度数和消息传播轮数的递增量。为了减少地址链表的长度,改进直接存储节点地址链表的轨迹标签方法,设计了用Bloom Filter优化地址链表轨迹标签无结构P2P副本一致性维护方法。Bloom Filter是一种简洁的用来表示集合、支持集合元素查询的结构,它对集合中元素的表示只需要少数几个比特。
优化后方法其传输消息报文如图4所示一部分是用固定长度的BloomFilter结构(0、1串)表示的地址链表,另一部分是副本更新消息。
消息报文用固定长度的Bloom Filter结构(0,1位串)代替原来的IP地址链轨迹标签(即附加到更新消息的地址轨迹标签用固定长度的Bloom Filter结构以0,1位串表示),同时每个节点保存一个用同样长度Bloom Filter表示的节点地址掩码。
Bloom Filter优化地址链表轨迹标签无结构P2P副本一致性维护方法其具体方法实施流程如图5所示,包括三个主要步骤步骤1产生新的用Bloom Filter表示用于添加到报文中的地址轨迹标签。收到副本更新消息的节点首先检查自己是否为第一次收到更新消息,如果是第一次收到更新消息,就发起一轮新的传输。其产生新的轨迹标签过程为1)老标签剥离收到副本更新消息的节点从传输消息报文头部得到用BloomFilter表示的地址轨迹标签,2)新标签产生通过将老的地址轨迹标签与本轮传输每个目标邻居节点的用Bloom Filter表示的节点地址掩码进行“或”运算,如图6所示,得到的新的附加到更新消息传输报文中的地址轨迹标签。
步骤2判断目标邻居节点是否需要发送更新消息。通过检查接收到的副本更新消息报文的地址轨迹标签是否包含目标邻居节点来判断是否向该邻居节点发送更新消息,如果包含,说明此邻居节点已经得到更新消息,不向此节点发送,否则就向此节点发送。其具体的操作和基于节点轨迹标签的无结构P2P副本一致性维护方法中通过直接查找线性链表的运算不同。改进方法判断一个邻居点是否已经接收过更新,其查询运算过程只需要将该邻居节点地址掩码和轨迹标签掩码进行“或”运算,得到新轨迹掩码,再将新轨迹掩码和老轨迹掩码进行比较,如果新轨迹掩码和老轨迹掩码不同,表明该邻居没有记录到标签中,就将更新消息发到该邻节点。
步骤3发送副本更新消息。将消息报文中的地址轨迹标签用步骤1产生的新标签替代,发送到步骤2得到的需要发送副本更新消息的邻居节点。
用Bloom Filter结构代替节点地址链表,有两点好处1)添加到消息报文的附加信息减少;2)检查节点是否在轨迹标签过程运算十分简单,只需要“或”运算,计算简单,实施方便。但是用Bloom Filter代替直接传送的地址链,进行节点地址查询时会有一定的误差,这是由于Bloom Filter查询会出现少量的假阳性错误,导致判断时,邻节点没有接收更新消息而被误认为已经接收而减少了更新的覆盖度,下面分析Bloom Filter查询所引起的假阳性概率对算法的影响。式(1)是Bloom Filter假阳性概率f=(1-p)k=exp(kln(1-e-kn/m)) (1)k为每个节点地址需要映射到Bloom Filter位向量中的位数,n为节点数,m为Bloom Filter长度。可能产生的判断错误节点数为E=f·n=exp(kln(1-e-kn/m))·n(2)通过对Bloom Filter产生错误判断进行评估,使用时根据可能的副本节点规模n和选定的哈希函数个数k选择相应长度m的Bloom Filter就可以保证不发生节点查询的误判断,从而得到网络轨迹标签的Bloom Filter表示。
使用Bloom Filter可大大减少附加到报文的节点地址信息长度假设节点规模N=1000,平均节点度k=10,传输6轮后,以最坏的情况考虑,此时需要标志的节点为60个节点,需要512位(64字节)Bloom Filter表示。若直接采用IP地址存储同样多的节点地址链,需要240个字节,用Bloom Filter大大减少了附加到报文中的地址信息长度,而且判断IP地址是否在地址轨迹标签的操作更简单(“或”运算)。图7比较了用Bloom Filter表示的节点轨迹标签和直接用地址链表表示节点轨迹标签方法所需存储字节数(其中Bloom Filter的长度取式(2)中不出现判断错误时的长度),横坐标表示需要附加到报文的节点地址个数,发现随着节点个数增加,Bloom Filter表示的轨迹标签和直接用IP地址链表表示的轨迹算法相比,加到报文的标签轨迹长度明显减少。
图8显示了本发明方法和传统的无结构P2P网络副本一致性维护副本传输开销比较。其中P2P网络的拓扑图是用BRITE产生的节点规模N=100,平均度为d=20的BA网络拓扑。网络副本节点规模选择100是因为虽然P2P网络中副本节点规模随着文件副本放置策略和文件的热点程度而有不同的文件副本节点覆盖率,就Gnutella网络来说,80%的请求指向的文件的副本数目是80,副本的平均覆盖率为网络总节点数的1%,当前系统的副本规模大约为100节点。横坐标是使用Gossip算法每轮选择进一步转发的节点比率f。显然洪泛法Flooding和基于节点轨迹标签的一致性维护算法没有参数f,但是为了比较方便,还是画到图中,用直线表示。从图8中发现本发明方法改进的洪泛法(Flooding)和改进的谣言法(Gossip)其副本传输开销(副本更新消息数目)大大减少,这正是本发明方法在消息传输源头进行冗余判断的最大优点。
图9是用BRITE产生的节点规模N从100~1000,节点度d=20的BA网络拓扑结构,比较更新消息传输的总字节数。横坐标代表的是节点规模,纵坐标是各种算法的传输总字节数。
图9(a)(b)(c)分别比较了消息数据包长度为1024、1518和5000字节时,比较的是更新消息的总字节数。直接使用地址轨迹标签法,由于捎带的地址节点数目较大,传输的总字节数较大,而用Bloom Filter表示节点轨迹标签改进的Gossip算法的消息传输总字节数最少,可大大节约传输更新消息的带宽。当更新消息数据长度为5000字节,节点规模N=1000,f=0.6时,使用BloomFilter优化表示节点轨迹标签改进的Gossip算法附加到消息报文的节点轨迹标签总字节比直接用IP地址表示的轨迹标签算法减少91.9%;所传输消息总字节数比洪泛法减少51.3%,比纯Gossip减少13%。当节点规模N=100,f=0.6时,Bloom Filter表示节点轨迹标签改进的Gossip算法传输总字节比Gossip减少40.9%,远大于N=1000时节约带宽的百分比,这是因为N=100,d=20图的连通性比N=1000,d=20的连通性强,所以节点轨迹标签算法在消息传输总字节数(即占用网络带宽)上改进越明显。
由上可知,本发明是无结构分散式P2P网络副本一致性维护方法,该发明方法研究从新的视角来控制一致性维护的冗余消息,通过更改传输消息报文来控制冗余产生,提出基于节点轨迹标签的一致性维护方法,本发明方法在传输的消息报文头部添加已获更新节点的轨迹标签,在发送消息的源头进行冗余判断,大大减少冗余消息在已经更新的节点内再次传播。为了减少附加到报文中的节点地址的长度,用Bloom Filter优化地址轨迹标签的表示和查找。通过实验验证,本发明方法实现时计算查找简单,只需要用“或”运算,可以大大减少副本冗余传输消息数目,降低了副本一致性维护代价,增强P2P网络的可扩展性,为P2P网络开展动态文件更新的新业务提供保障。


图1是洪泛方法和节点轨迹标签方法;图2是添加节点轨迹标签的消息报文结构;图3是基于节点轨迹标签无结构P2P副本一致性维护方法;图4是用Bloom Filter表示的节点轨迹消息报文结构;图5是用Bloom Filter表示节点轨迹的一致性维护方法;图6是Bloom Filter计算;图7是Bloom Filter节点标签和节点地址链表标签所用字节比较;图8是N=100,d=20BA拓扑结构副本传输开销比较,图例Pure_Flooding是纯洪泛方法,IP_List_Flooding基于节点轨迹方法改进的洪泛方法,Gossip是纯谣言方法,IP_List_Gossip是用节点轨迹法改进的谣言方法;图9是消息传输总字节比较,其中(a)消息长度1024字节,(b)消息长度1518字节,(c)消息长度5000字节,图例Pure_Flooding是纯洪泛方法,IP_List_Flooding是基于节点轨迹方法改进的洪泛方法,Gossip_0.6是转发节点比率为0.6的纯谣言方法,IP_List_Gossip_0.6基于节点轨迹方法改进的转发节点比率为0.6的谣言方法,IP_List_Bloom是Bloom Filter表示节点轨迹标签改进的洪泛法,IP_List_Gossip_0.6_Bloom是Bloom Filter表示节点轨迹标签改进的谣言方法。
具体实施例方式
本发明作为一种无结构P2P副本一致性维护方法,具有一定的通用性,并且可以通过应用该方法的思想直接改进现有的一致性维护方法。可应用于无结构P2P系统副本维护,无线网络多副本节点的资源维护,复杂网络中病毒免疫传输维护等其他自组织网络或分布式存储系统中数据的一致性维护。其具体的实施分为一个预备步骤和三个实施步骤预备步骤大概评估资源副本节点网络规模,得出用于表示节点轨迹标签的Bloom Filter长度和哈希函数个数。
E=f·n=exp(kln(1-e-kn/m))·nk为每个节点地址需要映射到Bloom Filter中的位数,n为节点数,m为Bloom Filter长度,E表示可能产生的判断错误节点数。根据评估的副本节点规模n和选定的哈希函数个数k选择相应长度m的Bloom Filter就可以保证不发生节点查询的误判断,从而得到网络轨迹标签的Bloom Filter表示。
步骤1产生新的用Bloom Filter表示用于添加到报文中的地址轨迹标签。
收到副本更新消息的节点首先检查自己是否为第一次收到更新消息,如果是第一次收到更新消息,就发起一轮新的传输。其产生新的轨迹标签过程为1)老标签剥离收到副本更新消息的节点从传输消息报文头部得到用Bloom Filter表示的地址轨迹标签,2)新标签产生通过将老的地址轨迹标签与本轮传输每个目标邻居节点的用Bloom Filter表示的节点地址掩码进行“或”运算,得到的新的附加到更新消息传输报文中的地址轨迹标签。
步骤2判断目标邻居节点是否需要发送更新消息。
通过检查接收到的副本更新消息报文的地址轨迹标签是否包含目标邻居节点来判断是否向该邻居节点发送更新消息,如果包含,说明此邻居节点已经得到更新消息,不向此节点发送,否则就向此节点发送。判断一个邻居点是否已经接收过更新,其查询运算过程只需要将该邻居节点地址掩码和轨迹标签掩码进行“或”运算,得到新轨迹掩码,再将新轨迹掩码和老轨迹掩码进行比较,如果新轨迹掩码和老轨迹掩码不同,表明该邻居没有记录到标签中,就将更新消息发到该邻节点。
步骤3发送副本更新消息。将消息报文中的地址轨迹链表标签用步骤1产生的新标签替代,发送到步骤2得到的需要发送副本更新消息的邻居节点。
权利要求
1.一种基于节点轨迹标签的无结构P2P副本一致性维护方法,其特征在于,该方法是通过直接更改消息传输报文,在消息报文中添加已经接收到更新消息的节点地址轨迹标签,将已经获得更新的节点地址信息作为更新消息的一部分进行传输,当需要发起新消息传输时,借助节点轨迹标签,消息传输源节点完成传输过程中的消息冗余判断,大大减少副本更新消息的传输开销,断绝副本更新传输消息循环传输的可能。
2.根据权利要求1所述基于节点轨迹标签的无结构P2P副本一致性维护方法,其特征在于,它还包括利用Bloom Filter优化节点轨迹标签的无结构副本一致性维护方法,即利用Bloom Filter数据结构表示地址轨迹标签和节点地址掩码,简化节点轨迹表示和邻居节点是否在轨迹中的查询判断。
3.根据权利要求2所述基于节点轨迹标签的无结构P2P副本一致性维护方法,其特征在于,附加到更新消息的地址轨迹标签固定长度的Bloom Filter结构以0,1位串表示,同时每个节点保存一个用同样长度Bloom Filter表示的节点地址掩码,借助Bloom Filter进行节点地址查询时会有一定的误差,可能产生的Bloom Filter判断出错的节点数为E=f·n=exp(kln(1-e-kn/m))·nk为每个节点地址需要映射到Bloom Filter中的位数,n为副本节点规模,m为Bloom Filter长度,使用时只需要根据可能的副本节点规模n和选定的哈希函数个数k选择相应长度m的Bloom Filter就可以保证不发生节点查询的误判断。
4.根据权利要求3所述基于节点轨迹标签的无结构P2P副本一致性维护方法,其特征在于,产生新节点轨迹标签的运算过程和邻居节点是否在节点轨迹标签查询判断的运算可采用简单的硬件可支持的“或”运算。
5.根据权利要求1、2、3或4所述基于节点轨迹标签的无结构P2P副本一致性维护方法,其特征是,每轮消息传输时发送的更新消息报文附加新的节点轨迹标签,消息报文被发送到经采用所述“或”运算检查合格的目标节点。
全文摘要
一种基于节点轨迹标签的无结构P2P副本一致性维护方法,它通过在消息报文中添加已经接收到更新消息的节点地址轨迹标签,利用此标签在消息传输源头完成传输过程中的消息冗余判断,控制冗余消息传输,减少冗余副本更新消息数量,断绝副本更新消息传输循环。还用Bloom Filter优化地址链表示和节点地址查找,减少添加到报文中的轨迹长度,同时简化传输节点的冗余判断。该发明可大大降低冗余消息数目,提高P2P系统的可扩展性,副本节点网络连通性越强,消息数目和传输带宽减少越明显。本发明可用于无结构P2P副本维护、无线网络资源副本维护、复杂网络病毒免疫传输维护等其他自组织网络或分布式存储系统资源一致性维护中。
文档编号H04L12/28GK1881898SQ20061003164
公开日2006年12月20日 申请日期2006年5月12日 优先权日2006年5月12日
发明者谢鲲, 张大方, 谢高岗, 文吉刚 申请人:湖南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1