我正在寻找有关技术、算法等的信息。关于如何在动态对等网络中维护网络完整性。实际实现、学术论文以及该类别中的任何其他内容都是受欢迎的。

想象一个完全基于点对点的网络,其中每个节点仅连接到 X 其他节点。在没有所有节点的庞大列表的情况下,每个节点都负责维护与网络的连接。节点动态地关闭和启动,这意味着每个节点需要向其邻居(以及它们的邻居?)询问要连接的新节点,以便维持 X 连接数。

网络分段(网络的两半仅由每个网络的一个节点连接 - 如果其中任何一个发生故障,网络就会分裂成两个)以及如何避免这种情况和有效的路由(距离度量等)是我的主要兴趣,但是任何与具有类似描述的网络相关的内容都会很有趣。

我目前正在研究 Chord DHT 协议,因为它与我所要求的有一些相似之处。

有帮助吗?

解决方案

为了实现普适计算,已经开发了各种自组织 P2P 网络,它们可能会满足您的需求。例如,它已在军队中用于部署小型胶囊,每个胶囊通常与某个指挥中心的邻居进行通信。如果你没有中心,可能与分布式计算有关,无论如何这里有一些链接:

其他提示

Netsukuku项目旨在创造协议和软件实现基于wifi的大型ad-hoc网络(一个或多个)。

从他们的常见问题解答“的Netsukuku项目是基于利用了WiFi连接的巨大潜力,使得无线社区的个人电脑的想法很简单充当路由器,处理一起的ad-hoc网络比互联网更大。“

我的想法只 - 不是一个完整的解决方案;在实践中没有测试,但仍可以对一些有趣的问题和潜在的解决方案触摸。

有节点故障和重新加入标准化时间必须被记录和管理。 要做到这一点在网络上实时的基础,但上的动画帧数基础不计算。 具有N个前端处理器分配FEP ID和作业ID和网络动画帧编号,以传入的作业。还有一些与实时那些不太甚至量化的时间解决问题;在一些例外情况下,它有点像会计,张贴事件时,他们应被视为对发生的历史,而不是在任何现金动作。

有关高性能,正在执行的心跳报文还必须包含的作业的详细信息和最近完成或放弃以及主机的网络中的资源。

网络继续处理工作项和它们的结果发布到相邻的对等体或前置机。 前置机前完成任务的详细信息提供给客户,并且可以接管失败的前置机,因为只有国家在FEP是印在请求的最后一个序列号。

网络必须有仲裁继续。外部监视器跟踪连接,并通知其遇到的连接是否他们现在内或仲裁外变化的节点。

其中,因为它失败,或者一个新的节点加入网络时,一个新的工作分配策略必须根据工作项ID建立到工作分配给剩余的节点,直到新的工作项不是通过机器完成的节点恢复联机。

有关多个节点执行相同的作业(重复工作 - 这是可能的,但通过明智地设计通常的超时最小化)的情况。的作业必须是rollbackable,以及使用马尔可夫链的冲突解决

要检测可能的重复可靠作业必须在超过超时接收作业结果时间不自动回滚该期间的危机时期的即适用于当节点失败。当节点不失败的一个较短的超时适用。

为了避免重新发明轮子,请查看各种路由协议。 开放式SPF协议 考虑到您的情况,这可能是一个很好的起点。当然,有很多很多变量可能使它不是您的最佳选择。例如:

  • 你可以保持到X个节点的最短路径;如果一个节点出现故障,附着的节点会收到通知并可以进行新的 SP 搜索以找到合适的节点;您需要考虑 ping 和 keep-alive 消息的开销
  • 您是否需要 intradate 连接(即在 p2p 网络中搜索)或者只是维护大量互连的节点(僵尸网络)?如果是这样,混合方法(用于网络小子集的小型分布式哈希表 + 用于边界的 OSPF/BGP)可能会有所帮助;
  • 等等等等

你看过吗 卡德姆利亚?它与 Chord 类似,BitTorrent 和 eMule 使用它的版本。这 列出了一些即使面对攻击也能确保网络完整性的措施。两个基本的是

  • 维护足够多的同行,这样他们中的足够多的人就不太可能造成麻烦
  • 按照最长正常运行时间的顺序维护已知对等点的列表。研究表明,节点在线时间越长,下一小时内离线的概率就越低。这也使得攻击者很难用恶意节点淹没网络。

我不确定这在多大程度上适用于 Chord,因为我没有读过太多相关内容,但我认为使用 DHT 是一个好主意,除非您需要模糊搜索。

使用和弦。 http://en.wikipedia.org/wiki/Chord_(peer-to -peer)

我已经实现了它在之前的项目,它解决了这些问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top