假设您的节点在其路由表u
中包含节点。w
节点u
是否必须出现在节点 w 的路由表中?
问问题
38 次
2 回答
0
Kademlia 算法不需要这样的东西,而路由表的结构方式实际上使得除了你的直接邻居之外的任何东西都不太可能出现这样的相互路由表条目。
于 2021-03-27T21:40:09.230 回答
-1
我不确定它是否需要它,但使用 xor-metric 作为距离函数的主要优点是 x 到 y 的距离与 y 到 x 的距离相同。
此外,当引导节点时,加入节点应该从引导程序获取连接信息并 ping 这些节点......并且在任何节点接收到的第一个 ping/连接时,它们将保存调用 rpc 的节点的连接信息!
所以我不认为 Kademlia 需要它,但很可能总是如此。
我唯一能看到这不是真的是当一个节点正在调用 find_node rpc 并且它已经收到了目标节点的连接信息(假设它不在调用者的路由表中)但没有 ping 到目标节点呢。
如果我错了,请纠正我,但这是我从阅读论文和几个实现/文章/示例中收集到的
此外,在使用 Kademlia 时,这可能是一项有用的资产:Kademlia Visualizer
编辑:我记得这种情况不是真的,当你 ping 一个已经有完整存储桶/路由表(活动节点)的节点时,他不会用调用节点替换它的任何节点。
于 2021-04-08T02:43:44.347 回答