通过图分析的模型驱动的意图策略冲突检测和解决方案的制作方法

文档序号:29956193发布日期:2022-05-11 08:02阅读:203来源:国知局
通过图分析的模型驱动的意图策略冲突检测和解决方案的制作方法

1.本公开涉及计算机网络,并且更具体地涉及网络设备的管理。


背景技术:

2.网络设备通常包括用于在本地或远程配置设备的机制,诸如管理接口。通过与管理接口交互,客户端可以执行配置任务以及执行操作命令以收集和查看被管理设备的操作数据。例如,客户端可以配置设备的接口卡,调节所支持的网络协议的参数,指定设备内的物理组件,修改由路由器维护的路由信息,访问驻留在设备上的软件模块和其他资源,以及执行其他配置任务。另外,客户端可以允许用户查看当前操作参数、系统日志、与网络连接有关的信息、网络活动或来自设备的其他状态信息,以及查看并且响应从设备接收的事件信息。
3.网络配置服务可以由多个不同设备执行,诸如带有服务卡的路由器和/或专用服务设备。这样的服务包括连接服务,诸如第三层虚拟专用网(l3vpn)、虚拟专用局域网服务(vpls)和对等(p2p)服务。其他服务包括网络配置服务,诸如dot1q vlan服务。网络管理系统(nms)和nms设备(也被称为控制器或控制器设备)可以支持这些服务,使得管理员可以轻松创建和管理这些高级网络配置服务。
4.特别地,设备的用户配置可以被称为“意图”。基于意图的联网系统允许管理员描述预期的网络/计算/存储状态。用户意图可以分类为业务策略或无状态意图。业务策略或有状态意图可以基于网络的当前状态来解析。无状态意图可以是描述预期的网络/计算/存储状态的完全声明性方式,而无需关注当前网络状态。
5.意图可以表示为可以使用统一图来建模的意图数据模型。意图数据模型可以表示为连通图,以便可以跨业务计算架构实现业务策略。例如,数据模型可以使用数据结构来表示,该数据结构例如是顶点通过拥有边(has-edge)和引用边(ref-edge)连接的连通图。控制器设备可以将意图数据模型建模为统一图。以这种方式,可以跨意图数据模型实现业务策略。当使用统一图模型对意图进行建模时,扩展新意图支持可以扩展图模型和编译逻辑。
6.为了配置设备以执行意图,用户(诸如管理员)可以编写转换程序,该转换程序将高级配置指令(例如,符合意图数据模型的指令,其可以表示为统一图模型)转换为低级配置指令(例如,符合设备配置模型的指令)。作为配置服务支持的一部分,用户/管理员可以提供意图数据模型以及意图数据模型与设备配置模型之间的映射。
7.为了简化用户的映射定义,可以将控制器设备设计为提供以简单方式定义映射的能力。例如,某些控制器设备提供了速度模板和/或可扩展样式表语言转换(xslt)的使用。这样的转换器可以包括从高级意图数据模型到低级设备配置模型的转换或映射逻辑。在某些情况下,意图数据模型中相对较少数目的改变可能会影响跨设备配置的相对较大数目的属性。在从意图数据模型创建、更新和删除服务时,可以使用不同的转换器。


技术实现要素:

8.总体上,本公开描述了用于检测意图之间的冲突并且为冲突提供解决方案的技术。例如,在有状态意图被转换为设备级配置之前,控制器设备可以确定数据结构(例如,图模型)的依赖意图与有状态意图冲突。在该示例中,控制器设备可以确定解决有状态意图与依赖意图之间的冲突的解决方案。以这种方式,控制器设备可以在意图级而不是在设备级配置中解决冲突,与在设备级解决冲突的系统相比,这可以实现改进的可伸缩性。
9.本文中描述的技术可以允许控制器设备自动执行验证,以帮助确保不同意图之间没有冲突。例如,控制器设备可以识别冲突并且生成解决冲突的解决方案,同时潜在地满足意图和现有意图,而不是用意图来覆盖现有意图。
10.在一个示例中,本公开描述了一种方法,该方法包括:由管理多个网络设备的控制器设备维护包括多个顶点和多个边的数据结构,多个顶点中的每个顶点表示多个网络设备中的相应网络设备或多个无状态意图中的相应无状态意图,并且多个边限定多个顶点之间的关系;由控制器设备接收有状态意图的指示,有状态意图指定要被转换为多个网络设备的一个或多个设备级配置改变的预期状态;由控制器设备基于有状态意图生成逻辑分组;由控制器设备基于逻辑分组确定数据结构的依赖意图;确定依赖意图与有状态意图冲突;以及响应于确定依赖意图与有状态意图冲突:由控制器设备基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案;以及由控制器设备输出解决方案的指示。
11.在另一示例中,本公开描述了一种设备,该设备被配置为管理多个网络设备并且:维护包括多个顶点和多个边的数据结构,多个顶点中的每个顶点表示多个网络设备中的相应网络设备或多个无状态意图中的相应无状态意图,并且多个边限定多个顶点之间的关系;接收有状态意图的指示,有状态意图指定要被转换为针对多个网络设备的一个或多个设备级配置改变的预期状态;基于有状态意图生成逻辑分组;基于逻辑分组确定数据结构的依赖意图;确定依赖意图与有状态意图冲突;以及响应确定依赖意图与有状态意图冲突:基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案;以及输出解决方案的指示。
12.在一个示例中,本公开描述了一种计算机可读存储介质,该计算机可读存储介质包括引起处理电路系统执行以下操作的一个或多个指令:维护包括多个顶点和多个边的数据结构,多个顶点中的每个顶点表示多个网络设备中的相应网络设备或多个无状态意图中的相应无状态意图,并且多个边限定多个顶点之间的关系;接收有状态意图的指示,有状态意图指定要被转换为多个网络设备的一个或多个设备级配置改变的预期状态;基于有状态意图生成逻辑分组;基于逻辑分组确定数据结构的依赖意图;确定依赖意图与有状态意图冲突;响应于确定依赖意图与有状态意图冲突:基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案;以及输出解决方案的指示。
13.一个或多个示例的细节在附图和以下描述中阐述。根据说明书和附图以及根据权利要求书,其他特征、目的和优点将很清楚。
附图说明
14.图1是示出根据本公开的技术的包括使用控制器设备来升级的企业网络的网络设
备的示例的框图。
15.图2是示出用于图1的控制器设备的一组示例组件的框图。
16.图3是示出用于意图数据模型的示例统一图模型的概念图。
17.图4是示出根据本公开的技术的被配置为使用意图生成设备级配置的示例控制器设备的概念图。
18.图5是示出根据本公开的技术的示例数据结构的概念图。
19.图6是示出根据本公开的技术的被配置为使用基于图的有状态意图分析执行冲突检测的示例控制器设备的概念图。
20.图7是示出根据本公开的技术的子源节点和父源节点的意图排序的第一示例的概念图。
21.图8是示出根据本公开的技术的子源节点和父源节点的意图排序的第二示例的概念图。
22.图9是示出根据本公开的技术的站点特定源节点和全局节点的意图排序的示例的概念图。
23.图10是示出根据本公开的技术的冗余意图检测的示例的概念图。
24.图11是示出根据本公开的技术的冗余意图解析的示例的概念图。
25.图12是示出根据本公开的技术的用于确定意图冲突的解决方案的示例过程的流程图。
26.在整个附图和描述中,相同的附图标记表示相同的元素。
具体实施方式
27.本公开涉及支持基于意图的工作流来管理网络的控制器设备。如本文中使用的,意图可以是指代描述预期的网络/计算/存储状态的完全声明性方式。例如,用户(例如,管理员)可以编写转换程序,该转换程序将高层配置指令(例如,符合意图数据模型的指令,其可以表示为统一图模型)转换为可以应用于网络的资源的低层配置指令(例如,符合设备配置模型的指令)。如本文中使用的,统一模型图或“统一意图图”可以是指包括无状态意图作为顶点和端点作为顶点(在本文中也称为“节点”)的图。作为配置服务支持的一部分,用户/管理员可以提供意图数据模型以及意图数据模型与设备配置模型之间的映射。
28.某些系统(例如,网络安全管理系统)可以支持规则分析,该规则分析可以通过分析设备级规则来检测影子规则、冗余规则和/或规则放置。相反,本文中描述的技术可以在具有高级对象的有状态意图层中操作。这样,本文中描述的在有状态意图层中操作的技术可以执行意图级分析,以确定可能无法从设备级规则推断出的冲突。另外,与依赖于设备级规则的系统相比,本文中描述的在有状态意图层中操作的技术可以提供改进的可伸缩性。
29.与依赖于设备级规则的系统相比,本文中描述的在有状态意图层中操作的技术可以具有改进的性能。例如,本文中描述的在有状态意图层中操作的技术可以使用图分析,该图分析使得能够通过对端点的分层结构进行建模并且将意图动作表示为边来实现eager图合成。如本文中使用的,eager合成可以包括用于实时检测意图冲突的过程。使用图分析(诸如eager合成)可以帮助使得冲突解决的性能保持恒定,而不是随着系统中的规则数而线性增加。例如,在安全管理中,规则数可以是数千个,对于依赖于设备级规则的系统而言,规则
数可能无法很好地伸缩。
30.与依赖于设备级规则的系统相比,本文中描述的在有状态意图层中操作的技术可以具有改善的意图恢复。例如,当意图具有冲突时,本文中描述的在有状态意图层中操作的技术可以实现具有各种恢复选项的会话接口。与依赖于设备级规则的系统相比,本文中描述的在有状态意图层中操作的技术可以具有改善的可伸缩性。例如,本文中描述的在有状态意图层中操作的技术可以提供基于模型(例如,统一图模型)的解决方案,该解决方案可以有助于实现在系统中注册的新意图模型的可伸缩性。
31.本公开描述了用于以下一项或多项的模型驱动方法。在一些示例中,本文中描述的技术可以将控制器设备配置为实时检测同一意图类型上的意图策略冲突。意图类型(在本文中也被称为“动作”)的示例可以包括例如连接类型、防火墙类型(例如,允许、阻止)、网络地址转换(nat)类型或另一意图类型。例如,控制器设备可以被配置为检测和解决彼此冲突的安全意图。例如,第一意图可以包括允许营销组与销售人员应用的通信的防火墙允许类型。在该示例中,第二意图可以包括拒绝所有组(包括营销组)与互联网的通信的防火墙允许类型。本文中描述的在有状态意图层中操作的技术可以检测第一意图与第二意图之间的冲突并且解决该冲突。
32.本文中描述的技术可以将控制器设备配置为实时检测跨不同意图类型的意图策略冲突。例如,第一意图可以包括允许第一地址(例如,address1”)访问销售人员应用的防火墙意图。在该示例中,第二意图可以包括第一地址到第二地址(例如,address2)的nat。在该示例中,第二意图(例如,第一地址到第二地址的nat)将使第一意图的防火墙意图(“允许”)无效。本文中描述的在有状态意图层中操作的技术可以检测第一意图与第二意图之间的冲突并且解决该冲突。
33.本文中描述的技术可以将控制器设备配置为在观察到冲突时提供解决方案。解决方案可以包括在防火墙意图的情况下改变意图的顺序。例如,控制器设备可以在应用防火墙允许类型或防火墙拒绝类型(在本文中也被称为“防火墙阻止类型”)之前应用nat类型。在一些示例中,为了在观察到冲突时提供解决方案,控制器设备可以修改意图。例如,控制器设备可以修改拒绝所有组(包括营销组)与互联网的通信的第一意图,以允许营销组与互联网通信,以满足允许营销组使用互联网与销售人员通信的第二意图。
34.本文中描述的技术可以将控制器设备配置为在直接策略改变或带外(oob)改变时验证意图。例如,用户(例如,管理员)可能直接修改策略。在该示例中,控制器设备可以针对这些改变来验证业务策略,并且提供受影响的业务策略。
35.本文中描述的技术可以将控制器设备配置为当从brownfield部署发现时验证意图(例如,当将先前建立的网络设备连接到控制器设备时)。当在发现时验证意图时,意图可能会被“遮蔽”(shadowed),因为设备规则被放错位置或者意图可能是无效的。如本文中使用的,例如,当第二意图将改变应用于包括子组的组时,包括要被应用于子组的改变的第一意图被遮蔽。在这种情况下,第一意图被遮蔽,使得第二意图使第一意图变得冗余。例如,第一意图可以允许营销组与互联网通信,第二意图可以允许包括营销组在内的所有组与互联网通信。
36.本文中描述的技术可以将控制器设备配置为可扩展的,以允许新的意图类型。例如,控制器设备可以包括除了连接类型、防火墙类型(例如,允许、阻止)和网络地址转换
(nat)类型之外的其他类型。
37.根据本公开的技术,控制器设备可以被配置为对策略图抽象(pga)应用扩展,以对意图依赖性进行建模,检测意图(例如,防火墙意图)中的冲突,并且通过意图(例如,防火墙意图)的排序提供解决方案。本公开还提供了用于异构意图类型的有状态意图层的方法,该方法可以帮助允许控制器设备检测任何意图上的冲突,提供意图冲突的解决方案,从brownfield部署中发现业务策略(例如,部署先前配置的设备),和/或验证意图。
38.根据本公开的技术,当创建或更新新的意图时,控制器设备可以根据意图形成逻辑分组。例如,控制器设备可以接收意图“nat意图:nat address1到address2”。在该示例中,控制器设备可以根据意图形成逻辑分组“{action:ip translate,src:address2}”。控制器设备可以应用转变功能,该转变功能产生经更新的逻辑分组“{action:ip translate,src:address2,properties:{oldsrc:address1}}”。
39.基于数据结构(例如,统一图模型)的意图依赖性,控制器设备的有状态意图分析引擎(在本文中也简称为“意图分析引擎”)可以选择一个或多个依赖意图。可控制器设备的分析处理程序可以被注册用于意图。例如,“功能nat意图分析”功能可以被配置用于nat意图,并且“功能防火墙意图分析”功能可以被配置用于防火墙意图。
40.意图分析引擎可以与分析处理程序一起检查意图改变是否与一个或多个依赖意图中的任何依赖意图冲突。如果意图改变与一个或多个依赖意图中的任何依赖意图冲突,则意图分析引擎将与分析处理程序一起提供解决方案。解决方案可以是对经修改的意图进行排序或改变当前意图。意图分析引擎可以将任何改变(例如,对经修改的意图进行排序或改变当前意图)作为“changelist”附加到分组。例如,意图分析引擎可以将“{action:ip translate,src:address2,properties:{oldsrc:address1,changelist:[intent type:firewallintent,uuid:1234,changes]}}”附加到改变列表。以这种方式,意图分析引擎可以帮助确保无冲突的合成策略。如本文中使用的,无冲突的合成策略可以是指没有任何冲突的策略。
[0041]
图1是示出包括使用控制器设备10来管理的企业网络2的网络设备的示例的框图。企业网络2的网络设备14a-14g(统称为“网络设备14”)包括经由通信链路互连以形成通信拓扑以交换资源和信息的网络设备。网络设备14(通常也称为远程网络设备)可以包括例如路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(ids)或入侵防御系统(idp)、计算设备、计算终端、打印机、其他网络设备、或这样的设备的组合。虽然在本公开中被描述为传输、传送或以其他方式支持分组,但是企业网络2可以根据由任何其他协议定义的任何其他离散数据单元来传输数据,诸如由异步传输模式(atm)协议定义的信元、或由用户数据报协议(udp)定义的数据报文。互连网络设备14的通信链路可以是物理链路(例如,光、铜等)、无线链路或其任何组合。
[0042]
企业网络2被示出为经由通信链路耦合到公共网络18(例如,互联网)。公共网络18可以包括例如一个或多个客户端计算设备。公共网络18可以提供对网络服务器、应用服务器、公共数据库、媒体服务器、端用户设备以及其他类型的网络资源设备和内容的访问。
[0043]
控制器设备10经由企业网络2通信耦合到网络设备14。在一些示例中,控制器设备10形成设备管理系统的一部分,但是,出于图1的示例的目的,仅示出了设备管理系统的一个设备。控制器设备10可以直接或间接耦合到各种网络设备14。一旦网络设备14被部署和
激活,管理员12就使用控制器设备10(或多个这样的管理设备)使用设备管理协议来管理网络设备。一种示例设备协议是简单网络管理协议(snmp),该snmp允许控制器设备10遍历和修改在每个被管理网络设备14内存储配置数据的管理信息库(mib)。另一示例设备协议可以包括netconf,但是,本文中描述的技术可以与其他设备协议一起使用。snmp协议的更多细节可以在“an architecture for describing simple network management protocol(snmp)management frameworks”(harrington等,网络工作组的互联网工程任务组草稿,rfc 3411,2002年12月)中找到(可从http://tools.ietf.org/html/rfc3411获取),其全部内容通过引用合并于此。另一示例设备协议可以包括netconf,但是,本文中描述的技术可以与其他设备协议一起使用。netconf协议的更多细节可以在“network configuration protocol(netconf)”(enns等,网络工作组的互联网工程任务组草稿,rfc 6241,2011年6月)中找到(可从http://tools.ietf.org/html/rfc6241获取),其全部内容通过引用合并于此。
[0044]
在通常的实践中,控制器设备10(也称为网络管理系统(nms)或nms设备)和网络设备14由企业的it部门来集中维护。管理员12与控制器设备10交互以远程监测和配置网络设备14。例如,管理员12可以从控制器设备10接收有关任何网络设备14的警报,查看网络设备14的配置数据,修改网络设备14的配置数据,将新的网络设备添加到企业网络2,从企业网络2中删除现有的网络设备,或者以其他方式操纵企业网络2和其中的网络设备。尽管关于企业网络进行描述,但是本公开的技术适用于其他网络类型(公共的和私有的),包括lan、vlan、vpn等。
[0045]
在一些示例中,管理员12使用控制器设备10或本地工作站来例如通过telnet、安全外壳(ssh)或其他这样的通信会话直接与网络设备14交互。也就是说,网络设备14通常提供用于直接交互的接口,诸如命令行接口(cli)、基于网络的接口、图形用户接口(gui)等,用户可以通过该接口与设备交互以直接发出基于文本的命令。例如,这些接口通常允许用户例如通过telnet、安全外壳(ssh)、超文本传输协议(http)或其他网络会话直接与设备交互,以根据定义的语法来输入文本以将命令提交给被管理元素。在一些示例中,用户使用控制器设备10发起与网络设备14之一(例如,网络设备14f)的ssh会话15,以直接配置网络设备14f。以这种方式,用户可以将执行格式的命令直接提供给网络设备14。
[0046]
此外,管理员12还可以创建可以由控制器设备10提交给任何或所有网络设备14的脚本。例如,除了cli接口,网络设备14还提供用于接收根据脚本语言指定命令的脚本的接口。在某种意义上,脚本可以由控制器设备10输出,以自动调用被管理网络设备14上的对应远程过程调用(rpc)。脚本可以符合例如可扩展标记语言(xml)或另一数据描述语言。
[0047]
管理员12使用控制器设备10将网络设备14配置为指定某些操作特性,从而进一步实现管理员12的目标。例如,管理员12可以为网络设备14指定关于安全性、设备可访问性、流量工程、服务质量(qos)、网络地址转换(nat)、分组过滤、分组转发、速率限制的特定操作策略或其他策略。控制器设备10使用为管理网络设备14内的配置数据而设计的一个或多个网络管理协议(诸如snmp协议或网络配置协议(netconf)协议或其派生产品,诸如juniper设备管理接口)来执行配置。通常,netconf提供用于配置网络设备的机制,并且对配置数据使用基于可扩展标记语言(xml)的数据编码,其中配置数据可以包括策略数据。netconf在“netconf configuration protocol”(enns,网络工作组,rfc 4741,2006年12月)中有描述
(可从tools.ietf.org/html/rfc4741获取)。控制器设备10可以与一个或多个网络设备14建立netconf会话。
[0048]
控制器设备10可以被配置为将新的意图数据模型与现有(或旧的)意图数据模型进行比较,确定新的意图数据模型与现有意图数据模型之间的差异,以及将反应性映射器应用于新的意图数据模型与旧的意图数据模型之间的差异。特别地,控制器设备10确定新的配置数据集合是否包括相对于旧的意图数据模型的任何附加配置参数,以及新的配置数据集合是否修改或省略了旧的意图数据模型中包括的任何配置参数。
[0049]
意图数据模型可以是统一图模型,而低级配置数据可以用yang表示,yang在2010年10月的互联网工程任务组的rfc 6020中的bjorklund的“yang—a data modeling language for the network configuration protocol(netconf)”中有描述(可从tools.ietf.org/html/rfc6020获取)。在某些示例中,意图数据模型可以用yaml ain’t标记语言(yaml)表示。控制器设备10可以包括用于转换意图数据模型差异的各种反应性映射器。这些功能被配置为接受意图数据模型(可以表示为结构化输入参数,例如,符合yang或yaml)。这些功能还被配置为输出相应低级设备配置数据改变集合,例如设备配置的增加和删除。也就是说,y1=f1(x),y2=f2(x),...yn=fn(x)。
[0050]
控制器设备10可以将yang模型用于意图数据模型和低级设备配置模型。该数据可以包含跨yang实体的关系,诸如列表项和容器。传统上,控制器设备不能实时支持配置管理功能。如下面更详细地讨论的,控制器设备10可以将yang数据模型转换为数据库模型,并且将yang验证转换为数据验证。用于使用高级配置数据的图模型来管理网络设备的技术在于2017年3月17日提交的题为“configuring and managing network devices using program overlay on yang-based graph database”的美国专利申请no.15/462,465中有描述,其全部内容通过引用合并于此。
[0051]
控制器设备10可以从管理员12之一接收表示关于统一意图数据模型的创建、更新和/或删除动作中的任何一个或全部的数据。控制器设备10可以被配置为针对应用于图模型的创建、更新和删除中的每个使用相同的编译逻辑。
[0052]
通常,与控制器设备10类似的控制器使用针对意图、低级数据模型和资源的分层数据模型。分层数据模型可以基于yang或yaml。如上所述,分层数据模型可以表示为图。现代系统已经支持意图,以简化网络管理。意图是声明性的。为了实现意图,控制器设备10尝试选择最佳资源。
[0053]
根据本公开的技术,控制器设备可以维护数据结构。数据结构可以包括多个顶点和多个边,多个顶点中的每个顶点表示网络设备14中的相应网络设备或多个无状态意图中的相应无状态意图,并且多个边限定多个顶点之间的关系。
[0054]
控制器设备10可以被配置为接收有状态意图的指示。在一些示例中,有状态意图指定要被被转换为针对网络设备14的一个或多个设备级配置改变的预期状态。控制器设备10可以基于有状态意图生成逻辑分组。例如,控制器设备10可以应用根据意图生成逻辑分组的意图策略功能(例如,功能防火墙意图策略或功能nat-意图策略)。
[0055]
控制器设备10可以基于逻辑分组来确定数据结构的依赖意图。例如,控制器设备10可以根据意图来确定意图类型。在该示例中,控制器设备10可以将逻辑分组从由意图指示的源遍历到由意图指示的目的地,以确定具有根据该意图确定的意图类型的一个或多个
边(例如,表示意图动作的顶点)。控制器设备10可以将依赖意图确定为由具有根据该意图确定的意图类型的一个或多个边指定的意图。例如,控制器设备10可以确定将网络地址从第一地址转换为第二地址的意图指定“防火墙允许”依赖类型。在这种情况下,控制器设备10可以将具有防火墙允许意图类型的祖先边的意图确定为依赖意图。
[0056]
控制器设备10可以确定依赖意图是否与有状态意图冲突。响应于确定依赖意图与有状态意图冲突,控制器设备10可以基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案。例如,控制器设备10可以确定如下解决方案:对意图重新排序,使得控制器设备10将网络地址从第一地址转换为第二地址并且然后将防火墙允许的意图应用于第二地址。与依赖于设备级规则的系统相比,确定有状态意图层中的意图是否冲突可以提高检测意图之间的冲突的性能。控制器设备10可以输出解决方案的指示。例如,控制器设备10可以附加针对逻辑分组的改变列表。
[0057]
图2是示出用于图1的控制器设备10的一组示例组件的框图。在该示例中,控制器设备10包括控制单元22、网络接口34和用户接口36。网络接口34表示可以将控制器设备10通信耦合到外部设备(例如,图1的网络设备14之一)的示例接口。网络接口34可以表示无线和/或有线接口,例如,以太网接口或被配置为根据诸如一个或多个ieee 802.11无线联网协议(诸如802.11a/b/g/n或其他这样的无线协议)等无线标准进行通信的无线电设备。在各种示例中,控制器设备10可以包括多个网络接口,但是出于示例目的而仅示出了一个网络接口。
[0058]
控制单元22表示用于实现归属于控制单元22及其组成模块和元件的功能的硬件、软件和/或固件的任何组合。当控制单元22包括软件或固件时,控制单元22还包括用于存储和执行软件或固件的任何必要的硬件,诸如一个或多个处理器或处理单元。通常,处理单元可以包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或任何其他等效的集成或离散逻辑电路系统、以及这样的组件的任何组合。此外,处理单元通常使用固定和/或可编程逻辑电路系统来实现。
[0059]
用户接口36表示一个或多个接口,诸如管理员12(图1)等用户通过该一个或多个接口与控制器设备10交互,例如,以提供输入并且接收输出。例如,用户接口36可以表示显示器、键盘、鼠标、触摸屏、触摸板、触控板、扬声器、相机、麦克风等中的一种或多种。此外,尽管在该示例中控制器设备10包括用户接口,但是管理员12不需要直接与控制器设备10交互,而是可以例如经由网络接口34来远程访问控制器设备10。
[0060]
控制单元22包括用户接口模块38、网络接口模块32和管理模块24。控制单元22执行用户接口模块38以从用户接口36接收输入和/或向用户接口36提供输出。控制单元22还执行网络接口模块32以经由网络接口34发送和接收数据(例如,分组)。用户接口模块38、网络接口模块32和管理模块24可以再次被实现为相应硬件单元,或者以软件或固件或其组合的形式实现。
[0061]
控制单元22的功能可以被实现为固定或可编程数字逻辑电路系统中的一个或多个处理单元。这样的数字逻辑电路系统可以包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或离散逻辑电路系统、以及这样的组件的任何组合。当被实现为可编程逻辑电路系统时,控制单元22还可以包括存储将由控制单元22的(多个)处理单元执行的硬件或固件指令的一个或多个计
算机可读存储介质。
[0062]
控制单元22执行管理模块24以管理各种网络设备,例如图1的网络设备14。网络设备的管理包括例如根据从用户(例如,图1的管理员12)接收的指令来配置网络设备,以及向用户提供提交配置网络设备的指令的能力。网络设备的管理还包括用已更新的软件(诸如已更新的软件映像)来升级网络设备。在该示例中,管理模块24还包括分析处理程序27和转换模块28。
[0063]
管理模块24被配置为从用户(诸如管理员12)接收针对一组被管理网络设备的意图统一图建模的配置数据。这样的意图统一图建模的配置数据可以称为“意图数据模型”。用户可以随着时间更新配置数据,例如以添加新服务,删除现有服务,或者修改由被管理设备执行的现有服务。统一意图数据模型可以根据例如yang或yaml来构造。图模型可以包括通过边以分层方式连接的多个顶点。在yang中,图模型的边通过“leafref”元素表示。在yaml的情况下,这样的边可以用“引用(ref)”边来表示。类似地,父子顶点关系可以用“拥有(has)”边来表示。例如,元素a的顶点使用has-edge来引用元素b的顶点,可以理解为表示“元素a具有元素b”。在一些示例中,管理模块24还向用户提供提交反应性映射器的能力,转换模块28执行该反应性映射器以将意图数据模型转换为设备特定的低级配置指令。
[0064]
控制器设备10还包括配置数据库40。配置数据库40可以包括描述被管理网络设备(例如,网络设备14)的数据结构。配置数据库40可以用作意图数据存储库,其可以用来持久化和管理意图数据模型的集合。例如,配置数据库40可以包括指示设备标识符(诸如mac和/或ip地址)、设备类型、设备供应商、设备种类(例如,路由器、交换机、网桥、集线器等)等的信息。配置数据库40还存储被管理设备(例如,网络设备14)的当前配置信息(例如,意图数据模型,或者在某些情况下,意图数据模型和低级配置信息两者)。配置数据库40可以包括包括统一意图数据模型的数据库。在一些示例中,配置数据库40可以存储低级配置,针对一组拥有资源中的每个相应拥有资源,该低级配置包括指示网络设备14的相应拥有资源的所有者的指针。
[0065]
根据本公开的技术,管理模块24可以在配置数据库40中维护数据结构。数据结构可以包括多个顶点和多个边,多个顶点中的每个顶点表示多个网络设备中的相应网络设备(例如,网络设备14)或多个无状态意图中的相应无状态意图,并且多个边限定多个顶点之间的关系。管理模块24可以接收有状态意图的指示。例如,管理模块24可以从诸如管理员12等用户接收针对一组被管理网络设备的意图统一图建模的配置数据。
[0066]
管理模块24可以基于有状态意图生成逻辑分组。例如,管理模块24可以应用意图策略功能(例如,功能防火墙意图策略或功能nat-意图策略),该意图策略功能根据由用户接口模块38生成的意图来生成逻辑分组。
[0067]
分析处理程序27可以被配置为基于逻辑分组确定数据结构的依赖意图。例如,分析处理程序27可以根据意图确定意图类型。在该示例中,分析处理程序27可以将逻辑分组从由意图指示的源遍历到由意图指示的目的地,以确定具有根据该意图确定的意图类型的一个或多个边(例如,表示意图动作的顶点)。分析处理程序27可以将依赖意图确定为由具有根据该意图确定的意图类型的一个或多个边指定的意图。例如,分析处理程序27可以确定将网络地址从第一地址转换为第二地址的意图将“防火墙允许”指定为依赖类型。在这种情况下,分析处理程序27可以将具有防火墙允许意图类型祖先边的意图确定为依赖意图。
[0068]
分析处理程序27可以确定依赖意图是否与有状态意图冲突。响应于确定依赖意图与有状态意图冲突,分析处理程序27可以基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案。例如,分析处理程序27可以确定如下解决方案:对意图重新排序,使得管理模块24将网络地址从第一地址转换为第二地址并且然后将防火墙允许的意图应用于第二地址。与依赖于设备级规则的系统相比,确定有状态意图层中的意图是否冲突可以提高检测意图之间的冲突的性能。分析处理程序27可以输出解决方案的指示。例如,分析处理程序27可以附加针对逻辑分组的改变列表。
[0069]
尽管出于示例目的将用户接口36描述为允许管理员12(图1)与控制器设备10交互,但是在其他示例中可以使用其他接口。例如,控制器设备10可以包括可以用作与另一设备的接口的代表性状态转移(rest)客户端(未示出),管理员12可以通过该客户端来配置控制器设备10。同样,管理员12可以通过利用rest客户端与控制器设备10交互来配置网络设备14。
[0070]
管理模块24可以将配置数据库40建模为表示yang配置数据元素的图数据库。yang指定各种类型的数据结构,包括列表、叶列表、容器、具有状态(presence)的容器、和特征。管理模块24可以将列表、容器、具有状态的容器和特征以及顶层容器建模为图数据库中的顶点。替代地,配置数据库40可以表示yaml配置数据元素。
[0071]
在构造图数据库之后,管理模块24可以对图数据库的数据执行操作。例如,管理模块24可以将基于netconf的操作(诸如get-config、具有过滤器的get-config、和edit-config)映射到图查询语言查询(诸如gremlin查询)。gremlin在gremlindocs.spmallette.documentup.com和github.com/tinkerpop/gremlin/wiki的gremlindoc中有描述。如果条件属性改变,则管理模块24可以执行映射到图数据库的顶点和边的条件。响应于条件,管理模块24可以处理附加改变,这些附加改变作为功能被处理,如下面更详细地讨论的。管理模块24还可以更新事务语义的所有改变。
[0072]
图3是示出用于意图数据模型的示例统一图模型60的概念图。图3所示的过程可以表示控制器设备10可以如何生成从意图生成的配置的示例。统一图模型60可以是由图2的配置数据库40存储的数据结构的示例。在该示例中,统一图模型60包括节点a 62、节点b 64和节点c 66等,这些节点可以表示相应网络设备(例如,网络设备14)。如图所示,统一图模型60可以包括限定多个节点a 62、b 64和c 66之间的关系的边。例如,经由lsp2连接节点b 64和节点c 66的边可以限定节点b 64与节点c 66之间的rsvp lsp。
[0073]
最初,统一图模型60可以不包括vpn 68、vpn 72和vpn 78,也不包括光学80、lambda 82、光学84和lambda 86。作为通过意图数据模型更新进行修改的结果,节点a 62经由vpn 68和lsp1 70耦合到节点b 64,节点b 64经由vpn 72和lsp2 74耦合到节点c 66,节点c 66经由vpn 78和lps3 76耦合到节点a 62。另外,由于光学意图而需要附加容量,因此在节点b 64与节点c 66之间增加附加节点光学80、lambda 82、光学84和lambda 86。
[0074]
有状态业务策略可以被写在无状态意图层之上。例如,用户可以声明意图“在站点a、b和c之间提供高带宽vpn连接,并且在a-b、b-c、c-a、
……
之间提供带宽”。这可能导致各种无状态意图。有状态意图可以被编译成l3vpn(覆盖隧道)以及在a-b、b-c、c-a之间提供所需要的带宽的传输机制。例如,传输机制可以包括:a-b之间的30mbps的rsvp lsp、的b-c之间的50mbps的rsvp lsp、和c-a之间的80mbps的rsvp lsp。在这种情况下,可能需要创建c-a
之间的80mbps的rsvp-lsp。可能存在需要更多容量的情况,因此可能还有进一步的意图“光学意图:增加c-a之间的容量”。如果c-a已经存在70mbps连接,则无状态意图可以在光网络上的c-a之间提供新的10g lambda。
[0075]
当实现有状态意图时,诸如控制器设备10等控制器设备可能需要考虑跨端点的现有无状态意图以及当前状态。在以上示例中,为了执行各种意图,控制器设备10可以查询连通图(包括无状态意图)并且在需要时创建/修改无状态意图。与使用统一图模型和意图有关的技术在于2017年3月17日提交的美国申请号15/462,465中有描述,其全部内容通过引用并入本文。因此,意图数据模型可以使用统一图模型表示。当添加更多用例时,可以扩展意图数据模型(即,统一图模型)。而且,统一图模型的使用允许基于端点来检索意图(例如,通过查询图)。
[0076]
但是,即使考虑到现有无状态意图,控制器设备(例如,控制器设备10)也可以应用有冲突的意图配置模板(configlet),从而使控制器设备不再实现有状态意图,这将导致控制器设备无法维护从意图生成的配置。例如,控制器设备可以接收第一意图,该第一意图指定要应用于节点b 64和节点c 66的一组配置改变。例如,控制器设备可以接收第一意图,该第一意图指定对lsp2 74的一组配置改变,该改变将带宽从50mbps减小到30mbps。在该示例中,应用第一意图引起控制器设备不再将网络设备14配置为实现b-c之间的50mbps的rsvp lsp,这可能导致控制器设备无法满足节点a 62与节点c 66之间的特定带宽的第二意图。
[0077]
根据本文中描述的技术,控制器设备10可以被配置为确定依赖意图(例如,现有意图)是否与应用于统一图模型60的有状态意图冲突。响应于确定该依赖意图与有状态意图冲突,分析处理程序27可以基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案。例如,控制器设备10(例如,分析处理程序27)可以确定以下解决方案:对意图重新排序,使得管理模块24将网络地址从第一地址转换为第二地址并且然后将防火墙允许的意图应用于第二地址。与依赖于设备级规则的系统相比,确定有状态意图层中的意图是否冲突可以提高检测意图之间的冲突的性能。
[0078]
图4是示出根据本公开的技术的被配置为使用意图来生成设备级配置的示例控制器设备210的概念图。控制器设备210可以是图1的控制器设备10的示例。
[0079]
控制器设备210可以表示基于意图的控制器系统。控制器设备210可以被配置为支持意图以简化网络的管理。意图可以是声明性的。为了实现意图,控制器设备210可以选择最佳资源(例如,在诸如软件驱动的(sd)广域网(wan)、虚拟专用网(vpn)或另一资源等连接服务中的用户网络接口(uni))。在安全方面,控制器设备210可以通过意图支持防火墙策略、nat、统一威胁管理(utm)。控制器设备210可以使用针对意图、低级设备配置模型和/或资源的分层数据。
[0080]
控制器设备210可以支持基于用户意图的安全策略。例如,控制器设备210可以根据逻辑业务结构(诸如但不限于用户、用户组、地理位置、站点、租户、应用或威胁风险)创建策略。
[0081]
意图类别用户意图可以被分类为有状态意图(例如,业务策略)和无状态意图。如本文中使用的,业务策略可以是指要基于网络的当前状态被解析的意图(例如,无状态意图)。控制器设备210可以基于网络的当前状态解析有状态意图。相反,无状态意图可以表示描述预期的网络/计算/存储状态的完全声明性方式,而没有网络的当前状态。控制器设备
210可以应用应用工作流程以将有状态意图转换为无状态意图。控制器设备210可以在有状态层(例如,业务策略层)中检测意图冲突,在发生冲突的情况下提供解决方案,并且合成意图。为了合成意图,控制器设备210可以在存在安全意图的情况下对意图进行排序,和/或生成无状态意图。
[0082]
将控制器设备210配置为应用策略图抽象(pga)可以允许控制器设备210独立地表达网络策略。当应用pga时,控制器设备210可以利用图结构来检测和解决策略冲突。当应用pga时,控制器设备210可以通过将多个服务链需求合并到无冲突合成链中来建模和合成服务链策略,例如要遍历的中间盒的序列。
[0083]
在pga中,模型包括顶点和边。pga图模型中的每个顶点表示端点组(epg),epg包括一组端点(ep)。ep是对其应用策略的最小抽象单元,例如服务器、vm、客户端设备、网络、子网或端用户。epg包括满足针对该epg指定的成员资格谓词的所有ep。在默认情况下,在pga中,任何ep之间都不允许通信。epg之间必须有有向边以指定pga策略中的许可通信。pga提供基于图的策略分析,该分析提供“网络策略”到“无冲突合成策略”的eager合成。
[0084]
关于pga,需要有意图扩展性。例如,控制器设备可以包括多个用例应用。例如,控制器设备可以支持涉及连接服务控制器(例如,服务提供商连接服务vpn等)的第一用例。控制器设备可以支持第二用例,以支持sd-wan控制器(例如,到客户网络的核心)。控制器设备可以支持涉及管理安全性的第三用例。最初,客户将连接服务安装到控制器设备,然后客户将wan控制器安装到控制器设备。在该pga示例中,应当使用wan无状态意图来扩展业务意图模型。另外,可能需要扩展pga模型以管理安全性,这可能需要增强pga系统的意图分析引擎(例如,冲突检测和解决方案)。
[0085]
为了解决pga的前述一个或多个方面,控制器设备210可以被配置为确定依赖意图是否与应用于数据结构(例如,统一图模型60)的有状态意图冲突。响应于确定依赖意图与有状态意图冲突,控制器设备210可以基于依赖意图和有状态意图确定解决依赖意图与有状态意图之间的冲突的解决方案。例如,控制器设备210可以确定如下解决方案:对意图重新排序,使得控制器设备210将网络地址从第一地址转换为第二地址并且然后将防火墙允许的意图应用于第二地址。与依赖于设备级规则的系统相比,确定有状态意图层中的意图是否冲突可以提高检测意图之间的冲突的性能。
[0086]
图5是示出根据本公开的技术的示例数据结构300的概念图。本文中描述的在有状态意图层中操作的技术可以将控制器设备10配置为将完整网络表示为包含无状态意图的统一图。该图(在图5中表示为数据结构300)可以包括作为顶点的设备和/或站点、作为顶点的无状态意图(在本文中也称为“边”)以及作为顶点的端点。表示为顶点的无状态意图可以与站点具有引用关联。如图所示,数据结构300包括顶点302(“nat意图1”)、顶点304(“防火墙意图1”)、顶点306(“防火墙意图2”)、顶点308(“sd-wan意图1”)、顶点310(“站点a”)、顶点312(“站点b”)、顶点320(“营销”)和顶点322(“outlook”)。
[0087]
以这种方式,控制器设备10可以将“统一意图图”表示为状态机,其中“逻辑分组”确定网络的状态。控制器设备10可以通过包括站点/设备位置(例如,顶点id)的逻辑分组来确定意图模型中的转变,并且意图策略功能可以被附接到图(例如,数据结构300)中的意图顶点。
[0088]
下面讨论端点组(egp)。根据本公开的技术,控制器10可以被配置为使用端点作为
epg的一部分。控制器设备10可以将epg分层结构作为树来维护。控制器设备10可以生成捕获以下各项的模型(例如,数据结构300):(1)意图和对应意图动作;(2)对其他意图的依赖性;(3)针对每个意图依赖性而注册的分析处理程序;以及(4)针对被配置为返回逻辑分组的每个意图的意图策略功能,该功能描述意图效果。
[0089]
无论何时提交意图改变,控制器设备10都可以通过意图(例如,意图策略功能)生成逻辑分组。例如,响应于接收到执行从第一地址到第二地址的nat的意图302(“nat意图1”),控制器设备10可以使用nat意图策略功能(例如,功能nat意图策略)生成逻辑分组(350)。作用于意图的意图策略功能可以提供已更新的已转变分组。例如,控制器设备10可以将nat意图策略功能应用于顶点302的nat意图,以生成遍历到顶点310的已更新的已转变分组(352)。
[0090]
控制器设备10可以基于意图动作来检查依赖意图(354),在本文中也将其称为“意图类型”。例如,控制器设备10可以确定顶点302指示意图nat,该意图nat将依赖性类型指定为“防火墙允许”。
[0091]
基于意图依赖性类型,意图分析引擎(例如,分析处理程序27)可以确定一个或多个依赖意图。例如,控制器设备10可以将具有防火墙允许意图类型的祖先边(例如,顶点304)的意图确定为依赖意图。例如,如果意图是包括源端点和目的地端点的防火墙意图,则控制器设备10可以遍历epg树以检查边。分析处理程序(例如,分析处理程序27)可以检查意图改变(例如,由顶点302表示的nat意图)是否与任何依赖意图(例如,由顶点304表示的防火墙允许意图)冲突。响应于确定意图改变与任何依赖意图冲突,分析处理程序可以提供解决方案。例如,分析处理程序可以对经修改的意图进行排序。例如,分析处理程序可以在应用由顶点304表示的防火墙允许意图之前应用由顶点302表示的nat意图,在这种情况下,nat功能将由顶点304表示的防火墙允许意图应用于第二地址,而不是第一地址。在一些示例中,分析处理程序可以改变依赖意图。例如,分析处理程序可以修改由顶点304表示的防火墙允许意图,以应用于由顶点302表示的nat意图的第二地址。分析处理程序可以将解决方案的任何改变作为“changelist”附加到逻辑分组。控制器10可以继续应用统一图(例如,数据结构300)。
[0092]
图6是示出根据本公开的技术的被配置为使用基于图的有状态意图分析来执行冲突检测的示例控制器设备410的概念图。如图所示,控制器设备410可以包括业务策略和有状态意图模块402(在本文中简称为“意图模块402”)和业务逻辑404。意图模块402包括有状态意图模型430和有状态意图分析424,它们可以是基于图的。业务逻辑404可以包括意图策略模型420、意图编译422和低级设备模型424。
[0093]
控制器设备410(例如,有状态意图模型430)可以按照相应意图正在执行的动作(例如,意图类型)来对意图进行分类。例如,当动作是连接时,控制器设备410可以连接端点。连接动作可以包括例如vpn、对等(p2p)、虚拟lan(vlan)或sd-wan意图。允许动作可以包括例如允许端点通信的防火墙允许意图。阻止动作(在本文中也被称为“拒绝”)可以包括例如阻止端点通信的防火墙阻止意图。nat的动作可以包括例如转换端点ip地址的nat。这些动作将是可扩展的。例如,控制器设备410可以支持包括零个或更多个连接、允许、阻止、nat和/或一个或多个其他动作的动作。每个意图定义可以被注册有“意图动作类型”。
[0094]
逻辑分组可以包括操作(例如,连接、允许、阻止或nat)、源(“src”)端点、目的地
(例如,“dst”)端点、以及下表中所示的属性。
[0095][0096]
可以基于所支持的新策略来扩展逻辑分组。
[0097]
控制器设备410可以捕获意图依赖性作为模型的一部分。例如,nat操作可能会影响防火墙允许动作或防火墙阻止动作。在该示例中,有状态意图分析引擎432可以确定nat动作与防火墙动作之间的依赖性(例如,允许或阻止)。
[0098]
意图模块402可以通过图中的分组和策略功能来确定有状态意图模型430中的转变。每当创建或更新新的意图时,意图模块402可以根据意图形成逻辑分组。例如,意图模块402可以使用逻辑分组{action:ip translate,src:address2}来确定nat意图:nat address1至address2。在该示例中,通过利用转变功能,意图模块402将确定经更新的分组:logical packet:{action:ip translate,src:address2,properties:{oldsrc:address1}}。
[0099]
基于意图依赖性(例如,动作),有状态意图分析引擎432可以确定依赖意图。可以针对意图注册分析处理程序。具有分析处理程序的意图模块402可以检查意图改变是否与任何依赖意图冲突。如果意图模块402确定意图改变与任何依赖意图冲突(例如,是),则意图模块402提供解决方案。意图模块402可以提供解决方案以包括对经修改的意图进行排序或改变当前意图(例如,当前正在应用的意图)。意图模块402可以将改变(例如,对经修改的意图进行排序或改变当前意图)作为“changelist”附加到分组。例如,意图模块402可以将改变作为“changelist”附加到分组以包括{action:ip translate,src:address2,properties:{oldsrc:address1,changelist:[intent type:firewallintent,uuid:1234,changes]}}。
[0100]
下面的“剧本”描述了如何模拟防火墙意图和nat意图的示例。
[0101]
[0102]
[0103]
[0104][0105]
控制器设备410(例如,意图模块402)可以将epg分层结构作为树来维护。对于应用,控制器设备410(例如,意图模块402)可以维护互联网是根节点。对于源对象,控制器设备410(例如,意图模块402)“any”可以包括根节点。epg可以是服务器、vm、客户端设备、网络、子网或最终用户。
[0106]
图7是示出根据本公开的技术的子源节点和父源节点的意图排序的第一示例的概念图。仅出于示例目的,参考图7讨论控制器设备410。
[0107]
防火墙状态意图(例如,允许或拒绝)可能不具有现有防火墙意图的任何有序优先级。有状态意图分析引擎432(在本文中也被称为“意图分析引擎”)可以通过将防火墙有状态意图放置在“有序意图”列表中来转换防火墙有状态意图。防火墙有状态意图可以包括源端点、目的地端点和通信。如在pga中,有状态意图分析引擎432可以将每个端点组(epg)建模为顶点。这些epg可以是分层结构的。有状态意图分析引擎432可以将意图通信(例如,允许/拒绝)建模为epg之间的边。例如,有状态意图分析引擎432可以将组a与组b之间的防火墙允许表示为:a是顶点,b是顶点;并且允许是顶点a与顶点b之间的边(例如,弧线)。当添加新的有状态意图时,如果新的有状态意图包括“防火墙意图”,则有状态意图分析引擎432(例如,使用分析处理程序)可以遍历源端点(例如,源epg树)和目的地端点(例如,目的地epg树)。在该示例中,有状态意图分析引擎432可以检查在祖先节点之间是否存在任何边。
如果祖先节点之间存在任何边,则有状态意图分析引擎432可以确定至少一个祖先节点是否与新的有状态意图冲突。响应于确定至少一个祖先节点与新的有状态意图冲突,有状态意图分析引擎432可以确定已经发生冲突(例如,引发了冲突)。响应于确定至少一个祖先节点与新的有状态意图冲突,有状态意图分析引擎432可以将新的有状态意图放置在超集意图之前。
[0108]
有状态意图分析引擎432可以基于分层结构的分组对意图进行排序。有状态意图分析引擎432可以从子源节点到父节点对冲突规则进行排序。例如,有状态意图分析引擎432可以根据意图确定源epg(“src epg”)和目的地epg。有状态意图分析引擎432可以找到公共祖先边。例如,有状态意图分析引擎432可以在父方向上递归地遍历src节点树和目的地节点树。有状态意图分析引擎432可以确定在src节点树与目的地(“dst”)节点树之间是否存在边。有状态意图分析引擎432可以检查边类型是否依赖于给定意图类型。响应于确定边类型依赖于给定意图类型(例如,如果是),有状态意图分析引擎432可以将该意图放置在此前步骤中已经发现的意图之前。在图7的示例中,有状态意图分析引擎432可以将营销顶点506和销售人员意图顶点508放置在“全部”顶点502和互联网意图顶点504之前。
[0109]
图8是示出根据本公开的技术的子源节点和父源节点的意图排序的第二示例的概念图。在图8的示例中,有状态意图分析引擎432可以将营销顶点516和销售人员意图顶点518放置在“全部”顶点512和互联网意图顶点514之前。但是,可以允许用户重写由有状态意图分析引擎432确定的意图顺序。
[0110]
图9是示出根据本公开的技术的站点特定源节点和全局节点的意图排序的示例的概念图。用户可以提交可以由有状态意图分析引擎432检测到并且由有状态意图分析引擎432报告的冲突意图。例如,通过允许弧线连接的营销顶点522和销售人员顶点524将与通过允许弧线连接的营销顶点526和销售人员顶点528冲突。
[0111]
图10是示出根据本公开的技术的冗余意图检测的示例的概念图。有状态意图分析引擎432可以执行冗余意图检测。例如,有状态意图分析引擎432可以检测由端用户提交的导致意图被遮蔽的冗余意图。有状态意图分析引擎432可以检测被遮蔽的意图,通知端用户,并且删除被遮蔽的意图。
[0112]
例如,有状态意图分析引擎432可以根据意图确定源epg(src eph)和目的地epg(dst epg)。有状态意图分析引擎432可以找到公共祖先边。例如,有状态意图分析引擎432可以在父方向上递归地遍历src节点树和目的地节点树。有状态意图分析引擎432可以确定在src节点树与dst节点树之间是否存在边。有状态意图分析引擎432可以检查边类型在给定意图类型上是否相同。如果边类型在给定意图类型上相同,则有状态意图分析引擎432可以将意图标记为冗余。在图10的示例中,通过允许弧线连接的营销顶点536和销售人员顶点538将被通过允许弧线连接的“全部”顶点532和互联网顶点534遮蔽。这样,有状态意图分析引擎432可以删除营销顶点536和销售人员顶点538。
[0113]
图11是示出根据本公开的技术的冗余意图解析的示例的概念图。有状态意图分析引擎432可以被配置为执行冲突解决。例如,有状态意图分析引擎432可以确定解决方案使得站点特定意图优先于全局意图。例如,有状态意图分析引擎432可以将站点特定意图放置在全局意图之上。在图11的示例中,通过允许弧线连接的营销顶点542和销售人员顶点544(例如,级别0)将在通过允许弧线连接的“全部”顶点546和互联网顶点548(例如,级别1)之
上。这样,有状态意图分析引擎432可以将站点特定意图(例如,营销顶点542和销售人员顶点544)放置在全局意图(例如,“全部”顶点546和互联网顶点548)之上。
[0114]
有状态意图分析引擎432可以验证关于直接策略改变或带外(oob)改变的意图。管理员可以直接在网络设备上修改策略。这可以在控制器设备410关机时进行。有状态意图分析引擎432可以按照如下方式来验证具有意图的直接策略改变或oob改变。有状态意图分析引擎432可以根据oob改变生成意图。有状态意图分析引擎432可以通过意图策略功能根据意图改变生成逻辑分组。通过意图分析处理程序,有状态意图分析引擎432可以检测改变是否与现有意图冲突。例如,有状态意图分析引擎432可以应用防火墙分析处理程序,以根据经修改的意图来确定源epg(src epg)和目的地epg。有状态意图分析引擎432可以通过在父方向上递归地遍历src节点树和目的地节点树来找到祖先边。有状态意图分析引擎432可以确定在src节点树与dst节点树之间是否存在边。有状态意图分析引擎432可以确定边类型是否依赖于给定意图类型。如果边类型依赖于给定意图类型(例如,如果是),并且如果意图被遮蔽,则有状态意图分析引擎432可以确定意图无效并且通知用户。响应于确定意图无效,有状态意图分析引擎432可以删除冗余的意图。
[0115]
有状态意图分析引擎432可以实现有状态意图。当有状态意图被实现时,有状态意图分析引擎432可以考虑现有意图。有状态意图分析引擎432可以将所有意图表示为图顶点。如果在站点对象上可能有多个意图,则有状态意图分析引擎432可以按意图类型对意图进行排序。例如,有状态意图分析引擎432可以将nat意图排序为在防火墙意图(例如,允许或拒绝)之前。源端点和目的地端点可以包括服务器、vm、客户端设备、网络、子网或最终用户。
[0116]
无论何时创建或更新新的意图,有状态意图分析引擎432都可以根据意图形成逻辑分组。例如,对于nat intent:nat address1 to address2.logical packet:{action:ip translate,src:address2},有状态意图分析引擎432可以应用转变功能,该转变功能产生经更新的分组:logical packet:{action:ip translate,src:address2,properties:{oldsrc:address1}}。基于意图依赖性(例如,动作或意图类型),有状态意图分析引擎432可以确定依赖意图。再一次地,分析处理程序被注册以用于意图。有状态意图分析引擎432可以确定意图改变是否与任何依赖意图冲突。如果意图改变与任何依赖意图冲突(例如,如果是),则有状态意图分析引擎432可以提供解决方案。同样,解决方案可以对经修改的意图进行排序或改变当前意图。有状态意图分析引擎432可以将“改变列表”附加到分组,以指示解决方案。例如,有状态意图分析引擎432可以附加“改变列表”以包括{action:ip translate,src:address2,properties:{oldsrc:address1,changelist:[intent type:firewallintent,uuid:1234,changes]}}。
[0117]
有状态意图分析引擎432可以验证关于发现的意图。由于设备规则被放错位置,或者关于发现的意图是无效的,可能存在被遮蔽的关于发现的意图。有状态意图分析引擎432可以从所发现的设备生成意图。有状态意图分析引擎432可以通过意图策略功能根据意图改变生成逻辑分组。有状态意图分析引擎432可以应用意图分析处理程序以检测意图是否与现有意图冲突。有状态意图分析引擎432可以应用防火墙分析处理程序,以根据经修改的意图来确定源epg(src epg)和目的地epg(dst epg)。有状态意图分析引擎432可以通过在子方向上递归地遍历源节点树和目的地节点树来找到祖先边。有状态意图分析引擎432可
以确定在源节点树与目的地节点树之间是否存在边。有状态意图分析引擎432可以确定边类型是否依赖于给定意图类型。如果边类型依赖于给定意图类型(例如,如果是),并且如果意图被遮蔽,则有状态意图分析引擎432可以确定意图无效并且通知用户。响应于确定意图无效,有状态意图分析引擎432可以删除冗余的意图。
[0118]
控制器设备410(例如,有状态意图分析引擎432)可以是可扩展的。例如,控制器设备410可以被配置为定义新的意图、新的意图策略功能、和/或新的意图分析处理程序。逻辑分组可以是可扩展的以支持检测冲突。例如,服务质量(qos)是可以用于检测冲突的属性。在该示例中,有状态意图分析引擎432可以生成逻辑分组以包括以下各项。
[0119]
·
动作:连接/允许/阻止
[0120]
·
src:站点a,
[0121]
·
目的地:站点b,
[0122]
·
qos:10mbps
[0123]
·
属性:
[0124]
本文中描述的技术可以提供以下一项或多项:
[0125]
·
一种用于实时检测跨防火墙意图的意图策略冲突的方法。
[0126]
·
一种用于实时检测跨各种意图类型的意图策略冲突的方法。
[0127]
·
一种用于在观察到冲突时提供解决方案的方法。
[0128]
·
一种用于验证关于直接策略改变或oob改变的意图的方法。
[0129]
·
一种用于验证关于来自brownfield部署的发现的意图的方法。
[0130]
·
一种允许添加新的意图类型的可扩展的方法。
[0131]
图12是示出根据本公开的技术的用于确定意图冲突的解决方案的示例过程的流程图。仅出于示例目的,参考图1至11讨论图12。
[0132]
控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以维护数据结构(600)。在一些示例中,数据结构包括多个顶点和多个边,多个顶点中的每个顶点表示多个网络设备(例如,网络设备12)中的相应网络设备或多个无状态意图中的相应无状态意图,并且多个边限定多个顶点之间的关系。例如,数据结构可以是统一图模型(例如,参见图3、5)。
[0133]
控制器设备可以接收有状态意图的指示(602)。例如,控制器设备可以从命令行接口(cli)接收有状态意图的指示。在一些示例中,控制器设备可以响应于发现多个网络设备中的网络设备而接收有状态意图的指示。
[0134]
有状态意图可以指定要被转换为针对网络设备14的一个或多个设备级配置改变的预期状态。例如,有状态意图可以包括nat意图、防火墙意图(例如,允许或拒绝)、或连接意图(例如,vpn、p2p、vlan或sd-wan)。
[0135]
控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以基于有状态意图生成逻辑分组(604)。例如,控制器设备可以通过针对数据结构中的顶点的意图策略功能(例如,功能防火墙意图策略或功能nat意图策略)来根据意图改变生成逻辑分组。
[0136]
控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以基于逻辑分组确定数据结构的依赖意图(606)。例如,控制器设备可以基
于有状态意图确定意图类型依赖性。例如,控制器设备可以使用数据结构将意图类型依赖性确定为防火墙允许的nat意图。控制器设备可以基于数据结构中逻辑分组的遍历来确定多个顶点中包括意图类型依赖性的顶点。在该示例中,控制器设备10可以根据多个顶点中包括意图类型依赖性的顶点来确定依赖意图。例如,控制器设备可以确定包括意图类型防火墙允许的一个或多个祖先顶点。
[0137]
控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以确定依赖意图与有状态意图冲突(608)。例如,控制器设备可以确定依赖意图包括将防火墙配置为允许到第一网络地址的流量并且有状态意图包括将第一网络地址转换为第二网络地址的网络地址转换。在一些示例中,控制器设备可以确定有状态意图和依赖意图是否冲突,其中有状态意图包括第一意图类型并且依赖意图包括第一意图类型。意图类型的示例可以包括例如网络地址转换类型、防火墙允许类型和防火墙拒绝类型。
[0138]
响应于确定依赖意图与有状态意图冲突,控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以确定用于基于依赖意图和有状态意图来解决依赖意图与有状态意图之间的冲突的解决方案(610)。
[0139]
例如,控制器设备可以基于依赖意图和有状态意图确定经修改的有状态意图,使得经修改的有状态意图不与依赖意图冲突。例如,响应于确定用于特定地址的防火墙允许与包括用于将网络设备从特定网络地址改变为新网络地址的nat的依赖意图冲突,控制器设备可以确定用于新网络地址、而不是特定网络地址的经修改的防火墙允许。在一些示例中,控制器设备可以基于依赖意图和有状态意图确定经修改的依赖意图使得经修改的依赖意图不与有状态意图冲突。例如,响应于确定包括用于特定地址的防火墙允许的依赖意图与将网络设备从特定网络地址改变为新网络地址的nat意图冲突,控制器设备可以确定用于新网络地址、而不是特定网络地址的经修改的防火墙允许。在一些示例中,控制器设备可以改变意图的顺序。例如,控制器设备可以在应用防火墙允许意图或拒绝意图之前应用nat意图。
[0140]
在一些示例中,控制器设备可以确定用于应用依赖意图和有状态意图的分层顺序。例如,控制器设备可以确定依赖意图应用于组。在该示例中,控制器设备可以确定有状态意图应用于组的子集,该子集不包括整个该组。在该示例中,响应于确定依赖意图与有状态意图冲突以及响应于确定有状态意图应用于组的子集并且依赖意图应用于组,控制器设备可以将有状态意图应用于组的子集并且避免将依赖意图应用于组的子集。
[0141]
在一些示例中,控制器设备可以确定依赖意图全局地应用于多个站点。在该示例中,控制器设备可以确定有状态意图应用于多个站点的子集,该子集并非包括所有多个站点。在该示例中,响应于确定依赖意图与有状态意图冲突以及响应于确定有状态意图应用于多个站点的子集并且依赖意图全局地应用,控制器设备可以将有状态意图应用于多个站点的子集并且避免将依赖意图应用于多个站点的子集。
[0142]
控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以输出解决方案的指示(612)。例如,控制器设备可以附加针对逻辑分组的改变列表。例如,控制器设备可以将“{action:ip translate,src:address2,properties:{oldsrc:address1,changelist:[intent type:firewallintent,uuid:1234,changes]}}”附加到改变列表。
[0143]
控制器设备(例如,控制器设备10、控制器设备210、控制器设备410或有状态意图分析引擎432)可以应用一个或多个设备级配置改变(614)。例如,控制器设备可以基于依赖意图和有状态意图确定一个或多个设备级配置改变。在该示例中,控制器设备可以将一个或多个设备级配置改变应用于网络设备14的至少一个网络设备。例如,控制器设备可以使用依赖意图和经修改的有状态意图或者使用经修改的依赖意图和有状态意图来确定一个或多个设备级配置改变。然而,作为响应,为了确定依赖意图与有状态意图不冲突,控制器设备可以使用依赖意图和有状态意图来确定一个或多个设备级配置改变。
[0144]
在一些示例中,控制器设备可以确定有状态意图关于依赖意图是冗余的,并且附加针对逻辑分组的改变列表以指示有状态意图是冗余的。
[0145]
本公开中描述的技术可以至少部分以硬件、软件、固件或其任何组合来实现。例如,所描述的技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或任何其他等效的集成或离散逻辑电路系统、以及这样的组件的任何组合。术语“处理器”或“处理电路系统”通常可以指代单独或与其他逻辑电路系统或任何其他等效电路系统组合的任何前述逻辑电路系统。包括硬件的控制单元还可以执行本公开的一种或多种技术。
[0146]
这样的硬件、软件和固件可以在同一设备内或在单独的设备内实现以支持本公开中描述的各种操作和功能。另外,所描述的任何单元、模块或组件可以一起或单独地实现为离散但可互操作的逻辑设备。将不同特征描绘为模块或单元旨在突出不同的功能方面,并且不一定暗示这样的模块或单元必须由单独的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以通过单独的硬件或软件组件来执行,或者可以集成在通用的或单独的硬件或软件组件内。
[0147]
本公开中描述的技术还可以在包含指令的计算机可读介质(诸如计算机可读存储介质)中体现或编码。嵌入或编码在计算机可读介质中的指令例如在被执行时可以引起可编程处理器或其他处理器执行该方法。计算机可读介质可以包括非暂态计算机可读存储介质和暂态通信介质。有形且非暂态的计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电子可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他暂态介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1