0

Kademlia 使用 XOR 度量。除其他外,这具有所谓的“单向”属性(= 对于任何给定的点 x 和距离 e>0,恰好有一个点 y 使得 d(x,y)=e)。

第一个问题是一个普遍的问题:度量的这个属性是否对 Kademlia 的功能至关重要,或者它只是有助于揭示来自某些节点的压力(正如原始论文所暗示的那样)。换句话说,如果我们想改变指标,那么同时拥有一个“单向”的指标有多重要?

第二个问题是关于指标的具体变化:假设我们有节点标识符(地址)作为 X 位数字,以下任何指标是否适用于 Kademlia?

  1. d(x,y) = abs(x-y)
  2. d(x,y) = abs(x-y) + 1/(x xor y)

第一个指标只是提供数字之间的差异,因此对于节点 ID 100,ID 为 90 和 110 的节点距离相等,因此这不是单向指标。在第二种情况下,我们修复了添加 1/(x xor y),我们知道 (x xor y) 是单向的,因此具有 1/(x xor y) 应该保留此属性。

因此,对于节点 ID 100,节点 ID 90 为d(100,90) = 10 + 1/62,而与节点 ID 110 的距离为d(100,110) = 10 + 1/10

4

1 回答 1

1

你不会再和 kademlia 打交道了。还有一些其他路由算法使用不同的距离度量,有些甚至是非均匀的距离度量,但它们不依赖于特定于 kademlia 的假设,并且有时会结合其他特性来补偿这些度量的某些不良方面。

由于度量标准中可能存在关联(每个点有两个候选),因此查找不能再收敛于一组精确的最近节点。

桶拆分和其他路由表维护算法将需要更改,因为它们假设相同的距离只能与节点身份发生。

我不确定它是否会影响 Big-O 属性或 kademlia 的其他保证。

无论如何,这似乎是一个 XY 问题。您想要修改指标以服务于特定目标。也许您应该寻找考虑到该目标而设计的路由覆盖。

d(x,y) = abs(xy) + 1/(x xor y)

这似乎不切实际,整数除法会受到四舍五入的影响。实际上,您不会处理如此小的数字,而是要处理更大的数字(例如 160 位),这也使除法变得更加昂贵。

于 2016-10-25T08:13:34.647 回答