Kademlia 路由 table - 是否需要双向路由?
Kadelmia routing table - is bidrectional routing necessary?
假设您有节点 u
,它在其路由 table 中包含节点 w
。节点 u
是否有必要出现在节点 w 的路由 table 中?
Kademlia 算法不需要这样的东西,路由 table 的结构实际上使得这种相互路由 table 条目除了你的直接邻居之外几乎不可能出现。
我不确定它是否需要它,但使用 xor-metric 作为距离函数的主要优点是 x 到 y 与 y 到 x 的距离相同。
此外,当引导节点时,加入的节点应该从引导程序获取连接信息并 ping 那些节点...并且在第一个 ping/connection 任何节点接收到它们将保存连接调用 rpc 的节点的信息!
所以我认为 Kademlia 并不需要它,但很可能总是这样。
我唯一能看到这不是真的是当一个节点正在调用 find_node rpc 并且它已经收到目标节点的连接信息时(假设它不在调用者的路由中) table) 但尚未对目标节点执行 ping 操作。
如果我错了请纠正我,但这是我从阅读这篇论文和几个 implementations/articles/examples
中收集到的
此外,这可能是在 Kademlia 工作时有用的资产:Kademlia Visualizer
编辑:我记得有一个情况是不正确的,当你 ping 一个已经有完整 bucket/routing table (活动节点)的节点时,他不会替换任何它是调用者的节点。
假设您有节点 u
,它在其路由 table 中包含节点 w
。节点 u
是否有必要出现在节点 w 的路由 table 中?
Kademlia 算法不需要这样的东西,路由 table 的结构实际上使得这种相互路由 table 条目除了你的直接邻居之外几乎不可能出现。
我不确定它是否需要它,但使用 xor-metric 作为距离函数的主要优点是 x 到 y 与 y 到 x 的距离相同。
此外,当引导节点时,加入的节点应该从引导程序获取连接信息并 ping 那些节点...并且在第一个 ping/connection 任何节点接收到它们将保存连接调用 rpc 的节点的信息!
所以我认为 Kademlia 并不需要它,但很可能总是这样。
我唯一能看到这不是真的是当一个节点正在调用 find_node rpc 并且它已经收到目标节点的连接信息时(假设它不在调用者的路由中) table) 但尚未对目标节点执行 ping 操作。
如果我错了请纠正我,但这是我从阅读这篇论文和几个 implementations/articles/examples
中收集到的此外,这可能是在 Kademlia 工作时有用的资产:Kademlia Visualizer
编辑:我记得有一个情况是不正确的,当你 ping 一个已经有完整 bucket/routing table (活动节点)的节点时,他不会替换任何它是调用者的节点。