将 DHT 用于八卦协议?
Use a DHT for a gossip protocol?
我已经研究 DHT,尤其是 kademlia 一段时间了。
我正在尝试实现一个在 Kademlia DHT 上工作的 p2p 网络。我希望能够向整个网络八卦一条消息。
从我的研究来看,使用了八卦协议,但是当我已经使用 dht 来存储对等点时,添加另一个全新的协议来传播消息似乎很奇怪。
有没有像 Kademlia 这样的 DHT 拓扑结构的八卦协议?
您对效率的关注程度如何?作为下限,必须有人向网络中的所有 N
节点发送数据包,以将更新传播到所有节点。
最天真的方法是将每条消息简单地转发到路由 table 中的所有条目。这不行,因为它显然会导致转发风暴。
第二种最天真的方法是转发更新,即更新的数据。这将导致 N * log(N)
流量。
如果您的所有节点都是可信的,并且您不关心最后的效率,那么您已经可以到此为止了。
如果节点不受信任,您将需要一种机制来限制谁可以发送更新并验证数据包。
如果您还关心效率,您可以在转发和跟踪哪个路由 table 条目已经具有哪个版本以修剪不必要的转发尝试之前添加随机退避。
如果你不想与整个网络闲聊而只是其中的一个子集,你可以实现感兴趣的节点可以加入的子网,即订阅。 Bittorrent Enhancement Proposal 50 描述了这种方法。
我已经研究 DHT,尤其是 kademlia 一段时间了。 我正在尝试实现一个在 Kademlia DHT 上工作的 p2p 网络。我希望能够向整个网络八卦一条消息。 从我的研究来看,使用了八卦协议,但是当我已经使用 dht 来存储对等点时,添加另一个全新的协议来传播消息似乎很奇怪。 有没有像 Kademlia 这样的 DHT 拓扑结构的八卦协议?
您对效率的关注程度如何?作为下限,必须有人向网络中的所有 N
节点发送数据包,以将更新传播到所有节点。
最天真的方法是将每条消息简单地转发到路由 table 中的所有条目。这不行,因为它显然会导致转发风暴。
第二种最天真的方法是转发更新,即更新的数据。这将导致 N * log(N)
流量。
如果您的所有节点都是可信的,并且您不关心最后的效率,那么您已经可以到此为止了。
如果节点不受信任,您将需要一种机制来限制谁可以发送更新并验证数据包。
如果您还关心效率,您可以在转发和跟踪哪个路由 table 条目已经具有哪个版本以修剪不必要的转发尝试之前添加随机退避。
如果你不想与整个网络闲聊而只是其中的一个子集,你可以实现感兴趣的节点可以加入的子网,即订阅。 Bittorrent Enhancement Proposal 50 描述了这种方法。