网络验证系统的可达矩阵的制作方法

文档序号:29120816发布日期:2022-03-04 22:03阅读:255来源:国知局
网络验证系统的可达矩阵的制作方法

1.该申请涉及用于实时验证网络的网络验证系统,更具体涉及验证节点之间端到端可达性的系统和方法。


背景技术:

2.交换机和路由器通常通过使用目的地地址索引到转发表中并决定将接收到的报文发送到何处来进行操作。近年来,这种转发变得更加复杂。数据中心、广域网(wide area network,wan)和无线等特定域的新协议大大增加了报文转发的复杂性。这种复杂性使得运营大型网络变得越来越困难。复杂性还使网络变得脆弱,容易受到主机被隔离和无法通信的问题的影响。此外,调试可达性问题非常耗时。即使是简单的问题,如“主机a可以与主机b通话吗?”或“报文可以在我的网络中循环吗?”或“用户a可以收听用户b与用户c之间的通信吗?”,也很难回答。这些问题在携带多个封装和包含过滤报文的框的网络中尤其难以回答。
3.网络状态可能会响应于客户需求、负载条件或配置更改而迅速变化。但网络也必须确保正确条件,例如将租户彼此隔离,以及与关键服务隔离。现有的策略检查器无法实时验证一致性,因为需要从整个网络收集状态信息,以及分析此状态需要时间。
4.现有的网络验证或分析方法主要集中在单点分析和验证。很少有网络验证或分析方法将网络作为一个整体进行评估,并提供总体审查功能。那些提供整体网络分析功能的网络验证或分析方法是通过遍历所有可能的节点对或路径并逐个验证它们来实现的,这需要花费大量的时间和空间。


技术实现要素:

5.现在描述各种示例,以简化形式引入一些概念,在具体实施方式中会进一步描述这些概念。发明内容并非旨在确定请求保护的主题的关键或必要特征,也并非旨在用于限制请求保护的主题的范围。
6.提供了一种自动网络审查工具,该自动网络审查工具将网络的转发状态作为输入,汇总总体状态,并生成关于网络的可达性关系、报文必须经过的关键节点、重复路由或备份路由的报告。此外,当网络运营商需要将网络的配置切换为新配置时,需要新旧配置的一般差异报告,以促进配置更改。本文所述的网络分析工具满足了这一需求,同时进一步加强了运营商更好地管理网络的能力。
7.本文描述的网络审查工具可以从现有的转发平面分析网络中节点之间的节点可达性关系。网络审查工具快速计算网络的节点可达性关系,从而使网络运营商对网络的真实功能有一个整体的了解。网络审查工具还可以找到节点之间所有可能的路径,从而使运营商能够定位重复路由,确保备份路由,并精确定位关键节点。这些功能是通过以下方式实现的:使用ap-verifier或veriflow的算法或其它算法将网络转发状态(路由信息库(routing information base,rib)或转发信息库(forwarding information base,fib))预处理为原子谓词,以在报文空间中生成原子,然后将路由表压缩到原子谓词索引集中,以
减少路由表的数量并降低复杂性。如本文所使用,实际网络中的每个原子谓词表示报文空间的许多不相交片段中的大量等效报文。网络审查工具可以计算原子谓词的可达树,其中,每个可达树表示具有等效行为的大量报文,而不是单个报文的行为。因此,使用原子谓词将计算和存储可达树以及验证可达属性所需的时间和空间减少了几个数量级。
8.在示例实施例中,通过采用受warshall节点可达性算法启发的方法,计算网络的节点可达性,并在计算节点可达性的同时记录路径历史,以便进一步分析,将整个网络路由表建模为路由矩阵。根据计算结果生成可达报告和网络属性(关键点、黑洞、环路、重复路由和备份路由)报告。所描述的网络审查工具可以通过由数据中心或类似云的公共云、私有云或混合云中的一个或多个处理器执行的软件实现。
9.本发明的第一方面涉及一种网络验证系统,所述网络验证系统包括:至少一个处理器;机器可读介质,在所述机器可读介质中包括指令,所述指令在由所述至少一个处理器执行时使所述至少一个处理器执行以下操作:将网络转发状态处理为原子谓词;将网络路由表压缩到原子谓词索引集中。根据所述原子谓词和所述原子谓词索引集,计算所述网络中所有节点对之间的传递闭包,以生成所述网络的节点可达性矩阵mn。根据所述网络的所述节点可达性矩阵mn,为相应节点递归地生成所述网络的可达报告,并使用所述可达报告对所述网络进行动态编程。
10.在所述第一方面提供的第一种实现方式中,所述至少一个处理器还执行所述指令,以通过将网络路由表建模为包括所述节点可达性矩阵mn的路由矩阵,计算所述网络中所有节点对之间的所述传递闭包。
11.在所述第一方面或所述第一方面的任一上述实现方式提供的第二种实现方式中,所述至少一个处理器还执行所述指令,以通过针对所述网络中的每个节点对计算是否有可以从所述节点对中的一个节点行进到另一个节点的任何报文,并从所述节点对之间的所有可能路径收集报文头,计算所述网络的所述节点可达性矩阵mn。
12.在所述第一方面或所述第一方面的任一上述实现方式提供的第三种实现方式中,所述节点可达性矩阵mn中的元素r
kij
包括节点i与节点j之间的可达报文空间集,其中,k为中间节点,所述系统还包括执行所述指令以进行以下操作的所述至少一个处理器:将所述元素r
kij
计算为:
13.rk[i,j]=r
k-1
[i,j]∪(r
k-1
[i,k]∩r
k-1
[k,j])。
[0014]
在所述第一方面或所述第一方面的任一上述实现方式提供的第四种实现方式中,所述至少一个处理器还执行所述指令,以当所述节点可达性矩阵mn的对角线上的任何元素不是空集时,识别所述网络中的环路。
[0015]
在所述第一方面或所述第一方面的任一上述实现方式提供的第五种实现方式中,所述至少一个处理器还执行所述指令,以当所述节点可达性矩阵mn的一行中的所有元素包括空集时,识别所述网络中的黑洞。
[0016]
在所述第一方面或所述第一方面的任一上述实现方式提供的第六种实现方式中,所述至少一个处理器还执行所述指令,以通过仅重新计算受更新影响的元素来更新所述计算得到的节点可达性矩阵mn。
[0017]
在所述第一方面或所述第一方面的任一上述实现方式提供的第七种实现方式中,所述至少一个处理器还执行所述指令,以计算所述节点可达性矩阵mn,而不对所述网络中
的非中间节点执行可达矩阵计算。
[0018]
在所述第一方面或所述第一方面的任一上述实现方式提供的第八种实现方式中,所述至少一个处理器还执行所述指令,以在对不频繁更新的第二节点执行所述可达矩阵计算之后,通过对频繁更新的第一节点执行所述可达矩阵计算来计算所述节点可达性矩阵mn。
[0019]
在所述第一方面或所述第一方面的任一上述实现方式提供的第九种实现方式中,所述至少一个处理器还执行所述指令,以根据节点的矩阵计算所述节点可达性矩阵mn。
[0020]
本发明的第二方面涉及一种验证包括多个节点的网络的状态的计算机实现的方法。所述方法包括:将网络转发状态处理为原子谓词;将网络路由表压缩到原子谓词索引集中;根据所述原子谓词和所述原子谓词索引集,计算所述网络中所有节点对之间的传递闭包,以生成所述网络的节点可达性矩阵mn;根据所述网络的所述节点可达性矩阵mn,为相应节点递归地生成所述网络的可达报告;使用所述可达报告对所述网络进行动态编程。
[0021]
在所述第二方面提供的第一种实现方式中,计算所述网络中所有节点对之间的所述传递闭包包括将网络路由表建模为包括所述节点可达性矩阵mn的路由矩阵。
[0022]
在所述第二方面或所述第二方面的任一上述实现方式提供的第二种实现方式中,计算计算节点可达性矩阵mn包括:针对所述网络中的每个节点对,计算是否有可以从所述节点对中的一个节点行进到另一个节点的任何报文;从所述节点对之间的所有可能路径收集报文头。
[0023]
在所述第二方面或所述第二方面的任一上述实现方式提供的第三种实现方式中,所述节点可达性矩阵mn中的元素r
kij
包括节点i与节点j之间的可达报文空间集,其中,k为中间节点,所述方法还包括将所述元素r
kij
计算为:
[0024]rk
[i,j]=r
k-1
[i,j]∪(r
k-1
[i,k]∩r
k-1
[k,j])。
[0025]
在所述第二方面或所述第二方面的任一上述实现方式提供的第四种实现方式中,所述方法还包括:当所述节点可达性矩阵mn的对角线上的任何元素不是空集时,识别所述网络中的环路。
[0026]
在所述第二方面或所述第二方面的任一上述实现方式提供的第五种实现方式中,所述方法还包括:当所述节点可达性矩阵mn的一行中的所有元素包括空集时,识别所述网络中的黑洞。
[0027]
在所述第二方面或所述第二方面的任一上述实现方式提供的第六种实现方式中,所述方法还包括:通过仅重新计算受更新影响的元素来更新所述节点可达性矩阵mn。
[0028]
在所述第二方面或所述第二方面的任一上述实现方式提供的第七种实现方式中,计算所述节点可达性矩阵mn包括:计算所述节点可达性矩阵mn,而不对所述网络中的非中间节点进行可达矩阵计算。
[0029]
在所述第二方面或所述第二方面的任一上述实现方式提供的第八种实现方式中,计算所述节点可达性矩阵mn包括:在对不频繁更新的第二节点执行所述可达矩阵计算之后,对频繁更新的第一节点执行所述可达矩阵计算。
[0030]
在所述第二方面或所述第二方面的任一上述实现方式提供的第九种实现方式中,计算所述节点可达性矩阵mn包括:根据节点的矩阵,计算所述节点可达性矩阵mn。
[0031]
本发明的第三方面涉及一种非瞬时性计算机可读介质,所述非瞬时性计算机可读
介质存储实现对包括多个节点的网络的状态的验证的计算机指令,所述计算机指令在由至少一个处理器执行时,使所述至少一个处理器执行以下步骤:将网络转发状态处理为原子谓词;将网络路由表压缩为原子谓词索引集;根据所述原子谓词和所述原子谓词索引集,计算所述网络中所有节点对之间的传递闭包,以生成所述网络的节点可达性矩阵mn;根据所述节点可达性矩阵mn,为相应节点递归地生成所述网络的可达报告;使用所述可达报告对所述网络进行动态编程。
[0032]
在所述第三方面提供的第一种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:通过将网络路由表建模为包括所述节点可达性矩阵mn的路由矩阵,计算所述网络中所有节点对之间的所述传递闭包。
[0033]
在所述第三方面或所述第三方面的任一上述实现方式提供的第二种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:通过针对所述网络中的每个节点对计算是否有可以从所述节点对中的一个节点行进到另一个节点的任何报文,并从所述节点对之间的所有可能路径收集报文头,计算所述节点可达性矩阵mn。
[0034]
在所述第三方面或所述第三方面的任一上述实现方式提供的第三种实现方式中,所述节点可达性矩阵mn中的元素r
kij
包括节点i与节点j之间的可达报文空间集,其中,k为中间节点,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器将所述元素r
kij
计算为:
[0035]rk
[i,j]=r
k-1
[i,j]∪(r
k-1
[i,k]∩r
k-1
[k,j])。
[0036]
在所述第三方面或所述第三方面的任一上述实现方式提供的第四种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:当所述节点可达性矩阵mn的对角线上的任何元素不是空集时,识别所述网络中的环路。
[0037]
在所述第三方面或所述第三方面的任一上述实现方式提供的第五种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:当所述节点可达性矩阵mn的一行中的所有元素包括空集时,识别所述网络中的黑洞。
[0038]
在所述第三方面或所述第三方面的任一上述实现方式提供的第六种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:通过仅重新计算受更新影响的元素来更新所述节点可达性矩阵mn。
[0039]
在所述第三方面或所述第三方面的任一上述实现方式提供的第七种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:计算所述节点可达性矩阵mn,而不对所述网络中的非中间节点执行可达矩阵计算。
[0040]
在所述第三方面或所述第三方面的任一上述实现方式提供的第八种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:在对不频繁更新的第二节点执行所述可达矩阵计算之后,通过对频繁更新的第一节点执行所述可达矩阵计算来计算所述节点可达性矩阵mn。
[0041]
在所述第三方面或所述第三方面的任一上述实现方式提供的第九种实现方式中,所述介质还包括指令,所述指令在由所述至少一个处理器执行时,使所述至少一个处理器:通过根据节点的矩阵计算所述节点可达性矩阵mn来计算所述节点可达性矩阵mn。
[0042]
所述装置可以执行本文描述的方法,可以处理计算机可读介质上的指令,并且所
述方法和所述计算机可读介质上的指令的其它特征由所述装置的功能性产生。此外,针对每个方面及其实现方式提供的解释同样适用于其它方面和相应的实现方式。不同的实施例可以以硬件、软件或其任何组合实现。此外,上述任一个示例可以与上述其它示例中的任一个或多个组合以在本发明范围内创建新实施例。
附图说明
[0043]
在不一定按比例绘制的附图中,不同视图中相同的数字可以描述类似组件。附图通过示例而非限制的方式一般地示出了在本文中描述的各种实施例。
[0044]
图1示出了示例实施例的示例数据平面网络验证系统的总体架构。
[0045]
图2示出了图1的网络验证系统的输入/输出模块。
[0046]
图3示出了在示例实施例中计算节点可达性矩阵。
[0047]
图4示出了图3中计算得到的节点可达性矩阵的增量更新示例。
[0048]
图5示出了图3的简单网络中的非中间节点不需要被计算的示例。
[0049]
图6示出了示例分组网络的总体基于字典树(trie)的数据平面验证架构。
[0050]
图7示出了示例实施例中由可达树生成器针对每个网络设备的每个端口生成的可达树。
[0051]
图8示出了示例实施例中用于验证网络状态的方法。
[0052]
图9示出了示例实施例中的网络单元。
[0053]
图10示出了适合于实现网络单元处理元件的一个或多个实施例的网络组件。
具体实施方式
[0054]
本技术涉及一种用于实时验证网络的网络验证系统,更具体涉及验证节点之间的端到端可达性的系统和方法,以为不同类型的网络提供快速验证,并计算能够实现基于矩阵的动态编程的网络中的节点可达性。
[0055]
在以下描述中,参考构成描述的一部分的图1至图10,这些附图通过图解说明的方式示出可以实践的具体实施例。这些实施例进行了足够详细的描述以使本领域技术人员能够实践本发明,应理解,可以使用其它实施例,并且在不脱离本发明范围的情况下可以进行结构、逻辑和电更改。因此,以下示例实施例的描述不具有限定意义,本发明的范围由所附权利要求书界定。
[0056]
在一个实施例中,本文描述的功能或算法可以以软件实现。所述软件可以包括存储于计算机可读介质或计算机可读存储设备(如一个或多个非瞬时性存储器或其它类型的基于硬件的本地或网络存储设备)中的计算机可执行指令。此外,这些功能对应于模块,模块可以是软件、硬件、固件或它们的任何组合。根据需要,可以在一个或多个模块中执行多个功能,所描述的实施例仅仅是示例。软件可以在数字信号处理器、asic、微处理器或在计算机系统(例如个人计算机、服务器或其它计算机系统)上运行的其它类型的处理器上执行,将这种计算机系统转变成经特定编程的机器。
[0057]
概述
[0058]
在图论中,可达性是指在图中从一个顶点到达另一个顶点的能力。如果存在以s起始并以t结束的相邻顶点序列(即路径),则顶点s可以到达顶点t(并且t可从s到达)。在无向
图中,所有顶点对之间的可达性可以通过识别图的连通分量来确定。当且仅当这种图中的任何顶点对属于同一连通分量时,它们可以相互到达。在节点可达性计算中,需要说明的是,如果拓扑/图中有n个节点,则有n2个对,其中,n非常大,而且增加快速。现有的节点可达性计算方法使用强力方法,由于需要重新计算,这种强力方法非常缓慢,这使得几乎不可能进行实时网络验证。
[0059]
对于有向图g=(v,e),其中,v为顶点集,e为边集,g的可达性关系是e的传递闭包,因为对于v中顶点的所有有序对(s,t)的集合,存在一个顶点序列v0=s,v1,v2,...,vk=t,使得对于所有1≤i≤k,边(v
i-1
,vi)都在e中。如果g是无环的,则它的可达性关系是偏序关系,定义为它的传递约简的可达性关系。由于偏序是反对称的,因此如果s可以到达t,则可以得知t不能到达s。另一方面,如果报文可以从s行进到达t并返回到s,则g将包含一个循环,这与g是无环的相矛盾。如果g是有向的,但不是无环的(即,它至少包含一个循环),则它的可达性关系将对应于前序而不是偏序。
[0060]
虽然传统方法使用强力方法为每个节点生成可达树,但本文描述的方法相反侧重于从现有转发平面生成网络中节点之间的节点可达性,以取代可达树生成。该方法验证了节点可达性,并提供了环路检测、隔离检测、黑洞检测等。为了计算网络的节点可达性关系,系统为网络中的每个节点对确定是否存在可以从一个节点行进到另一个节点的报文。如果存在这种报文,则评估整个报文头集。在示例实施例中,这是通过从每个节点遍历网络,在该节点弹出全通配符报文,沿路查找路由表以减少报文头集,并从所有可能的路径收集所有报文头来完成的。
[0061]
网络验证系统
[0062]
一种高效的网络验证系统和方法,通过提供高效的数据结构来存储处理流的网络策略和算法,实时地验证甚至复杂的网络。使用数据平面验证,因为数据平面与网络的实际行为密切相关,因此它可以捕获其它工具忽略的错误。例如,配置分析无法发现路由器软件中出现的错误。此外,数据平面状态具有相对简单的格式和语义,这些格式和语义在许多高层协议和实现中都是常见的,从而简化了对网络的严格分析。为了实时验证的目标,在示例实施例中处理数据平面状态以验证网络状态,例如:
[0063]
可达性
[0064]
环路检测
[0065]
隔离
[0066]
黑洞
[0067]
途经点
[0068]
一致性
[0069]
链路连接/断开
[0070]
本文描述的方法通过关注节点可达性生成以取代可达树生成,并预先计算相关头空间的压缩表示,而不是依赖“运行时”压缩,提高了数据平面数据结构的效率。图1示出了常见的总体数据平面网络验证架构。如图1所示,网络验证系统转发某个时间点的网络状态的快照10。在示例实施例中,快照10包括该时间点的转发表和访问控制列表(access control list,acl)的副本。然后,网络验证系统和方法减少任何冗余,并在11处为所识别的等价类(equivalence class,ec)生成原子流。然后,网络验证系统和方法在14处生成转
发图12或字典树13。图1示出了表示网络或网络部分15的转发图12或字典树13。转发图12包括网络节点16和节点17之间的链路17。用户设备18可以连接到节点16,并通过节点16和链路17与网络15交换通信和/或数据。转发字典树13示出了网络15中相应叶19的关系,其中,树13中的位置定义了给定节点所关联的节点。网络验证系统还可以生成紧凑的基于端口的转发图,该图存储规则,并生成更少的原子流,以实现更快的增量验证,而不需要重新计算,同时使用更少的内存。网络验证系统还使运营商能够在20处使用来自查询引擎的查询来查询网络的状态。
[0071]
图1的网络验证系统的输入/输出模块如图2所示。如图所示,网络运营商指定网络的拓扑22、网络验证的意图24(例如,检查什么),以及指定转发状态信息的快照策略26。拓扑22由拓扑解析器28解析并提供给验证引擎30。类似地,意图24由意图解析器32解析,快照策略26由快照解析器34解析,并且解析的意图和快照数据也被提供给验证引擎30。验证引擎30向报告生成器36提供计算得到的验证数据,以生成运营商的网络状态报告。
[0072]
在图1的网络验证中,瓶颈是节点可达性计算。如上所述,如果拓扑/图中有n个节点,则有n2个对,其中,n非常大,而且增加快速。为了实现实时验证,本文描述的系统创建了用于计算传递闭包的可达矩阵。然后,得到的可达报告用于使用例如时间复杂度o(n3)和有限中间节点算法对网络进行动态编程。这种方法的优点是速度快,不需要重新计算,矩阵记录了两个节点之间的所有信息并建立了路径历史,可以非常快速地检测到环路和黑洞,可以快速增量更新,并且系统可以使用分治技术进行扩展。
[0073]
节点可达性
[0074]
在示例实施例中,提供了网络审查工具,以从现有转发平面分析网络中节点之间的节点可达性关系。网络审查工具提供了可达矩阵来计算传递闭包(即,可以从起始位置访问的所有位置的集合)。网络审查工具快速计算网络的节点可达性关系,并使网络运营商对网络的真实功能有一个整体的了解。网络审查工具还可以找到节点之间所有当前可能的路径,从而使运营商能够定位重复路由,确保备份路由,并精确定位关键节点。
[0075]
一个原子是一块n维头空间,表示报文集,其中,属于同一个原子的所有报文在整个网络中具有相同的行为。转发表和访问控制列表(access control list,acl)是报文过滤器,可以被解析并由保护中间网络节点输入和输出端口的谓词表示。这种端口谓词的变量是报文头域。给定谓词的集合p,它的原子谓词集{p1,...,pk}满足以下属性:
[0076]
(1)pi≠假,
[0077]
(2)v
ki=1 pi=真。
[0078]
(3)pi∧pj=假,如果i≠j。
[0079]
(4)每个谓词p∈p,p≠假,等于原子谓词子集的析取式:
[0080]
p=v
i∈s(p)
pi,其中,
[0081]
(5)k是最小数,使得集合{p1,...,pk}满足上述四个属性。
[0082]
给定集合p,有许多满足前四个属性的谓词集。在琐碎的情况下,这四个属性由谓词集来满足,其中,每个谓词指定单个报文。谓词数量最少的集合是原子谓词。具体地,对于给定的谓词集p,p的原子谓词集指定了所有报文集中的最小等价类集合。头空间中的原子与原子谓词相同。报文头空间中的所有原子/原子谓词以及头空间中的每个点都表示报文头。同一原子/原子谓词中的报文头在整个网络中具有完全相同的行为/结果/动作。每个原
子谓词都有唯一的索引,原子谓词索引集用于表示一组原子谓词。
[0083]
系统使用例如ap-verifier或veriflow的算法或其它算法将网络转发状态(rib、fib)预处理为原子谓词,以在头空间中生成原子,并将路由表压缩到原子谓词索引集中,从而减少路由表的数量并降低复杂性。例如,典型网络的典型报文头可具有200位,因此有2
200
个可能的值,数量过多。这就是使用原子的原因。例如,如果有两个规则将可能的头值(头空间)分为两部分(原子),则只能使用两个原子作为索引来表示所有可能的头空间。通常,生成的原子数量在数百到数千个之间,一个原子可以表示大量的值(例如,2
199
)。因此,原子谓词索引集将索引数量减少到100-1000个。然后,通过采用受warshall节点可达性算法启发的方法,计算网络的节点可达性,并在计算期间记录路径历史,以便进一步分析,将整个网络路由表建模为路由矩阵。根据计算结果生成可达报告和网络属性(关键点、黑洞、环路、重复路由和备份路由)报告。在该上下文中,如果从节点a到节点b的可达性必须经过该节点(关键点),则节点是一个关键点,这是一个特殊的可达性情况。例如,从网络外部进入网络的所有进入流量可能需要通过防火墙,该防火墙将是网络的关键点。
[0084]
例如,本领域技术人员将理解,floyd-warshall算法是一种用于在具有正或负边缘权重的加权图中找到最短路径的算法。单次执行该算法将找到所有顶点对之间的最短路径长度。尽管它不返回路径本身的详细信息,但可以通过对算法的简单修改来重建路径。该算法的版本还可用于查找关系的传递闭包或加权图中所有顶点对之间的最宽路径。在示例实施例中,floyd-warshall算法可用于计算任何有向图的传递闭包,从而产生本文所述的可达性关系。
[0085]
在示例实施例中,计算一系列矩阵以获得最终的节点可达性矩阵。对于网络中编号为1、2、
……
、n的节点,矩阵mk中的元素r
kij
是指节点i与节点j之间使用编号为1、2、
……
、k的中间节点的可达报文空间集,从而定义了最终的节点可达性矩阵mn。矩阵m0是网络的邻接矩阵(没有中间节点)。mn以递归方法计算如下:
[0086]rk
[i,j]=r
k-1
[i,j]∪(r
k-1
[i,k]∩r
k-1
[k,j])
ꢀꢀ
(1)
[0087]
图3示出了在示例实施例中计算节点可达性矩阵。在该简单示例中,四个节点(1)-(4)共享报文1-4,如图所示。例如,节点(1)从节点(2)接收报文{2,3,4},从节点(3)接收报文{3},向节点(3)提供报文{1,2},向节点(4)提供报文{1,3}。节点(2)向节点(1)提供报文{2,3,4},向节点(3)提供报文{1},但不从任何其它节点接收报文。节点(3)向节点(1)提供报文{3},并从节点(2)接收报文{1},从节点(1)接收报文{1,2}。最后,节点(4)从节点(1)接收报文{1,3},但不向任何其它节点提供报文。
[0088]
可达矩阵m0示出了报文从相邻节点的传送,而不考虑任何中间节点。空集表示矩阵中指示的节点之间没有直接通信。
[0089]
可达矩阵m1修改矩阵m0,以进一步示出报文通过节点(1)作为中间节点的传送。在本示例中,报文{2}进一步通过节点(1)从节点(2)传送到节点(3),报文{3}进一步通过节点(1)从节点(2)传送到节点(4)。此外,报文{3}还通过节点(1)从节点(3)传送到节点(4)。
[0090]
可达矩阵m2示出了报文通过节点(2)作为中间节点的传送。由于节点(2)不能是中间节点,因此可达矩阵m2与可达矩阵m1相同。类似地,由于节点(3)和节点(4)不作为中间节点,因此可达矩阵m3和m4类似地保持不变。
[0091]
以这种方式形成节点可达性矩阵的优点是,得到的可达矩阵可用于识别网络中是
否存在环路或黑洞。例如,如果矩阵对角线上的任何元素不是空集φ(即,报文可以循环回源节点),则检测到环路。此外,如果mn具有元素都是空集的行,则可以从得到的节点可达性矩阵中识别黑洞。例如,在图3的示例中,节点(4)是黑洞。
[0092]
应理解,可达矩阵mn记录了两个节点之间的所有信息,并且不需要重新计算。因此,得到的系统保存了网络的路径历史。
[0093]
可达矩阵mn还提供快速增量更新。例如,图4示出了图3中计算得到的节点可达性矩阵的增量更新示例。在图4的示例中,图3的网络被更新,以进一步将报文{5}从节点(2)传送到节点(1),从节点(1)传动到节点(4),以及从节点(1)传动到节点(3)。此外,节点(2)还将数据包{6}传送到节点(3)。更新矩阵表示为矩阵m4′
,该矩阵包括节点(1)作为中间节点。如图所示,整个网络的可达矩阵m可以通过将原始可达矩阵m4和矩阵m4′
相加(例如,m=m4+m4′
)而无需进一步计算获得而。因此,更新的可达矩阵m可以通过仅重新计算受影响的元素来更新,这提供了简单的增量验证过程。
[0094]
图5示出了不需要计算图3的简单网络中的非中间节点的示例。在本示例中,节点4不是中间节点,因此不需要计算矩阵m4或不需要保留矩阵m4的信息。m4与m3相同。需要计算m3,但不需要添加新的原子。此外,节点2不是中间节点,因此可达矩阵m2与m1相同,并且也不需要计算。在实际网络拓扑中,大多数节点不是中间节点,因此认识到节点不是中间节点可以用于显著减少可达矩阵的计算和存储。
[0095]
作为另一个优化,可以修改用于确定可达矩阵的节点的计算顺序,以计算最后更新频繁的节点的可达矩阵,以便在更新的可达矩阵之前处理的可达矩阵在更新过程中不会受到影响。
[0096]
作为又一个优化,一些计算可以基于矩阵,而不是图。例如,如果节点a到节点b是空集φ,则a不能通过b到达任何节点。换句话说,如果(a到b)∩(b到c)是空集,则可达矩阵中不需要从a到c的更新。
[0097]
在示例实施例中,通过网络的每个原子流是覆盖不相交集的二叉判定图(binary decision diagram,bdd)。对于增量验证,使用bdd操作。bdd生成字典树,该字典树一次在一个位(或几个位)上分支。分组网络被建模为有向框图。例如,图6示出了示例分组网络14的总体基于字典树的数据平面验证架构。使用简单网络管理协议(simple network management protocol,snmp)、安全外壳(secure shell,ssh)加密网络协议、telnet等从网络14的网络设备收集输入数据。状态收集器600接收网络拓扑快照,并从快照收集状态信息。状态收集器600还比较两个连续稳定快照,并且仅将差异发送到解析器602。快照由解析器602解析,并且解析的信息由稳态验证器604验证,该稳态验证器604执行上文参考图2提到的验证引擎30的功能。稳态验证器604的输出被提供给版本控制设备606,以建立所接收信息的版本控制。经验证的稳态信息也被原子流(atomic flow,af)生成器(bdd)608用于生成原子流,该原子流随后被af生成器608提供给有向图生成器610,以生成有向图。由有向图生成器610生成的有向图被提供给可达树生成器612,以使用上文参考图3、图4和图5描述的方法生成可达树。有向图和可达树被提供给检查引擎614,该检查引擎614可以被查询以生成关于网络状态的报告,如上文参考图2所述。
[0098]
对检查引擎614的查询涉及网络14的状态。例如,查询可以包括可达性、环路检测、隔离等。通过认识到可达性是基本的,本文描述的技术可用于组合查询并重复使用可达性
结果,由此可以在构建字典树时为每个端口构建和存储可达树,从而将网络的复杂性从o(n2)降低到o(n),其中,n是端口数量。例如,如图7所示,可由可达树生成器612为网络15(图1)的每个网络设备700的每个端口生成可达树。可达树700a示出了总体拓扑,而可达树700b、700c和700d分别示出了从可达树700a的节点(端口)a、b和c起始的可达树。可达树的端口a、b和c示出,环路检测是基于每个端口的可达树来查找环路的,而隔离也是基于每个端口的可达树。计算所有端口,包括进站端口和出站端口。对于访问端口,将考虑所有输入,而对于其它端口,将使用基于端口的有向依赖关系图的过滤输入。
[0099]
图8示出了示例实施例中用于验证网络状态的方法。具体地,图8示出了由本文描述的网络验证系统执行的过程。如图8所示,该过程在800处开始,并在802处将网络转发状态处理成原子谓词。在804处网络路由表被压缩到原子谓词索引集中。在806处,根据原子谓词和原子谓词索引集计算网络中所有节点对之间的传递闭包,以生成网络的节点可达性矩阵。在示例实施例中,可以通过将压缩的网络路由表建模为包括网络的节点可达性矩阵的路由矩阵来计算网络中所有节点对之间的传递闭包。此外,可以通过针对网络中的每个节点对,计算是否有可以从节点对中的一个节点行进到另一个节点的任何报文,并从节点对之间的所有可能路径收集报文头,来计算网络的节点可达性矩阵。在示例实施例中,该计算包括计算(或递归地计算)元素r
kij
,以包括在网络的节点可达性矩阵mn中,该元素r
kij
在节点i与节点j之间具有可达报文空间集(其中,k是中间节点)。元素可以使用等式1生成,其中,等式1包括:
[0100]rk
[i,j]=r
k-1
[i,j]∪(r
k-1
[i,k]∩r
k-1
[k,j])
ꢀꢀ
(1)
[0101]
根据计算得到的网络的节点可达性,在808处,为相应节点递归地生成网络的可达报告,并在812处,使用该报告对网络进行动态编程。
[0102]
可以可选地在810处识别环路和/或黑洞,以减少对无助于网络可达性的节点的不必要处理。例如,当节点可达性矩阵的对角线上的任何元素不是空集时,识别网络中的环路,当节点可达性矩阵的一行中的所有元素都包括空集时,识别网络中的黑洞。
[0103]
在814处,该过程检查对计算得到的节点可达性矩阵的更新。如果识别到更新,则该过程返回到步骤806,以计算网络中所有更新的节点对之间的传递闭包,以生成更新的节点可达性矩阵。在示例实施例中,仅需要重新计算受网络更新影响的元素。此外,可以通过计算节点可达性矩阵,而不对网络中的非中间节点执行可达矩阵计算,进一步提高效率。可以在其它不频繁更新的节点之后对网络中频繁更新的节点执行可达矩阵计算,或者基于节点的矩阵而不是网络图执行可达矩阵计算,进一步提高效率。其它优化对于本领域技术人员将是显而易见的。
[0104]
本领域技术人员将进一步理解,本文描述的系统和方法与现有技术网络验证系统相比具有许多优点。例如,由于可以并行计算可达矩阵,因此所公开的系统和方法能够使用多核处理器实现干扰感知集群管理和增强的并行处理。还将理解,所公开的方法特别有益,因为它们在不使用强力的情况下解决网络中的节点可达性问题,并使用可达矩阵来解决网络验证过程中的可达性问题。这些方法的速度很快,因为大多数计算结果都是重复使用的,并且使用快速增量计算而不是重新计算。此外,也可以在矩阵中同时轻松验证可达性、环路检测和隔离。本文描述的节点可达性矩阵还可以提供关于任何两个节点之间可达性的快速查询,并且易于实现,以用于调试目的。快速计算还能够根据网络运营商的意图实时检查和
监测网络状态。本领域技术人员将进一步理解,本文描述的系统和方法容易地与用于不同类型网络的现有网络验证系统集成,并且可以毫不费力地容易地集成到实现现有云服务(如公共云、私有云或混合云)的云网络管理系统中。
[0105]
本领域技术人员将进一步理解,本文描述的系统和方法解决了一般的图论问题,并基于真实的云网络结构对其进行优化,从而最大限度地减少云/数据中心中代价高昂的网络中断。本文描述的系统和方法也不将流量发送到云网络,因此,在实施时,系统和方法将不会影响当前的网络流量。
[0106]
网络和计算机架构
[0107]
图9示出了网络单元900的实施例,该网络单元900可以是通过例如上述示例网络的网络来传输和处理数据的任何设备。例如,网络单元900可以对应于或可以位于上述任一网络系统节点中。网络单元900还可以用于实现或支持上述方案和方法。网络单元900可以包括耦合到用于从其它网络组件接收信号和帧/数据包的接收器(rx)920的一个或多个入端口或单元910。网络单元900还可以包括处理器930,以确定将内容发送到哪些网络组件。处理器930可以使用硬件、软件或两者实现。网络单元900还可以包括耦合到用于将信号和帧/数据包发送到其它网络组件的发射器(tx)950的一个或多个出端口或单元940。接收器910、处理器930和发射器950还可以用于实现上文公开的方案和方法中的至少一些,这些接收器910、处理器930和发射器950可以基于硬件、软件或两者。网络单元900的组件可以如图9所示布置或以任何其它配置布置。
[0108]
处理器930还可以包括可编程内容转发数据平面块938和可以耦合到可编程内容转发数据平面块938的一个或多个存储块932。可编程内容转发数据平面块938可用于实现如本文所述的内容转发和处理功能,例如在应用层,其中,可以基于内容名称或前缀以及可能的将内容映射到网络流量的其它内容相关信息来转发内容。这种映射信息可以保存在处理器930或网络单元900处的一个或多个内容表(例如,cs、pit和fib)中。可编程内容转发数据平面块938可以解释用户对内容的请求,并且相应地例如基于元数据或内容名称(前缀)从网络或其它内容路由器获取内容,并且可以例如将内容临时存储在存储块932中。可编程内容转发数据平面块938然后可以将缓存的内容转发给用户。可编程内容转发数据平面块938可以使用软件、硬件或两者来实现,并且可以在ip层之上操作。
[0109]
存储块932可以包括用于临时存储内容(例如由订户请求的内容)的高速缓存存储器934。此外,存储块932可以包括长期存储器936,用于存储相对较长的内容,例如由发布者提交的内容。例如,高速缓存存储器934和长期存储器936可以包括动态随机存取存储器(dynamic random-access memory,dram)、固态硬盘(solid-state drive,ssd)、硬盘或其组合。
[0110]
在处理器930的示例实现方式中,本文描述的网络验证可以借助于接收器920、处理器930(包括可编程内容转发数据平面块938和一个或多个存储块932)和发射器950执行,这些接收器920、处理器930和发射器950一起处理上文描述的信号和帧/数据包,其中,信号和帧/数据包指示ip地址和命名空间、请求或内容。
[0111]
图10示出了适合于实现本文公开的组件的一个或多个实施例的通用网络组件1000。上文描述的网络组件可以在任何通用网络组件上实现,所述通用网络组件例如具有足够的处理能力、内存资源和网络吞吐量能力以处理施加在其上的必要工作负载的计算机
或网络组件1000。网络组件1000包括处理器1010(可称为中央处理器单元(central processor unit,cpu)),该处理器1010与包括辅助存储器1020、只读存储器(read only memory,rom)1030、随机存取存储器(random access memory,ram)1040的存储器设备、输入/输出(input/output,i/o)设备1050和网络连接设备1060通信。处理器1010可以实现为一个或多个cpu芯片,或者可以是一个或多个专用集成电路(application specific integrated circuit,asic)的一部分。
[0112]
辅助存储器1020通常由一个或多个磁盘驱动器和/或磁带驱动器组成,用于数据的非易失性存储,且如果ram 1040的大小不足以保存所有工作数据,则所述辅助存储器还用作溢流数据存储设备。辅助存储器1020可以用于存储程序,当选择执行这些程序时,所述程序将加载到ram 1040中。rom 1030可用于存储在程序执行期间读取的指令以及可能读取的数据。rom 1030是一种非易失性存储器设备,相对于辅助存储器1020的较大存储器容量,所述非易失性存储器设备通常具有较小的存储器容量。ram 1040用于存储易失性数据,并且可能用于存储指令。对rom 1030和ram 1040两者的访问通常比对辅助存储器1020的访问更快。
[0113]
应理解,本文所述的服务器、路由器和消费者或生产者域内的任何或所有设备可以用于包括注册、路由和解析逻辑,该注册、路由和解析逻辑包括存储计算机可读指令的计算机可读的非瞬时性介质和耦合到存储器的一个或多个处理器;并且当执行计算机可读指令时,用于执行本发明中参考图1至图9描述的方法步骤和操作。计算机可读非瞬时性介质包括所有类型的计算机可读介质,包括磁性存储介质、光存储介质、闪存介质和固态存储介质。
[0114]
还应理解,可以在消费者或生产者域内的符合本发明的一个或多个服务器、一个或多个路由器和一个或多个设备中安装并与消费者或生产者域内的符合本发明的一个或多个服务器、一个或多个路由器和一个或多个设备一起销售包括一个或多个计算机可执行指令的软件,所述一个或多个计算机可执行指令有利于如上文参考本发明的任何一个步骤或所有步骤所描述的处理和操作。或者,可以获得软件并将软件加载到消费者或生产者域内的符合本发明的一个或多个服务器、一个或多个路由器或一个或多个设备中,包括通过物理介质或分发系统获得软件,包括例如从软件创建者拥有的服务器或从软件创建者未拥有但使用的服务器获得软件。例如,软件可以存储在服务器上,以便通过互联网分发。
[0115]
此外,本领域技术人员应理解,本发明在其应用方面不限于在说明书中阐述或附图中示出的组件的构造和布置细节。本文的实施例能够适用其它实施例,并且能够以各种方式实践或执行。此外,应理解,本文使用的措辞和术语是为了描述目的,不应视为限制性的。在本文中使用“包括”、“包含”或“具有”及其变体旨在涵盖其后列举的项目及其等效物以及其它项目。除非另有限制,否则术语“连接”、“耦合”和“安装”以及其变体在本文中被广泛使用,并且涵盖直接连接和间接连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。此外,如“上”、“下”、“底部”和“项部”等术语是相对的,用于帮助说明,但并不具有限制性。
[0116]
可以至少部分地在数字电子电路、模拟电子电路中,或计算机硬件、固件、软件或其组合中实现根据所说明的实施例使用的说明性设备、系统和方法的组件。例如,这些组件可以实现为有形地体现于信息载体中,或机器可读存储设备中的计算机程序产品(如计算
机程序、程序代码或计算机指令),以由数据处理装置(如可编程处理器、计算机或多台计算机)执行,或用于控制数据处理装置的操作。
[0117]
计算机程序可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以部署成任何形式,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。可以将计算机程序部署成在一台计算机中或多台计算机中在一个站点处执行,也可以分布在多个站点处并通过通信网络互连。此外,用于实现本文描述的系统和方法的功能程序、代码和代码段可以很容易本发明所属领域的程序员理解为在本发明的范围内。与说明性实施例相关联的方法步骤可以由一个或多个可编程处理器执行,从而执行计算机程序、代码或指令来执行功能(例如,对输入数据进行操作和生成输出)。例如,方法步骤也可以由专用逻辑电路(例如,现场可编程门阵列(field programmable gate array,fpga)或专用集成电路(application-specific integrated circuit,asic))执行,并且装置可以实现为该专用逻辑电路。
[0118]
结合本文所公开实施例描述的各种说明性逻辑块、模块和电路可以利用通用处理器、数字信号处理器(digital signal processor,dsp)、asic、fpga或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或其为执行本文描述的功能而设计的任何组合来实现或执行。通用处理器可以为微处理器,但是在替代方案中,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如dsp和微处理器、多个微处理器、一个或多个微处理器结合dsp核,或任何其它类似的配置的组合。
[0119]
例如,适合执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的必需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),或与一个或多个用于存储数据的大容量存储设备可操作地耦合以从所述大容量存储设备接收数据和/或将数据传送给所述大容量存储设备。适用于体现计算机程序指令和数据的信息载体包括各种形式的非易失性存储器,例如,包括半导体存储器设备,例如电可编程只读存储器或电可编程rom(electrically programmable read-only memory,eprom)、电可擦除可编程rom(electrically erasable programmable rom,eeprom)、闪存设备、数据存储盘(例如,磁盘、内置硬盘、或可移动磁盘、磁光盘、cd-rom盘和dvd-rom盘)。处理器和内存可以由专用逻辑电路补充或并入专用逻辑电路。
[0120]
本领域技术人员应理解,可以使用多种不同的技术和技术方法中的任意一种来表示信息和信号。例如,上文描述中可以引用的数据、指令、命令、信息、信号、比特、符号和芯片可由电压、电流、电磁波、磁场或磁粒、光场或光粒、或者任何组合表示。
[0121]
本领域技术人员还可以理解,结合本文公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种互换性,各种说明性组件、块、模块、电路和步骤已经在上文中大体上根据它们的功能进行了描述。这些功能是作为硬件还是软件实现,取决于施加于整个系统的特定应用和设计限制。本领域技术人员可以以不同的方式针对每个特定应用实现所描述的功
能,但这种实现决策不应被解释为导致偏离本发明的范围。软件模块可以驻留在随机存取存储器(random access memory,ram)、闪存、rom、eprom、eeprom、寄存器、硬盘、可移动磁盘、cd-rom或本领域已知的任何其它形式的存储介质中。示例存储介质耦合到处理器,使得处理器可以从存储介质读取信息,并将信息写入存储介质。在替代方案中,存储介质可以与处理器成一个整体。换句话说,处理器和存储介质可以驻留在集成电路中,也可以实现为分立组件。
[0122]
如本文所使用,“机器可读介质”是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-access memory,ram)、只读存储器(read-only memory,rom)、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其它类型的存储器(例如,可擦除可编程只读存储器(erasable programmable read-only memory,eeprom))和/或其任何合适的组合。术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存存储器和服务器)。术语“机器可读介质”还应理解为包括能够存储由一个或多个处理器执行的指令的任何介质或多种介质的组合,以便所述指令在由一个或多个处理器执行时,使一个或多个处理器执行本文描述的任何一种或多种方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。本文使用的术语“机器可读介质”不包括信号本身。
[0123]
尽管上面已经详细描述了一些实施例,但其它修改是可能的。例如,图中描述的逻辑流不需要所示的特定顺序或次序来获得期望的结果。可以在所描述的流程中提供其它步骤,或可以从所描述流程中取消步骤,并且可以将其它组件添加到所描述的系统中或从所描述的系统中删除。其它实施例可以在权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1