`

KAD

    博客分类:
  • ipfs
 
阅读更多
Kademlia DHT是分布式哈希表的一种实现,它主要提供以下特性:
1.节点ID与关键字是同样的值域,都是使用SHA-1算法生成的160位摘要,这样大大简化了查询时的信息量,更便于查询
2.可以使用XOR,计算任意两个节点的距离或节点和关键字的距离
3.查找一条请求路径的时候,每个节点的信息是完备的,只需要进行Log(n)量级次跳转
4.可根据查询速度和存储量的需求调整每个节点需要维护的DHT大小

KAD对DHT有较大的改进:
1.一个新来的网络节点在初次连接网络时会被分配一个ID
2.每个节点自身维护一个路由表和一个DHT,这个路由表保存网络中一部分节点的连接信息,DHT用于存放文件信息
3.每个节点优先保存距离自己更近的节点信息,但一定确保距离在[2的n次方,2的n+1次方-1]的全部节点至少保存k个(k是常数),我们称作K-Bucket
4.每个网络节点需要优先存储与自己的ID距离较小的文件
5.每次检索时,计算查询文件的哈希值与自己的ID的距离,然后找到与这个距离对应的K-Bucket,向K-Bucket中的节点查询,接受查询的节点也做同样的检查,如果发现自己的存有这个数据,便将其返回给查询的节点

KAD网络的节点ID是由一棵二叉树维护,它有如下特点:
1.每个网络节点从根节点出发,沿着它的最短唯一前缀到达
2.每个网络节点是叶子节点,KAD二叉树的建立,需要确保每个网络的节点都能从树根沿着它的最短唯一前缀的路径到达
3.在KAD中,每个DHT条目包含key,value对,key是文件的hash值,value是节点ID.key和value有相同的值域,都是160位.每一个新加入网络的计算机都会被随机分配一个节点ID值.数据存放在key值与ID值最接近key值的节点上.这样,我们就需要定义它们的远近了,XOR运算可以解决这个问题.key,value在160位hash上,判断两个节点x,y的距离远近的方法是进行二进制的异或,只要沿着XOR距离降低的方向查找,从任意一个网络节点开始查询,我们总能找到这个存放文件的地址,而且每次更新总能筛选掉一半的节点,那么最多只需要LogN步即可到达

节点路由表K-Bucket
1.节点路由表用于保存每个节点与自己一定距离范围内其他节点的连接信息.每一条路由信息由如下3部分组成:IP Address,UDP Port,Node ID.KAD路由表将距离分成160个K桶(存放K个数据的桶),分开存储.
2.编号为i的路由表,存放着距离为[2的i次方,2的i+1次方-1]的K条路由信息.并且每个K桶内部信息存放位置是根据上次看到的时间顺序排列的,最早看到的放在头部,最后看到的放在尾部.因为网络中节点可能处于在线或者离线状态,而在之前经常在线的节点,我们需要访问的时候在线的概率更大,那么我们会优先访问它(尾部的节点).
3.通常来说当i值很小时,K桶通常是空的(以0为例,距离为0自然只有1个节点,就是自己);而当i值很大时,其对应K桶的项数又很可能特别多(因为范围很大).这时,我们只选择存储其中的K个.在这里k的选择需要以系统性能和网络负载来权衡它的数量.比如,在BitTorrent的实现中,取值为k=8.因为每个K-Bucket覆盖距离范围呈指数增长,那么只需要保存至多160K个路由信息就足以覆盖全部的节点范围了
4.在查询时使用递归方式,我们能证明,对于一个有N个节点的KAD网络,最多只需要经过logN步查询,就可以准确定位到目标节点

当节点x收到一个消息时,发送者y的IP地址就被用来更新对应的K桶,具体步骤如下:
1.计算自己和发送者的ID距离:d(x,y)=x xor y
2.通过距离d选择对应的K桶进行更新操作
3.如果y的IP地址已经存在于这个K桶中,则把对应项移到该K桶的尾部;如果y的IP地址没有记录在该K桶中,则:
a.如果该K桶的记录项小于k个,则直接把y的(IP address,UDP port,Node ID)信息插入队列尾部
b.如果该K桶的记录项大于k个,则选择头部的记录项(假如是节点z)进行RPC_PING操作
c.如果z没有响应,则从K桶中移除z的信息,并把y的信息插入队列尾部
d.如果z有响应,则把z的信息移到队列尾部,同时忽略y的信息

用户的在线时间越长,他在下一时段继续在线的可能性就越高.所以,通过把在线时间长的节点留在K桶里,可以明显增加K桶中的节点在下一时间段仍然在线的概率,这利于保持KAD网络的稳定性和减少网络维护成本(不需要频率构建节点的路由表)

路由查询机制:
KAD技术最大特点之一就是能够提供高效的节点查找机制,并且还可以通过参数调节查找的速度.假如节点x要查找ID值为t的节点,Kad按照如下递归操作步骤进行路由查找:
1.计算到t的距离:d(x,t) = x xor t
2.从x的第log(d)个k桶中取出节点的信息,同时进行FIND_NODE操作.如果这个K桶信息少于个,则从附近多个桶中选择距离最接近d的总个节点
3.对接受到查询操作的每个节点,如果发现自己就是t,则回答自己是最接近t的;否则测量自己和t的距离,并从自己对应的K桶中选择个节点的信息给x
4.x对新接收到的每个节点都再次执行FIND_NODE操作,此过程不断重复执行,直到每一个分支都有节点响应自己是最接近t的
5.通过上述查找操作,x得到了k个最接近t的节点信息

这里强调,是k个最接近t的节点信息,而不是完全信息相等,因为网络中可能根本不存在ID为t的节点.也是为权衡性能而设立的一个参数,就像K一样.在BitTorrent实现中,取值为=3.这个递归过程一直持续到x=t,或者路由表没有任何关于t的信息.由于每次查询都能从更接近t的K桶中获取信息,这样的机制保证了每一次递归操作都能够至少获得距离减半(或距离减少1bit)的效果,从而保证整个查询过程的收敛速度为O(logN),这里N为网络全部节点的数量

上述是查询节点ID的方法,对于文件查询也是一样的方法.区别仅在于进行FIND_Value操作,查找自己是否保存ID为t的文件.文件查询过程的收敛速度同样是O(LogN).

节点加入和离开
1.如果节点u要加入KAD网络,它必须和一个已经在KAD网络中的节点,比如w,取得联系.u首先把w插入自己适当的K桶中,对自己的节点ID执行一次FIND_NODE操作,然后根据接收到的信息更新自己的K桶内容.通过对自己邻近节点由近及远的逐步查询,u完成了仍然是空的K桶信息的构建,同时也把自己的信息发布到其他节点的K桶中.在KAD网络中,每个节点的路由表都表示为一棵二叉树,叶子节点为K桶,K桶存放是的有相同ID前缀的节点信息,而这个前缀就是该K桶在二叉树中的位置.这样,每个K桶都覆盖了ID空间的一部分,全部K桶的信息加起来就覆盖了整个160bit的ID空间,而且没有重叠

以节点u为例,其路由表的生成过程如下:
1.最初,u的路由表为一个单个的K桶,覆盖了整个160bit ID空间.
2.当学习到新的节点信息后,则u会尝试把新节点的信息,根据其前缀值插入对应的K桶中
a.当K桶没有满,则新节点直接插入这个K桶中
b.当K桶已经满了:如果该K桶覆盖范围包含了节点u的ID,则把该K桶分裂为两个大小相同的新K桶,并对原K桶内的节点信息按照新的K桶前缀值进行重新分配;如果该K桶覆盖范围没有包含节点u的ID,则直接丢弃该新节点信息
3.上述过程不断重复,直接满足路由表的要求.达到距离近的节点的信息多,距离远的节点的信息少的结果,这样就保证了路由查询过程能快速收敛

节点离开KAD网络不需要发布任何信息,等待节点离线的时间足够长,其他网络节点访问它失效后,便会自动将其移出各自的路由表,那么这一节点也就离开了
分享到:
评论

相关推荐

    kad协议里的nodes.dat文件抓包详解

    kad协议是一种基于Kademlia算法的分布式网络协议,主要用于P2P网络中的节点发现和信息检索。nodes.dat文件是kad网络中存储节点信息的数据文件,它包含了一系列节点的标识符(ID)和它们的网络地址(IP地址和端口号)...

    kad协议研究后的全部详细资料

    kad协议,全称为Kademlia,是一种分布式哈希表(DHT)协议,用于构建去中心化的网络系统,尤其在P2P文件分享领域中应用广泛。eMule,一个著名的P2P文件共享客户端,就采用了kad协议来实现其网络层的功能。以下是关于...

    P2P模型研究——KAD协议的算法实现

    《P2P模型研究——KAD协议的算法实现》 在信息技术领域,P2P(Peer-to-Peer)网络模型是一种分布式系统架构,它允许网络中的每个节点即为客户端,也作为服务器,直接进行交互。KAD(Kademlia)协议是P2P网络中的一...

    一份成熟的DHT-KAD实现,带测试示例

    KAD(Kademlia)是DHT的一种实现,它采用了一种XOR距离算法来定位节点,并通过逐层搜索的方式找到目标数据,具有较高的效率和扩展性。 这份源码实现的DHT-KAD网络,被广泛应用于BT(BitTorrent)软件中,BT是一种点...

    KAD协议原理<转>

    该协议是一种分布式哈希表(Distributed Hash Table, DHT)技术,相较于其他DHT实现如Chord、CAN、Pastry等,Kad以其创新性的异或算法(XOR)作为距离度量标准,构建了一种全新的DHT拓扑结构,显著提升了路由查询效率。...

    KAD-168门禁用户使用手册

    【KAD-168门禁系统概述】 KAD-168门禁系统是一款采用先进的感应式射频技术的设备,旨在为商务机构、办公室、工厂、住宅小区等场所提供安全、便捷的出入口控制解决方案。其核心优势在于操作简单、安全可靠,无机械...

    宁波柯力 KAD-4(不锈钢)数据采集器使用说明书.doc

    宁波柯力 KAD-4(不锈钢)数据采集器使用说明书 本文档提供了宁波柯力 KAD-4(不锈钢)数据采集器的使用说明书,涵盖了产品概述、技术参数、连接方式等内容。下面将详细介绍该产品的知识点: 一、 数据采集器的...

    (电驴爱好者)KAD协议中文版

    Kademlia协议(以下简称Kad)是由美国纽约大学的Petar Maymounkov和David Mazieres于2002年发布的一项研究成果,名为《Kademlia:A peer-to-peer information system based on the XOR metric》。该协议的核心在于...

    SEC KAD7001 PDF

    TES2700万用表 芯片 SEC 740B KAD7001

    KAD门禁一卡通系统应用方案

    总的来说,KAD门禁一卡通系统应用方案旨在打造一个安全、高效且用户友好的生活环境,通过集成化的管理平台,提升物业管理水平,同时也为居民提供便捷的生活体验。科安达公司凭借其创新技术和服务理念,致力于成为...

    Kad网络节点共享资源探测分析参考.pdf

    Kad网络节点共享资源探测分析参考.pdf

    Emule Kad协议手册

    Emule Kad 协议是基于P2P网络的分布式文件共享协议,主要用于Emule软件的节点间通信,实现资源的高效查找和交换。Emule Kad协议的手册详细介绍了该协议的各项参数和操作流程,帮助开发者理解和实现相关功能。 一、...

    Emule Kad 网络分析.doc

    Emule Kad 网络分析 一、概述 3 二、协议参数分析 3 2.1 BootStrap Req/Res 3 2.2 Hello Req/Res 4 2.3 Kad Req/Res 4 2.4 Kad Search/Publish Req/Res 5 2.5 Kad Firewalled Req/Res 6 2.6 Kad FindBuddy Req/Res 6...

    KAD协议原理简介

    《KAD协议原理详解——基于eMule的分布式哈希表技术》 KAD协议,全称为Kademlia,是一种广泛应用于P2P(对等网络)系统中的分布式哈希表(DHT)协议,其设计目标是为互联网用户提供高效、去中心化的信息存储和检索...

    海康威视KAD304 KAD308 升级包 及升级软件,升级教程

    近期接了几个单子,发现很多老的海康网络门口主机围墙机,例如 海康3002 2a这样的主机下面用了模拟解码器KAD304 KAD308,分机用3200及3200L。更换了新的分机都无法使用,使用了很多资料找到了2种解决方法。一种是在...

    A performance evaluation of the kad-protocol.pdf

    ### Kademlia (Kad) 协议性能评估的关键知识点 #### 一、概述与背景 **标题**:“A performance evaluation of the kad-protocol.pdf”表明该文档主要关注于Kademlia(通常简称Kad)协议的性能评估。**描述**部分...

    K.A.D高清网络摄像机KAD-711-200W-IR固件

    K.A.D高清网络摄像机 型号:KAD-711-200W-IR 文件系统版本T38C-ONVIF V2.4.0的升级固件,升级后,连接中维、海康录像机OK

    emule必备知识更新服务器列表与kad节点文件.docx

    emule 必备知识更新服务器列表与 kad 节点文件 emule 是一款基于 ED2K 网络和 KAD 网络的点对点文件共享软件,通过服务器列表和 KAD 节点文件连接其他 emule 客户端。服务器列表和 KAD 节点文件是 emule 的必需文件...

    教你使用eMue连服务器Kad网络.doc

    使用eMule连接Kad网络的方法 在本文中,我们将讨论如何使用eMule连接Kad网络,并解决可能出现的连接问题。 首先,让我们了解什么是Kad网络。Kad网络是一个分布式哈希表(DHT)网络,由eMule社区开发,旨在提供一种...

    网络游戏-KAD网络中由关键词哈希值推测关键词的方法及系统.zip

    在网络游戏领域,KAD(Kademlia)网络是一种广泛应用的分布式对等网络协议,它主要用于文件分享、数据存储和通信。KAD网络以其高效、自我修复和可扩展性而受到青睐。本文档“KAD网络中由关键词哈希值推测关键词的...

Global site tag (gtag.js) - Google Analytics