发明名称 P2P网络中有效消解多Sybil节点渗透冲突的方法
摘要 本发明公开了一种P2P网络中有效消解多Sybil节点渗透冲突的方法,目的是解决Sybil节点向Kademlia进行渗透的过程中因出现节点间渗透冲突而导致整体渗透效能下降的问题。技术方案是通过划分渗透区域和对Sybil节点进行编组,实现分区域渗透,避免各组Sybil节点间发生渗透冲突;通过为Sybil节点合理分配节点的标识,避免组内Sybil节点间发生效能冲突。采用本发明可以提高多个Sybil节点的总体渗透效能,避免多个Sybil节点在向Kademlia网络进行无序渗透时造成的资源浪费和效能流失,且可使Sybil节点在Kademlia网络动态变化过程中保证其渗透效能。
申请公布号 CN104038547A 申请公布日期 2014.09.10
申请号 CN201410269637.0 申请日期 2014.06.17
申请人 中国人民解放军国防科学技术大学 发明人 刘波;王怀民;王天佐;鲁强;肖哲锋;张天;马晓龙;于洋
分类号 H04L29/08(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 一种P2P网络中有效消解多Sybil节点渗透冲突的方法,其特征在于包括以下步骤:第一步,划分渗透区域:将整个Kademlia网络节点标识空间平均划分为2<sup>q</sup>个渗透区域,这些渗透区域表示为{[j·2<sup>L‑q</sup>,(j+1)2<sup>L‑q</sup>)|0≤j<2<sup>q</sup>,j为整数},其中每个元素是一个区间,每个元素中的整数对应渗透区域中的节点标识,记[j·2<sup>L‑q</sup>,(j+1)2<sup>L‑q</sup>)为第j号渗透区域;Kademlia网络节点标识称为nodeID,nodeID为L比特的Kademlia网络的节点标识空间为2<sup>L</sup>,L为正整数,Sybil节点的数量为q·2<sup>q</sup>,“·”表示乘法运算,q为整数;第二步,Sybil节点编组:将所有Sybil节点编为2<sup>q</sup>个组,每组q个Sybil节点,并依次用0到2<sup>q</sup>‑1这2<sup>q</sup>个整数作为组号;第三步,设置Sybil节点的标识nodeID:对于组号为p的Sybil节点编组,0≤p≤2<sup>q</sup>‑1,将集合{<img file="FDA0000522183680000011.GIF" wi="171" he="61" />·2<sup>L‑q</sup>|0≤a<q,a为整数}中的这q个值作为nodeID分配给组内的q个Sybil节点;<img file="FDA0000522183680000012.GIF" wi="44" he="45" />表示异或运算,通过2<sup>a</sup>与组号p的异或运算来区分距离,确保组内不同的Sybil节点出现在Kademlia节点的不同K‑bucket中;每个Kademlia节点的路由表由L个链表组成,每个链表称为一个“K‑bucket”,用于记录网络中到自己的异或距离在区间[2<sup>i</sup>,2<sup>i+1</sup>)内的邻居节点的信息,i为K‑bucket的序号,0≤i<M;每条信息以三元组<IP地址,UDP端口号,nodeID>形式表示和存储,K‑bucket长度以K为上限,K是一个常数;每当Kademlia节点收到来自其他节点的消息,它就根据该消息发送节点到自己的异或距离以及消息中的<IP地址,UDP端口号,nodeID>信息来更新K‑bucket中的记录,这称为捎带确认piggybacking;L个K‑bucket组成一个Kademlia节点的路由表,路由表也称“K‑buckets”,一个路由表中的L个K‑bucket通过连续的序号i区分;第四步,通过P2P网络爬虫获得整个Kademlia网络中所有节点的路由表,即邻居节点的<IP地址,UDP端口号,nodeID>,并通过路由表获得每个节点的节点度d,节点度指节点的路由表中邻居节点的个数,即节点的路由表中的表项数;第五步,对2<sup>q</sup>个渗透区域中的节点,分别按照节点度d的大小进行降序排列,形成2<sup>q</sup>个列表,其中每个列表称为对应渗透区域的节点降序列表;将第j号渗透区域的节点降序列表发送给组号为j的Sybil编组中的每个Sybil节点,具体步骤如下:5.1令j=0;5.2将j号渗透区域的节点降序列表发送给组号为j的Sybil编组中的q个Sybil节点;5.3j=j+1;5.4判断j是否等于2<sup>q</sup>,如果等于,则转第六步,否则,转5.2);第六步,设置全局计数器N<sub>G</sub>,并为每个Sybil节点设置一个局部计数器N<sub>r</sub>,0≤r≤q·2<sup>q</sup>‑1,N<sub>G</sub>、N<sub>r</sub>都初始化为0,所有Sybil节点并行执行如下步骤:6.1向收到的节点降序列表中的首节点发送PING探测命令,然后将该首节点从节点降序列表中删除;PING探测命令是Kademlia协议中的一种远程过程调用;6.2判断节点降序列表是否为空,如果为空,N<sub>r</sub>=N<sub>r</sub>+1,N<sub>G</sub>=N<sub>G</sub>+1并转第6.3步;否则,转第6.1步;6.3判断N<sub>G</sub>是否等于q·2<sup>q</sup>,是,转第七步;否则执行一个空操作后转6.3;第七步,设置计时器为T小时,T取值为6;第八步,间歇t秒,t取值为5;第九步,判断是否从系统进程接收到结束指令:是,转第十一步;否则转第十步;第十步,判断是否计时器时间用完:是,转第四步;否,转第八步。第十一步,结束。
地址 410073 湖南省长沙市开福区德雅路109号
您可能感兴趣的专利