K-Bucket在Kademlia DHT中到底意味着什么?

时间:2019-01-24 07:20:13

标签: distributed-computing p2p dht kademlia

我想确认我对Kademlia DHT中桶的理解。 Kademlia有 m个k-buckets ,其中 m 是网络的大小(以位为单位), k 键值< / em>每个存储区对存储。 例如,假设m=4,那么我们可以拥有2^4个节点,即从0到15。

+========+
| NodeId |
+========+
|   0000 |
+--------+
|   0001 |
+--------+
|   0010 |
+--------+
|   0011 |
+--------+
|   0100 |
+--------+
|   0101 |
+--------+
|   0110 |
+--------+
|   0111 |
+--------+
|   1000 |
+--------+
|   1001 |
+--------+
|   1010 |
+--------+
|   1011 |
+--------+
|   1100 |
+--------+
|   1101 |
+--------+
|   1110 |
+--------+
|   1111 |
+--------+

每个节点都有0位匹配,1位匹配和2位匹配等路由表,这是m存储桶。此外,对于每个存储桶,它将存储k个代表而不是单个NodeId。 因此,如果我们说k = 2,则节点0101的路由表将类似于:

┌──────────────────────┐
│         0101         │
├──────────────────────┤
|                      |
| +==================+ |
| |       xxxx       | |
| +==================+ |
| |   1001, <value>  | |
| +------------------+ |
| |   1010, <value>  | |
| +------------------+ |
|                      |
| +==================+ |
| |       0xxx       | |
| +==================+ |
| |   0000, <value>  | |
| +------------------+ |
| |   0111, <value>  | |
| +------------------+ |
|                      |
| +==================+ |
| |       01xx       | |
| +==================+ |
| |   0110, <value>  | |
| +------------------+ |
| |   0111, <value>  | |
| +------------------+ |
|          .           |
|          .           |
|          .           |
└──────────────────────┘

我的假设正确吗?

2 个答案:

答案 0 :(得分:1)

k 是存储桶中的条目数。他们的节点ID预计将随机分布在存储桶覆盖的ID范围内,这意味着将每个存储桶的条目数加倍只会平均提高其分辨率一位,即扩展性不佳。 这就是为什么我们有一个结构化的路由表,其中包含多个桶,每个桶的作用域不同。可以提高节点自身节点ID周围的局部分辨率。

实施完整的kademlia算法requires a dynamic routing table layout。因此 m 是不固定的。固定尺寸的布局仅在简化的pre-print version of the paper中用作理论证明的一部分。

答案 1 :(得分:0)

Kademlia中的每个节点都存储其他节点的列表。该列表基于位差异,并被简称为存储桶。现在,“ k”是系统范围的复制参数。这意味着对于每个列表,该“存储桶”中都有k个条目。这是我的理解。 This是论文的链接。希望这会有所帮助..:)