分布式数据平面验证方法及系统

未命名 09-07 阅读:144 评论:0
1.本公开涉及网络安全
技术领域
:,特别涉及一种关于数据包转换的分布式数据平面验证方法及系统。
背景技术
::2.网络错误会产生灾难性的经济和社会后果,因此如何有效地发现网络错误是网络领域面临的基本挑战。查找网络错误的一个主要方法是网络验证,它会自动检查网络设备的控制平面和数据平面来查找错误。数据平面验证工具作为网络验证的重要手段,能够在配置部署前及时发现错误;并且,还能够通过分析数据平面(例如转发表和访问控制列表)是否满足网络要求来检查网络的正确性,直接反映网络的转发行为,使得验证相对容易实现。3.数据包转换是网络的常见问题。具体地,在分组网络和虚拟私有网络中,nat(networkaddresstranslation,网络地址转换)和ip(internetprotocol,网际互联协议)隧道技术被广泛使用,所有一级网络业务供应商和超过一般的大型网络业务供应商使用mpls(multi-protocollabelswitching,多协议标签交换)隧道。在经过nat的网络设备之后,数据包的ip地址会发生改变(即公网ip和私网ip之间转换);当存在ip隧道的情况时,一个ip报文会在隧道入口被封装在另一个ip报文中,并在隧道出口被解封装;对于mpls隧道入口设备,它在二层头部前增加mpls标签,因此该入口设备在dvnet中向下游节点传递的不是ip信息谓词,而是mpls标签的订阅消息,进一步地由出口设备会去掉上游节点的mpls标签,并向下游传递ip的订阅消息。4.但是,相关技术中的数据平面验证工具不能很好地应对数据包转换问题。以行业内较为先进的两种数据平面验证工具apt和katra为例,apt提出了数据包等价性的概念来应对网络中可能存在的数据包转换问题,katra则对任意嵌套的数据包封装和解封装的分层网络提出了新的形式化网络模型及其语义。但是,无论是哪种方式,均基于集中式的体系结构,当nat或者ip隧道的数量增加,网络验证的时间也会不可避免的延长。技术实现要素:5.为了解决上述的至少一个问题,本公开提供了一种分布式数据平面验证方法及系统。6.根据本公开的一个方面提供了一种分布式数据平面验证方法,包括:响应于当前设备节点具备数据包转换条件,由所述当前设备节点将所述上游设备节点发送的第一订阅消息转换为第二订阅消息;调用所述下游设备节点执行对所述第二订阅消息的计数任务,并将对所述第二订阅消息的计数结果反馈给所述当前设备节点;由所述当前设备节点将对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果,并反馈给所述上游设备节点。7.在一些实施方式中,所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息,包括:当所述数据包转换条件为所述当前设备节点是实现网络地址转换的设备节点时,由所述当前设备节点调取地址转换表;所述当前设备节点通过所述地址转换表确定与所述第一订阅消息相匹配的预设协议地址;以及所述当前设备节点将所述第一订阅消息的网络协议地址转换为所述预设协议地址,以形成具有所述预设协议地址的第二订阅消息。8.在一些实施方式中,所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息,包括:当所述数据包转换条件为所述当前设备节点是多协议标签交换隧道的设备节点时,对节点标签进行二叉决策图的建模,并对所述第一订阅消息进行扩展,以便于所述节点标签的输入;以及当当前设备节点是多协议标签交换隧道的入口设备节点时,由所述当前设备节点在所述第一订阅消息上增加自身对应的所述节点标签,以使得所述第一订阅消息转换为具有所述当前设备节点的节点标签的所述第二订阅消息。9.在一些实施方式中,所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息,包括:当所述数据包转换条件为所述当前设备节点是网际互联协议地址隧道的入口设备节点时,控制所述当前设备节点对所述第一订阅消息的谓词前封装预设谓词,以将所述第一订阅消息转换为封装有预设谓词的所述第二订阅消息。10.在一些实施方式中,所述调用所述下游设备节点执行对所述第二订阅消息的计数任务,并将对所述第二订阅消息的计数结果反馈给所述当前设备节点,包括:在有向无环图的有效路径上调取所述下游设备节点,并对所述下游设备节点进行初始化;控制所述下游设备节点的验证器基于分布式验证协议执行对所述第二订阅消息的计数任务,其中所述分布式验证协议用于规范各个设备节点上的验证器和预期相邻的设备节点之间的数据共享过程;控制所述下游设备节点沿着所述有效路径的反向路径,向与自身相邻的所述当前设备节点同步对所述第二订阅消息的计数结果。11.在一些实施方式中,所述由所述当前设备节点将对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果,并反馈给所述上游设备节点,包括:当所述当前设备节点为入口设备节点时,由所述当前设备节点接收各个所述下游设备节点对所述第二订阅消息的计数结果;控制所述当前设备节点以各个所述下游设备节点对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果;以及将对所述第一订阅消息的计数结果作为针对所述第一订阅消息的数据平面验证结果,并反馈给所述上游设备,其中所述上游设备为外网设备。12.在一些实施方式中,还包括:响应于所述当前设备节点对数据包转换规则的更新结果,控制所述当前设备节点将所述第一订阅消息转换为更新订阅消息,并向所述下游设备节点传递所述更新订阅消息。13.在一些实施方式中,在所述由所述当前设备节点将所述上游设备节点发送的第一订阅消息转换为第二订阅消息之前,包括:根据数据平面验证需求和网络拓扑结构,构建包含所有有效路径的有向无环图。14.在一些实施方式中,在所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息之前,还包括:对针对数据包转换场景的验证任务进行分解,并将分解之后的计数任务分配给各个设备节点,以使得各个设备节点上的验证器基于相应的所述计数任务进行计数。15.在一些实施方式中,还包括:设定需求规范语言,以控制数据平面验证需求以数据包空间、入口设备节点集合、行为所构成的元组形式进行表示,其中,数据包空间中每个数据包从入口设备节点集合中任一设备节点进入网络时,数据包的任一路径满足行为中指定的上下文,行为被指定为有效路径和匹配运算符的正则表达式元组。16.根据本公开的一个方面提供了另一种分布式数据平面验证系统,包括:验证规划器和多个验证器,其中所述验证器布置于设备节点,响应于当前设备节点具备数据包转换条件,所述当前设备节点的验证器用于将上游设备节点发送的第一订阅消息转换为第二订阅消息;所述下游设备节点的验证器用于执行对所述第二订阅消息的计数任务,并将对所述第二订阅消息的计数结果反馈给所述当前设备节点;所述当前设备节点的验证器用于将对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果,并反馈给所述上游设备节点。附图说明17.附图示出了本公开的示例性实施方式,并与其说明一起用于解释本公开的原理,其中包括了这些附图以提供对本公开的进一步理解,并且附图包括在本说明书中并构成本说明书的一部分。18.图1为本公开示例性实施方式的分布式数据平面验证方法框图。19.图2为本公开示例性实施方式的需求规范语言的抽象语法示意图。20.图3为本公开示例性实施方式的tulkun的体系结构示意图。21.图4为本公开示例性实施方式的正则表达式转换为有限自动机的过程示意图。22.图5为本公开示例性实施方式的dvm协议的关键数据结构和存储流程示意图。23.图6为本公开示例性实施方式的tulkun工作流程示意图。24.图7为本公开示例性实施方式的tulkun应对数据包转换示意图。25.图8为本公开示例性实施方式的存在数据包转换规则的突发更新验证时间示意图。26.图9为本公开示例性实施方式的存在数据包转换规则的增量更新验证时间示意图。具体实施方式27.下面结合附图和实施方式对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分。28.需要说明的是,在不冲突的情况下,本公开中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明本公开的技术方案。29.除非另有说明,否则示出的示例性实施方式/实施例将被理解为提供可以在实践中实施本公开的技术构思的一些方式的各种细节的示例性特征。因此,除非另有说明,否则在不脱离本公开的技术构思的情况下,各种实施方式/实施例的特征可以另外地组合、分离、互换和/或重新布置。30.本文使用的术语是为了描述具体实施例的目的,而不是限制性的。如这里所使用的,除非上下文另外清楚地指出,否则单数形式“一个(种、者)”和“所述(该)”也意图包括复数形式。此外,当在本说明书中使用术语“包含”和/或“包括”以及它们的变型时,说明存在所陈述的特征、整体、步骤、操作、部件、组件和/或它们的组,但不排除存在或附加一个或更多个其它特征、整体、步骤、操作、部件、组件和/或它们的组。还要注意的是,如这里使用的,术语“基本上”、“大约”和其它类似的术语被用作近似术语而不用作程度术语,如此,它们被用来解释本领域普通技术人员将认识到的测量值、计算值和/或提供的值的固有偏差。31.图1为本公开示例性实施方式的分布式数据平面验证方法框图。下面将结合图1对分布式数据平面验证方法s100进行详细说明。32.如图1所示,分布式数据平面验证方法s100包括:33.步骤s102,响应于当前设备节点具备数据包转换条件,由当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息。34.步骤s104,调用下游设备节点执行对第二订阅消息的计数任务,并将对第二订阅消息的计数结果反馈给当前设备节点。35.步骤s106,由当前设备节点将对第二订阅消息的计数结果作为对第一订阅消息的计数结果,并反馈给上游设备节点。36.上游设备节点是发出第一订阅消息的设备节点,可为网络之外的设备节点。37.当前设备节点是接收第一订阅消息的设备节点,处于网络中,可为入口设备节点。38.下游设备节点是接收第二订阅消息的设备节点,与当前设备节点处于同一网络中,可为目的节点。下游设备节点和当前设备节点之间还可具有多个设备节点,第二订阅消息可通过其余的各个设备节点的传递到达下游设备节点。当前设备节点至下游设备节点的消息传递路径与有向无环图中有效路径的路径方向一致。39.订阅消息所对应的网络协议ip地址在经过含有nat的网络设备时,会发生网络协议地址的变更,因此第一订阅消息为网络协议地址变更前的消息;第二订阅消息为发生网络协议地址变更之后的消息,其对应的网路协议地址为在网络的地址转换表中提取的预设协议地址。40.在一些实施方式中,步骤s102包括:当数据包转换条件为当前设备节点是实现网络地址转换的设备节点时,由当前设备节点调取地址转换表;当前设备节点通过地址转换表确定与第一订阅消息相匹配的预设协议地址;以及当前设备节点将第一订阅消息的网络协议地址转换为预设协议地址,以形成具有预设协议地址的第二订阅消息。41.在一些实施方式中,步骤s102包括:当数据包转换条件为当前设备节点是多协议标签交换隧道的设备节点时,对节点标签进行二叉决策图的建模,并对第一订阅消息进行扩展,以便于节点标签的输入;以及当当前设备节点是多协议标签交换隧道的入口设备节点时,由当前设备节点在第一订阅消息上增加自身对应的节点标签,以使得第一订阅消息转换为具有当前设备节点的节点标签的第二订阅消息。42.另外,当当前设备节点是多协议标签交换隧道的沿线节点时,由当前设备节点在带标签的上游节点消息上替换自身对应的节点标签,以使得上游节点消息转换为具有当前设备节点的节点标签的订阅消息。当当前设备节点是多协议标签交换隧道的出口节点,由当前设备节点在带标签的第一订阅消息上删除节点标签,还原入口节点接收到的上游设备发来的第一订阅消息。43.在一些实施方式中,步骤s102包括:当数据包转换条件为当前设备节点是网际互联协议地址隧道的入口设备节点时,控制当前设备节点对第一订阅消息的谓词前封装预设谓词,以将第一订阅消息转换为封装有预设谓词的第二订阅消息。44.另外,当前设备节点是网际互联协议地址隧道的出口设备节点时,控制当前设备节点对上游订阅消息的谓词前解封装预设谓词,以将封装有预设谓词的上游节点订阅消息还原为第一订阅消息。45.在一些实施方式中,步骤s104包括:在有向无环图的有效路径上调取下游设备节点,并对下游设备节点进行初始化;控制下游设备节点的验证器基于分布式验证协议执行对第二订阅消息的计数任务,其中分布式验证协议用于规范各个设备节点上的验证器和预期相邻的设备节点之间的数据共享过程;控制下游设备节点沿着有效路径的反向路径,向与自身相邻的当前设备节点同步对第二订阅消息的计数结果。46.在一些实施方式中,步骤s106包括:当当前设备节点为入口设备节点时,由当前设备节点接收各个下游设备节点对第二订阅消息的计数结果;控制当前设备节点以各个下游设备节点对第二订阅消息的计数结果作为对第一订阅消息的计数结果;以及将对第一订阅消息的计数结果作为针对第一订阅消息的数据平面验证结果,并反馈给上游设备,其中上游设备为外网设备。47.在一些实施方式中,分布式数据平面验证方法s100还包括:响应于当前设备节点对数据包转换规则的更新结果,控制当前设备节点将第一订阅消息转换为更新订阅消息,并向下游设备节点传递更新订阅消息。48.在一些实施方式中,在步骤s102之前,包括:根据数据平面验证需求和网络拓扑结构,构建包含所有有效路径的有向无环图。49.在一些实施方式中,在步骤s102之前,还包括:对针对数据包转换场景的验证任务进行分解,并将分解之后的计数任务分配给各个设备节点,以使得各个设备节点上的验证器基于相应的计数任务进行计数。50.在一些实施方式中,分布式数据平面验证方法s100还包括:设定需求规范语言,以控制数据平面验证需求以数据包空间、入口设备节点集合、行为所构成的元组形式进行表示,其中,数据包空间中每个数据包从入口设备节点集合中任一设备节点进入网络时,数据包的任一路径满足行为中指定的上下文,行为被指定为有效路径和匹配运算符的正则表达式元组。51.图2为本公开示例性实施方式的需求规范语言的抽象语法示意图。52.如图2所示,本公开提出了设定需求规范语言的步骤,以控制数据平面验证需求以数据包空间、入口设备节点集合、行为所构成的元组形式进行表示。语法需求规范语言的抽象语法是一种声明性语言,其中每一个需求至少由数据包空间packet_space、入口设备节点结合ingress_set以及行为behavior所构成的元组的形式所表示。当数据包空间packet_space中每个数据包从入口设备节点ingress_set中的任何设备节点进入网络时,数据包的任一路径必须满足行为behanior中指定的上下文,行为behavior被指定为有效路径path_exp和匹配运算符的正则表达式元组。路径集合path_set已在正则表达式中指定,例如数据平面验证需求(源地址srcip=10.0.1.0/24和目的地址dstip=10.0.2.0/24,[s],s.*w.*d,“exist》=1”)指定对于源ip地址在10.0.1.0/24中的和目的ip地址在10.0.2.0/24中的任何数据包p,在数据包p的所有平行宇宙中,至少存在一条经过路径点w并能到达目的ip地址在10.0.2.0/24中的具有外部端口的设备节点d的路径。[0053]分布式数据平面验证框架tulkun为操作人原提供了一个关于设备节点和ip地址前缀的映射表,映射表中的每一项表明此ip地址前缀的目的ip地址可以通过该设备节点的外部端口到达该设备节点。如果出现了数据包空间packet_space与路径集合path_set中的终端设备节点之间的目的ip前缀不一致的数据平面验证需求,系统将返回一条错误消息,以便操作人员修改此需求。[0054]需求规范语言引入了两种需求上下文req_context,分别是existcount_exp(表示含义为存在计数结果值,exict表示存在,count_exp表示计数结果值)和equal(表示含义为等价),以支持指定广泛的存在需求和等价需求。[0055]其中,对于existcount_exp(表示含义为存在计数结果值),它不仅可以用于支持常见的可达性和无循环需求,还可以用于支持高级需求,如“无冗余交付”和“弹性”。[0056]对于equal,它对于验证包路径轨迹的完整性很有用。作为一个具体的例子,(srcip=10.0.1.0/24和dstip=10.0.2.0/24,[s],sd|s.d|s..d,“equal”)任一个全集中数据包p的到达具有外部端口的设备节点d的所有轨迹的跳数都必须不超过4跳,并且在不到4跳中从入口设备节点s到设备节点d的所有路径都必须是数据包p的轨迹。[0057]需求规范语言还支持通过多个(path_set,req_context)元组的逻辑组合来表达多播和任意播等需求。例如,从10.0.0.1到224.0.0.1的分组空间h,其中有两个目的节点d和e。[0058]元组(h,[s],[(s.*d,“exsit>=1”)and(s.*e,“exist>=1”)])指定此数据包空间的多播要求。[0059]另外,还可用正则表达式来描述给定的需求和验证规划器决定每个设备上计数任务的方式。其中,重点关注具有多个(path_set,existcount_exp)元组的逻辑组合的需求,因为具有equal上下文的正则表达式可以在本地就得到验证。特别地,可以通过添加连接到所有源的虚拟源设备来处理具有不同源的正则表达式的复合需求的情况。因此,我们根据正则表达式的目的地址将复合需求分为两类:一是具有不同目的地址的正则表达式;二是具有相同目的地址的正则表达式。[0060]图3为本公开示例性实施方式的tulkun的体系结构示意图。[0061]tulkun由一个集中的验证规划器和网络中各个设备节点上的验证器组成。[0062]验证规划器这个组件在逻辑上是集中式的。它收集了使用tulkun规范语言的验证需求,以及网络拓扑结构和关于设备节点和ip前缀的映射表信息,并举也定每个设备节点自身的验证任务,以完成对数据平面验证需求的分布式验证。为此,验证规划器首先利用自动机理论将需求和网络拓扑中的正则表达式的路径集合path_set相乘,并最终得到一个有向无环图dvnet。dvnet紧凑地表示网络中满足该需求的所允许的所有路径。[0063]验证规划器还能够将数据平面验证问题转换为dvnet上的计数问题:即给定一个进入dvnet的数据包p,是否在所有数据包p的路径的平行宇宙中有足够的数据包p的副本copies交付到dvnet的目的节点。[0064]然而,需要收集所有设备节点的数据平面才能直接在dvnet上进行计数,这种方法仍然是集中的,不可扩展的。因此,验证规划器进一步将计数问题分解为位于dvnet中各个设备节点的更小的计数任务,即计数可从该设备节点到达到dvnet中的目的节点的数据包数。这些计数任务与设备节点到设备节点之间的通信指令一起被发送到网络拓扑结构中相应的设备节点处,并被分布式执行以计算最终的验证结果。[0065]网络中各个设备节点均配置有配备了dvm(distributedverificationmessaging,分布式验证)协议的验证器。响应于当前设备节点具备数据包转换条件,当前设备节点的验证器用于将上游设备节点发送的第一订阅消息转换为第二订阅消息;下游设备节点的验证器用于执行对第二订阅消息的计数任务,并将对第二订阅消息的计数结果反馈给当前设备节点;当前设备节点的验证器用于将对第二订阅消息的计数结果作为对第一订阅消息的计数结果,并反馈给上游设备节点。[0066]具体地,给定一个设备节点,其验证器从验证规划器那里接收计数任务,并执行它们;然后,根据来自验证规划器的预定义的通信指令,在消息中将计数结果发送到相应的邻近设备节点。为此,我们设计了一个分布式验证dvm协议,它指定了验证器如何计算和更新它们在设备节点上的计数任务,以及它们如何以一种高效、正确的方式将结果传送给邻近设备节点。简而言之,要执行设备节点上的计数任务,验证器首先读取设备的数据平面,并构造一个lec(localequivalenceclasstable,本地等价类表)。接下来,验证器使用lec表和从下游节点设备收到的计数结果作为输入,并计算出不同的包空间与从dvnet中相应节点到达目的节点的包数目copies。这些结果存储在cib(countinginformationbase,计数信息库)中,并根据验证规划器和dvm协议指定的设备通信指令,增量地发送到其他邻近设备节点上的验证器。[0067]图4为本公开示例性实施方式的正则表达式转换为有限自动机的过程示意图。[0068]如图4所示,给定一个正则表达式和一个网络拓扑,dvnet是一个有向无环图,紧凑地表示网络中匹配正则表达式的路径集合path_set中的所有路径。虽然有不同的方法来构建有向无环图dvnet(例如,图对偶变量),但在tulkun中,主要利用自动机理论来构建有向无环图dvnet。[0069]具体地,给定一个正则表达式,我们首先将其转换为一个有限的自动机(σ,q,f,q0,δ)。其中,σ是字母表,其中每个符号都是网络中的设备节点的标识符,q是自动机中的状态集,f是接受状态的集合,q0是初始状态,δ:q×σ→q是状态转移函数。例如,对于具有设备节点s、w、a、b、c、d网络的正则表达式s.*w.*d而言,其有限自动机如图4所示。[0070]在将正则表达式转换为有限自动机后,验证规划器将此自动机与网络拓扑结构相乘得到一个乘积图g0=(v0,e0)。每个节点u∈v0都有一个属性dev,表示网络中设备的标识符,属性状态表示其在path_set的有限自动机中的状态。给定两个节点u,v∈v0,如果(1)u.dev-v.dev是网络中的一个链接,则存在一个链接u→v∈e0,以及(2)δ(u.状态,v.dev)=v.状态。[0071]最后,验证规划器对产品图g0执行状态最小化以删除冗余节点,并为每个剩余的节点u分配一个唯一的标识符,这是u.dev和一个整数的连接,以得到dvnet。[0072]当验证规划器构建dvnet并指定相应的设备节点上任务时,dvm协议指定了各个设备节点上的验证器如何以高效、正确的方式与邻居设备节点共享它们的计数结果,以协作地验证需求。为了简化演示样例,我们引入了假设dvnet中只有一个目的节点的协议。[0073]给定dvnet中的节点u和v,存在链路u→v,dvm协议指定了v.dev需要发送给u.dev的消息的格式和顺序,以及u.dev在收到来自v.dev的消息时需要采取的转发行为。dvm协议与基于向量的路由协议的区别是,dvm协议没有循环预防机制,这是因为dvnet中总是反向发送,这是一个有向无环图。因此,使用dvm协议的网络不会形成任何消息循环。[0074]图5为本公开示例性实施方式的dvm协议的关键数据结构和存储流程示意图。[0075]如图5(a)所示,每个设备节点存储两种类型的信息:本地等价类表lec和计数信息库cib。给定一个设备x,每一个lec对应一组数据包,它们的转发行为在x上相同。x将其所有lec存储在一个称为lecs表的(数据包空间packet_space,转发行为action)映射表中。多个现有的数据平面验证工具可用于计算和维护lecs表。在实际应用中,我们选择使用bdd(binarydecisiondiagram,二叉决策图)将数据包集编码为谓词(predicate),并使用基于bdd的数据平面验证工具来维护设备上具有lec最小数量的lecs。这是因为dvm协议要求设备执行包集操作(例如,交集和并集),这可以使用bdd上的逻辑操作有效地实现。[0076]给定一个设备节点x,cib为dvnet中的每个设备节点x(即设备id为x的设备节点)存储不同的包集的从设备节点x到达dvnet中的目的节点的数据包数copies。具体来说,对于每个设备节点x均存储了三种不同类型的cib:[0077]cibin(v):对于每个设备节点x的下游邻居v,设备节点x将从v收到的最新的、未经处理的计数结果(predicate,计数向量count)存储在一个映射中;[0078]loccib(x.node):它存储不同的predicate,即可以从设备节点x到达目的节点的最新包拷贝数(predicate,计数向量count,转发行为action,因果关系causality)元组,其中因果关系字段记录输入以获得计数字段;[0079]cibout(x.node):它记录将要发送到设备节点x的(predicate,计数向量count)上游节点的计数结果。[0080]图5(a)还给出了一个dvnet示例,包括设备节点v、设备节点z和设备节点u处的lec表cibin(v)、cibin(z)和loccib(u)的计数结果。特别地,因果字段是([v,p1,1],[z,p1,1]),因为predicatep1的计数值2是通过v和z(即2=1+1)的结果计算的。[0081]如图5(b)所示,dvm协议中的消息将通过tcp协议(传输控制协议transmissioncontrolprotocol)连接发送。一条消息只有在完全接收后才会被处理。dvm协议定义了open和keepalive等控制消息,以创建和维护设备之间的连接。我们重点介绍更新消息,它用于将计数结果从任一设备节点传输到dvnet中该设备节点的上游邻居的设备节点。[0082]更新消息包括三个字段:[0083]预期连接:预期连接一个指示消息的元组,用于计算dvnet中沿该连接传播的结果。[0084]撤回谓词:计数结果已经被更新了的即将需要删除的谓词列。[0085]新增的计数结果:新增的计数结果包含最新计数的谓词列表。[0086]其中,预期的连接是为了区分dvnet中具有相同一对设备的连接。[0087]更新消息不变量。对于撤回的谓词和新增计数结果字段,dvm协议保持一个重要的不变量:对于每个更新消息,撤出的谓词的并集等于新增的计数结果中谓词的并集。这将确保节点始终从其下游邻居接收最新的、完整的计数结果。[0088]更新消息处理。考虑两个在dvnet上的邻居设备节点u和v,存在链接u→v。假设u.dev从v.dev收到一条指定更新消息,预期链路是u→v。则u.dev分三个步骤处理此消息。[0089]步骤1:更新cibin(v)。u.dev通过删除cibin(v)中属于需要撤回谓词的每个条目和将新增的计数结果全部插入cibin(v)来更新cibin(v)。[0090]步骤2:更新loccib(u)。[0091]首先,要更新loccib(u),u.dev首先找到所有受影响的条目,即需要更新的条目。具体地说,如果loccib(u)中的一个条目的因果关系字段中包含v中的属于此消息的撤回谓词的一个谓词,则需要更新该条目。[0092]其次,它逐个更新所有受影响条目的计数结果。具体来说,对于每一对受影响的条目r和从新收到的计数结果中得到的条目r0,u.dev计算它们的数据包空间的交集s。如果交集s不是空,则在loccib(u)中交集s创建一个新条目rnew。rnew的计数结果通过两个步骤计算得到:1)在rnew.count计数和v之前的计数结果的因果关系之间执行或的反操作,以消除后者的影响;2)在最后一步的结果和r0.count之间执行或以获得最新的计数结果。转发行为rnew.action与r.action相同。这个条目的因果关系继承了r的因果关系,元组(v,r0)取代了v以前的记录。计算并插入所有新条目到loccib(u)后,所有受影响的条目将从loccib(u)中删除。[0093]步骤3:更新cibout(u)。具体地,从loccib(u)中删除的所有条目的谓词都放在撤回的谓词中。对于所有cibout(u)的插入条目,根据计数值是否相同来合并,并将结果条目放入新增的计数结果中。[0094]在处理更新消息后,对于设备节点u的每个上游邻居w,u.dev发送一个由预期链接w→u和cibout(u)组成的更新消息。[0095]数据平面更新处理。如果设备有数据平面更新(例如,规则插入/删除或物理端口的激活/失活),dvm协议以处理更新消息的方式处理它。与处理常规更新消息不同,此时所有cibin(v)都不需要更新。loccib(u)中新插入的条目的计数是通过倒置或并读取不同cibin(v)中的相关条目来计算的。在cibout(u)中,只有新增的计数条目和更新后具有新计数的谓词将作为撤回的谓词。[0096]处理数据包转换。tulkun将网络中大部分协议使用的数据包转换的方法划分为三类:[0097]方法1:数据包转换,重写现有头的比特;方法2:数据包封装,在现有的数据包头上添加一个包头;方法3:数据包去封装,从一个数据包中删除最外层的包头。[0098]nat应用了方法1,ip隧道应用了方法2和3,而mlps隧道应用了以上所有方法。tulkun将以上三类数据包转换方法都视作nat处理。[0099]假设设备节点x上配置了nat,它需要计算predicate1的计数结果并且它存在一条规则,这条规则指定了x在转发数据包之前需要将predicate1中的数据包转换为predicate2。在dvm协议中,对于构建出的dvnet中的所有设备节点x,均会发送一条订阅消息sub(predicate1,predicate2)给所有的v.dev,其中v是设备节点x的下游节点。这条订阅消息指明了设备节点v应该向设备节点发送predicate2的计数结果,而不是predicate1的计数结果。因此,v.dev之后会根据订阅消息通过更新消息发送predicate2的计数结果。接着,x就会用收到的结果来更新predicate1的计数结果,并且把这个结果传递给设备节点x的上游节点。此外,如果x之后更新了自己的数据包转换规则,x就需要重新发送对应的订阅消息。[0100]假设设备节点a和设备节点b之间配置了ip隧道,假设在设备节点a进入隧道处会在原先的数据包predicate3前封装一个predicate4,在设备节点b离开隧道后将predicate4解封装,还原到原来数据包predicate3。因此我们可以视作在设备节点a和设备节点b上分别做了一次nat转换ta和tb,其中ta:predicate3→predicate4,tb:predicate4→predicate3。实现的结果是在a和b之间的节点都会向其上游节点发送predicate4的计数结果,a用predicate4的计数结果更新predicate3的计数结果。同理,b之后的设备节点都会向其上游设备节点发送predicate3的计数结果,b用predicate3的计数结果更新predicate4的计数结果。[0101]假设设备节点a和设备节点b是mpls隧道的入口和出口设备,隧道沿线还存在多个设备。tulkun将mpls隧道中的每个设备都视作配置了一次nat转换。因为mpls基于标签转发,我们首先对标签进行bdd建模,之后对订阅函数进行扩展,使其支持标签这类数据结构的输入。对于mpls隧道入口设备节点a,它在二层头部前增加mpls标签,因此设备节点a在dvnet中向下游节点传递的不是ip的订阅信息,而是mpls标签的订阅信息label_a,表示为sub(predicate,label_a);同理,出口设备节点b去掉上游节点的mpls标签label_preb,因此向下游节点传递的是ip的订阅信息,表示为sub(label_preb,predicate)。而对于mpls隧道中的各个设备节点,它们在收到上游设备的标签label_pre后替换为自己的新标签label_node并传递给下游,因此在dvnet中的订阅信息表示为sub(label_pre,label_node)。[0102]tulkun可以容易地将网络中存在的数据包转换情况视作nat,并对订阅消息和更新消息进行扩展以支持不同种类的协议。[0103]抑制输出的更新消息。在网络事件期间(例如,计划的配置更新)可能在短时间内发生多个数据平面更新。验证瞬态数据平面有时候是不需要的,并且可能会浪费计算和通信资源。因此,dvm协议提供了一个受边界网关协议启发的可选的阻尼机制。具体来说,在设备u.dev处理完更新消息后,在发送新的更新消息之前,它首先检查是否仍然有未处理的更新连接的更新消息。如果是这样,它将继续处理它们,直到消息队列为空。然后它会在最后一个更新消息周期中发送最新的cibout(u)。[0104]图6为本公开示例性实施方式的tulkun工作流程示意图。[0105]如图6所示,演示了tulkun的工作流程。具体来说,我们考虑了图6(a)中的网络拓扑结构和一个数据平面验证需求:对于所有抵达10.0.0.0/23的数据包,当它们从s进入网络时,它们必须能够通过一个简单路径(即无环)且通过设备w(即路径点)到达具有外部端口可访问10.0.0.0/23的设备d(即可达性)。[0106]在此需求发送给验证规划器后,验证规划器将path_set中的正则表达式和网络拓扑相乘,生成有向无环图dvnet,它紧凑地表示网络中符合此正则表达式的所有路径,可参考图6(c)。请注意,dvnet中的目的节点用双圆圈标记(例如d1),dvnet中的设备节点与网络中的设备不是一对一的映射。例如,设备c被分成设备节点c1和设备节点c2,因为正则表达式允许数据包通过[c,w,d]或[w,c,d]到达d。[0107]通过计算得到的dvnet,验证网络的数据平面是否满足要求(图5b)的问题被转换为在所有p的平行宇宙中,是否至少有一个p的副本copies抵达10.0.0.0/23即被发送到d1的计数问题。然后,验证规划器将这个任务分解为一系列的计数任务,这些任务在相应的设备上分布式执行。[0108]图6c说明了分布式计数过程。为简单起见,我们使用p1、p2、p3依次代表目标ip前缀10.0.0.0/23、10.0.0.0/24和10.0.1.0/24的包空间。请注意,p2∩p3=/0和p1=p2∪p3。在dvnet中的一个节点,它使用其网络中相应设备的数据平面及其所有下游邻居设备节点的计数任务的结果作为输入,并计算(数据包空间packet_space,计数count)映射。此映射记录不同的包空间,即可以从dvnet中的当前设备节点连接到目的节点的所有平行宇宙中的包副本数copies。[0109]每个设备节点将其计算出的映射存储在其相应设备的cib中,并将其发送到当前设备节点的上游设备中。例如,在设备节点d1计算其映射[p1,1](即,p1中任何数据包的一个副本copies将被发送到正确的外部端口)后,它将此结果发送给其上游邻居w1、w2、w3、w3和c1的设备。由于c1只有一个下游邻居d1,c1检查c的数据平面,将其映射计算为[p1,1],并将其发送给上游邻居w1和w3的设备w。由于这个是反向计数过程,所以入口设备s最终将收到完整的计数结果作为最终的验证结果。[0110]在本例中,图6(b)中的数据平面不满足验证要求。我们提供了关于设备节点a1的映射计算的细节,以说明tulkun在计数过程中是如何捕获这个错误的。当a1从b1接收[(p1,0)]和w3接收[(p1,1)]时,检查设备a的数据平面,发现对于谓词p3,由于a将p3中的所有包转发到w,p3中每个可以从a发送到d的包的副本数copies为1。但是,对于谓词p2中的数据包,a的操作是将它们转发给b或w,但不是两者都转发。因此,在一个a向b转发p2中的包的平行宇宙中,传递到d的副本数copies为0。在另一个平行宇宙中,a将p2中的包转发到w,计数是1。因此,a1中关于p2的映射记录是(p2,[0,1]),这表明在一个平行宇宙中,p2中的数据包不能通过a传递到d。因为s将p1转发给a,所以一旦s1接收到这样的信息,s就可以捕获这个错误并提醒操作人员。[0111]处理增量数据平面更新。我们通过考虑一个场景来完成tulkun的工作流演示,即b将其数据平面更新为将p1转发到w,而不是转发到c。不同节点的更改映射用图6(c)中的框圈起来。在这种情况下,b1和b2将分别更新其映射到[(p1,1)]和[(p1,0)],并将更新发送到其上游邻居的设备。但是,因为w不将任何数据包转发给b,所以b2的上游邻居w3不需要更新其映射。相比之下,b1的上游邻居a1将更新其映射到[(p1,1)],因为无论a将p2中的包转发到b或w,每个包的1个副本copies将被发送到d,并且p2∪p3=p1。类似地,s1也将其映射更新到[(p1,1)],即更新满足要求。[0112]图7为本公开示例性实施方式的tulkun应对数据包转换示意图。[0113]处理数据包转换。我们通过考虑一个新的场景来完成tulkun应对数据包转换规则的工作流演示。对于图6的网络,假设在外网存在一个设备节点x,它所在的外网ip为1.0.0.0/23。在设备节点s上配置了nat,从而将来自外网的ip转换为内网的ip。特别的是,当s在1234号端口接收到ip号1.0.0.1时,它会将该ip转换为2.0.0.1,并从3333号端口转发。如图7所示。在这种情况下,当要验证设备节点x到目的ip地址10.0.0.0/23的可达性时,x发送一条订阅消息p0给dvnet中所有的s.dev节点时,s.dev会通过本地的地址转换表,将p0转换为p1并且通过订阅消息发送给下游节点a.dev。后续在dvnet中将会传递的就是p1的订阅消息,而不是p0。在各个设备完成计数任务后,a.dev会向其上游节点s.dev发送p1的计数结果,s.dev则会用接收到的p1的计数结果更新p0的计数结果。[0114]下面,将tulkun的性能与apt和katra进行比较,其中apt和katra是两种最先进的检验存在数据包转换规则验证数据平面的集中式数据平面验证工具。具体地,使用inet2、btna和oteg三个代表了不同网络规模的局域网和广域网数据集,并进行了以下实验。[0115]表1[0116]网络设备数目链路数目规则数目inet29281.26×10^5btna36762.52×10^5oteg931037.22×10^5[0117]表1是实验评估使用的数据表。包括三种网络inet2、btna和oteg,以及各个网络对应的设备数目、链路数目、规则数目等的响应数据,例如网络inet2的设备数目为9,链路数目为28,规则数目为1.26×10^5吗,不一一列举。[0118]图8为本公开示例性实施方式的存在数据包转换规则的突发更新验证时间示意图。[0119]突发更新的场景。对于每个数据集,我们在交换机之间随机设置ip-in-ip隧道。隧道数量为50到250条。图8给出了突发更新的验证时间。我们观察到,在所有实验中,tulkun的表现均显著优于apt和katra,验证时间分别比apt和katra分别块5.34倍和16.58倍。此外,我们观察到tulkun对隧道数量的变动是不敏感的(隧道数量的增加并没有对tulkun的验证时间造成很大的影响),而其他工具的验证时间随着隧道数量的增加而增加。原因与tulkun在没有数据包转换规则的实验中优于其他数据平面验证工具的原因相同:tulkun将验证分解为轻量级的设备上任务,实现了计算的高并行化。[0120]图9为本公开示例性实施方式的存在数据包转换规则的增量更新验证时间示意图。[0121]增量更新的场景。对于每个数据集,当包含250个ip-in-ip隧道的突发更新结束时,我们随机生成1000条规则更新并逐个应用它们。在每次更新之后,我们增量地验证网络。图9显示了三个数据集中三种工具增量验证时间的结构数据表cdf。我们注意到tulkun的80%分位数为4.74、48.53、7.98毫秒,apt和katra的80%分位数分别为84.95、340.17、333.71和36.82、52.05、197.48毫秒。我们还观察到tulkun的性能与在没有数据包转换规则的相同数据集上的实验性能相似。这是因为tulkun通过相邻设备之间的sub-pub机制处理数据包转换规则,同时保持计数任务在设备上验证器的轻量级。当规则更新发生时,只有计数结果可能发生变化的设备才需要增量地更新其结果,并根据dvm协议将其增量地发送给需要的邻居。[0122]本公开提出的一种分布式数据平面验证方法,通过在有向无环图传递计数任务的过程中增加了订阅和更新的操作,对发生数据包转换的信息进行传递,以实现数据平面验证工具的扩展性,并避免了相关技术中针对数据包转换问题的较大时间开销。[0123]本公开瞄准网络数据平面故障检测排除这一痛点问题,设计实现适用于大规模网络的快速高效网络数据平面验证技术,为自动检测排除网络数据平面方面故障提供关键技术支撑。因此,可应用于大规模的网络的数据平面验证中,保障网络安全。[0124]本公开通过在实际网络的部署,快速准确的排除网络数据平面方面故障,提高网络可靠性,加快我国信息基础设施建设,提升大规模网络的经济效益与社会效益,为新技术与应用的发展提供有力基础设施支撑。[0125]本公开为大规模网络提供了快速高效网络数据平面验证技术原型系统方案,形成和掌握具有自主知识产权的核心网络验证关键技术,创造产业实用价值,为网络数据平面验证技术后续研究与发展奠定基础。[0126]本公开提供的分布式数据平面验证系统,还可以通过采用处理系统的硬件实现方式的装置实现。[0127]该装置可以包括执行上述流程图中各个或几个步骤的相应模块。因此,可以由相应模块执行上述流程图中的每个步骤或几个步骤,并且该装置可以包括这些模块中的一个或多个模块。模块可以是专门被配置为执行相应步骤的一个或多个硬件模块、或者由被配置为执行相应步骤的处理器来实现、或者存储在计算机可读介质内用于由处理器来实现、或者通过某种组合来实现。[0128]该硬件结构可以利用总线架构来实现。总线架构可以包括任何数量的互连总线和桥接器,这取决于硬件的特定应用和总体设计约束。总线将包括一个或多个处理器、存储器和/或硬件模块的各种电路连接到一起。总线还可以将诸如外围设备、电压调节器、功率管理电路、外部天线等的各种其它电路连接。[0129]总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponent)总线或扩展工业标准体系结构(eisa,extendedindustrystandardcomponent)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条连接线表示,但并不表示仅有一根总线或一种类型的总线。[0130]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施方式所属
技术领域
:的技术人员所理解。处理器执行上文所描述的各个方法和处理。例如,本公开中的方法实施方式可以被实现为软件程序,其被有形地包含于机器可读介质,例如存储器。在一些实施方式中,软件程序的部分或者全部可以经由存储器和/或通信接口而被载入和/或安装。当软件程序加载到存储器并由处理器执行时,可以执行上文描述的方法中的一个或多个步骤。备选地,在其他实施方式中,处理器可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述方法之一。[0131]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,可以具体实现在任何可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。[0132]就本说明书而言,“可读存储介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,可读存储介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在存储器中。[0133]应当理解,本公开的各部分可以用硬件、软件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。[0134]本
技术领域
:的普通技术人员可以理解实现上述实施方式方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种可读存储介质中,该程序在执行时,包括方法实施方式的步骤之一或其组合。[0135]此外,在本公开各个实施方式中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个可读存储介质中。存储介质可以是只读存储器,磁盘或光盘等。[0136]本领域的技术人员应当理解,上述实施方式仅仅是为了清楚地说明本公开,而并非是对本公开的范围进行限定。对于所属领域的技术人员而言,在上述公开的基础上还可以做出其它变化或变型,并且这些变化或变型仍处于本公开的范围内。当前第1页12当前第1页12
技术特征:
1.一种分布式数据平面验证方法,其特征在于,包括:响应于当前设备节点具备数据包转换条件,由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息;调用所述下游设备节点执行对所述第二订阅消息的计数任务,并将对所述第二订阅消息的计数结果反馈给所述当前设备节点;由所述当前设备节点将对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果,并反馈给所述上游设备节点。2.根据权利要求1所述的分布式数据平面验证方法,其特征在于,所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息,包括:当所述数据包转换条件为所述当前设备节点是实现网络地址转换的设备节点时,由所述当前设备节点调取地址转换表;所述当前设备节点通过所述地址转换表确定与所述第一订阅消息相匹配的预设协议地址;以及所述当前设备节点将所述第一订阅消息的网络协议地址转换为所述预设协议地址,以形成具有所述预设协议地址的第二订阅消息。3.根据权利要求1所述的分布式数据平面验证方法,其特征在于,所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息,包括:当所述数据包转换条件为所述当前设备节点是多协议标签交换隧道的设备节点时,对节点标签进行二叉决策图的建模,并对所述第一订阅消息进行扩展,以便于所述节点标签的输入;以及当当前设备节点是多协议标签交换隧道的入口设备节点时,由所述当前设备节点在所述第一订阅消息上增加自身对应的所述节点标签,以使得所述第一订阅消息转换为具有所述当前设备节点的节点标签的所述第二订阅消息。4.根据权利要求1所述的分布式数据平面验证方法,其特征在于,所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息,包括:当所述数据包转换条件为所述当前设备节点是网际互联协议地址隧道的入口设备节点时,控制所述当前设备节点对所述第一订阅消息的谓词前封装预设谓词,以将所述第一订阅消息转换为封装有预设谓词的所述第二订阅消息。5.根据权利要求1所述的分布式数据平面验证方法,其特征在于,所述调用所述下游设备节点执行对所述第二订阅消息的计数任务,并将对所述第二订阅消息的计数结果反馈给所述当前设备节点,包括:在有向无环图的有效路径上调取所述下游设备节点,并对所述下游设备节点进行初始化;控制所述下游设备节点的验证器基于分布式验证协议执行对所述第二订阅消息的计数任务,其中所述分布式验证协议用于规范各个设备节点上的验证器和预期相邻的设备节点之间的数据共享过程;控制所述下游设备节点沿着所述有效路径的反向路径,向与自身相邻的所述当前设备节点同步对所述第二订阅消息的计数结果。6.根据权利要求1所述的分布式数据平面验证方法,其特征在于,所述由所述当前设备
节点将对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果,并反馈给所述上游设备节点,包括:当所述当前设备节点为入口设备节点时,由所述当前设备节点接收各个所述下游设备节点对所述第二订阅消息的计数结果;控制所述当前设备节点以各个所述下游设备节点对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果;以及将对所述第一订阅消息的计数结果作为针对所述第一订阅消息的数据平面验证结果,并反馈给所述上游设备,其中所述上游设备为外网设备。7.根据权利要求1所述的分布式数据平面验证方法,其特征在于,还包括:响应于所述当前设备节点对数据包转换规则的更新结果,控制所述当前设备节点将所述第一订阅消息转换为更新订阅消息,并向所述下游设备节点传递所述更新订阅消息。8.根据权利要求1所述的分布式数据平面验证方法,其特征在于,在所述由所述当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息之前,包括:根据数据平面验证需求和网络拓扑结构,构建包含所有有效路径的有向无环图;以及对针对数据包转换场景的验证任务进行分解,并将分解之后的计数任务分配给各个设备节点,以使得各个设备节点上的验证器基于相应的所述计数任务进行计数。9.根据权利要求1所述的分布式数据平面验证方法,其特征在于,还包括:设定需求规范语言,以控制数据平面验证需求以数据包空间、入口设备节点集合、行为所构成的元组形式进行表示,其中,数据包空间中每个数据包从入口设备节点集合中任一设备节点进入网络时,数据包的任一路径满足行为中指定的上下文,行为被指定为有效路径和匹配运算符的正则表达式元组。10.一种分布式数据平面验证系统,其特征在于,包括:验证规划器和多个验证器,其中所述验证器布置于设备节点,响应于当前设备节点具备数据包转换条件,所述当前设备节点的验证器用于将上游设备节点发送的第一订阅消息转换为第二订阅消息;所述下游设备节点的验证器用于执行对所述第二订阅消息的计数任务,并将对所述第二订阅消息的计数结果反馈给所述当前设备节点;所述当前设备节点的验证器用于将对所述第二订阅消息的计数结果作为对所述第一订阅消息的计数结果,并反馈给所述上游设备节点。

技术总结
本公开提供了一种分布式数据平面验证方法,包括:响应于当前设备节点具备数据包转换条件,由当前设备节点将上游设备节点发送的第一订阅消息转换为第二订阅消息;调用所述下游设备节点执行对第二订阅消息的计数任务,并将对第二订阅消息的计数结果反馈给当前设备节点;由当前设备节点将对第二订阅消息的计数结果作为对第一订阅消息的计数结果,并反馈给上游设备节点。本公开还提供一种分布式数据平面验证系统。验证系统。验证系统。


技术研发人员:向乔 邵涵洋 黄晨阳 文日娣 王宇昕 舒继武
受保护的技术使用者:厦门大学
技术研发日:2023.06.15
技术公布日:2023/9/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐