在点对点网络中维护网络完整性

3
我正在寻找有关动态对等网络中维护网络完整性的技术、算法等信息。欢迎提供实用的实现、学术论文以及其他相关内容。
想象一下一个纯粹基于对等节点的网络,每个节点仅连接到 x 个其他节点。没有所有节点的大列表,每个节点都负责与网络保持连接。节点会动态上下线,这意味着每个节点需要向其邻居(和其邻居的邻居?)询问新的节点连接方式,以维护 x 个连接数。
网络分割(由两个网络仅由每个网络中的一个节点连接 - 如果其中任何一个节点关闭,则网络会分裂成两个部分),以及如何避免此类情况和有效路由(距离度量等)是我主要关注的内容,但任何与具有类似描述的网络相关的内容都很有趣。
我目前正在研究 Chord DHT 协议,因为它与我的问题有一些相似之处。
6个回答

3
Netsukuku项目旨在创建基于wifi的大型自组织网络的协议和软件实现。 从其FAQ中可以看出:“Netsukuku项目基于利用wifi连接的巨大潜力的非常简单的想法,使无线社区的PC充当路由器,共同处理比互联网更大的自组织网络。”

我更注重“常规”的(以太网)计算机网络和软件/协议。 - Christian P.
好的,我甚至不确定Netsukuku项目有多严肃,只是它似乎与你所寻找的东西有点相似。 - Rafał Dowgird

2

以下是我的想法,不是完整的解决方案;没有在实践中进行测试,但仍可能涉及许多有趣的问题和潜在的解决方案。

必须记录和管理节点故障和重新加入的标准化时间。为了实现这一点,网络不是根据实时计算,而是根据动画帧编号计算。有N个前端处理器分配FEP ID和作业ID以及网络动画帧编号到传入的作业。实时性存在一些未能解决的问题,即使在量化时间方面也是如此;在某些例外情况下,这有点像会计,在应被视为发生时将事件发布,而不是任何现金移动时。

为了获得高性能,心跳包还必须包含正在执行和最近完成或放弃的作业的详细信息,以及网络中主机的清单。

网络继续处理工作项并将其结果发布给相邻对等方或FEP。FEP向客户端转发已完成的作业详细信息,并且可以接管失败的FEP,因为FEP中的唯一状态是请求上打的最后一个序列号。

网络必须具有法定人数才能继续运行。外部监视器跟踪连接性并通知经历连接性变化的节点它们现在是否在法定人数内或外。

如果机器由于失败而未完成工作项,或者新节点加入网络,则必须基于工作项ID建立新的工作分配策略,将工作分配给剩余的节点,直到新节点重新上线。

对于多个节点执行相同作业的情况(可能会重复努力-但通过合理设计通常超时来使其最小化),必须可以回滚作业,并使用马尔可夫链解决冲突。

为了可靠地检测到可能的重复,作业必须在危机期间(即节点故障时)接收作业结果的超时时间之内自动回滚。当节点不失败时,较短的超时时间适用。


这些理论提出了很多外部监控,而对于纯点对点网络来说,这是不可能的。其想法是避免任何集中式节点或服务器,因此希望监控网络的任何东西都必须成为其中一部分并使用网络进行检查。 - Christian P.
真实的情况是,“外部监视器”可以成为系统的一部分,并且他们选择的法定人数可以基于另一个马尔可夫链。然而,需要某个中央机构来启动该链。在保持完整性的前提下,主要的性能限制是,在FEP收到整个运行网络针对操作完成的动画帧的最新状态信息(或者理解并补偿失败)之前,任何给定作业的结果都不能被发布。因此,性能根本上受动画帧分辨率、拓扑和网络速度的限制。 - martinr

2

对于普适计算,已经开发了各种临时P2P网络,它们可能符合您的需求。例如,军队在部署小胶囊时使用它,每个胶囊与邻居通信,通常与某个指挥中心相连。如果您没有中心,它可能与分布式计算有关,以下是一些链接:


1

为了避免重复造轮子,看看各种路由协议。OSPF 可能是一个不错的起点,考虑到你的情况。当然,有很多变量可能会使它不是最好的选择。例如:

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

0

你看过Kademlia吗?它类似于Chord,BitTorrent和eMule的某些版本使用了它。这篇论文列出了一些确保网络完整性的措施,即使面对攻击也能保证。其中两个基本措施是:

  • 维护足够多的节点,以便足够多的节点故障不会造成麻烦
  • 按最长运行时间的顺序维护已知节点列表。研究表明,节点在下一个小时内离线的概率会随着其在线时间的增加而降低。这也使得攻击者难以向网络中注入恶意节点。

我不确定这些措施在Chord上适用多少,因为我没有读过太多相关资料,但我认为除非需要模糊搜索,否则采用DHT是一个好主意。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接