我一直在挖掘DHT,尤其是kademlia一段时间了。 我正在尝试实现一个在Kademlia DHT上运行的p2p网络。我希望能够向整个网络八卦一条消息。 根据我对八卦协议的研究,使用了八卦协议,但是当我已经使用 DHT 存储对等节点时,添加另一个全新的协议来传播消息似乎很奇怪。 是否有一种八卦协议可以像 Kademlia 这样的 DHT 拓扑或与 DHT 拓扑一起工作?
你对效率有多关心?作为下限,有人必须向网络中的所有N
节点发送数据包,以将更新传播到所有节点。
最幼稚的方法是简单地将每条消息转发到路由表中的所有条目。这是行不通的,因为它显然会导致转发风暴。
第二个最幼稚的方法是转发更新,即更新的数据。这将导致流量N * log(N)
。
如果你所有的节点都是受信任的,并且你不关心效率的最后一个量,你已经可以到此为止了。
如果节点不受信任,您将需要一种机制来限制谁可以发送更新并验证数据包。
如果您还关心效率,则可以在转发和跟踪哪个路由表条目已经具有哪个版本之前添加随机退避,以修剪不必要的转发尝试。
如果你不想八卦整个网络,而只是其中的一部分,你可以实现感兴趣的节点可以加入的子网,即订阅。Bittorrent 增强提案 50 描述了这种方法。