基于区域划分的对等网Kademali模型的改进

来源 :硅谷 | 被引量 : 0次 | 上传用户:tonghuasong00000
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2011)0210168-01
  
  1 Kademlia在搜索中存在的问题
  因为Kademlia是基于DHT构造的,而基于DHT的P2P系统利用某种哈希函数操作某些参数(例如IP地址)为每个网络节点产生一个m位的ID值,为网络节点产生ID值时,没有考虑到实际网络情况,Kademlia在构建overlay层面的过程中没有考虑与物理层面匹配的问题,导致overlay层面的邻居节点在物理层面可能会相距很远,这样在搜索过程中会出现许多不必要的路由,甚至超时导致搜索失败,大大降低了搜索效率。
  2 基于区域划分的改进Kademlia模型
  2.1 区域划分与节点归属
  为了避免上述问题,本文提出以下方法,逐步精确的为节点确定位置,并且易于在现有网络中实现。
  因特网结构错综复杂,但是一般的,可以认为地域上相邻或相近的节点在网络中也是相邻或相近的。因此考虑将地图划分为多个区域,单个区域视为一个区域点,再将这些点连接成为一个网络,这样的网络看作是一个有向连通图G=(V,E),任意两个节点Va到Vb是否直接连通由实际地理位置决定,当然也关系到这两个区域点的网络的连通程度。然后再为这些区域点编码。编码所遵循原则是:保证实际相邻(相近)区域編号的编号距离相邻(相近)的,实际距离较远的区域的编号也是相应的编号距离较远的。这样的区域划分是很好实现的。一种计算区域a和区域b的编号距离D的方法,其中Sa、Sb表示区域a和区域b的编号。
  Da2b=Sa⊕Sb
  在实际操作中,需要为区域选择具有代表性的节点作为区域界点,以便于新加入节点判断自己所属的区域。可以选择多个区域中靠近网络中心的稳定的节点作为区域界点,选择多个是为了冗余保持区域界点总是有效的。
  现在需要为新加入网络的用户节点确定其所属的区域。用户节点首先对各个区域点进行N次RTT(round trip time)探测,计算到每个区域点的平均延迟间Tavg。比较后得到最小延迟,将该节点归入获得最小延迟的区域点所代表的域。由此一来,用户节点所处的网络位置就粗略的确定了,并且用户与用户之的远近关系可以由所属区域编号很清晰的表示。稍后介绍一种具体的实现过程
  2.2 进一步精确定位
  上面为用户节点粗略的确定了其所处的网络位置。下面将进一步将节点位精确化。通过对IP地址分配的研究发现,地理位置相近的节点的IP地址有很可能也是相近的。根据上述的结论,可以将节点公网IP地址作为进一步定位节点的参数。而公网IP地址分配并非完全依据地理位置分配,有可能出现的情况是:两个点公网IP相近,然而地理位置上他们相距较远。例如210.012.010.*是在广东而与之相近的IP地址210.012.011.*处于吉林省。虽然这样的情况并不普遍,公网IP地址仍只能作为辅助定位的参数,可以给其赋一个较小的权值,使其节点定位影响不那么大。按照上述两点,下面将给出一个具体节点定位过程。
  2.3 具体的算法过程
  本节以一个新的节点加入网络的过程以及节点搜索文件的过程来阐述算法前面提到过一种计算区域a和区域b的距离Da2b的方法,节点的距离同样采用异或的方法计算:
  d(x,y)=x⊕y
  采用异或计算节点间距离的好处在于,计算简单耗时小,并且节点编号的越高拥有越高的权值。例如,最高位相异的两个节点,异或后得到的距离很大,于可以将权重较重的因素编码放在编号的较高位,权重较低的因素编码放在较低位。
  在现普遍应用于edonkey、emule等P2P软件的Kademlia算法中,新节点入时,将随机分配给一个160位的编号。现以改进Kademlia协议为例阐述本算法。
  节点A想要加入P2P网络,其过程可描述如下:
  第一步,A对系统选定的m个区域点N1到Nm各发送探测包k次。对每一个区域点计算这k次的平均值如下所示:
  k取一个经验值,使其能够保证RTT计算误差尽量小又不至于花费太多时间。找到这m个平均RTT的最小值,设该最小值是节点A到区域点Nj的RTT平均值,那么将Nj
  做为节点A所处的区域。设Nj二进制编号为SNj,其位数为t1,那么m的取值范围如下所示。
  2t1-1  将SNj作为节点A的编号SNA的高t1位。现在A的编号为SNj……。这样一来,节点A在实际网络的大概位置就确定了。
  第二步,找到A的公网IP地址,这里需要强调的是公网IP地址,而不是虚拟的内网IP地址。因为只有公网IP地址是符合论文第三部分所提出的第二个结论的。在同一个内网中,节点间的网络延时相对来说可以忽略不计的,因此不需要将内网IP地址作为节点网络定位的一个因素。一定程度上,节点公网IP地址反应了其所处的网络位置,因此,将节点A的公网IP地址IP作为编号SNA的第二部分,占32位。经研究,在一定范围内,公网IP地址的差别主要体现在IP地址的后面24位,因为公网IP地址只是用于进一步的精确定位,此步骤建立在节点位置已经大致确定的基础上,因此,完全可以将前8位忽略。设节点A的IP后24位为IPA24,则现在节点A的编号为SNjIPA24……,已经确定的一共是t1+24位。第三步,按照某种随机散列算法生成160-(t1+24)位的随机序列。这样就为节点A生成了一个160位的编号。前面t1+24位是用于保证节点的物理定位,而后面的t2=160-(t1+24)位由节点随机生产,保证任意两个节点编号重复的机率很小,几乎为0。至于为什么要一共是160位,这是借鉴的Kademlia协议的做法,根据统计学规律,160位的SHA1散列值可以唯一的确定一份特定数据内容的文件。因此,节点编号也暂时相应的采用160位了。
  
  参考文献:
  [1]Robert F M A.Java P2P技术内幕[M].高龄、刘红、周兆确译,北京:人民邮电出版社,2003.
  [2]赵科军、刘洋、仇一鸿等,基于异或运算对等网模型Kademlia研究[J].山东科学,2007(6):68-71.
  [3]张建伟、连卫民,P2P对等网络路由模型特性分析[J].河南科学,2007,25(5):827-830.
  [4]庄雷、郭永强、潘春健,基于Gnutella协议与划分技术的P2P网络模型的设计与实现[J].计算机应用研究,2004,21(9):253-255.
  
  作者简介:
  赵娟娟(1979-),南昌陆军学院科文教研室讲师。
其他文献
通过随机问卷、资料查阅,对大学生参加体育项目的兴趣进行调查.根据对调查结果的比较研究,作者认为武术对抗性项目散手的学习对大学生具有独特的价值,大学开设武术对抗性项目具有
以遵义师范学院社会体育指导与管理专业为研究对象,针对社体专业的课程体系设置、人才培养模式进行跟踪研究,探讨符合我国现有国情体育专业人才的培养模式,实现向培养应用型
摘要: 严峻的就业形势影响着大学生的就业概率,但是,大学生在求职中所存在的“观念误区”更严重束缚着大学生未来的发展。就大学生的“观念误区”进行剖析,提出需建立正确的就业观。  关键词: 观念误区;大学生;就业  中图分类号:G4 文献标识码:A 文章编号:1671-7597(2011)0210151-01    2010年6月2日,由麦可思撰写的就业蓝皮书《2010年中国大学生生就业报告》在北京召
土木工程结构设计工作可以说是现阶段我国土木工程构建中比较重要的一环,只有确保土木工程结构设计较为合理,才能够保障土木工程能够表现出较强的应用实效性,结合这种土木工
我经常为杂志写稿,因为杂志的审稿周期很多是三个月,所以要提前写出下一季的内容。这让我养成了另一种思维习惯——在冬天展望春暖花开,在春天憧憬绿夏葱茏,在夏天设想秋实累
幸福是什么?很多人说,幸福是无形的,看不见也摸不着,是一种需要用心去体味的温暖。其实,幸福是能听到的,只要你去倾听,你就会发现幸福始终包围着你。当清晨第一缕阳光透过窗帘
人吃五谷杂粮没有不得病的,如果在得病初期早发现,及时治疗,就会避免严重后果。糖尿病糖尿病初期,很多人无自觉症状。如有可能,成年人每年都应做一次尿糖检查。另外,根据最近
问:我是一名凉菜厨师,请问制作开胃小菜应注意些什么,能否列举一些常见的开胃小菜?rn
肝硬化患者怎样预防胃出血?我今年55岁,患有肝硬化。不久前在家搬重物后突然吐血不止,胃镜检查证实是胃底和食道静脉曲张破裂出血,经手术治疗出院。我真担心今后会再出血,请
在中职学校的整个教学体系中,数学学科是其中重要的一部分内容,而中职学校的学生自身的基础能力水平有限,学习兴趣和信心不足,在数学学习的过程中难免会存在一定的障碍和困难