Kademlia: 基于异或运算的P2P信息系统(翻译稿)

Petar Maymounkov and David Mazi`eres
摘要
本文我们将描述一个在容易出错的网络环境中拥有可证实的稳定性和高性能稳定性的 点对点(P2P)系统。我们的系统使用一个很新颖的基于异或运算的拓扑来发送查询并且定位节点, 这简化了算法并且使验证更加容易。 这种拓扑结构具有以下特性,它能通过交换消息传达和加强节点间的有用联系信息。本系统利用这个信息来发送平行的,异步的查询消息来对付节点的失效而不会给 用户带来超时时延。
 
1 .介绍
    本 论文描述Kademlia , 一个点对点(P2P)的<键, 值>元组存储和查询系统。 Kademlia拥有许多的可喜的特点,这些特点是任何以前的P2P系统所无法同时提供的。它减少了节点必须发送的用来相互认识的配置消息的数量。在做键 查询的同时, 配置消息将会被自动传播。 节点拥有足够的知识和灵活性来通过低时延路径发送查询请求。 Kademlia使用平行的,异步的查询请求来避免节点失效所带来的超时时延。通过节点记录相互的存在的算法可以抵抗某些基本的拒绝服务(DoS)攻击。 最后, 仅仅使用在分布式运行时间上较弱的假设(通过对现有点对点系统的测量而确认的这些假设),我们可以正式的证实Kademlia的许多重要特性
    Kademlia 使 用了许多点对点(P2P)系统的基本方法。 键是一个160-bit的隐式数量(例如, 对一些大型数据进行SHA-1哈希的值)。 每个参与的机器都拥有一个节点ID, 160位的键。 <键, 值>对将存储在那些ID与键很‘接近’的节点上, 这里‘接近’当然是按照一个接近度的概念来计算的。最后, 一个基于节点ID的路由算法使得任何人可以在一个目的键附近定位到一个服务器。
Kademlia 的 许多的优点都是得益于它使用了一个很新颖的方法, 那就是用节点间的键作异或运算的结果来作为节点间的距离。异或运算是对称的, 允许Kademlia的参与者接收来自相同分布的并且包含在其路由表中的节点的查找请求。如果没有这个性质,就像Chord一样,系统无法从它们收到的查 询请求中学习到有用的路由信息。更糟的是, 由于Chord中的运算是不对称的, Chord的路由表更加严格。 Chord节点的查找表的每一项都必须存储精确的按ID域的间隔递增的节点。在这个间隔内的任何节点都比这个间隔内的某些键大,因此离键很远。相 反,Kademlia 可以在一定的间隔内发送请求给任何节点, 允许基于时延来选择路由,甚至发送平行的,异步的查询。
为 了在特定的ID附近定位节点,Kademlia自始至终使用一个单程的路由算法。相反,其它一些系统使用一种算法来接近目标ID,然后在最后的几个跳数使 用另外一种算法。在现有系统中,Kademlia与pastry的第一阶段最像,(虽然作者并没有用这种方式来描述),Kademlia 的异或运算可以使当前节点到目标ID的距离粗略的持续减半,以此来寻找节点。在第二阶段,Pastry不再使用距离运算,而是改为比较ID的数字区别。它 使用第二种,数字区别运算作为替代。不幸的是,按第二种运算计算的接近比第一种的远得多,这造成特定节点ID值的中断,降低了性能,并且导致在最差行为下 的正式分析的尝试失败。
 
2 .系统描述
每 个Kademlia节点有一个160位的节点ID。在Chord系统中,ID是通过某种规则构造出来的,但在这片文章中,为了简化,我们假设每台机器在加 入系统时将选择一个随机的160位值。每条节点发送的消息包含它的节点ID, 同时允许接收者记录下发送者的存在信息,如果有必要的话。
键, 同样也是160位的标识符。为了发布和寻找<键,值>对,Kademlia依赖一个概念,那就是两标识符之间的距离的概念。给定两个标识符, x和y, Kademlia定义两者的位异或(XOR)的结果作为两者的距离,d(x,y)=x⊕y。我们首先注意到异或运算是一个有意义的运算,虽然不是欧几里得 运算。很明显具有下面的性质: d(x,x)=0;如果x≠y, 则d(x, y)>0;任意的x, y: d(x, y) = d(y, x)。 异或运算还满足三角性质:d(x, y) + d(y, z) ≥ d(x, z)。 这个三角性质之所以成立是基于下面这个事实: d(x, z) = d(x, y) + d(y, z); 并且任意的a>=0, b≥0: a+b≥a⊕b。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值