【发布时间】:2011-05-13 21:50:42
【问题描述】:
这是一个关于大型可扩展 P2P 网络方法的问题:逻辑环网 ovrlay。
考虑 P2P 网络的背景。有 N 台计算机通过一个环将每个人相互连接起来。 每个节点都有一个路由表,用于存储前任节点和后继节点。 这是路由表只存储前驱和后继的最简单的情况。 每个节点都有一个 id,它是一个数字。 环的组织方式是按顺时针方向分配升序的数字。
所以我们可以有这样的情况:* - 12 - 13 - 45 - 55 - 180 - 255 - * 该网络有 6 个节点,它们相互连接。
当一个节点必须向另一个节点发送消息时,使用路由表,如果通用节点有传入消息,它会查看目标地址,如果不在他的路由表中,则后继或前任将是直到路由它。
现在让我们考虑这个例子。 在我的简单网络中,节点 13 想要向节点 255 发送消息。 由于每个节点只能看到一个前任和一个后继,每个节点都不能考虑全局网络,在P2P中,实际上一个节点只能看到网络的一部分。所以节点 13 需要做出决定:将消息路由到哪里(因为目的地不在其附近)?消息必须发送到 45 还是 12? (顺时针还是逆时针?)。
嗯,显然,发送到 12 是一个更好的决定,但是节点 13 怎么知道呢?
最简单的解决方案是:总是顺时针走,但在这种情况下,一个非常近的节点将在很长的时间内到达......而它在拐角处......
如何处理?
PS:
有像Fingering 这样的解决方案适用于基于顺时针路由的方法。
指法将其他地址放入路由表中以创建跳转链接...
这是一个可以使用的解决方案,但只能使用顺时针路由...
http://en.wikipedia.org/wiki/File:Chord_route.png
我想知道一个好的解决方案,以便找到正确的路由方向......它存在吗? Chord 如何处理这个问题?
谢谢。
【问题讨论】:
标签: networking routing p2p distributed-system