用于更新网络拓扑的网络知识的计算机实现的系统和方法与流程

文档序号:18601756发布日期:2019-09-03 22:43阅读:218来源:国知局
用于更新网络拓扑的网络知识的计算机实现的系统和方法与流程

本发明大体上涉及系统拓扑和更新系统拓扑的方法,且更具体地说涉及改变点对点(peer-to-peer,简称“p2p”)系统拓扑和用于更新改变的p2p系统拓扑的方法。本发明特别适合,但不限于,使用此类分布式系统用于实现交易和/或区块链的分布式系统和方法。



背景技术:

在本文件中,我们使用术语“区块链”来包括所有形式的电子、基于计算机的分布式分类账。这些包括,但不限于,区块链和交易链技术、许可和未经许可的分类账、共享分类账及其变体。尽管也提出和开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币(bitcoin)分类帐。虽然出于方便和说明的目的,在本文提及了比特币,但是应当注意,本发明不限于与比特币区块链一起使用,替代的区块链实现和协议落入本发明的范围内。

区块链是基于共识的电子分类账,该电子分类帐被实现为基于计算机的、去中心化的分布式系统,由区块构成,而区块又由交易构成。每一交易是一种数据结构,对区块链系统中的参与者之间的数字资产的控制权的转移进行编码,并包括至少一个输入和至少一个输出。每一区块都包含前一个区块的散列,因此这些区块链接在一起以创建自区块链创建以来写入其中的所有交易的永久、不可更改的记录。交易包含被称为脚本的小程序,这些小程序嵌入到它们的输入和输出中,这些小程序指定了如何以及由谁来访问交易的输出。在比特币平台上,使用基于堆栈的脚本语言编写这些脚本。

为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每一交易有效,且无效交易被网络拒绝。安装在节点上的软件客户端通过执行锁定和解锁脚本来对未花费的交易(utxo)执行此验证工作。如果锁定和解锁脚本的执行评估为真,则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证——如果验证通过,那么该节点将交易中继到网络中的其他节点;和ii)添加到由矿工建立的新区块;和iii)挖掘,即添加到过去交易的公共分类账。

尽管区块链技术以使用加密货币实现方式而闻名,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据来实现新系统。如果区块链可以用于不限于加密货币领域的自动化任务和过程,那将是非常有利的。此类解决方案将能够利用区块链的优势(例如事件的永久防篡改记录、分布式处理等),同时在其应用中更加通用。

目前研究的一个领域是利用区块链来实现“智能合约”。这些是计算机程序,旨在自动执行机器可读合同或协议条款。与用自然语言编写的传统合同不同,智能合同是一种机器可执行程序,包含可以处理输入以产生结果的规则,然后可以根据那些结果来执行动作。

与区块链相关的另一个感兴趣的领域是使用“代币”(或“彩币”)来表示并且通过区块链转移真实世界的实体。潜在的敏感或秘密项目可以由没有可辨别的意义或价值的代币来表示。因此,代币充当允许从区块链引用真实世界项目的识别符。

已知各种现有技术方法用于管理网络内的连接和路由。以下简要描述此类现有技术方法的实例。

us2014286344涉及网络中的分布式连接的建立和恢复。使用用于控制网络上的转发的路由协议的扩展来泛洪连接约束。节点维持拓扑和连接数据库,并基于约束来计算连接的路由。如果节点处于某连接的计算的路由上,它将为该连接安装转发状态。由于每一节点具有一致的网络拓扑,并设置了与连接相关联的约束,所以网络上的每一节点都为该连接计算相同的路由。当出现故障时,节点基于网络范围的优先权来计算连接的恢复路径,以便能够为受影响的连接创建恢复路径,而不需要发信号通知恢复路径。时间戳用于允许节点以一致的顺序应用事件,而不管事件到达的顺序如何。

ep0752795涉及通信网络中的链路预留。描述了一种用于在通信网络中设置、关闭和更新连接的分布式手段,其在出现故障时是稳健的。更具体来说,计算用于连接的路径,且同时通过单独的信道向连接路径的一组节点中的每一者发送预留请求,以预留和确定资源是否可用于连接。在确认用于连接的链路可用并已被预留后,设置消息沿着路径在相邻节点之间依序传输,直到设置消息到达目的节点为止。每一节点中的交换机接着响应于设置消息来配置自身,以便建立连接。

us2004170151涉及动态网络和用于动态网络的路由方法。描述具有多个节点的动态网络,其中,路由信息存储在网络节点中的本地路由表中。节点向其他节点发送更新请求以更新本地路由表,且被寻址的节点向请求节点发送具有更新路由信息的更新响应。



技术实现要素:

系统拓扑的一个问题是,当拓扑发生变化时,例如由于新节点或对等体加入系统和/或由于节点或对等体离开并返回操作状态,确保系统维持在有效且快速的运作状态。

因此,希望提供一种解决方案,在其潜在目标中包括系统拓扑和/或更新系统拓扑的方法,其中拓扑的变化被有效和/或快速地检测到。

因此,希望提供一种解决方案,在其潜在目标中包括系统拓扑和/或更新系统拓扑的方法,其中拓扑的变化在系统内被有效和/或快速地传达。

因此,希望提供一种解决方案,在其潜在目标中包括系统拓扑和/或更新系统拓扑的方法,其中拓扑的变化在整个网络中被一致地和/或有效地和/或快速地更新。

现已设计出此类改进的解决方案。本发明在随附权利要求和/或发明说明中定义。

根据本发明的第一方面,提供一种更新网络拓扑的网络知识的方法,所述方法包括:

a)拓扑数据集,其并入由网络中的第一节点接收的网络的所述拓扑的变化,所述拓扑数据集与时间指示相关联;

b)所述第一节点具有与时间指示相关联的拓扑数据集:

其中,如果所述第一节点接收的所述拓扑数据集的所述时间指示比所述第一节点的拓扑数据集的所述时间指示更加新,那么用所述第一节点接收的所述拓扑数据集来更新所述第一节点的拓扑数据集。

所述方法可以进一步提供,特别是在步骤b)之后,所述第一节点向所述网络发送任何更新的第一节点拓扑数据集。所述方法更优选地可以进一步提供,特别是在步骤b)之后,当第二节点拓扑数据集导致所述第一节点拓扑数据集的更新时,所述第一节点向所述网络发送所述更新的第一节点拓扑数据。

所述方法可以提供所述第一节点具有相邻节点,所述相邻节点是在所述第一节点的给定相邻量度内的那些节点,且所述方法可以提供所述第一节点具有邻居节点,所述邻居节点是在所述第一节点的所述给定相邻量度之外且在所述第一节点的给定邻居量度内的那些节点。所述方法可以进一步提供,所述第一节点仅向相邻节点和邻居节点发送所述更新的第一节点拓扑数据集。

与由第一节点接收的所述拓扑数据集相关联的所述时间指示是通过提供所述拓扑数据集的所述节点产生的。所述时间指示可以是与提供所述拓扑数据集的节点所接收的拓扑数据集相关联的时间戳。所述时间指示可以是第二节点检测到所述网络变化的时间,或者更优选地是由第二节点向第一节点发送所述网络变化的时间。所述时间指示可以由提供所述拓扑数据集的节点的时间向量时钟提供。

所述方法可以进一步提供,所述第一节点的拓扑数据集由以下各项中的一者或多者来更新:

a)改变在所述第一节点的拓扑数据集中列出的节点之间的一个或多个链路的可操作状态;

b)在所述第一节点的拓扑数据集中未列出的节点之间添加一个或多个链路;

c)移除所述第一节点的拓扑数据集中列出的节点之间的一个或多个链路。

所述方法可以进一步提供,更新所述第一节点的拓扑数据的条件是从所述网络中的节点接收的所述拓扑数据集含有不在所述第一节点的拓扑数据集中的一个或多个链路。所述方法可以进一步提供,另一条件是,所述第一节点的拓扑数据集仅相对于从所述网络中的节点接收的所述拓扑数据集中的在所述节点的给定度量内的链路进行更新。

所述方法可以进一步提供,由于所述网络中的第二节点检测到网络中的事件,而提供了并入所述网络的拓扑变化的拓扑数据集。可以通过所述网络中的节点向所述第二节点发送消息的停止来检测到所述事件。所述事件的检测可以产生所述第二节点的拓扑数据集的变化。所述第二节点的拓扑数据集的变化可以使得所述第二节点向所述网络中的至少所述第一节点发送所述拓扑数据集的变化。

所述方法可以进一步优选地在步骤a)与b)之间,根据多个拓扑数据集相应的时间指示来对它们进行排序。所述多个拓扑数据集中的一者可以是第一节点的拓扑数据集,且所述多个拓扑数据集中的另一者可能是第二节点的拓扑数据集。所述多个拓扑数据集中的一者可以是来自第三节点的拓扑数据集,且优选地所述多个拓扑数据集中的其他者来自其他节点。所述排序可以确定多个拓扑数据集中的哪个是所述多个拓扑数据集中最新的。

所述方法可以进一步提供,使用所述多个拓扑数据集中的所述最新的来更新所述第一个节点的拓扑数据集。所述方法可以进一步提供,不使用或丢弃与最新时间指示不相关联的拓扑数据集。

更新的第一节点的拓扑数据集可以替代所述先前的第一节点的拓扑数据集。

更新所述网络拓扑的网络知识的方法可以进一步是一种优化网络内连接性和/或优化网络内一致数据分布的方法。

根据本发明的第二方面,提供了一种用于执行本发明第一方面的方法的计算机实现的系统,潜在地包括经布置以执行本文件内其他地方阐述的特征、选项和可能性中的任一者的系统。

所述计算机实现的系统可以包括用于检测所述网络的拓扑变化的检测器。所述检测器可以检测影响一个或多个节点和/或一个或多个链路的变化。所述检测器可以检测状态的一个或多个变化,例如从第一状态到第二状态和/或从第二状态到第一状态,和/或可以包括一个或多个其他状态。

所述计算机实现的系统可以包括更新排序器,用于排序在网络内传输的更新拓扑数据集,特别是关于含有更新拓扑数据集的消息。可以提供更新排序器,以便按照正确生成的序列或顺序或时间来考虑消息。

所述计算机实现的系统可以包括拓扑数据集处理器,用于处理拓扑数据集,使得拓扑数据集由来自所述网络中其他节点的拓扑数据集更新。

所述计算机实现的系统可以包括拓扑更新通信器,用于更新的拓扑数据集使得在所述网络内共享所述网络的所述拓扑变化的知识。拓扑数据集处理器可以根据来自其他节点的拓扑数据集的数据来提供节点拓扑数据集的更新。

根据本发明的第三方面,提供一种在节点网络内的布置,用于相对于所述网络拓扑的变化来更新所述网络,所述布置包括:用于检测所述网络的所述拓扑的变化的检测器;和/或用于对所述网络内传达的更新拓扑数据集进行排序的更新排序器;和/或用于处理拓扑数据集的拓扑数据集处理器;和/或拓扑更新通信器,用于更新的拓扑数据集使得在所述网络内共享所述网络的所述拓扑变化的知识。

所述检测器可以检测影响一个或多个节点和/或一个或多个链路的变化。所述检测器可以检测状态的一个或多个变化,例如从第一状态到第二状态和/或从第二状态到第一状态,和/或可以包括一个或多个其他状态。

可以提供更新排序器用于含有更新拓扑数据集的消息。可以提供更新排序器,以便按照正确的生成序列或顺序或时间来考虑消息。

用于处理拓扑数据集的拓扑数据集处理器可以用于由来自所述网络中其他节点的拓扑数据集更新的拓扑数据集。

所述拓扑数据集处理器可以根据来自其他节点的拓扑数据集的数据来提供节点拓扑数据集的更新。

因此,根据本发明,可以提供或进一步提供以下选项、可能性和特征。

所述网络可以是节点的分布式系统。所述分布式系统可以包括呈客户端和/或服务器和/或对等体形式的一个或多个节点。

节点可以是活动电子装置或数据通信设备。节点可以特别是路由器和/或工作站和/或服务器和/或主计算机。节点可以是在例如所述网络内能够诸如相对于一个或多个其他节点来创建和/或接收和/或发射信息的位置。

一个或多个或所有的节点可以是对等体。两个或两个以上或所有的节点可以是网络中的平等参与者,例如在特权或能力或性能方面。

网络中的节点可以被认为是节点集合。

节点可以通过一个或多个链路来连接。节点可以通过一个或多个链路连接到另一节点。一个或多个或所有的链路可以是边。

两个节点之间的距离可以是那些节点之间的链路总和,优选地是提供那些节点之间的连接的链路的最小数目。距离可以是跳数。距离可以是链路的数目,例如使得直接链接的节点具有值1的跳数和/或间接链接的节点具有值>/=2的跳数。距离或跳数可以定义为:

d(i,j)

其中d是节点i与节点j之间的距离。

当有限数目个链路、优选地单个链路提供连接时,节点可以直接连接到另一节点。节点可以直接连接到一个或多个其他节点。优选地,直接连接到节点的节点连接到被认为是相邻节点的节点。优选地,直接连接到节点的所有其他节点是所述节点的相邻节点。相邻节点可以定义为:

adj(i)={j∈v:d(i,j)=radj}

其中i是所考虑的节点,j是节点集合v内的相邻节点数目,且radj是给定的相邻量度。

给定相邻量度可以是相邻半径。给定的相邻量度可以是许多链路,例如1个链路。

当大于1个链路的许多链路提供连接时,节点可以间接地连接到另一节点。优选地,当节点经由一个或多个中间节点(诸如相邻节点和/或其他节点)连接到另一节点时,或当节点经由系列中的两个或两个以上链路连接到另一节点时,所述节点间接地连接到另一节点。节点可以间接地连接到网络中的一个或多个或所有的其他节点。优选地,所述节点的给定邻居量度内的并不是相邻节点的其他节点是所述节点的邻居节点。所述节点的给定邻居量度之外的其他节点优选地既不是相邻节点也不是邻居节点。所述节点的给定邻居量度之外的以及既不是相邻节点也不是邻居节点的其他节点都优选地仍是所述节点集合的一部分。邻居节点可以定义为:

其中i是所考虑的节点,j是在距离内的集合v内的邻居节点数目,d(i,j)是节点i与节点j之间的距离,adj(i)是节点i的相邻节点,且h是给定邻居量度。

给定邻居量度可以是邻居半径。给定邻居量度可以具有下限值和上限值。给定邻居量度可以是许多链路,例如具有共同的上下限值的链路,诸如2个链路。给定邻居量度优选地大于给定相邻量度。

节点可以是节点集合的一部分,具有一个或多个相邻节点和一个或多个邻居节点。来自节点集合内的另一节点可以具有与所述节点共有的一个或多个或所有相邻节点,或者可以不具有与所述节点共有的相邻节点。另一节点可以具有与所述节点共有的一个或多个或所有邻居节点,或者可以不具有与所述节点共有的邻居节点。

可以提供用于网络拓扑变化和/或检测其变化的检测器。可以提供用于影响一个或多个节点和/或一个或多个链路的变化和/或检测其变化的检测器。所述一个或多个变化可以是状态变化,例如从第一状态到第二状态和/或从第二状态到第一状态,和/或可以包括一个或多个其他状态。

节点可以具有第一状态和第二状态,第二状态表示与第一状态相比的特性变化。特性变化可以是节点加入节点集合和/或网络。特性变化可以是节点重新加入节点集合和/或网络。特性变化可以是节点开始用作或重新开始用作所述节点集合和/或网络中的节点。特性变化可以是节点离开节点集合和/或网络。特性变化可以是节点停止用作所述节点集合和/或网络中的节点。

优选地,节点与直接连接到所述节点的另一节点之间的链路具有第一状态和第二状态,第二状态表示与第一状态相比的特性变化。特性变化可以是链路的出现或对链路的访问。特性变化可以是链路的重新出现或对链路的再次访问。特性变化可以是链路的消失或无法访问链路。

特性变化可以直接检测到。优选地,特性变化例如使用测试消息来间接地检测。测试消息可以由一个节点发送到另一节点。测试消息可以沿着链路发送。测试消息优选地重复发送,优选地定期发送。测试消息可以在给定时间段内至少发送一次,且优选地在所述时间段的任何给定重复内至少发送一次。所述时间段可以由在节点中或与节点相关联的时钟功能管控。

所述节点未接收到来自另一节点的测试消息可以表示所述另一节点和/或其间的链路已经历特性变化。明确地说,未接收可以表示所述另一节点已离开网络和/或链路已消失。优选地,未接收表示另一节点已停止运作和/或链路已停止运作。优选地,未接收是相对于一段时间来考虑的。优选地,时间段是大于在其间重复发送测试消息的时间段的时段。每一节点可以维持计时器,优选地为每一链路维持单独一个计时器,以便定义预期接收测试消息的时间段。

检测节点的状态变化可以产生节点的拓扑数据集变化。检测从第一状态到第二状态的变化可以产生节点的拓扑数据集变化。检测从第二状态到第一状态的变化可以产生节点的拓扑数据集变化。

检测从第一状态到第二状态的变化可以产生节点的拓扑数据集变化,其中第一状态是节点加入网络或运作和/或可访问链路或运作,其中第二状态是节点未加入网络或未运作和/或不可访问链路或未运作。

节点的拓扑数据集变化可以是节点或链路的状态变化。状态变化可以是从活动状态或有效状态或连接状态到不活动状态或失效状态或断开状态的变化。

节点的拓扑数据集变化可以是节点从所述拓扑数据集的删除。节点的拓扑数据集变化可以是链路从所述拓扑数据集的删除。

检测从第二状态到第一状态的变化可以产生节点的拓扑数据集变化,其中第二状态是节点未加入网络或未运作和/或不可访问链路或未运作,其中第一状态是节点加入网络或运作和/或可访问链路或运作。

节点的拓扑数据集变化可以是节点或链路的状态变化。状态变化可以是从不活动状态或失效状态或断开状态到活动状态或有效状态或连接状态的变化。

节点的拓扑数据集变化可以是将节点添加到所述拓扑数据集。节点的拓扑数据集变化可以是将链路添加到所述拓扑数据集。

节点的拓扑数据集可以是拓扑表。与节点可能的完整数据集相比,所述节点的拓扑数据集可能是未完成的数据集。

节点的拓扑数据集,例如拓扑表,可以包含在所述时间所述节点已知的链路的列表。拓扑表可以包含所述节点与所述节点的一个或多个、优选地所有选择节点之间的一个或多个或所有之间的可能链路的列表。所述节点的选择节点可以是所述节点的一个或多个、优选地所有相邻节点和/或所述节点的一个或多个、优选地所有邻居节点。拓扑表可以包括所述节点在所述时间已知的一个或多个、优选地所有链路的状态。

当存在节点的拓扑数据集变化时,可以将所述节点的拓扑数据集的变化传输到一个或多个其他节点。当存在节点的拓扑数据集变化时,优选地可以将全部的节点的拓扑数据集传输到一个或多个其他节点。所述一个或多个其他节点可以包括一个或多个或所有的相邻节点。所述一个或多个其他节点可以包括一个或多个或所有的邻居节点。所述一个或多个其他节点可以包括节点集合中的所有节点中的一者或多者。

当另一节点接收节点的拓扑数据集时,另一节点优选评估所述另一节点是否用节点的拓扑数据集更新所述另一节点的目前拓扑数据集。所述评估可以由接收节点的拓扑数据集的每一另一节点来执行,优选地,每一评估独立于其他评估。所述评估可以优选地确定所述另一节点的目前拓扑数据集比节点的拓扑数据集更旧还是更新。优选地如果另一节点的目前数据集更旧,那么从节点的拓扑数据集更新另一节点的目前拓扑数据集。优选地如果另一节点的目前拓扑数据集更新,那么不从节点的拓扑数据集更新另一节点的目前拓扑数据集。

当所述节点接收到另一节点的拓扑数据集时,节点优选评估所述节点是否用另一节点的拓扑数据集来更新所述节点的目前拓扑数据集。所述评估可以优选地确定所述节点的目前拓扑数据集比另一节点的拓扑数据集更旧还是更新。优选地如果节点的目前拓扑数据集更旧,那么从另一节点的拓扑数据集更新节点的目前拓扑数据集。优选地如果节点的目前数据集更新,那么不从另一节点的拓扑数据集更新节点的目前拓扑数据集。

可以提供一种用于对网络内传输的消息和/或消息排序的排序器,特别是关于与网络拓扑变化相关的消息。可以提供用于对消息和/或消息排序的排序器,以便按照正确生成的序列或顺序或时间来考虑消息。

节点和另一节点可以具备时钟功能,诸如逻辑时钟。时钟功能可以提供两种数据结构,第一种是本地时间的记录,且第二种是分布式系统内最著名的全局时间的记录。例如,逻辑时钟可以通过时钟功能提供本地时间的记录,例如逻辑本地时间,以及分布式系统内的全局时间的本地记录,诸如逻辑全局时间。

优选地,系统中的每一节点具备时钟功能。

时钟功能可以将时间戳指派给系统中的一个或多个或所有事件。事件可以包括新节点或新链路的检测。事件可以包括节点或链路的状态变化的检测。事件可以包括节点或链路丢失的检测。事件可以包括所述节点更新节点的拓扑数据集。

系统内的时间戳优选地遵循单调属性,最优选地是增加。如果两个事件是因果联系的,那么结果事件可以被给予比导致结果事件的原因事件晚的时间戳。

时钟功能可以是向量时间时钟。向量时间时钟可以使用时间向量。每一节点可以操作单独的时间向量。每一节点可以使用所述节点的时间向量来对所述节点的事件标记时间戳。每一时间向量可以呈以下形式:

ti=(ti1,..,tin)

其中ti是节点i的本地逻辑时钟,且描述节点i从时间1到时间n的逻辑时间进度。

一个或多个且优选地所有节点至少部分了解一个或多个或所有节点的逻辑时间进度,特别是所述节点的相邻节点和/或邻居节点的逻辑时钟进度。另一节点的逻辑时间进度的至少部分知识可以是以下形式:tij,其中表示节点i对节点j的本地时间的最新知识,其中j∈adj(i)。ti的维度可以由dim(ti)表示,且dim(ti)可以等于adj(i)的大小。

时间向量时钟可以根据一个或多个规则来操作。所述规则可以包括以下各项中的一个或多个或所有:

1.一个或多个和优选地所有节点以本地时间0来开始;

2.当事件发生在节点时,本地时间可以增加,例如增加整数,优选地增加值1;

3.当事件发生在节点时,所述节点向一个或多个其他节点发送消息,优选地,拓扑数据集已改变;

4.当另一节点接收到被认为是所述节点的事件的消息时,优选地是变化的消息,因此优选地将规则2应用于另一节点的本地时间;

5.当另一节点接收到消息时,优选地是变化的消息,除了规则4的增加之外,所述另一节点本地时间进一步增加,优选地,所述另一节点本地时间进一步增加规则4增加之后的另一节点本地时间或所述消息中的另一节点本地时间中的较大者;

6.由节点发送到另一节点的消息包括所述节点和所述节点知道本地时间的所有其他节点的本地时间,所述本地时间可能不同于当时一个或多个其他节点的实际本地时间;

7.如果消息比节点接收的最后一个消息更新,那么消息的拓扑数据集可以用于更新另一节点的拓扑数据集,优选地,仅在消息较新和/或消息导致另一节点的拓扑数据集被更新的情况下应用规则4和/或5;

8.如果消息比节点接收的最后一个消息更旧,那么该消息的拓扑数据集可以丢弃和/或不用于更新另一节点的拓扑数据集,优选地在消息较旧和/或丢弃和/或不使用消息的拓扑数据集的情况下不应用规则4和/或5;

向量时间时钟可以根据一个或多个规则来操作,其中所述规则包括以下各项中的一个或多个或所有:

·节点i上的初始本地事件的时间戳全都是0,除了第i表项,它的时间戳是1;

·如果tij=x,那么节点i知道节点j处的本地时间已进行到x;

·向量ti构成节点i的逻辑全局时间视图;

·节点i使用它对事件进行时间标记;

·消息的时间戳是当前时间戳和传入向量时间戳的逐元素最大值;

·在发送消息之前,节点i更新其本地时间tii←tii+1;

·在从节点j∈adj(i)接收到消息(m,tj)后,节点i执行用以下内容更新节点i的逻辑全局时间的动作:tik←max(tik,tjk)。

一个或多个或所有节点发送的一个或多个或所有消息所使用的广播算法可以是确定性算法或概率算法。

可以提供数据集处理器和/或数据集的处理,使得在所述网络内共享所述网络的拓扑变化的知识。可以提供节点的拓扑数据集的数据集处理器和/或数据集的处理,使得节点的拓扑数据集通过来自其他节点的拓扑数据集的数据来更新。

可以为节点、优选地每一节点构建节点的拓扑数据集,例如拓扑表。节点的拓扑数据集可以包含用于所述节点i的主拓扑视图vi。节点的拓扑数据集可以包括所述节点已知的链路列表。链路可以lmn的形式列出,其中m是一个节点,且n是另一节点。形式lmn和lnm可以互换使用,仅列出其中一对来提供列表中的链路。t节点的拓扑数据集可以包括所述列表中每一链路的名称。名称可以具有两个值中的一者,例如1或∞。名称可以涉及链路的可操作状态,例如在可操作时的值和不可操作时的值。

最初,节点已知的链路列表可以是那些节点且因此由节点例如由于经由这些链路从其他节点接收到测试消息而检测到的链路。

一旦含有其他节点拓扑数据集的消息被交换,那么所述节点已知的链路列表可以是来自其他节点的消息中的那些链路,或者可以由这些链路来补充。优选地,节点已知的链路与来自其他节点的消息中的那些链路的组合形成所述节点的拓扑数据集。

节点的拓扑数据集可以相对于节点或链路的可操作状态的变化来更新。节点的拓扑数据集可以相对于返回到可操作状态的节点或链路来更新。节点的拓扑数据集可以相对于添加到所述网络的新链路或新节点来更新。被添加到网络的新节点可以发送来自另一节点的节点拓扑数据集,从而提供用于所述节点的第一节点拓扑数据集。

当满足一个或多个条件时,可以用来自含有另一节点的拓扑数据集的消息中的数据来更新节点的拓扑数据集。条件可以是另一节点的拓扑数据集具有比所述节点的拓扑数据集更晚的时间戳。条件可以是对于一个或多个链路,特别是节点的拓扑数据集和另一节点的拓扑数据集两者中的一个或多个链路,名称有变化,例如从1到∞或从∞到1。条件可以是另一节点的拓扑数据集含有不在所述节点的拓扑数据集中的一个或多个链路。条件可以是另一节点的拓扑数据集含有不在所述节点的拓扑数据集中的一个或多个链路,以及另一条件是所述节点的拓扑数据集仅相对于另一节点拓扑数据集中处于所述节点的给定量度内的此类链路被更新。给定量度可以在给定相邻量度内,或更优选地在给定邻居量度内。不在给定量度内的链路优选地不被添加到节点的拓扑数据集。

当在给定时间tj从节点j接收到形式为m={vi,tj}的消息m时,可以更新节点的拓扑数据集,其中节点j具有拓扑数据集或全局拓扑视图vj,使得节点i使用它来更新节点i的拓扑数据集或全局拓扑视图vi。

可以更新节点的拓扑数据集,其中链路lmn是节点的拓扑数据集(例如节点全局视图vi)和另一节点的拓扑数据集(例如另一节点全局视图vj)两者中的链路,使得vi∪vj。用在vj中接收到的关于链路lmn的信息来更新的节点的拓扑数据集可以以时间戳tj[tj]>ti[tj]为条件,如果条件为真,那么采用链路lmn的较新状态。

可以更新节点的拓扑数据集,其中链路lpq是另一节点的拓扑数据集中的链路,例如另一节点全局视图vj,其目前不是节点的拓扑数据集中的链路,例如节点全局视图vi。关于添加到节点的拓扑数据集的链路lpq的信息,例如节点全局视图vi,可以以节点i与q之间的距离低于相邻节点的值,视界h,为条件。所述条件可以是其中是vi的每个活动链路。

每当节点的拓扑数据集由于所述节点接收的消息而发生改变时,所述节点可以向一个或多个其他节点发送含有节点的拓扑数据集的消息。优选地,节点可以仅向是邻居节点和/或相邻节点的那些一个或多个其他节点发送含有节点的拓扑数据集的消息。

每当节点链接到新节点时,节点可以向一个或多个新节点发送含有节点的拓扑数据集的消息。优选地,节点可以仅向是所述节点的相邻节点的那些一个或多个新节点发送含有节点的拓扑数据集的消息。

系统和/或方法内的多个节点可以彼此独立地启动更新。多个更新可以在系统和/或方法内同时活动,优选地,利用更新实施控制的时间戳被应用于节点所在的拓扑数据集。

附图说明

参考本文描述的实施例,本发明的这些和其他方面将变得清楚并得以阐明。现将仅以实例的方式并参考附图来描述本发明的实施例,其中:

图1是示出节点、相邻节点和邻居节点的网络拓扑图的实例;

图2是向量时钟系统的图示;

图3描绘没有任何拓扑变化(失败或丢失的消息)情况下广播算法的执行;

图4是用以描述本发明实施例的操作的全局网的图示;

图5是用以描述本发明实施例的消息随时间在节点之间交换的图示。

具体实施方式

非结构化点对点(p2p)网络的核心问题是拓扑维护。例如,当节点加入和离开网络时和/或当节点突然崩溃时,如何正确更新邻居变量。本发明涉及拓扑更新算法。

在p2p网络内,当需要搜索时,信息传播、广播等需要知道“谁与谁有联系”或“谁知道谁”。在此背景中,已知许多广播算法,诸如概率算法和确定性算法。

流行病(epidemiological)算法或流言协议(gossipprotocols)本质上是概率性的,且它们不依赖于固定的拓扑。节点与随机邻居交换信息以实现类似扩散的计算模式,且因此系统收敛到所有节点都知道消息的状态。流言协议是可扩展的,因为每一节点只发送固定数目的消息,与网络中的节点数目无关。另外,节点不会等待确认,也不会在确认未到达时采取恢复动作。它们实现了对间歇性链路故障和节点崩溃的容错,因为节点从不同的节点接收消息的副本。没有节点扮演特定的角色,且因此故障节点不会妨碍其他节点继续发送消息。因此,不需要故障检测或特定的恢复动作。

流言协议的缺点是它们发送的消息数目。一类流言协议(反熵协议(anti-entropyprotocols))在非终止运行中发送无限数目的消息。

诸如广度优先搜索的生成树算法(spanningtreealgorithms)是一类确定性算法。生成树提供一种简单方式,将网络可视化为“主干(backbones)”,即连接节点的最小边集。想法很简单;首先构建生成树,并用于从每一节点收集本地数据变量,且然后将数据聚合到根节点(或汇聚节点)。每个节点将其值传输给自己的父节点。在每一非叶节点上,在将结果向上传输到树之前,除了其自身的值之外,还会处理其子节点的值。由于广度优先协议在产生较浅级别的所有节点之前不会在树中产生节点,因此它总是找到到达节点的最短路径。生成树是一种非常有效的信息分发和收集方式,且在于其如何计算网络的新拓扑的方式。

一般来说,类似于生成树的结构被认为是结构脆弱的:单个顶点或边的故障导致广播失败。

拓扑更新问题是当网络拓扑是动态的,即当链路在任意时间出现故障并恢复时,保持每一网络站点的网络拓扑知识是最新的问题。任何拓扑算法的正确操作在很大程度上取决于网络节点检测链路状态变化(故障和修复)的方式和其他因素。

拓扑算法的使用背后的挑战存在几个微妙之处,且任何解决方案都应考虑到这些微妙之处:

·链路可以在短时间内经历若干次拓扑变化。其他网络节点必须最终确定哪些改变是最新的。节点必须能够区分关于链路状态的新旧信息。

·当拓扑算法正在运行时,可能会发生额外的拓扑变化。拓扑算法必须能够在执行期间并入新信息,或者能够启动新的算法版本。如果使用不同的版本,每一节点必须能够确定哪个是最新的版本。

·单个链路的修复可能导致网络中断开的两个部分重新连接。每一部分可以有关于另一部分的过时的拓扑信息。算法必须确保两部分最终一致,并适应正确的网络拓扑。

网络实现自身变化的能力对于通过网络进行快速有效的通信以及网络的全面运作非常重要。作为实例,为了提供数字货币的快速支付网络,交易和其他信息必须通过分布式网络完全且快速地共享。

在依赖于门限密码系统(thresholdcryptosystems)通过向参与者分配份额(shares)来保护秘密的方法中,首先构建由一组共同持有秘密份额子集的商家组成的网络。秘密份额的后一半由客户持有。商家网络执行重要的任务,诸如创建签名、更新密钥份额、定义阈值级别、验证交易等。在这些情况下,他们的协作和沟通能力以及对网络拓扑的了解是至关重要的。

在以下描述中,我们提出一种算法,允许每一商家节点维持正确的网络拓扑视图,即使链路和节点出现故障。该算法允许网络在有限数目的步骤内自动返回到稳定的配置(所谓的“自稳定”),并使用逻辑时钟来精确地捕捉事件之间的因果关系。拓扑更新协议是事件驱动的,即在检测到一些变化时被激活。

所述系统包括以下步骤:

检测拓扑的变化;

按发生率将那些变化排序;以及

构建反映变化的新拓扑。

为了能够全面描述本发明,理解网络的数学模型是有用的。

参看图1,提供一系列节点(标为1至8)。节点中的每一者具备到另一节点的链路(或边)。所述系列节点形成一个集合,其中v是集合中的节点数目。

网络可以用图g=(v,e)来表示,其中v是节点集合,每一节点具有不同的身份,且e是边集(或链路)。

数学模型使用以下定义:

定义1.(“跳数(hop)”的定义)两个节点i与j之间的距离d(i,j)等于连接节点的最小链路数。因此在图1中,节点6与节点1之间的距离是两个链路,且节点8与节点1的情况下仅是一个链路。

定义2.(“相邻节点(adjacentnodes)”的定义)集合v中节点i(i∈v)的相邻节点adj(i)是集合v中在定义的距离或相邻半径radj内的节点j(j∈v)。因此:

adj(i)={j∈v:d(i,j)=radj}

定义3.(“邻居节点(neighbournodes)”的定义)集合v中节点i(i∈v)的邻居节点n(i)是集合v中在定义的距离或视界半径(h≥radj)内的节点j(j∈v)。因此:

在图1中,如果我们选择相邻半径,radj=1,那么节点(对等体)1的相邻节点用红色表示;即节点2、3、4、7、8。如果我们选择视界半径h=2,那么邻居节点用蓝色表示;即节点5和6。

检测变化

显然,为了能够考虑拓扑变化,需要能够检测到此类变化。

拓扑变化可以在任何时间发生。因此,我们对系统做出以下假设,以捕捉任何类型的初始故障。网络中的每一节点i将其相邻邻居的身份维持在列表adj(i)中。节点i定期向其相邻节点发送测试消息“我还活着(i'malive)”。参看图1,节点4仅向节点1发送此类消息,而节点1向节点2、3、4、7、8发送此类消息。

发送“我还活着”消息的频率对错误检测机制的效率有很大影响。为了实现短的错误检测时间,必须非常频繁地发送和检查“我还活着”消息。

节点i中的每一个处理器具有用以测量时间间隔的本地时钟。不同节点处的时钟可能没有相互同步。对于每一链路(i,j),节点i维持用于其相邻节点j∈adj(i)的计时器tij。如果节点i在时间间隔δt内没有从节点j接收到“我还活着”消息,那么假设链路(i,j)不再可用并从其相邻节点集合中移除j。接着更新其当前的(可能错误的)拓扑表ti。拓扑表是直接连接到节点i的链路的操作状态列表。因此,参看图1,节点1发送“我还活着”消息到节点4,且节点4应发送“我还活着”消息到节点1。如果节点1在定义的时间段内没有从节点4接收到此类消息,那么从节点1的拓扑表t1中移除节点4。那么拓扑表t1中节点1的相邻节点将仅是节点2、3、7和8。

上述考虑形成了第一拓扑更新规则,即:

1.当节点检测到相邻链路出现故障时,故障状态将被输入到节点的主拓扑表中。

期望与节点集合v中的其他节点共享这个更新的拓扑表。发生这种情况时,节点会根据从相邻节点收到的拓扑表来更新其自己的拓扑表。因此,形成第二拓扑更新规则,即:

2.当节点从邻居接收到整个主拓扑表时,它通过使用主拓扑更新算法(下文描述)来更新其主拓扑表。

排序变化

如上所述,更新的拓扑表消息仅响应于检测到拓扑变化而发送。由于网络中发送的所有消息都会经受延迟,所以节点可能永远无法确定自己在某一时刻是否知道正确的拓扑。一个或多个更新的拓扑表消息与另一更新的拓扑消息中记录的状态相比可能更旧和过时,而与其接收时间无关。因果排序广播(如raynal,m.和singhal,m.所详细描述的——在分布式系统中捕获因果关系(capturingcausalityindistributedsystems)——1996年ieee)确保了如果两个消息因果相关且具有相同的目的地,那么它们将按照它们的发送顺序被传送到应用程序。

本发明使用逻辑时钟系统,其中每个节点(对等体)都具有使用下文描述的一组规则来前进的逻辑时钟。因此,每个消息都被指派了时间戳,通过时间戳,过程可以推断事件之间的因果关系。指派给事件的时间戳服从单调性;它们总是在增加。也就是说,如果事件a在因果关系上影响了事件b,那么a的时间戳小于b的时间戳。在此情况下,事件b是事件a的结果。

逻辑时钟根据以下规则前进;向量时间时钟。

在向量时钟系统中,时域由一组有限维非负整数向量表示。每一节点i维持向量ti=(ti1,…,tin),其中tii是节点i的本地逻辑时钟,且描述节点i从时间1到时间n的逻辑时间进度。

tij表示节点i对节点j的本地时间的最新知识,其中节点j∈adj(i)。

我们用dim(ti)表示ti的维度,且我们使dim(ti)等于adj(i)的大小。

节点i上的初始本地事件的时间戳全都是0,除了第i项,它的时间戳是1。如果tij=x,那么节点i知道节点j处的本地时间已进行到x。向量ti构成节点i的逻辑全局时间视图;节点i将其用于时间戳事件。接收的消息的时间戳是当前时间戳和传入向量时间戳的逐元素最大值。

此操作是在图2中关于三个节点a、b和c的操作。在每一节点处,本地时间最初是0。当事件发生在节点c时,节点c将其本地时钟时间增加到1,并通知节点b。当节点b接收到消息时,没有其他事件被通知给节点b,且因此节点b的本地时间仍然是0。节点b现在经历了一个事件,且因此节点b将节点b本地时间更新1。由于节点b本地时间原来是0,因此得到的值为1。另外,节点b还通过在消息中添加更新后的节点b本地时间(现在值为1)或节点b本地时间(实例中值为0)中的较大者来修正节点b本地时间。因此,修正后的节点b本地时间为2,且节点b接着将变化通知给节点a。

节点a经历类似的过程,即更新1,并通过添加1进行修正,从而向节点b发送消息a:2b:2c:1。当节点b收到此消息时,节点b已经注意到另一独立事件,并已将所述事件传达给c。因此,节点b更新1,但是修正是将1添加到节点b本地时间(此时为3),而不是将1添加到消息中的节点b本地时间(此时只有2)。因此,发送给a的新消息的值为b:5(3+1+1,而不是2+1+1)。

后续消息用同样的方式来处理。节点b在时间3发送的第二消息与上文论述的其他消息无关,消息一(c到b)、消息二(b到a)以及消息四(a到b)和消息五(b到c)。

上述考虑形成了逻辑时钟更新规则,即:

1.在发送消息之前,节点i更新其本地逻辑时间tii←tii+1。

2.在从节点j∈adj(i)接收到消息(m,tj)后,节点i执行以下动作序列

a.更新其逻辑全局时间如下:tik←max(tiktjk)

图3描绘没有任何失败或丢失消息的广播算法的执行。我们不指定广播算法(确定性或概率性),且也不为邻居节点提供定义。我们假设节点1、2和3都是相邻节点,即(2,3)∈adj(1)、(1,3)∈adj(2)和(1,2)∈adj(3)。节点1产生第一消息(m1,t1),根据选择的广播算法随机地或确定地将其发送到节点2和3。由来自节点1的消息(m1,t1)触发的节点3产生新的第二消息(m2,t3),并发送给节点1和2。由来自节点3的消息(m2,t3)触发的节点1产生新的第三消息(m3,t1),并发送给节点2和3。

显然,当节点2从节点3接收到第二消息(m2,t3)时,节点2已从节点1接收到了消息(m3,t1)。节点2从上文概述的方法中知道这些消息的顺序。因此,节点2丢弃第二消息(m2,t3),并利用第三消息(m3,t1)来保证消息内容的完整性。

构建更新的拓扑

在检测到变化并确保了这些变化在节点处的正确排序之后,在下文论述节点建立新拓扑的方式。

由每一节点i使用以下算法来构建其主拓扑视图vi。我们将节点m与n之间的单个双向链路指代为lmn或lnm。拓扑表vi中的每一项是链路lmn或lnm。链路可以具有两个值1或∞中的一者。当链路可操作时,将值设定为1。当链路失效时,将值设定为∞。

在给定时间从节点j接收到消息m={vi,tj}后,节点i使用它来更新其全局视图vi。

使链路lmn成为两个全局视图vi∪vj中的链路。如果时间戳tj[tj]>ti[tj],那么关于链路lmn的信息因所接收的vj而更新。采用链路lmn的较新状态。

使lpq成为vj中的链路,其现在不是vi中的链路。如果节点i与q之间的距离低于相邻节点的值(视界h),那么将关于链路lpq的信息添加到全局视图vi。也就是说其中是vi的每个活动链路。

因此更新链路的可操作状态的变化,添加返回到可操作状态的链路以及添加出现在网络中的新链路。当链路返回网络或向网络添加新链路时,拓扑算法确保向其提供最新拓扑表的副本。

上述考虑形成了通信规则,即:

1.当节点的主拓扑表中的链路状态表项改变时,将含有新拓扑表的消息发送到邻居节点。

2.当节点处的链路协议检测到相邻链路变得可操作时,节点通过所述链路传输其整个主拓扑表。

用于协议的合适代码的实例如下:

1:对于每个接收到的vj进行

2:开始

3:如果tj[tj]>ti[tj],那么

4:开始

5:ti[tj]=tj[tj]

6:对于每个链路lmn∈vi∪vj进行

7:开始

8:vi[lmn]=vj[lmn]

9:结束

10:对于每个链路lmn∈vj和进行

11:开始

12:如果那么

13:开始

14:vi[lmn]=vj[lmn]

15:结束

16:结束

17:结束

18:结束

现在参看图4中的网络来描述拓扑更新算法的工作实例。

我们假设radj=1和h=2。因此,相对于节点1,节点2和3是相邻节点,且节点4和5是邻居(neighbouring)节点。

在初始阶段,节点1、2和3的拓扑视图vi,i∈(1,2,3),是:

因此,节点3具有比节点1和2获知地更多且更完整的主拓扑视图。

返回参考对详细描述变化的消息排序的方法,逻辑时钟ti是:

阶段1:

节点3将第一消息m1={v3,t3[t3]=1}发送到节点1和节点2。

阶段2:

节点1和2,即i∈(1,2),检查是否t3[t3]>ti[t3]。作为第一消息,情况就是这样,且因此节点1和2,即节点i,更新它们的逻辑时钟ti和它们的视图vi。实际上,这意味着在v1增加l23,因为节点1先前不知道这一链路。虽然链路l45对于节点1也是未知的,但是v1没有被更新为包括链路l45,因为这一链路在允许的邻居(neighbour)节点限制之外;l13+l34+l45>h。节点1和2的t和v的所得更新如下:

如果节点1发送类似的消息m2={v1,t1[t1]=1}到节点2,那么节点2更新其逻辑时钟:

节点2的拓扑视图v2不变,因为它已经知道链路l12、l13、l23和l34。因为v2没有变化,所以节点2不广播新的消息。

阶段3:

链路(边)l34现在是失效的。由于缺少来自节点4的测试消息,节点3检测到这种变化。因此,节点3更新视图以包括l34的可操作状态。更新视图为:

由于存在变化,所以节点3将新消息m3={v3,t3[t3]=2}发送到节点1和节点2。在此实例中,我们假设m2没有到达节点2(或者尚未到达节点2)。

阶段4:

在执行上述检查后,节点1更新其逻辑时钟t1以及其视图v1。这得到:

阶段5:

节点1迅速地行动并发送消息m4={v1,t1[t1]=2}。

阶段6:

在接收到消息时m4,节点2执行上述检查,且接着节点2相应地更新t2和v2

其他变化将以相同的方式被检测到、传输、排序和更新。

应注意,上述实施例说明而非限制本发明,且本领域技术人员将能够在不脱离由所附权利要求限定的本发明范围的情况下设计许多替代实施例。在权利要求中,括号中的任何附图标记不应被理解为限制权利要求。词“包含(comprising)”和“包括(comprises)”等并不排除除了在任何权利要求或说明书整体中列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包含(comprises)”意味着“包括(includes)或由……组成(consistsof)”,且“包括(comprising)”意味着“包含(including)或由……组成(consistingof)”。元件的单数引用并不排除此类元件的复数引用,且元件的复数引用并不排除此类元件的单数引用。本发明可以借助于包含若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的装置权利要求中,这些装置中的几个可以由同一个硬件项目来体现。在相互不同的从属权利要求中引用某些措施的事实并不表示这些措施的组合不能被有利地使用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1