文档库 最新最全的文档下载
当前位置:文档库 › 基于Kademlia的结构化对等网络原理及其应用

基于Kademlia的结构化对等网络原理及其应用

对等网络(P2P)技术通过在物理网络上构建覆盖网络(overlaynetwork),采用特定的路由及查找策略,共享节点(node)资源(cpu,存储,带宽),在协同计算、内容存储、内容共享与分发、即时通讯等领域得到了大规模应用。P2P技术研究集中在四个方面:覆盖网的构建技术,内容定位与搜索技术,内容下载技术,其它辅助技术。按照覆盖网的构建方式,通常将P2P网络分为结构化与非结构化网络,非结构化对等网络(Un-StructedP2P)基于随机方式构建,采用BFS(宽度优先搜索)类或DFS(深度优先搜索)类算法进行内容定位与搜索,典型代表如Gnutella[1][1],而结构化对等网络(StructedP2P)主要基于DHT(DistributedHashTable,分布式哈希表)技术构建,在内容定位与搜索效率上比非结构化对等网络更高,典型代表如Chord,CAN,Pastry,Kademlia等[1,2]。

1.Kademlia的理论基础

1.1DHT(distributedhashtable,分布式哈希表)技术

哈希表是利用哈希函数在Ο(1)量级时间内存取(key,value)对的表状数据结构[1,3]。哈希表有三个元素:一是Key,是任意有意义的标识,如文件名,ip地址等,二是value,其与key相关,如具体的文件内容,三是哈希函数hash(key),作用是将key集合映射到存储的(key,value)集合。哈希表的重要特征之一是单向性,即若给定x,则找到key使满足x=hash(key)的计算是不可行的;第二特征是存取算法的理想量级为Ο(1);第三是哈希表形成了统一的映射地址空间,操作简单,只有插入、删除、查找三种基本操作,因而在计算机系统和数据库系统中得到了广泛应用。

DHT(分布式哈希表)是构建结构化对等网络的理论基础。结构化对等网络的资源(节点、文件等)被映射到统一的地址空间(集合)中,从全局看,资源分布在一个哈希表中,关键问题是如何构建和存储哈希表,通常是将哈希表空间被分割成许多连续的局部空间,并按照特定规则分布到节点中。

1.2XORmetric(异或运算)

二进制的异或运算定义为的1XOR1=0,1XOR0=1,0XOR1=1,0XOR0=0。异或有一个重要的性质:设a,b,c为任意三个数.则:(aXORb)=(aXORc)当且仅当b=c,这保证了在Kademila中,节点可以通过Xor运算确定邻居节点的距离并进行排序。

2.Kademlia系统描述

在Kademila中,以节点间距离为基础,每个节点通过k-bucket保存邻居节点,并按照消息的刷新策略更新k-bucket以获得整个网络的局部视图,在此基础上,节点通过node_lookup机制定位新的邻居节点和搜索资源信息。Kademila通过UDP协议进行消息和数据的传输。

2.1覆盖网的构建

2.1.1节点与资源信息

在Kademlia系统中,节点用nodeID标识,其长度为160位,所有nodeid形成一个地址空间并保证其不相同,nodeid是kademlia系统的基础。至于如何得到nodeid,kademlia并没有说明,这在各种实现的软件系统中自由定义;资源由固定长度的key标识,通常key由文件通过hash函数获得,如SHA1,所有key形成一个地址空间。这样,在kademlia中有2个地址空间,所有节点组成nodeid地址空间,所有文件资源组成key地址空间。

2.1.2距离(distance)和k-bucket

Kademlia中,定义距离为任意2个key或nodeid做异或运算的结果,d(x,y)=xXORy,距离是kademlia中其他操作的基础。节点用联系人表标识其他节点,包含nodeid,ip地址,port端口。每个节点维护着logN个联系人表(通常为160个),每个表中包含与本节点相同距离的联系人信息,其中第i个表包含距离为2i ̄2i+1的k个联系人,通常k为20,这样的表称为k-bucket。

每个k-bucket中,联系人按照联系时间顺序排列,最先联系的在头部,最近联系的在尾部,k-bucket是动态的,通常保存在1个小时内有联系的联系人。当收到一个节点(newnode)消息(2.2.2中的node_lookup)时,计算距离并刷新k-bucket:(1)如果newnode在对应的k-bucket中,将其位置移动到此k-bucket尾部;(2)如果newnode不在对应的k-bucket中且该k-bucket未满(节点数<k),将其添加到此k-bucket尾部;(3)如果newnode对应的k-bucket已满,则向该k-bucket头部联系人发送PING消息,如果收到回复,则将回复的联系人位置移动到尾部,否则抛弃并将newnode添加到尾部。通过运用消息和定时的k-bucket刷新策略,每个节点保存着不同距离的在线联系人信息,获得整个网络的局部视图,即局部nodeid地址空间,并且仅当节点不在线后才抛弃,这保证了局部视图的稳定,能有效防止Dos攻击。

2.1.3(key,value)的分布存储

如1.1节所述,构建结构化P2P的关键问题是如何构建和存储哈希表,kademlia通过基于距离的k-bucket机制来构建和存储哈希表,并在此基础上存储key(资源信息)。简言之,key被存储在距离(通过XOR运算)此key最近的节点上,这通过kademlia的STORE(key,value)操作实现。在某一时刻,kademlia中多个节点保存了多个key,这对资源搜索是至关重要的。

2.2定位和搜索

2.2.1基本原语操作

定位和搜索是P2P系统的核心问题,在Kademlia中,定义4种基本原语操作RPC:PING,STORE,FIND_NODE,FIND_VALUE,其中PING用来探测一个节点是否在线,STORE(key,value)让接收者存储(key,value)信息,以便进行资源搜索,FIND_NODE定位节点,FIND_VALUE搜索资源。所有的RPC消息都带有一个160位的随机RPCID,由发送者产生,接收者在响应每一个消息的时候,返回的消息里面都必需拷贝这个RPCID。目的是防止地址伪造[1].[4]。

FIND_NODE(或者称为FIND_CLOSE_NODE)以160位ID作为参数,接收者必须返回自己知道的k个距离ID最近的联系人信息(如果它所有的k-bucket联系人也不够k个,则返回所有联系人信息)。FIND_VALUE和FIND_NODE类似,只有一点不同,如果接收者先前已经收到一个带有此key的STORERPC,则将另一参数value返回给发送者,否则结果与FIND_NODE一样。

2.2.2查找算法node_lookup

Kademila的节点查找算法(node_lookup)基于上述4个操作原语来进行,其目的是找到k个距离查找ID最近的节点,此算法为递归算法,其算法思想如下:(1)初始节点从其距离最近的k-bucket中取出a个(通常a为3)联系人,作为候选名单(shortlist),并向其做并行、异步FIND_*操作,如果候选联系人在线或在规定时间内响应,将返回k或少于k个联系人,将这些联系人加入到shortlist中,否则,从shortlist中删除此联系人;(2)再从shortlist中选取a个此前未联系过的候选联系人,进行(1)的步骤;(3)如果一轮下来未找到距离更近的候选人,则向k个距离较近的且未联系过的联系人发送FIND_*操作;(4)查询结束的条件是:返回的联系人不比shortlist和对应k-bucket中联系人的距离更近或者已经返回了k个在线的候选联系人。

最后,此节点得到了k个在线的距离ID最近的联系人或者搜索资源(value),在此并行过程中,shortlist是动态更新的,每轮FIND_*操作都会将返回的联系人同shortlist中的候选联系人进(下转第414页)

基于Kademlia的结构化对等网络原理及其应用

平小艳1陈华2史小春3

(1,2康定名族师范高等专科学校四川康定626001;3.四川工程职业技术学院四川德阳618000)

【摘要】Kademila是第三代P2P(Peer-to-Peer,对等网络)技术,是一种构建结构化对等网络的机制,基于DHT(DistributedHashTable,分布式哈希表)和XOR(异或运算)实现了覆盖网(OverlayNetwork)的构建和节点快速定位以及资源的精确搜索,在新一代P2P软件如BitTorrent和OverNet等中得到了广泛应用。

【关键词】结构化对等网络;Kademlia;DHT;应用

415

(上接第415页)行比较,使shortlist中的联系人距离ID更近,直到不能再近或者已经达到k个。

2.2.3节点的加入和退出

节点加入到Kademila时,首先获得一个其他联系人信息,并将其加入到相应的k-bucket中,执行node_lookup(自己的ID)以刷新所有k-bucket,至此,节点获得了整个网络的局部视图。节点退出Kademila时,如果断线,则其他节点在刷新k-bucket时会抛弃此节点;否则向其他节点发送退出消息,其他节点刷新k-bucket。

2.2.4发布、

存储和搜索(key,value)在查找算法基础上,(key,value)对的存储就非常简单,通过node_lookup(key)找到k个距离key最近的节点(联系人),向其发送STORE操作。搜索(key,value)对的过程同node_lookup一样,如果成功则返回value,并向距离key最近的未返回value的节点发送STORE操作,否则返回k个距离近的节点。

3.Kademila的应用

建立在DHT和Xor运算基础上的Kademila系统提供一种高效的分布式存储和定位机制,自PetarMaymounkov和DavidMazières在

2002年提出后[1,4]

,在许多p2p软件中得到了应用,如overnet、emule、revconnect、bittorrent及其衍生软件、retroshare、sharkypy等[1,2]。Kademila基于DHT构建,故拥有DHT对等网络的优点,即:系统结构具有高鲁棒性,关键字精确搜索,节点高效定位,平均步长为O(LogN),系统在动态环境下产生的消息少。其缺点是未考虑系统的异构性即节点的能力(CPU,存储,带宽)是不同的,并存在逻辑拓扑与物理拓扑的匹配问题。

在P2P的具体实现中,通常将Kademila作为基础设施层,负责覆盖网的构建和路由,而具体的应用如内容分发和下载则建立在其之上。如在BitTorrent中的Kademila实现[1,5],路由表仍然参照标准的k-bucket实现,并定义了KRPC协议和DHTqueries(包含PING、FIND_NODE、GET_peers、ANNOUNCE_PEERS)实现定位和查找,而BitTorrent中的下载仍然采用标准的协议和策略,即Tir-for-Tat(针锋相对)策略和片段优先算法。使用Kademila机制的BitTorrent实现了Trackerless,即不需要Tracker服务器也能进行文件的快速分发和下载。标准eMule[1,6]协议实现了完整的Kademila机制,其定义了关键词字典(key,文件信息列表)和文件索引字典(文件key,拥有者列表),并将字典分布式存储。文件下载过程如下:首先节点通过任一关键词或其组合查询关键词字典,得到该匹配关键字的文件SHA1校验值,再通过该校验值查询文件索引字典,从而获得所有提供该文件下载的网络节点,再以分段下载方式去这些节点下载文件。

Kademila

除了在内容分发和下载领域得到广泛应用,在流媒体[1,7][1,8]、

语音VoIP[1,9]等其他领域的实际应用研究也取得了进展。【

参考文献】[1]Gnutella.http://www.gnutella.org

[2]Kademlia.http://en.wikipedia.org/wiki/Kademlia

[3]熊继平.对等网络中路由机制及关键技术研究[D].中国科技大学,2006.4[4]PetarMaymounkov,DavidMazières.Kademlia:APeer-to-peerInformation

SystemBasedontheXORMetric[C].IPTPS2002,LNCS2429,2002:53-65.[5]DHTProtocolInBitTorrentBEF.http://www.bittorrent.org/beps/bep_0005.html

[6]KademliaIneMule.http://www.emule-project.net/

[7]Wu,JieLiu.KadStreaming:ANovelKademliaP2PNetwork-BasedVoDStreamingScheme[C].ComputerandInformationTechnology,2007.CIT2007.7thIEEEInternationalConferenceon.2007:405-410

[8]DesignandLu,ZhiHuiZhang.ImplementationofaNovelP2P-BasedVODSystemUsingMediaFileSegmentsSelectingAlgorithm[C].ComputerandInformationTechnology,2007.CIT2007.7thIEEEInternationalConferenceon.2007:599-604

[9]XiaoWu,CuiyunFu.AnImprovedKademliaProtocolInaVoIPSystem[C].NetworkandParallelComputingWorkshops,2007.NPCWorkshops.IFIPInternationalConferenceon.2007:920-928.

作者简介:平小艳(1982—),女,大学本科,主要研究方向:p2p网络,多媒体技术。

陈华(1979—),男,硕士,主要研究方向:分布式计算,软件工程。史小春(1978—),男,大学本科,主要研究方向:计算机教学。

[责任编辑:韩铭]

科●

图2工作人员进入辐射区通信协议流程

当工作人员退出辐射区时,需要将剂量信息(剂量累计量与最大

剂量率等)上传到服务器的数据库中,同样先通过读出器与接口板的通信,将数据上传接口板暂存,等待工作站轮询到本机时进行数据上传。

工作人员退出辐射区通信协议流程如下图所示:

图3

工作人员退出辐射区通信协议流程

3.结论

本系统是一个网络化个人剂量监控系统,它主要是在原有单机版个人剂量监控系统的基础上,通过接口板硬件电路的设计与系统通信协议的开发,完成了个人剂量监控系统的网络化。该系统具有简单实用、成本低廉、可靠性高的特点,同时对单机版剂量监控系统具有很好的兼容性。【

参考文献】[1]汪晓平,钟军等编著.VisualBasic网络通信协议分析与应用实现[M].北京:

人民邮电出版,2003.

[2](美)StevenHolznerVisualBasic6.0技术内幕[M].详实翻译组译北京:机械工程出版社,1999.

[3]喻维纲用VB6.0实现PC机对多台流量计远程数据采集与监控仪器仪表标准化与计量[J]2002.6.

[4]崔巍编著.数据库系统及应用(第二版)[M].北京:高等教育出版社,2004.[5]李长林.VisualBasic串口通信技术与典型实例[M].北京:清华大学出版社,

2006.

[6]扈啸,周旭升.单片机数据通信技术从入门到精通[M].西安:西安电子科技大学出版社,2003.

[7]洪毅峰,鲍鹏飞,徐向东.采用轮询存储法实现点对多点的无线数据传输[J].2005.1.

[责任编辑:张艳芳]

414

相关文档