这是一个关于大型可扩展P2P网络方法的问题:逻辑环网ovrlay。
考虑P2P网络的背景。有N台计算机通过一个环相互连接。 每个节点都有一个记忆前导节点和后继节点的路由表。 当路由表仅存储前任和后继时,这是最简单的情况。 每个节点都提供一个id,它是一个数字。 环的组织使得在时钟方向上分配升序数。
所以我们可以有这样的情况:* - 12 - 13 - 45 - 55 - 180 - 255 - * 该网络有6个节点,它们以圆圈形式连接。
当一个节点必须向另一个节点发送消息时,使用路由表,如果通用节点有一个传入消息,它会查看dest地址,如果不在他的路由表中,则查找后继或前置节点。路由它。
现在让我们考虑这个例子。 在我的简单网络中,节点13想要向节点255发送消息。 由于每个节点只能看到前任和后继节点,因此每个节点都无法考虑全局网络,在P2P中,实际上节点只能看到网络的一部分。因此节点13决定采取:路由消息的位置(因为目的地不在其附近)?消息是否必须发送到45或12? (顺时针还是逆时针?)。
嗯,显然,发送到12是一个更好的决定,但节点13如何能够知道这一点?
最简单的解决方案是:始终顺时针方向,但在这种情况下,在很长一段时间内将会到达一个非常接近的节点.....当它落在角落后面时......
如何处理?
PS:
像Fingering
这样的解决方案适用于基于顺时针路由的方法。
指法将路由表放入其他地址以创建跳转链接...
这是一个可以使用但只能顺时针路由的解决方案......
http://en.wikipedia.org/wiki/File:Chord_route.png
我想知道一个很好的解决方案,以便找到正确的路由方向......它是否存在? Chord如何处理这个问题?
谢谢。
答案 0 :(得分:2)
如果每个节点都记住链接到下一个,第二个,第四个,第八个,依此类推,那么只需log(n)时间就可以找到任何节点。我相信这很快就不考虑你是否应该去cw或ccw。