支持基于图的高级配置模型的并发的制作方法

文档序号:28064590发布日期:2021-12-17 23:34阅读:78来源:国知局
支持基于图的高级配置模型的并发的制作方法
支持基于图的高级配置模型的并发
1.本技术是申请日为2019年09月29日、申请号为201910936240.5、发明名称为“支持基于图的高级配置模型的并发”的分案申请,其全部内容结合于此作为参考。
技术领域
2.本公开涉及计算机网络,更具体地,涉及网络装置的管理。


背景技术:

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


技术实现要素:

10.通常,本公开描述了用于管理网络装置的技术。网络管理系统(nms)装置(在此也称为控制器装置)可以使用低级(即,装置级)配置数据来配置网络装置,例如,用另一种下一代(yang)数据建模语言来表示。此外,控制器装置可以基于网络装置的配置数据来管理网络装置。根据本公开的技术,控制器装置允许管理员将预期网络/计算/存储状态描述为“预期数据模型”,其可以表示为图模型。控制器装置可以使用反应映射器(reflective mapper)支持意图数据模型的并行和增量编译和可扩展性。
11.在一个实例中,一种管理多个网络装置的方法包括:由管理多个网络装置的控制器装置确定用于管理多个网络装置并由图模型表示的一个或多个有状态意图(stateful intents)由于用于有状态意图的有状态分配资源已经退化而退化;响应于确定一个或多个有状态意图退化,由控制器装置确定用于有状态意图的新资源,所述新资源对应于图模型的顶点;由控制器装置使用所确定的资源提供有状态意图;由控制器装置确定有状态意图的提供是否成功;由控制器装置将至少一个成功的状态意图编译成多个网络装置中的至少一个网络装置的低级配置数据;并且由控制器装置使用低级配置数据配置至少一个网络装置。
12.在另一实例中,控制器装置管理多个网络装置。控制器装置包括一个或多个处理单元,所述处理单元在电路中实现并且被配置为:确定用于管理多个网络装置并由图模型表示的一个或多个有状态意图由于用于有状态意图的分配资源已经退化而退化;响应于确定一个或多个有状态意图退化,确定用于有状态意图的资源,所述资源对应于图模型的顶点;使用所确定的资源提供有状态意图;确定有状态意图的提供是否成功;将至少一个成功的状态意图编译成多个网络装置中的至少一个网络装置的低级配置数据;并且使用低级配置数据配置至少一个网络装置。
13.在另一实例中,计算机可读存储介质上存储有指令,当指令被执行时,促使管理多个网络装置的控制器装置的处理器:确定用于管理多个网络装置并由图模型表示的一个或多个有状态意图由于用于有状态意图的分配资源已经退化而退化;响应于确定一个或多个有状态意图退化,确定用于有状态意图的资源,所述资源对应于图模型的顶点;使用所确定的资源提供有状态意图;确定有状态意图的提供是否成功;将至少一个成功的状态意图编译成多个网络装置中的至少一个网络装置的低级配置数据;并且使用低级配置数据配置至少一个网络装置。
14.在另一实例中,一种管理多个网络装置的方法包括:由管理多个网络装置的控制器装置确定包括用于管理多个网络装置的第一组无状态意图的部署图模型的一个或多个无状态意图(stateless intents)已经改变,其中,无状态意图包括对包括网络装置的网络的预期状态、一个或多个网络装置的状态或网络的存储状态的完全声明性描述;由控制器装置维护部署图模型和包括第二组无状态意图的未部署图模型,第二组无状态意图包括一
个或多个改变的无状态意图;由控制器装置编译未部署图模型的改变的无状态意图,以生成网络装置的低级配置数据;并且由控制器装置使用低级配置数据来配置网络装置。
15.在另一实例中,控制器装置管理多个网络装置。控制器装置包括一个或多个处理单元,所述处理单元在电路中实现并且被配置为:确定包括用于管理多个网络装置的第一组无状态意图的部署图模型的一个或多个无状态意图已经改变,其中,无状态意图包括对包括网络装置的网络的预期状态(intended state)、一个或多个网络装置的状态或网络的存储状态的完全声明性描述;维护部署图模型和包括第二组无状态意图的未部署图模型,第二组无状态意图包括一个或多个改变的无状态意图;编译未部署图模型的改变的无状态意图,以生成网络装置的低级配置数据;并且使用低级配置数据来配置网络装置。
16.在另一实例中,计算机可读存储介质上存储有指令,当指令被执行时,促使管理多个网络装置的控制器装置的处理器:确定包括用于管理多个网络装置的第一组无状态意图的部署图模型的一个或多个无状态意图已经改变,其中,无状态意图包括对包括网络装置的网络的预期状态、一个或多个网络装置的状态或网络的存储状态的完全声明性描述;维护部署图模型和包括第二组无状态意图的未部署图模型,第二组无状态意图包括一个或多个改变的无状态意图;编译未部署图模型的改变的无状态意图,以生成网络装置的低级配置数据;并且使用低级配置数据来配置网络装置。
17.在附图和以下描述中阐述一个或多个实例的细节。通过说明书和附图以及权利要求书,其他特征、目的和优点将是显而易见的。
附图说明
18.图1是示出包括使用管理装置管理的企业网络的元件的实例的框图;
19.图2是示出用于图1的管理装置的一组实例组件的框图;
20.图3是示出意图数据模型的实例统一图模型的概念图;
21.图4是示出根据本公开的技术的控制器装置(例如,图1和图2的控制器装置)的组件的实例模型的概念图;
22.图5是示出可以由业务策略分析器执行的用于解决意图更新失败的实例方法的流程图;
23.图6是示出根据本公开技术的并存无状态意图供应的实例方法的流程图;
24.图7是示出意图变化后的未部署意图图的实例的曲线图;
25.图8是示出根据本公开的技术配置网络装置的实例方法的流程图;
26.图9是示出根据本公开的技术配置网络装置的另一种方法的实例的流程图。
具体实施方式
27.图1是示出包括使用控制器装置10管理的企业网络2的元件的实例的框图。企业网络2的被管理元件14a

14g(统称为“元件14”)包括经由通信链路互连的网络装置,以形成通信拓扑,从而交换资源和信息。元件14(通常也称为网络装置或远程网络装置)可以包括例如路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(ids)或入侵防御系统(idp)、计算装置、计算终端、打印机、其他网络装置或这些装置的组合。虽然在本公开中被描述为传输、传送或以其他方式支持分组,但是企业网络2可以根据由任何其他协议
定义的任何其他离散数据单元来传输数据,例如,由异步传输模式(atm)协议定义的单元或者由用户数据报协议(udp)定义的数据报。互连元件14的通信链路可以是物理链路(例如,光链路、铜链路等)、无线链路或其任意组合。
28.企业网络2被示为经由通信链路耦合到公共网络18(例如,互联网)。公共网络18可以包括例如一个或多个客户端计算装置。公共网络18可以提供对网络服务器、应用服务器、公共数据库、媒体服务器、终端用户装置以及其他类型的网络资源装置和内容的访问。
29.控制器装置10经由企业网络2通信耦合到元件14。在一些实例中,控制器装置10形成装置管理系统的一部分,尽管出于实例的目的,在图1中仅示出了装置管理系统的一个装置。控制器装置10可以直接或间接耦合到各种元件14。一旦部署和激活元件14,管理员12使用控制器装置10(或多个这样的管理装置)来使用装置管理协议管理网络装置。一个实例装置协议是简单网络管理协议(snmp),其允许控制器装置10遍历和修改在每个被管理元件14内存储配置数据的管理信息库(mib)。snmp协议的更多细节见harrington等人的rfc3411“an architecture for describing simple network management protocol(snmp)management frameworks”,网络工作组,因特网工程任务组草案,2002年12月,其可在http://tools.ietf.org/html/rfc3411中获得,其全部内容通过引用结合于此。
30.常见的做法是,控制器装置10(也称为网络管理系统(nms)或nms装置)以及元件14由企业的it组集中维护。管理员12与控制器装置10交互,以远程监控和配置元件14。例如,管理员12可以从控制器装置10接收关于任何元件14的警报,查看元件14的配置数据,修改元件14的配置数据,向企业网络2添加新的网络装置,从企业网络2去除现有的网络装置,或者以其他方式操纵企业网络2和其中的网络装置。尽管针对企业网络进行了描述,但是本公开的技术可应用于其他类型的公共和私有网络,包括lan、vlan、vpn等。
31.在一些实例中,管理员12使用控制器装置10或本地工作站直接与元件14交互,例如,通过远程登录、安全外壳(ssh)或其他这样的通信会话。即,元件14通常提供用于直接交互的接口,例如,命令行接口(cli)、基于网络的接口、图形用户接口(gui)等,通过这些接口,用户可以与装置交互,以直接发布基于文本的命令。例如,这些接口通常允许用户直接与装置交互,例如,通过远程登录、安全外壳(ssh)、超文本传输协议(http)或其他网络会话,以根据定义的语法输入文本,以向被管理元件提交命令。在一些实例中,用户使用控制器装置10启动与一个元件14(例如,元件14f)的ssh会话15,以直接配置元件14f。以这种方式,用户可以以直接执行的格式向元件14提供命令。
32.此外,管理员12还可以创建脚本,所述脚本可以由控制器装置10提交给任何或所有元件14。例如,除了cli接口之外,元件14还提供用于接收根据脚本语言指定命令的脚本的接口。在某种意义上,脚本可以由控制器装置10输出,以自动调用被管理元件14上相应的远程过程调用(rpc)。脚本可以符合例如可扩展标记语言(xml)或另一种数据描述语言。
33.管理员12使用控制器装置10来配置元件14,以指定推进管理员12的目标的某些操作特征。例如,管理员12可以为元件14指定关于安全性、装置可访问性、流量工程、服务质量(qos)、网络地址转换(nat)、分组过滤、分组转发、速率限制或其他策略的特定操作策略。控制器装置10使用一个或多个网络管理协议来执行配置,所述网络管理协议被设计用于管理被管理网络元件14内的配置数据,例如,snmp协议或网络配置协议(netconf)协议或其衍生物,例如,juniper装置管理接口。通常,netconf提供配置网络装置的机制,并对配置数据使
用基于可扩展标记语言(xml)的数据编码,配置数据可能包括策略数据。在enns在2006年12月的“netconf configuration protocol”,网络工作组,rfc4741中描述了netconf,其在tools.ietf.org/html/rfc4741中可获得。控制器装置10可以与一个或多个元件14建立netconf会话。
34.控制器装置10可以被配置为将新的意图数据模型与现有的(或旧的)意图数据模型进行比较,确定新的和现有的意图数据模型之间的差异,并将反应映射器(reactive mapper)应用于新的和旧的意图数据模型之间的差异。特别地,控制器装置10确定新的配置数据集是否包括相对于旧意图数据模型的任何额外配置参数,以及新的配置数据集是否修改或省略了旧意图数据模型中包括的任何配置参数。
35.意图数据模型可以是统一图模型,而低级配置数据可以用yang来表示,这在bjorklund“yang—a data modeling language for the network configuration protocol(netconf)”中描述,因特网工程任务组,rfc6020,2010年10月,在tools.ietf.org/html/rfc6020获得。在一些实例中,意图数据模型可以用yaml非标记语言(yaml)来表示。控制器装置10可以包括用于转化意图数据模型差异的各种反应映射器。这些功能被配置为接受意图数据模型(其可以被表示为结构化输入参数,例如,根据yang或yaml)。这些功能还被配置为输出相应组的低级装置配置数据变化,例如,装置配置的添加和去除。即,y1=f1(x),y2=f2(x),

yn=fn(x)。
36.控制器装置10可以对意图数据模型和低级装置配置模型使用yang建模。这些数据可能包含yang实体上的关系,例如,列表项和容器。传统上,控制器装置不支持实时配置管理功能。如下文更详细讨论的,控制器装置10可以将yang数据模型转换成数据库模型,并将yang验证转换成数据验证。在2017年3月17日提交的美国专利申请号15/462,465“configuring and managing network devices using program overlay on yang

based graph database”中描述了使用用于高级配置数据的图模型来管理网络装置的技术,其全部内容通过引用结合于此。
37.控制器装置10可以从一个管理员12接收表示关于统一意图数据模型的任何或全部创建、更新和/或删除动作的数据。控制器装置10可以被配置为对应用于图模型的创建、更新和删除中的每一个使用相同的编译逻辑。
38.通常,控制器(例如,控制器装置10)将分层数据模型用于意图、低级数据模型和资源。分层数据模型可以基于yang或yaml。如上所述,分层数据模型可以表示为图表。现代系统支持简化网络管理的意图。意图是声明性的。为了实现意图,控制器装置10试图选择最佳资源。
39.通常,客户环境被配置为允许客户(例如,管理员12)控制意图实现并确保编程意图。本公开的技术支持客户要求,以近实时的方式支持服务层协议(sla)。以这种方式,客户的业务就不会受到意图实现的负面影响。如果有状态意图的资源变得退化(例如,不可达、高度利用或相应装置上的其他问题),则控制器装置10可以选择适当的资源来近实时地生成期望的配置。
40.本公开描述了控制器装置10可以近实时地支持sla的技术。例如,控制器装置10可以支持并存意图供应。控制器装置10可以使用增强的资源匹配过滤器来包括和排除某些系统资源。控制器装置10还可以在管理业务sla的同时将网络保持在一致的状态。控制器装置
10还可以支持并存无状态意图供应。即,控制器装置10可以支持并存意图更新,而不会使其他意图变化无效。控制器装置10还可以支持意图图(intent graph)的当前版本,直到部署了未决的改变。
41.于2018年9月7日提交的题为“dynamic intent assurance and programmability in computer networks”的美国申请号16/125,245如下描述资源过滤器查询语义,该申请的全部内容通过引用结合于此:
[0042][0043]
由此,控制器装置10可以导出决策变量、目标和约束。控制器装置10可以增强查询,以支持扩展资源和包括的资源,例如,如下所示:
[0044]
排除的列表可能成为资源选择优化算法的约束,而包括的列表也可能成为资源选择优化算法的约束。在上面的实例中,约束包括对定义为“不在{d1,d2}中”和“在{d3}中”的资源的限制。
[0045]
图2是示出图1的控制器装置10的一组实例组件的框图。在该实例中,控制器装置10包括控制单元22、网络接口34和用户接口36。网络接口34表示可以将网络装置20通信耦合到外部装置(例如,图1的一个元件14)的实例接口。网络接口34可以表示无线和/或有线接口,例如,以太网接口或无线电(wireless radio),其被配置为根据无线标准进行通信,例如,一个或多个ieee 802.11无线网络协议(例如,802.11a/b/g/n或其他这样的无线协议)。在各种实例中,控制器装置10可以包括多个网络接口,尽管出于实例的目的仅示出了一个网络接口。
[0046]
控制单元22表示硬件、软件和/或固件的任意组合,用于实现归于控制单元22及其组成模块和元件的功能。当控制单元22包括软件或固件时,控制单元22还包括用于存储和执行软件或固件的任何必要硬件,例如,一个或多个处理器或处理单元。通常,处理单元可以包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或任何其他等效的集成或分立逻辑电路以及这些组件的任何组合。此外,处理单元通常使用固定和/或可编程逻辑电路来实现。
[0047]
用户接口36表示一个或多个接口,通过这些接口,用户(例如,管理员12(图1))与控制器装置10交互,例如,提供输入和接收输出。例如,用户接口36可以表示监视器、键盘、鼠标、触摸屏、触摸板、触控板、扬声器、相机、麦克风等中的一个或多个。此外,尽管在该实例中,控制器装置10包括用户接口,但是管理员12不需要直接与控制器装置10交互,而是可以远程访问控制器装置10,例如,经由网络接口34。
[0048]
在该实例中,控制单元22包括用户接口模块38、网络接口模块32和管理模块24。控制单元22执行用户接口模块38,以从用户接口36接收输入和/或向用户接口36提供输出。控制单元22还执行网络接口模块32,以经由网络接口34发送和接收数据(例如,分组)。用户接口模块38、网络接口模块32和管理模块24可以再次实现为相应的硬件单元或者软件或固件或者其组合。
[0049]
控制单元22的功能可以实现为固定或可编程数字逻辑电路中的一个或多个处理单元。这种数字逻辑电路可以包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或分立逻辑电路以及这种组件的任何组合。当实现为可编程逻辑电路时,控制单元22可以还包括一个或多个计算机可读存储介质,存储将由控制单元22的处理单元执行的硬件或固件指令。
[0050]
控制单元22执行管理模块24,以管理各种网络装置,例如,图1的元件14。管理包括例如根据从用户(例如,图1的管理员12)接收的指令配置网络装置,并向用户提供提交配置网络装置的指令的能力。在该实例中,管理模块24还包括配置模块26和转化模块28。
[0051]
管理模块24被配置为从用户(例如,管理员12)接收一组被管理网络装置的意图统一图模型化(unified

graph

modeled)配置数据。这种意图统一图模型化的配置数据可以称为“意图数据模型”。随着时间的推移,用户可以更新配置数据,例如,添加新服务、去除现有服务或修改由被管理装置执行的现有服务。统一意图数据模型可以根据例如yang或yaml来构造。图模型可以包括以分层方式由边连接的多个顶点。在yang中,图模型的边通过“leafref”元件来表示。在yaml的情况下,这些边可以用“ref”边表示。同样,父子顶点关系可以用“有”边来表示。例如,元件a的顶点是指使用有边的元件b的顶点,可以理解为表示“元件a具有元件b”。在一些实例中,管理模块24还向用户提供提交反应映射器的能力,转换模块28执行反应映射器,以将意图数据模型转换成装置特定的低级配置指令。
[0052]
控制器装置10还包括配置数据库40。配置数据库40通常包括描述被管理网络装置(例如,元件14)的信息。配置数据库40可以充当意图数据存储,其可以用于持久化和管理意图数据模型的集合。例如,配置数据库40可以包括指示装置标识符(例如,mac和/或ip地址)、装置类型、装置供应商、装置种类(例如,路由器、交换机、网桥、集线器等)的信息等。配置数据库40还存储被管理装置(例如,元件14)的当前配置信息(例如,意图数据模型,或者在某些情况下,意图数据模型和低级配置信息)。根据本公开的技术,配置数据库40可以包括统一意图数据模型。
[0053]
转化模块28基于配置数据库40的信息来确定在意图数据模型上执行哪个反应映射器30,例如,哪些装置将接收低级配置指令。转化模块28然后执行反应映射器30的每个确定的反应映射器,向反应映射器提供意图数据模型,作为输入,并接收低级配置指令。转化模块28也可以称为意图编译器,其是包含一组映射器(例如,反应映射器30)的服务。
[0054]
配置模块26可以首先例如通过从配置数据库40中检索每个服务的意图数据模型
来确定由要更新配置的装置执行的每个服务的现有意图数据模型。配置模块26然后可以将现有意图数据模型(在此也称为部署图模型)与新接收的意图数据模型进行比较,并确定现有和新接收的意图数据模型(也称为未部署图模型)之间的差异。配置模块26然后可以将这些变化添加到编译器流中,反应映射器30然后可以将这些变化转化成低级配置信息。这些变化可以包括在变化集中,该变化集可以是包含意图图顶点和相应版本标识符的列表。管理模块24可以使用变化集来跟踪意图更新中改变的顶点列表。在已经提交意图之后,管理模块24可以使用变化集来更新意图图模型中的顶点状态。配置模块26还基于新接收的意图数据模型更新记录在配置数据库40中的现有意图数据模型。
[0055]
在一些实例中,执行更新转换(即,转换导致低级配置信息的值更新的统一意图数据模型中的变化,而不创建或删除低级配置数据中的元件)的反应映射器30可以如下操作。在一个实例中,执行更新的反应映射器30可以覆盖单个元件。即,这些反应映射器的性能可以导致元件值的删除,例如,通过用新值替换旧的元件值。有时,配置服务模型中的单个值可以映射到装置配置中的列表。在这些情况下,转化模块28可以发送旧值和新值。
[0056]
转化模块28(可以根据反应映射器30来配置)可以使用相同的反应映射器来创建、更新和删除意图数据模型顶点。因为每个顶点都有自己对应的反应映射器,所以编译可以并行执行。即,表示统一意图数据模型的图模型的每个顶点的反应映射器可以并行执行,从而实现并行编译。转化模块28可以被配置为仅允许处理受影响的意图数据模型数据变化(即,意图数据模型中受变化影响的那些元件)。基于反应映射器30,转化模块28可以推断意图数据模型中顶点之间的依赖性。如上所述,当意图数据模型改变时,转化模块28可以基于依赖图在编译器流中发布消息。
[0057]
当上传“创建”模板时(即,相对于现有意图数据模型配置信息,反应映射器30中的处理意图数据模型配置信息中的新数据的反应映射器),转化模块28可以使用依赖图来确定依赖性。当服务改变时,转化模块28可以基于依赖性生成现有意图数据模型配置信息和新意图数据模型配置信息之间的差异。转化模块28然后可以使用反应映射器30中的反应映射器来处理差异,从而将意图数据模型配置信息转化成低级配置指令。转化模块28然后可以向配置模块26提供低级配置指令。
[0058]
在从转化模块28接收到低级配置指令之后,配置模块28经由网络接口模块32将低级配置指令发送到更新其配置的相应被管理网络装置。网络接口模块32将低级配置指令传递给网络接口34。网络接口34将低级配置指令转发给相应的网络装置。
[0059]
尽管出于实例的目的,用户接口36被描述为允许管理员12(图1)与控制器装置10交互,但是在其他实例中也可以使用其他接口。例如,控制器装置10可以包括表示状态转移(rest)客户端(未示出),该客户端可以充当到另一装置的接口,管理员12可以通过该接口配置控制器装置10。同样,管理员12可以通过rest客户端与控制器装置10交互,来配置元件14。
[0060]
管理模块24可以将配置数据库40建模为表示yang配置数据元件的图形数据库。yang指定了各种类型的数据结构,包括列表、叶子列表、容器、具有存在的容器(containers with presence)、以及特性(feature)。管理模块24可以将列表、容器、具有存在的容器和特性以及顶层容器中的每一个建模为图形数据库中的顶点。或者,配置数据库40可以表示yaml配置数据元件。
[0061]
在构建图形数据库之后,管理模块24可以对图形数据库的数据执行操作。例如,管理模块24可以将基于netconf的操作(例如,get

config、带有过滤器的get

config和edit

config)映射到图形查询语言查询,例如,gremlin查询。在gremlindocs.spmallette.documentup.com处的gremlindocs中并且在github.com/tinkerpop/gremlin/wiki中描述gremlin。如果条件属性改变,管理模块24可以执行映射到图形数据库的顶点和边的条件。响应于这些条件,管理模块24可以处理额外的变化,作为如下文更详细讨论的功能来处理。管理模块24可以进一步更新事务语义中的所有变化。
[0062]
根据本公开的技术,管理模块24维护配置数据库40,以表示无状态意图的当前集合,其中,根据该无状态意图的当前集合来配置元件14(图1)。如上所述,配置数据库40可以包括无状态意图的图模型。控制器装置10然后可以经由用户接口模块38和用户接口36从用户(例如,图1的一个管理员12)接收一个或多个新意图。管理模块24可以确定配置数据库40的任何现有状态意图的一个或多个资源是否退化。
[0063]
当一个或多个资源退化时(因此,有状态意图退化),管理模块24可以确定要分配给已退化的有状态意图的新资源。资源可以对应于配置数据库40的图模型的顶点。例如,顶点可以表示装置或服务,例如,元件14或由元件14提供的服务。
[0064]
在确定使用哪些资源之后,管理模块24可以使用所确定的资源来提供有状态意图。管理模块24可以进一步确定供应是否成功。转化模块28可以将供应成功的那些有状态意图编译成一个或多个元件14的低级配置数据。配置模块26然后可以使用低级配置数据来配置元件14。
[0065]
管理模块24可以确定用于供应那些尝试的供应不成功的意图的解决方案。例如,如下面参考图5和图6的流程图更详细解释的,管理模块24可以确定供应失败是由于语义失败还是不可到达的资源(即,网络元件(例如,元件14)不可达)造成的。如果失败是由于不可到达的新资源造成的,则管理模块24可以通过将资源包括在排除列表中来获得新资源并供应网络。如果由于现有资源导致的失败不可达,管理模块24可以保留旧资源列表并提供网络。对于语义失败,管理模块24可以取消有状态意图,并经由用户接口模块38向用户接口36输出表示对应有状态意图的语义失败的警报。可以否定失败的语义意图,并且这种意图可以称为否定的意图,表示用于使意图变化无效的意图数据模型的变化。例如,如果为了在两个故障的网络站点之间检测流量并触发gre/ipsec隧道而做出意图变化,则否定的意图(negated intent)可能是去除两个网络站点之间的隧道。
[0066]
另外,控制器装置10可以确定配置数据库40的图模型的一个或多个无状态意图是否已经改变。如上所述,无状态意图可以对应于例如图1的网络2的预期状态的完全声明性描述,包括网络装置(例如,元件14)、一个或多个网络装置的状态和/或网络的存储状态。
[0067]
通常,业务策略变化依赖于无状态意图层中的原子性、一致性、隔离性和持久性。原子性是指所有装置变化都已提交,或者什么都没有提交。一致性意味着提交给装置的配置应该有效。由于控制器装置10已经为意图视图提供了强一致性,因此装置之间的最终一致性是足够的。意图数据模型中的事务隔离支持并存意图更新。意图数据模型的持久性也很重要。
[0068]
默认情况下提供原子性,因为管理模块24使网络2进入一致状态。无状态意图层可以包括等幂的(idempotent)应用程序编程接口(api),因为在初始部署中,变化可能不会提
交给某些端点。netconf支持合并和删除可用于实现幂等性的操作。
[0069]
根据本公开的技术,控制器装置10可以确保提交给元件14的配置数据有效。在元件14上提供最终的一致性,因为控制器装置10为意图视图提供强一致性。意图数据存储(例如,配置数据库40)提供了强一致性。编辑意图数据模型时,仅改变不足以进行转换。因此,控制器装置10可以使用依赖意图数据模型来转换变化。如果依赖意图数据模型同时编辑,则意图变化可能会覆盖其他意图变化。控制器装置10可以被配置为确保一个意图变化不会覆盖另一意图变化。这可以通过上面讨论的全局意图版本来实现。即,全局意图版本表示用于生成低级模型资源的意图图的版本。这与低级模型资源一起维护。如果新生成的低级模型版本小于低级模型上的版本,则控制器装置10可以重新运行转化模块28。
[0070]
包括在配置数据库40中的意图数据存储提供转化上的意图数据模型的隔离。同样,配置数据库40中包括的意图数据存储也提供耐用性。
[0071]
通常,管理模块24可以在配置数据库40中维护图模型的两个版本。管理模块24可以维护对应于元件14的当前部署的配置数据的部署图模型以及包括表示改变的无状态意图(例如,相对于部署图模型,添加或更新的无状态意图以及省略删除的无状态意图)的数据的未部署图模型。此外,管理模块24可以维护每个完整图模型的版本值以及图模型内各个顶点的版本值。全局意图版本表示用于编译到低级模型的意图版本,时间戳可以用作全局意图版本。
[0072]
管理模块24可以进一步维护抽象配置模型,该模型表示用于意图转换的装置的公共低级模型。管理模块24还可以维护意图相关信息,表示保存在抽象配置模型中的参考信息,该参考信息表示通过抽象配置模型生成的意图。
[0073]
如下文更详细讨论的,为了维护各种版本值,管理模块24可以维护包括图模型顶点的通用唯一标识符(uuid)的快照表。管理模块可以将未部署图模型的新创建顶点的状态设置为“创建”状态。管理模块可以将未部署图模型的更新顶点的状态设置为“更新”状态。管理模块可以将未部署图模型的已删除顶点的状态设置为“删除”状态。
[0074]
管理模块24可以使转化模块28编译未部署图模型的已改变的无状态意图,以生成网络装置(例如,元件14)的低级配置数据。通常,转化模块28可以编译两个或多个同时改变的无状态意图,所述无状态意图不会同时(例如,并行地)彼此冲突,并且可以防止已改变的无状态意图彼此无效。同样,转化模块28也可以转化依赖于图模型中已改变的无状态意图的任何依赖无状态意图,如依赖图所示。
[0075]
配置模块26然后可以通过经由网络接口模块32和网络接口34将配置数据分发到相应的元件14,使用低级配置数据来配置元件14。在部署低级配置数据之后,管理模块24可以用未部署图模型替换配置数据库40的部署图模型,然后,当接收到新的意图变化时,更新未部署图模型。
[0076]
控制器装置10可以使用抽象模型作为共同的低级模型。抽象模型是与供应商无关的模型。在openconfig.net和github.com/openconfig,描述的openconfig通常用作供应商无关的模型,用yang表示。控制器装置10可以使用供应商无关的模型的扩展来表示资源,包括例如以下实例中的属性:
[0077][0078]
为了扩展业务策略,用户(例如,一个管理员12)可以对资源收集器编程。为了扩展无状态意图数据模型,用户可以增强意图数据模型并增强编译逻辑(例如,一个反应映射器30)。
[0079]
为了增强意图数据模型,在yang的情况下,用户可以编写新的yang子模块。这可能会引入新的图形顶点和与顶点的关联。为了添加新的参考,用户可以添加顶点并将参考边关联添加到一个或多个现有顶点。yaml模式也可以采用类似的方法。
[0080]
如上所述,用户还可以通过事务支持来增强编译逻辑。编译逻辑可以实现为反应映射器30的集合。每个反应映射器可以采用全局版本标识符值。每个反应映射器通常可以执行以下操作:读取低级资源并检查现有资源global_version是否高于全局版本。如果现有资源版本高于全局版本,则重试,否则请更新低级资源和版本。更新低级资源的实例rest api是“post:http://127.0.0.1:8084/ems

central/vlan/1234?intent_global_version=1234”。
[0081]
管理模块24可以用部署回复消息记录意图部署,例如,在更新元件14的配置之后。以下是实例部署回复消息:
[0082][0083]
以这种方式,控制器装置10表示管理多个网络装置的控制器装置的实例,并且包括一个或多个处理单元,其在电路中实现并且被配置为:确定用于管理多个网络装置并由图模型表示的一个或多个有状态意图由于用于有状态意图的分配资源已经退化而退化;响应于确定一个或多个有状态意图退化,确定用于有状态意图的资源,所述资源对应于图模型的顶点;使用所确定的资源提供有状态意图;确定有状态意图的提供是否成功;将至少一个成功的状态意图编译成多个网络装置中的至少一个网络装置的低级配置数据;并且使用低级配置数据配置至少一个网络装置。
[0084]
控制器装置10还表示管理多个网络装置的控制器装置的实例,并且包括一个或多个处理单元,其在电路中实现并且被配置为:确定包括用于管理多个网络装置的第一组无状态意图的部署图模型的一个或多个无状态意图已经改变,其中,无状态意图包括对包括网络装置的网络的预期状态、一个或多个网络装置的状态或网络的存储状态的完全声明性描述;维护部署图模型和包括第二组无状态意图的未部署图模型,第二组无状态意图包括一个或多个改变的无状态意图;编译未部署图模型的已改变的无状态意图,以生成网络装置的低级配置数据;并且使用低级配置数据来配置网络装置。
[0085]
图3是示出意图数据模型的实例统一图模型60的概念图。在这个实例中,统一图模型60包括节点a 62、b 64和c 66等。首先,统一图模型可以不包括vpn 68、vpn 72和vpn 78,也不包括optical1(光学1)80、lambda 82、optical1 84和lambda 86。作为通过意图数据模型更新的修改的结果,节点a 62经由vpn 68和lsp1 70耦合到节点b 64,节点b 64经由vpn 72和lsp2 74耦合到节点c 66,节点c 66经由vpn 78和lps376耦合到节点a 62。此外,由于作为光学意图需要额外的容量,在节点b64和节点c 66之间增加了额外的节点optical1 80、lambda 82、optical1 84和lambda 86。
[0086]
有状态业务策略可以写在无状态意图层之上。例如,用户可以声明意图“在站点a、b和c之间提供高带宽vpn连接,在a

b、b

c、c

a
……
之间提供带宽”。这可能会导致各种无状态意图。有状态意图可以被编译成l3vpn(覆盖隧道)和提供所需带宽的a

b、b

c、c

a之间的传输机制。例如,传输机制可以包括30mbps的a

b之间的rsvp lsp、50mbps的b

c之间的rsvp lsp和80mbps的c

a之间的rsvp lsp。在这种情况下,可能需要创建80mbps的c

a之间的rsvp

lsp。可能存在需要更多容量的情况,因此可能还有另一意图“光意图:增加c

a之间的容量”。如果c

a已经有70mbps的连接,无状态意图可以在光网络上的c

a之间提供新的10gλ。
[0087]
当实现有状态意图时,控制器装置(例如,控制器装置10)可能需要考虑跨端点的
现有无状态意图以及当前状态。在上述实例中,为了执行各种意图,控制器装置10可以查询连通图(包括无状态意图),并且根据需要创建/修改无状态意图。在2017年3月17日提交的美国申请号15/462,465中描述了与使用统一图模型和意图相关的技术,该申请的全部内容通过引用结合于此。因此,意图数据模型可以使用统一图模型来表示。当添加更多用例时,意图数据模型(即,统一图模型)可以扩展。此外,统一图模型的使用允许基于端点检索意图(例如,通过查询图形)。
[0088]
图4是示出根据本公开的技术的控制器装置(例如,控制器装置10)的组件的实例模型100的概念图。在该实例中,模型100包括业务策略管理单元102、意图基础设施110和分析节点130。业务策略管理单元102包括业务策略分析器104和保证模块106。意图基础设施110包括意图层112、意图编译器114、元件配置服务116、意图数据库118和配置(config)数据库120。分析节点130包括遥测聚合单元132、元件遥测集合134和遥测数据库136。图2的管理模块24可以包括执行归因于模型100的各种组件的功能的组件。例如,图2的配置模块26可以对应于意图基础设施110,转化模块28可以对应于意图编译器114,配置数据库120可以对应于配置数据库40,诸如此类。图4所示的某些组件可以由图2的管理模块24实现。
[0089]
通常,业务策略分析器104管理有状态意图。业务策略分析器104与保证模块106通信,以获得有状态意图的资源。业务策略分析器104还调用意图层112来提供无状态意图。本公开的技术可用于确保业务策略近实时地转化到网络,以防止对sla的负面影响。意图编译器114可以被配置为同时编译意图。在2019年2月21日提交的美国申请号16/282,160“supporting compilation and extensibility on unified graph based intent models”中描述了关于意图的并行、并存编译的额外细节,该申请的全部内容通过引用结合于此。
[0090]
当业务策略(即,状态意图)退化时,业务策略分析器104可以确定适当的资源来解决退化的意图,并且调用意图基础设施110来提供意图。当意图实现失败时,业务策略分析器104可以确定失败的解决方案。例如,如果失败与新资源相关,则业务策略分析器104可以更新一组被排除的资源,获取新资源,并供应网络。如果失败与新资源无关,而是因为现有网络元件,并且现有网络元件不可到达,则业务策略分析器104可以确定保留旧资源并提供网络。如果失败是由于语义失败,业务策略分析器104可以提交否定的意图,供应网络,并发出表示语义失败的警报。
[0091]
因此,通常,业务策略分析器104确保意图数据模型变化中没有冲突的变化。在确保没有冲突变化之后,业务策略分析器104将意图数据模型变化提交给意图基础设施110。当提交无状态意图变化时,意图基础设施110可以创建保持这组顶点更新(例如,创建、更新或删除)和相应版本标识符的变化集。意图基础设施110还在意图数据库118中维护部署的意图数据模型和未部署的意图数据模型。意图基础设施110触发意图编译器114来执行变化集中受影响顶点的转化器。
[0092]
转化可以是异步的,因此,意图基础设施110可以通过使用全局意图版本来确保意图变化不会覆盖其他意图变化。全局意图版本表示生成低级模型资源的意图图的版本。意图基础设施110维护部署图模型的全局意图版本以及低级模型资源,例如,在配置数据库120中。如果新生成的低级模型全局意图版本低于低级模型上的全局版本,则意图基础设施110可以重新运行意图编译器114。如果在元件配置服务116向网络提交低级配置数据时有
任何失败,则意图基础设施110可以向业务策略分析器104提供表示失败的数据。
[0093]
为了支持更新,意图基础设施110支持意图数据模型的版本化,例如,已部署和未部署的意图数据模型。每次变化维护一个完整图形的版本,将序列化意图变化。因此,意图基础设施110在同一图中维护已部署和未部署的意图数据模型,分别包括已部署的顶点和未部署的顶点。每个顶点包含一个状态和一个版本id。意图基础设施110可以设置对应于意图变化的顶点的状态值,以表示“创建”、“更新”或“删除”的状态。一旦部署顶点,意图基础设施110还可以设置状态值,以表示“部署”,如下所述。
[0094]
意图基础设施110可以在同一图中维护更新的顶点。如上所述,意图基础设施110可以维护快照表,该快照表包含通用唯一标识符(uuid)和相应更新顶点的旧版本的列表。
[0095]
当创建顶点时,意图基础设施110将创建顶点的状态值设置为表示“创建”状态的值。在顶点部署到网络之后,意图基础设施110更新状态值,以表示“部署”状态。
[0096]
当更新顶点时,意图基础设施110将更新顶点的状态值设置为表示“更新”状态的值。在顶点部署到网络之后,意图基础设施110更新状态值,以表示“部署”状态。
[0097]
当删除顶点时,意图基础设施110将创建的顶点的状态值设置为表示“删除”状态的值。在将更新部署到网络之后,意图基础设施110从图中去除删除的顶点。
[0098]
下表表示实例状态转换:
[0099][0100]
图5是示出可由业务策略分析器104执行的用于解决意图更新失败的实例方法的流程图。首先,业务策略分析器104可以从用户接收业务策略更新(150)。或者,业务策略分析器104可以从保证模块106接收退化通知(151)。在任一情况下,业务策略分析器104为现有意图保存旧资源(152)。业务策略分析器104还从资源管理器确定用于意图的新资源(例如,资源退化的新意图或现有意图)(154),并供应新资源。
[0101]
业务策略分析器104然后可以生成无状态意图更新并且调用意图基础设施110(156)。这可以使得意图基础设施110使用意图编译器114来转化意图变化,并更新意图数据库118。此外,元件配置服务116可以分发低级配置数据更新并且更新配置数据库120。
[0102]
如果存在任何意图实现失败,业务策略分析器104可以确定失败并尝试解决该失败。特别地,业务策略分析器104可以针对语义失败发出警报(158),这可以包括向用户发送表示语义失败的消息。对于其他失败,业务策略分析器104可以确定失败是否是由于不可达的网络资源(例如,元件14)(160)。如果失败是由于新的网络资源不可达(“是”分支,160),则业务策略分析器104可以更新一组排除的资源,获得新的资源(154),然后再次生成无状态意图更新并且调用意图基础设施110(156)。否则,如果失败与新资源无关,而是因为现有网络元件,并且现有网络元件不可到达(“否”分支,160),则业务策略分析器104可以确定保留旧资源,然后再次生成无状态意图更新并且调用意图基础设施110(156)。
[0103]
图6是示出根据本公开技术的并存无状态意图供应的实例方法的流程图。图6的方
法可以由例如图1和2的控制器装置10来执行。
[0104]
首先,控制器装置10可以例如从应用程序接收意图变化(180)。管理模块24可以维护部署图模型和未部署图模型之间的差异(即意图之间的差异),作为配置数据库40中的快照表(182)。管理模块24可以读取全局意图版本,其中,创建全局意图时的当前时间的时间戳可以表示版本值(184)。
[0105]
转化模块28可以读取所有相关顶点变化并生成低级模型(llm)(186)。
[0106]
管理模块24可以确定全局意图版本是否高于llm现有全局版本(188)。如果全局意图版本高于llm现有全局版本(“是”分支,188),则配置模块26可以更新llm对象(190)。如果全局意图版本低不于llm现有全局版本(“否”分支,188),则管理模块24可以再次读取全局意图版本(184)并重新运行转化模块28并继续。配置模块26还可以从llm对象生成本地配置数据,并将本地配置数据提交给元件14(192)。
[0107]
管理模块24可以进一步确定提交是否成功(194)。如果提交不成功(“否”分支,194),则管理模块24可以向应用程序输出失败指示(196)。否则,如果提交成功(“是”分支,194),则管理模块24可以用先前未部署的意图数据模型更新部署的意图数据模型,更新快照,并等待新的意图。
[0108]
图7是示出意图变化后未部署的意图图200的实例的曲线图。在该实例中,未部署的意图图200包括分支站点(spoke site)1顶点202、装置1顶点204、终止点1(tp1)顶点206、中心站点(hub site)顶点208、装置2顶点210、tp2顶点212、gre链路1顶点214、gre链路2顶点216、tp2顶点218和vpn顶点220。
[0109]
通常,部署的意图图(未示出)和未部署的意图图200可以对应于sd

wan。sd

wan具有站点对象,例如,由分支站点1顶点202和中心站点208表示。这些站点可以通过中心和分支或全网状连接。在该实例中,站点与gre覆盖层连接,并且可以可选地启用ipsec。站点之间也可能有wan底层链接。
[0110]
在另一实例中,可以创建gre隧道。因此,转化模块28可以执行名为例如“compile_gre_link”的转化器。可用资源可能包括站点、gre链路、gre终止点、ipsec链接和终止点以及对等站点终止点。转化模块28可以输出抽象配置和相应的本地配置,例如,如下:
[0111]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 security zones security

zone trust tcp

rst
[0112]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 security zones security

zone trust host

inbound

traffic system

services all
[0113]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0security zones security

zone trust host

inbound

traffic protocols all
[0114]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 security zones security

zone trust interfaces
[0115]
gr

0/0/0.4001
[0116]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 interfaces gr

0/0/0 unit 4001 tunnel source 172.30.48.3
[0117]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 interfaces gr

0/0/0 unit 4001 tunnel destination 172.30.48.5
[0118]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 interfaces gr

0/0/0 unit 4001 family inet address 10.0.48.1/31
[0119]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 interfaces gr

0/0/0 unit 4001 family mpls
[0120]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 interfaces gr

0/0/0 unit 4001 tunnel routing

instance destination transit
[0121]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 protocols oam gre

tunnel interface gr

0/0/0.4001 keepalive

time 1
[0122]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 protocols oam gre

tunnel interface gr

0/0/0.4001 hold

time 5
[0123]
set groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0 routing

instances transit interface gr

0/0/0.4001
[0124]
set apply

groups green_green

spkvsrx1_wan_2_green

spkvsrx2_wan_2_gre_ipsec_0
[0125]
此外,根据上述实例,可以使用动态vpn,其中,动态vpn表示仅当流量开始流动时在站点之间创建的隧道。在全网状拓扑中,流量可以在站点1和站点2之间开始,分别对应于分支站点1顶点202和中心站点2顶点208。控制器装置10可以检测业务流并触发站点1和站点2之间的gre/ipsec隧道创建。控制器装置10可以在站点1和站点2的终端点之间添加底层链路,作为意图更新,例如(站点1wan
‑0‑
站点2wan

0)。控制器装置10还可以为站点1和站点2中的覆盖添加逻辑终止点(例如,接口

gr/0/0/0和st.4000)。控制器装置10还可以在站点1和2之间添加相应的gre和ipsec链路。
[0126]
因此,相应的部署意图图可以省略gre链路1顶点214,并且具有不同版本的vpn顶点220。即,可能已经相对于部署的意图图添加gre链路1顶点214(对应于创建gre隧道的实例),并且可能已经相对于部署的意图图修改vpn顶点214。此外,可以从部署的意图图中删除gre链路2顶点216。因此,控制器装置10的管理模块24可以将gre链路1 214的状态设置为“已创建”,将vpn顶点220的状态设置为“已更新”,并将gre链路2顶点216的状态设置为“已删除”。在将基于未部署意图图200的配置数据部署到网络之后,管理模块24可以将gre链路1214和vpn顶点220的状态设置为“已部署”,并且从图中删除gre链路2顶点216。
[0127]
如果对应于装置1顶点204(“d1”)或装置2顶点210(“d2”)的装置中的一个或两个不可到达,则可能导致失败。如果d1和/或d2中的一个或两个不可到达,则控制器装置10将去除站点1和站点2(例如,站点1wan

0<

>站点2wan

0)之间的链路。
[0128]
在该实例中,可以为站点1和站点2之间的链路维护交易。为了实现这一点,控制器装置10不允许在中心和分支拓扑中进行编辑,或者不应该编辑vpn网络(部(department))。如果更新vpn,则传统技术将影响业务策略sla。
[0129]
以下是针对上述实例用例的ipsec的实例反应映射器:
[0130][0131][0132]
图8是示出根据本公开的技术配置网络装置的实例方法的流程图。相对于图1和图2的控制器装置10解释图8的方法,尽管其他装置(例如,符合图4的模型100)可以被配置为执行该方法或类似方法。
[0133]
管理模块24可以在配置数据库40中维护部署图模型。如上所述,部署图模型包括由边连接的顶点的图,其中,顶点可以对应于网络资源,例如,装置、连接、服务等。部署图模型可以表示一组现有的有状态意图。
[0134]
管理模块24然后可以接收用于一个或多个意图的资源退化的指示(221)。管理模
块24可以确定由于退化的资源而变得退化的任何现有状态意图(222)。
[0135]
管理模块24可以进一步确定有状态意图的新资源(224)。管理模块24然后使用所确定的资源来提供有状态意图(226)。
[0136]
管理模块24然后可以确定供应是否成功(228)。管理模块24可以确定失败供应的解决方案(230),例如,如以上参考图5所讨论的。例如,对于语义失败,管理模块24可以发出警报。作为另一实例,对于不可到达的网络资源,管理模块24可以更新排除列表并获得新资源。
[0137]
管理模块24可以使转化模块28将成功的有状态意图编译成低级模型(232)。特别地,转换模块28可以确定未部署图模型中顶点的版本是否与相应的变化集版本匹配,如果不匹配,则执行相应的反应映射器来编译变化集的相应元件。管理模块24也可以使得配置模块26使用低级模型来配置元件14(234)。在根据所得的低级模型配置元件14之后,管理模块24可以将部署图模型更新为未部署图模型,并等待有状态意图。
[0138]
以这种方式,图8的方法表示一种方法的实例,该方法包括:由管理多个网络装置的控制器装置确定用于管理多个网络装置并由图模型表示的一个或多个有状态意图由于用于有状态意图的分配资源已经退化而退化;响应于确定一个或多个有状态意图退化,由控制器装置确定用于有状态意图的资源,所述资源对应于图模型的顶点;由控制器装置使用所确定的资源提供有状态意图;由控制器装置确定有状态意图的提供是否成功;由控制器装置将至少一个成功的状态意图编译成多个网络装置中的至少一个网络装置的低级配置数据;并且由控制器装置使用低级配置数据配置至少一个网络装置。
[0139]
图9是表示根据本公开的技术配置网络装置的另一种方法的实例的流程图。相对于图1和图2的控制器装置10解释图9的方法,尽管其他装置(例如,符合图4的模型100)可以被配置为执行该方法或类似方法。
[0140]
如上所述,管理模块24可以在配置数据库40中维护部署图模型。如上所述,部署图模型包括由边连接的顶点的图,其中,顶点可以对应于网络资源,例如,装置、连接、服务等。部署图模型可以表示一组现有的无状态意图。
[0141]
管理模块24可以接收新的无状态意图,并确定相对于现有无状态意图变化的无状态意图(250)。管理模块24可以维护表示当前部署的无状态意图的部署图模型以及表示新无状态意图的未部署图模型(252)。管理模块24可以使用如上所述的快照表来设置未部署图模型中顶点的状态(254)。例如,管理模块24可以将未部署图模型的已创建顶点的状态设置为表示“创建”状态的值,将相对于部署图模型的已更新顶点的值设置为表示“更新”状态的值,并将相对于部署图模型的已删除顶点的值设置为表示“删除”状态的值。管理模块24还可以设置顶点的版本值(256)。
[0142]
管理模块24然后可以使转化模块28将改变的无状态意图编译成低级模型(258)。管理模块24还可以使配置单元26使用低级模型(260)来配置元件14(即,网络装置)。
[0143]
以这种方式,图9的方法表示一种方法的实例,该方法包括:由管理多个网络装置的控制器装置确定包括用于管理多个网络装置的第一组无状态意图的部署图模型的一个或多个无状态意图已经改变,其中,无状态意图包括对包括网络装置的网络的预期状态、一个或多个网络装置的状态或网络的存储状态的完全声明性描述;由控制器装置维护部署图模型和包括第二组无状态意图的未部署图模型,第二组无状态意图包括一个或多个改变的
无状态意图;由控制器装置编译未部署图模型的改变的无状态意图,以生成网络装置的低级配置数据;并且由控制器装置使用低级配置数据来配置网络装置。
[0144]
本公开中描述的技术可以至少部分地在硬件、软件、固件或其任意组合中实现。例如,所述技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或分立逻辑电路以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指任何前述逻辑电路,单独或与其他逻辑电路或任何其他等效电路相结合。包括硬件的控制单元也可以执行本公开的一种或多种技术。
[0145]
这种硬件、软件和固件可以在同一装置内或在单独的装置内实现,以支持本公开中描述的各种操作和功能。此外,任何所描述的单元、模块或组件可以一起或单独实现为分立但可互操作的逻辑装置。将不同特征描述为模块或单元,旨在突出不同的功能方面,并不一定意味着这些模块或单元必须通过单独的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件来执行,或者集成在公共或单独的硬件或软件组件内。
[0146]
本公开中描述的技术也可以在包含指令的计算机可读介质中实现或编码,例如,计算机可读存储介质。在计算机可读介质中嵌入或编码的指令可以促使可编程处理器或其他处理器执行该方法,例如,当执行指令时。计算机可读介质可以包括非暂时性计算机可读存储介质和暂时性通信介质。有形且非暂时性的计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘、光盘、软盘、磁带、磁介质、光学介质或其他计算机可读存储介质。术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他瞬态介质。
[0147]
已经描述了各种实例。这些和其他实例在所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1