使用 DHT 进行八卦协议?

yos*_*ski 3 networking p2p dht kademlia gossip

我已经研究 DHT,尤其是 kademlia 一段时间了。我正在尝试实现一个在 Kademlia DHT 上运行的 p2p 网络。我希望能够向整个网络传播消息。根据我的研究,使用了八卦协议,但是当我已经使用 dht 来存储对等点时,添加另一个全新的协议来传播消息似乎很奇怪。是否有像 Kademlia 这样的可以在 DHT 拓扑上工作或与 DHT 拓扑一起工作的八卦协议?

the*_*472 5

您对效率有多关心?作为下限,某人必须向N网络中的所有节点发送数据包才能将更新传播到所有节点。

最简单的方法是简单地将每条消息转发到路由表中的所有条目。这是不行的,因为这显然会导致转发风暴。

第二种最简单的方法是转发更新,即更新的数据。这将导致N * log(N)交通拥堵。

如果您的所有节点都是可信的,并且您不关心最后的效率,那么您已经可以到此为止了。

如果节点不受信任,您将需要一种机制来限制谁可以发送更新并验证数据包。

如果您还关心效率,则可以在转发之前添加随机退避,并跟踪哪个路由表条目已经具有哪个版本,以修剪不必要的转发尝试。

如果您不想与整个网络进行八卦,而只想与其中的一个子集进行八卦,您可以实现感兴趣的节点可以加入(即订阅)的子网络。Bittorrent 增强提案 50描述了这种方法。