如何查找分布式哈希表中的节点总数

时间:2014-03-07 12:21:15

标签: networking nodes p2p dht

如何以有效的方式查找分布式哈希表中的节点总数?

1 个答案:

答案 0 :(得分:2)

您通常通过从网络的一小部分样本进行估算来实现这一点,因为枚举大型网络的所有节点对于大多数用例而言过于昂贵。并且由于NAT无论如何仍然是不准确的。因此,您必须考虑对可到达节点进行采样。

假设节点在整个密钥空间中随机分布,并且您在DHT中有某种距离度量(例如Kademlia的情况下的XOR度量),您可以找到样本距离的中位数,然后计算密钥空间大小除以节点之间的平均距离。 如果使用中位数,由于分布的偏差,您可能需要通过某种因素进行补偿。但是我的统计数据很生疏,也许其他人可以参与其中

结果将非常嘈杂,因此您需要保留足够的样本以进行平均。连同倾斜的分布以及一切都以指数尺度发生的事实(向左旋转一位,人口估计突然翻倍或减半)。

我还建议仅根据您控制的传出查询进行估算,而不是基于传入流量,因为传入流量可能会受到某些实施细节的影响。

粗略估算的另一种原始方法是简单地从路由表结构中推断,假设它与网络规模一致。

根据您的统计数据,您可能要么做以下某些事情:描述网络的科学论文,从已经进行估算的现有实施中窃取代码或在广泛的人口规模范围内进行模拟 - 只需几百万随机节点地址进入ram并对它们进行一些计算应该不会太困难。 也许还可以与现有实现的开发人员讨论。