支持接近实时的服务水平协议转让专利

申请号 : CN201910900840.6

文献号 : CN111756563B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钱德拉塞卡尔·A贾扬蒂·R

申请人 : 瞻博网络公司

摘要 :

本公开涉及支持接近实时的服务水平协议。控制器装置管理多个网络装置。该控制器装置包括一个或多个处理单元,该处理单元在电路中实现并且被配置为确定用于管理多个网络装置并且由图形模型表示的一个或多个有状态意图由于为有状态意图分配的资源已经降级而降级;响应于确定一个或多个有状态意图被降级,确定用于有状态意图的资源,该资源对应于图形模型的顶点;使用所确定的资源供应有状态意图;确定有状态意图的供应是否成功;将成功的有状态意图中的至少一个编译成用于多个网络装置中的至少一个网络装置的低级配置数据;以及使用低级配置数据配置至少一个网络装置。

权利要求 :

1.一种管理多个网络装置的方法,包括:由管理所述多个网络装置的控制器装置确定用于管理所述多个网络装置并且由图形模型表示的一个或多个有状态意图由于为所述有状态意图分配的资源已经降级而降级;

响应于确定所述一个或多个有状态意图被降级,由所述控制器装置确定用于所述有状态意图的资源,所述资源对应于所述图形模型的顶点;

由所述控制器装置使用所确定的资源供应所述有状态意图;

由所述控制器装置确定所述有状态意图的供应是否成功;

由所述控制器装置将成功的所述有状态意图中的至少一个有状态意图编译成用于所述多个网络装置中的至少一个网络装置的低级配置数据;以及由所述控制器装置使用所述低级配置数据配置所述至少一个网络装置。

2.根据权利要求1所述的方法,其中,确定所述有状态意图的供应是否成功包括:确定所述有状态意图的供应不成功;以及确定用于所述有状态意图的供应的解决方法。

3.根据权利要求2所述的方法,其中,确定所述有状态意图的供应不成功包括确定由于用于所述有状态意图的新资源,所述有状态意图的供应不成功,并且其中,确定所述解决方法包括:

更新一组排除的资源;

确定所述新资源的替代资源;以及使用所述替代资源供应所述有状态意图。

4.根据权利要求2所述的方法,其中,确定所述有状态意图的供应不成功包括确定由于一个或多个现有的网络元素不可达,所述有状态意图的供应不成功,并且其中,确定所述解决方法包括:

维护用于所述有状态意图的资源;以及使用用于所述有状态意图的资源供应所述网络。

5.根据权利要求2所述的方法,其中,确定所述有状态意图的供应不成功包括确定由于语义失败,所述有状态意图的供应不成功,并且其中,确定所述解决方法包括:取消包括所述语义失败的所述有状态意图中的至少一个有状态意图;以及输出针对表示所述语义失败的所述有状态意图中的至少一个有状态意图的警报。

6.根据权利要求1所述的方法,其中,配置包括配置所述至少一个网络装置,同时维护用于包括所述多个网络装置的网络的一致状态并管理服务水平协议(SLA)。

7.一种管理多个网络装置的控制器装置,所述控制器装置包括一个或多个处理单元,所述处理单元在电路中实现并且被配置为:确定用于管理所述多个网络装置并且由图形模型表示的一个或多个有状态意图由于为所述有状态意图分配的资源已经降级而降级;

响应于确定所述一个或多个有状态意图被降级,确定用于所述有状态意图的资源,所述资源对应于所述图形模型的顶点;

使用所确定的资源供应所述有状态意图;

确定所述有状态意图的供应是否成功;

将成功的所述有状态意图中的至少一个有状态意图编译成用于所述多个网络装置中的至少一个网络装置的低级配置数据;以及使用所述低级配置数据配置所述至少一个网络装置。

8.根据权利要求7所述的控制器装置,其中,响应于确定所述有状态意图的供应不成功,所述处理单元被配置为确定用于所述有状态意图的供应的解决方法。

9.根据权利要求8所述的控制器装置,其中,响应于所述处理单元确定由于用于所述有状态意图的新资源,所述有状态意图的供应不成功,来确定所述解决方法,所述处理单元被配置为:

更新一组排除的资源;

确定所述新资源的替代资源;以及使用所述替代资源供应所述有状态意图。

10.根据权利要求8所述的控制器装置,其中,响应于所述处理单元确定由于一个或多个现有的网络元素不可达,所述有状态意图的供应不成功,来确定所述解决方法,所述处理单元被配置为:

维护用于所述有状态意图的资源;以及使用用于所述有状态意图的资源供应网络。

11.根据权利要求8所述的控制器装置,其中,响应于所述处理单元确定由于语义失败,所述有状态意图的供应不成功,来确定所述解决方法,所述处理单元被配置为:取消包括所述语义失败的所述有状态意图中的至少一个有状态意图;以及输出针对表示所述语义失败的所述有状态意图中的至少一个有状态意图的警报。

12.根据权利要求7所述的控制器装置,其中,所述处理单元被配置为配置所述至少一个网络装置,同时维护用于包括所述多个网络装置的网络的一致状态并管理服务水平协议(SLA)。

13.一种计算机可读存储介质,其上存储指令,所述指令在被执行时使管理多个网络装置的控制器装置的处理器:

确定用于管理所述多个网络装置并且由图形模型表示的一个或多个有状态意图由于为所述有状态意图分配的资源已经降级而降级;

响应于确定所述一个或多个有状态意图被降级,确定用于所述有状态意图的资源,所述资源对应于所述图形模型的顶点;

使用所确定的资源供应所述有状态意图;

确定所述有状态意图的供应是否成功;

将成功的所述有状态意图中的至少一个有状态意图编译成用于所述多个网络装置中的至少一个网络装置的低级配置数据;以及使用所述低级配置数据配置所述至少一个网络装置。

14.根据权利要求13所述的计算机可读存储介质,还包括指令,所述指令使所述处理器响应于确定所述有状态意图的供应不成功,确定用于所述有状态意图的供应的解决方法。

15.根据权利要求14所述的计算机可读存储介质,其中,响应于确定由于用于所述有状态意图的新资源,所述有状态意图的供应不成功,确定所述解决方法的所述指令包括使所述处理器执行以下步骤的指令:更新一组排除的资源;

确定所述新资源的替代资源;以及使用所述替代资源供应所述有状态意图。

16.根据权利要求14所述的计算机可读存储介质,其中,响应于确定由于一个或多个现有的网络元素不可达,所述有状态意图的供应不成功,确定所述解决方法的所述指令包括使所述处理器执行以下步骤的指令:维护用于所述有状态意图的资源;以及使用用于所述有状态意图的资源供应网络。

17.根据权利要求14所述的计算机可读存储介质,其中,响应于确定由于语义失败,所述有状态意图的供应不成功,确定所述解决方法的所述指令包括使所述处理器执行以下步骤的指令:

取消包括所述语义失败的所述有状态意图中的至少一个有状态意图;以及输出针对表示所述语义失败的所述有状态意图中的至少一个有状态意图的警报。

18.根据权利要求13所述的计算机可读存储介质,还包括指令,所述指令使所述处理器配置所述至少一个网络装置,同时维护用于包括所述多个网络装置的网络的一致状态并管理服务水平协议(SLA)。

说明书 :

支持接近实时的服务水平协议

技术领域

[0001] 本公开涉及计算机网络,并且更具体地,涉及网络装置的管理。

背景技术

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

发明内容

[0009] 通常,本公开描述了用于管理网络装置的技术。网络管理系统(NMS)装置,在此也称为控制器装置,可以使用低级(即,装置级)配置数据(例如,以另一个下一代(YANG)数据
建模语言表示)配置网络装置。此外,控制器装置可以基于用于网络装置的配置数据管理网
络装置。根据本公开的技术,控制器装置允许管理员将预期的网络/计算/存储状态描述为
“意图数据模型”,其可以被表示为图形模型。控制器装置可以使用反应式映射器支持意图
数据模型的并行和增量编译和可扩展性。
[0010] 在一个示例中,管理多个网络装置的方法包括由管理多个网络装置的控制器装置确定用于管理多个网络装置并且由图形模型表示的一个或多个有状态意图由于为有状态
意图分配的资源已经降级而降级;响应于确定一个或多个有状态意图被降级,由控制器装
置确定用于有状态意图的新资源,该新资源对应于图形模型的顶点;由控制器装置使用所
确定的资源供应有状态意图;由控制器装置确定有状态意图的供应是否成功;由控制器装
置将成功的有状态意图中的至少一个有状态意图编译成用于多个网络装置中的至少一个
网络装置的低级配置数据;以及由控制器装置使用低级配置数据配置至少一个网络装置。
[0011] 在另一示例中,控制器装置管理多个网络装置。控制器装置包括一个或多个处理单元,该处理单元在电路中实现并且被配置为确定用于管理多个网络装置并且由图形模型
表示的一个或多个有状态意图由于为有状态意图分配的资源已经降级而降级;响应于确定
一个或多个有状态意图被降级,确定用于有状态意图的资源,该资源对应于图形模型的顶
点;使用所确定的资源供应有状态意图;确定有状态意图的供应是否成功;将成功的有状态
意图中的至少一个有状态意图编译成用于多个网络装置中的至少一个网络装置的低级配
置数据;以及使用低级配置数据配置至少一个网络装置。
[0012] 在另一示例中,计算机可读存储介质在其上存储指令,该指令在被执行时使管理多个网络装置的控制器装置的处理器确定用于管理多个网络装置并且由图形模型表示的
一个或多个有状态意图由于为有状态意图分配的资源已经降级而降级;响应于确定一个或
多个有状态意图被降级,确定用于有状态意图的资源,该资源对应于图形模型的顶点;使用
所确定的资源供应有状态意图;确定有状态意图的供应是否成功;将成功的有状态意图中
的至少一个有状态意图编译成用于多个网络装置中的至少一个网络装置的低级配置数据;
以及使用低级配置数据配置至少一个网络装置。
[0013] 在另一示例中,管理多个网络装置的方法包括由管理多个网络装置的控制器装置确定包括用于管理多个网络装置的第一组无状态意图的已部署的图形模型的一个或多个
无状态意图已经改变,其中,无状态意图包括对包括网络装置的网络的预期的状态、网络装
置中的一个或多个的状态或用于网络的存储状态的完全声明性描述;由控制器装置维护已
部署的图形模型和未部署的图形模型两者,其包括第二组无状态意图,该第二组无状态意
图包括一个或多个改变的无状态意图;由控制器装置编译未部署的图形模型的改变的无状
态意图,以生成用于网络装置的低级配置数据;以及由控制器装置使用低级配置数据配置
网络装置。
[0014] 在另一示例中,控制器装置管理多个网络装置。该控制器装置包括一个或多个处理单元,该处理单元在电路中实现并且被配置为确定包括用于管理多个网络装置的第一组
无状态意图的已部署的图形模型的一个或多个无状态意图已经改变,其中,无状态意图包
括对包括网络装置的网络的预期的状态、网络装置中的一个或多个的状态或用于网络的存
储状态的完全声明性描述;维护已部署的图形模型和未部署的图形模型两者,其包括第二
组无状态意图,该第二组无状态意图包括一个或多个改变的无状态意图;编译未部署的图
形模型的改变的无状态意图,以生成用于网络装置的低级配置数据;以及使用低级配置数
据配置网络装置。
[0015] 在另一示例中,计算机可读存储介质在其上存储指令,该指令在执行时使得管理多个网络装置的控制器装置的处理器确定包括用于管理多个网络装置的第一组无状态意
图的已部署的图形模型的一个或多个无状态意图已经改变,其中,无状态意图包括对包括
网络装置的网络的预期的状态、网络装置中的一个或多个的状态或用于网络的存储状态的
完全声明性描述;维护已部署的图形模型和未部署的图形模型两者,其包括第二组无状态
意图,该第二组无状态意图包括一个或多个改变的无状态意图;编译未部署的图形模型的
改变的无状态意图,以生成用于网络装置的低级配置数据;以及使用低级配置数据配置网
络装置。
[0016] 在附图和下面的描述中阐述了一个或多个示例的细节。从说明书和附图以及从权利要求书中,其他特征、目的以及益处将是显而易见的。

附图说明

[0017] 图1是示出包括使用管理装置管理的企业网络的元素的示例的框图。
[0018] 图2是示出用于图1的管理装置的一组示例组件的框图。
[0019] 图3是示出用于意图数据模型的示例统一图形模型的概念图。
[0020] 图4是示出根据本公开的技术的控制器装置(例如图1和图2的控制器装置)的组件的示例模型的概念图。
[0021] 图5是示出可以由业务策略分析器执行的用于解决意图更新的失败的示例方法的流程图。
[0022] 图6是示出根据本公开的技术的用于并发无状态意图供应的示例方法的流程图。
[0023] 图7是示出意图改变之后的示例未部署的意图图形的图形。
[0024] 图8是示出根据本公开的技术的配置网络装置的示例方法的流程图。
[0025] 图9是表示根据本公开的技术的配置网络装置的另一方法的示例的流程图。

具体实施方式

[0026] 图1是示出包括使用控制器装置10管理的企业网络2的元素的示例的框图。企业网络2的受管理元素14A‑14G(统称为“元素14”)包括经由通信链路互连的网络装置,以形成通
信拓扑,以便交换资源和信息。元素14(也通常称为网络装置或远程网络装置)可以包括例
如路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(IDS)或入侵防
御系统(IDP)、计算装置、计算终端、打印机、其他网络装置或这些装置的组合。尽管在本公
开中描述为传输、传送或以其他方式支持分组,但是企业网络2可以根据由任何其他协议定
义的任何其他离散数据单元(例如由异步传输模式(ATM)协议定义的信元,或由用户数据报
协议(UDP)定义的数据报)传输数据。通信链路互连元素14可以是物理链路(例如,光、铜
等)、无线或其任意组合。
[0027] 企业网络2被示出为经由通信链路耦接到公共网络18(例如,因特网)。公共网络18可以包括例如一个或多个客户端计算装置。公共网络18可以提供对web服务器、应用服务
器、公共数据库、媒体服务器、终端用户装置以及其他类型的网络资源装置和内容的访问。
[0028] 控制器装置10经由企业网络2通信地耦接到元素14。在一些示例中,控制器装置10形成装置管理系统的一部分,尽管为了示例的目的在图1中仅示出了装置管理系统的一个
装置。控制器装置10可以直接或间接地耦接到各种元素14。一旦元素14被部署和激活,管理
员12就使用控制器装置10(或多个这样的管理装置)来使用装置管理协议管理网络装置。一
个示例装置协议是简单网络管理协议(SNMP),其允许控制器装置10遍历和修改在每个受管
理元素14内存储配置数据的管理信息库(MIB)。SNMP协议的进一步细节可以在Harrington
等人,RFC 3411,“An Architecture for Describing Simple Network Management 
Protocol(SNMP)Management Frameworks,”Network Working Group,the Internet 
Engineering Task Force  draft,December  2002中找到,其可以在http://
tools.ietf.org/html/rfc3411处获得,其全部内容通过引用结合于此。
[0029] 在通常的实践中,控制器装置10(也称为网络管理系统(NMS)或NMS装置)和元素14由企业的IT组集中维护。管理员12与控制器装置10交互以远程监视和配置元素14。例如,管
理员12可以从控制器装置10接收关于任何元素14的警报、查看元素14的配置数据、修改元
素14的配置数据、向企业网络2添加新的网络装置、从企业网络2移除现有的网络装置,或者
以其他方式操纵企业网络2和其中的网络装置。尽管相对于企业网络进行了描述,但是本公
开的技术可应用于包括LAN、VLAN、VPN等的其他公共和私有网络类型。
[0030] 在一些示例中,管理员12使用控制器装置10或本地工作站例如通过远程登录、安全外壳(SSH)或其他这样的通信会话直接与元素14交互。即,元素14通常提供用于直接交互
的界面,诸如命令行界面(CLI)、基于web的界面、图形用户界面(GUI)等,通过这些界面,用
户可以与装置交互以直接发出基于文本的命令。例如,这些界面通常允许用户例如通过远
程登录、安全外壳(SSH)、超文本传输协议(HTTP)或其他网络会话直接与装置交互,以根据
定义的语法输入文本以将命令提交到受管理元素。在一些示例中,用户使用控制器装置10
与元素14中的一个(例如,元素14F)发起SSH会话15,以直接配置元素14F。以这种方式,用户
可以以用于直接执行的格式将命令提供到元素14。
[0031] 此外,管理员12还可以创建可以由控制器装置10提交到任何或所有元素14的脚本。例如,除了CLI界面之外,元素14还提供用于接收根据脚本语言指定命令的脚本的界面。
在某种意义上,脚本可以由控制器装置10输出,以自动调用受管理元素14上的相应远程过
程调用(RPC)。脚本可以符合例如可扩展标记语言(XML)或另一数据描述语言。
[0032] 管理员12使用控制器装置10来配置元素14以指定促进管理员12的目标的某些操作特性。例如,管理员12可以为元素14指定关于安全性、装置可访问性、流量工程、服务质量
(QoS)、网络地址转换(NAT)、分组过滤、分组转发、速率限制或其他策略的特定操作策略。控
制器装置10使用被设计成用于管理受管理网络元素14内的配置数据的一个或多个网络管
理协议,例如SNMP协议或网络配置协议(NETCONF)协议或其派生协议,例如Juniper装置管
理界面,以执行配置。通常,NETCONF提供用于配置网络装置的机制,并且使用基于可扩展标
记语言(XML)的数据编码来配置数据,该数据可以包括策略数据。NETCONF在Enns,“NETCONF 
Configuration Protocol,”Network Working Group,RFC 4741,Dec.2006中描述,可以在
tools.ietf.org/html/rfc4741处获得。控制器装置10可以与一个或多个元素14建立
NETCONF会话。
[0033] 控制器装置10可以被配置为将新的意图数据模型与现有(或旧的)意图数据模型进行比较,确定新的意图数据模型和现有的意图数据模型之间的差异,并且将反应式映射
器应用于新的意图数据模型和旧的意图数据模型之间的差异。具体地,控制器装置10确定
新的一组配置数据是否包括关于旧的意图数据模型的任何附加配置参数,以及新的一组配
置数据是否修改或省略包括在旧的意图数据模型中的任何配置参数。
[0034] 意图数据模型可以是统一图形模型,而低级配置数据可以在YANG中表示,YANG在Bjorklund,“YANG‑A Data Modeling Language for the Network Configuration 
Protocol(NETCONF),”Internet Engineering Task Force,RFC 6020,Oct.2010中描述,可
以在tools.ietf.org/html/rfc6020处获得。在一些示例中,可以用YAML不是标记语言
(YAML)来表示意图数据模型。控制器装置10可以包括用于转换意图数据模型差异的各种反
应式映射器。这些功能被配置为接受意图数据模型(例如,根据YANG或YAML,其可以表示为
结构化输入参数)。这些功能还被配置为输出各组低级装置配置数据改变,例如装置配置添
加和移除。即,y1=f1(x),y2=f2(x),…,yN=fN(x)。
[0035] 控制器装置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,”中描述了使用用于高级配置数据的图形模型来管理网络装置的技术,该
申请的全部内容通过引用结合于此。
[0036] 控制器装置10可以从管理员12中的一个接收数据,该数据表示关于统一意图数据模型的创建、更新和/或删除动作中的任何一个或全部。控制器装置10可以被配置为对应用
于图形模型的创建、更新以及删除中的每一个使用相同的编译逻辑。
[0037] 通常,控制器(如控制器装置10)使用分层数据模型用于意图、低级数据模型以及资源。分层数据模型可以基于YANG或YAML。分层数据模型可以表示为图形,如上所述。现代
系统支持意图以简化网络的管理。意图是声明性的。为了实现意图,控制器装置10尝试选择
最佳资源。
[0038] 通常,客户环境被配置为允许客户(例如,管理员12)控制意图实现并确保编程意图。本公开的技术支持客户需求以近乎实时地支持服务水平协议(SLA)。以这种方式,客户
的业务将不会受到意图实现的负面影响。如果用于有状态意图的资源降级(例如,在相应装
置上不可达、高度利用或其他问题),则控制器装置10可以选择适当的资源以近乎实时地生
成期望的配置。
[0039] 本公开描述了控制器装置10可以近乎实时地支持SLA的技术。例如,控制器装置10可以支持并发意图供应。控制器装置10可以使用增强的资源匹配过滤器来包括和排除某些
系统资源。控制器装置10还可以在管理业务SLA的同时将网络维护在一致状态。控制器装置
10还可以支持并发无状态意图供应。即,控制器装置10可以支持并发意图更新,而不使其他
意图改变无效。控制器装置10还可以支持意图图形的当前版本,直到已经部署了修改的改
变为止。
[0040] 2018年9月7日提交的题为“DYNAMIC INTENT ASSURANCE AND PROGRAMMABILITY IN COMPUTER NETWORKS”并且其全部内容通过引用结合于此的美国申请号16/125,245描述
资源过滤器查询语义如下:
[0041]
[0042]
[0043] 由此,控制器装置10可以导出决策变量、目标以及约束。控制器装置10可以增强查询以支持扩展的资源和包括的资源,例如,如下所示:
[0044]
[0045] 排除的列表可以成为对资源选择优化算法的约束,而包括的列表也可以成为对资源选择优化算法的约束。在上面的示例中,约束包括对定义为“不在{d1,d2}中”且“在{d3}
中”的资源的限制。
[0046] 图2是示出用于图1的控制器装置10的一组示例组件的框图。在该示例中,控制器装置10包括控制单元22、网络接口34以及用户接口36。网络接口34表示可以将网络装置20
通信地耦接到外部装置(例如,图1的元素14中的一个)的示例接口。网络接口34可以表示无
线和/或有线接口,例如,被配置为根据无线标准进行通信的以太网接口或无线无线电,例
如IEEE 802.11无线联网协议中的一个或多个(例如802.11a/b/g/n或其他这样的无线协
议)。在各种示例中控制器装置10可以包括多个网络接口,尽管出于示例的目的仅示出了一
个网络接口。
[0047] 控制单元22表示用于实现归属于控制单元22及其组成模块和元素的功能的硬件、软件和/或固件的任何组合。当控制单元22包括软件或固件时,控制单元22还包括用于存储
和执行软件或固件的任何必要硬件,例如一个或多个处理器或处理单元。通常,处理单元可
以包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门
阵列(FPGA)或任何其他等效的集成或离散逻辑电路,以及这些组件的任何组合。此外,处理
单元通常使用固定和/或可编程逻辑电路来实现。
[0048] 用户接口36表示一个或多个接口,诸如管理员12(图1)的用户通过该接口与控制器装置10交互,例如,以提供输入和接收输出。例如,用户接口36可以表示监视器、键盘、鼠
标、触摸屏、触摸板、触控板、扬声器、相机、麦克风等中的一个或多个。此外,尽管在该示例
中控制器装置10包括用户接口,但是管理员12不需要直接与控制器装置10交互,而是可以
远程地,例如,经由网络接口34访问控制器装置10。
[0049] 在该示例中,控制单元22包括用户接口模块38、网络接口模块32以及管理模块24。控制单元22执行用户接口模块38以从用户接口36接收输入和/或向用户界面36提供输出。
控制单元22还执行网络接口模块32以经由网络接口34发送和接收数据(例如,分组)。用户
接口模块38、网络接口模块32以及管理模块24可以再次实现为各自的硬件单元,或者以软
件或固件或其组合实现。
[0050] 控制单元22的功能可以实现为固定或可编程数字逻辑电路中的一个或多个处理单元。这种数字逻辑电路可以包括一个或多个微处理器、数字信号处理器(DSP)、专用集成
电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效的集成或离散逻辑电路,以及这些
组件的任何组合。当被实现为可编程逻辑电路时,控制单元22还可以包括一个或多个计算
机可读存储介质,该计算机可读存储介质存储将由控制单元22的处理单元执行的硬件或固
件指令。
[0051] 控制单元22执行管理模块24以管理各种网络装置,例如,图1的元素14。管理包括,例如,根据从用户(例如,图1的管理员12)接收的指令配置网络装置,并且向用户提供提交
配置网络装置的指令的能力。在该示例中,管理模块24还包括配置模块26和转换模块28。
[0052] 管理模块24被配置为从诸如管理员12的用户接收用于一组受管理网络装置的意图统一图形建模的配置数据。这种意图统一图形建模的配置数据可以被称为“意图数据模
型”。随着时间的推移,用户可以更新配置数据,例如,以添加新服务、移除现有的服务或修
改由受管理装置执行的现有的服务。统一意图数据模型可以根据例如YANG或YAML来构造。
图形模型可以包括以分层方式由边线连接的多个顶点。在YANG中,图形模型的边线通过
“leafref”元素表示。在YAML的情况下,这样的边线可以用“参考”边线表示。类似地,父顶点
到子顶点的关系可以用“具有”边线表示。例如,用于元素A的顶点指的是用于使用具有‑边
线的元素B的顶点,可以理解为意味着“元素A具有元素B”。在一些示例中,管理模块24还向
用户提供提交转换模块28执行的反应式映射器以将意图数据模型转换为装置特定的、低级
配置指令的能力。
[0053] 控制器装置10还包括配置数据库40。配置数据库40通常包括描述受管理网络装置(例如元素14)的信息。配置数据库40可以用作意图数据存储,其可以用于持久化和管理意
图数据模型的集合。例如,配置数据库40可以包括指示装置标识符(例如MAC和/或IP地址)、
装置类型、装置供应商、装置种类(例如路由器、交换机、网桥、集线器等)等的信息。配置数
据库40还存储用于受管理装置(例如,元素14)的当前配置信息(例如,意图数据模型,或者
在一些情况下,意图数据模型和低级配置信息两者)。根据本公开的技术,配置数据库40可
以包括统一意图数据模型。
[0054] 转换模块28基于配置数据库40的信息,例如,哪个装置将接收低级配置指令,确定在意图数据模型上执行哪个反应式映射器30。然后,转换模块28执行反应式映射器30的每
个确定的反应式映射器,向反应式映射器提供意图数据模型作为输入并且接收低级配置指
令。转换模块28也可以被称为意图编译器,其是包含一组映射器(例如反应式映射器30)的
服务。
[0055] 配置模块26可以首先确定用于由要更新其配置的装置执行的每个服务的现有意图数据模型,例如,通过从配置数据库40检索用于每个服务的意图数据模型。然后,配置模
块26可以将现有的意图数据模型(在此也称为已部署的图形模型)与新接收的意图数据模
型进行比较,并且确定现有的意图数据模型与新接收的意图数据模型(也称为未部署的图
形模型)之间的差异。然后配置模块26可以将这些改变添加到编译器流,并且然后反应式映
射器30可以将这些改变转换为低级配置信息。该改变可以包括在改变集中,该改变集可以
是包含意图图形顶点和相应的版本标识符的列表。管理模块24可以使用改变集来跟踪在意
图更新中改变的顶点的列表。在已经提交意图之后,管理模块24可以使用改变集来更新意
图图形模型中的顶点状态。配置模块26还基于新接收的意图数据模型更新记录在配置数据
库40中的现有的意图数据模型。
[0056] 在一些示例中,执行更新转换(即,将使更新的统一意图数据模型中的改变转换为低级配置信息的值,而不创建或删除低级配置数据中的元素)的反应式映射器30可以如下
操作。在一个示例中,执行更新的反应式映射器30可以覆盖单个元素。即,这些反应式映射
器的性能可以导致元素值的删除,例如,通过用新值替换旧元素值。有时,配置服务模型中
的单个值可以映射到装置配置中的列表。在这些情况下,转换模块28可以发送旧值以及新
值。
[0057] 转换模块28(其可以根据反应式映射器30配置)可以使用相同的反应式映射器用于意图数据模型顶点的创建、更新以及删除。因为每个顶点都有自己的相应的反应式映射
器,所以可以并行执行编译。即,表示统一意图数据模型的图形模型的每个顶点的反应式映
射器可以并行执行,从而实现并行编译。转换模块28可以被配置为仅允许处理受影响的意
图数据模型数据改变(即,意图数据模型中受改变影响的那些元素)。基于反应式映射器30,
转换模块28可以推断意图数据模型中的跨顶点的依赖性。当意图数据模型改变时,转换模
块28可以基于依赖图形在编译器流中发布消息,如上所述。
[0058] 当上载“创建”模板(即,相对于现有的意图数据模型配置信息,处理意图数据模型配置信息中的新数据的反应式映射器30的反应式映射器)时,转换模块28可以使用依赖图
形确定依赖性。当服务改变时,转换模块28可以基于依赖性生成现有的意图数据模型配置
信息和新意图数据模型配置信息之间的差异。然后,转换模块28可以使用反应式映射器30
的反应式映射器来处理差异,并且从而将意图数据模型配置信息转换为低级配置指令。然
后,转换模块28可以向配置模块26提供低级配置指令。
[0059] 在从转换模块28接收到低级配置指令之后,配置模块28经由网络接口模块32将低级配置指令发送到要更新其配置的各自的受管理网络装置。网络接口模块32将低级配置指
令传递到网络接口34。网络接口34将低级配置指令转发到各自的网络装置。
[0060] 尽管为了示例的目的,用户接口36被描述为允许管理员12(图1)与控制器装置10交互,但是在其他示例中也可以使用其他接口。例如,控制器装置10可以包括可用作到另一
装置的接口的代表性状态转移(REST)客户端(未示出),管理员12可以通过该客户端配置控
制器装置10。同样地,管理员12可以通过经由REST客户端与控制器装置10交互来配置元素
14。
[0061] 管理模块24可以将配置数据库40建模为表示YANG配置数据元素的图形数据库。YANG指定了各种类型的数据结构,包括列表、叶子列表(leaflist)、容器、具有存在的容器
以及特性。管理模块24可以将列表、容器、具有存在的容器和特性以及顶级容器中的每一个
建模为图形数据库中的顶点。可选地,配置数据库40可以表示YAML配置数据元素。
[0062] 在构建图形数据库之后,管理模块24可以对图形数据库的数据执行操作。例如,管理模块24可以将诸如获得‑配置(get‑config)、具有过滤器的获得‑配置以及编辑‑配置
(edit‑config)的基于Netconf的操作映射到诸如Gremlin查询的图形查询语言查询。
Gremlin在gremlindocs.spmallette.documentup.com的GremlinDocs中和github.com/
tinkerpop/gremlin/wiki中描述。如果条件属性改变,则管理模块24可以执行映射到图形
数据库的顶点和边线的条件。响应于这些条件,管理模块24可以处理附加改变,这些改变根
据下面更详细的讨论来处理。管理模块24还可以更新交易语义中的所有改变。
[0063] 根据本公开的技术,管理模块24维护配置数据库40以表示当前的一组无状态意图,根据这组无状态意图配置元素14(图1)。如上所述,配置数据库40可以包括无状态意图
的图形模型。然后,控制器装置10可以经由用户接口模块38和用户接口36从用户(例如,图1
的管理员12中的一个)接收一个或多个新意图。管理模块24可以确定用于配置数据库40的
任何现有的有状态意图的一个或多个资源是否降级。
[0064] 当一个或多个资源降级(并且因此,有状态意图降级)时,管理模块24可以确定要分配给降级的有状态意图的新资源。该资源可以对应于配置数据库40的图形模型的顶点。
例如,顶点可以表示装置或服务,例如元素14或由元素14提供的服务。
[0065] 在确定要使用哪些资源之后,管理模块24可以使用所确定的资源供应有状态意图。管理模块24还可以确定供应是否成功。转换模块28可以将供应成功的那些有状态意图
编译成用于一个或多个元素14的低级配置数据。然后,配置模块26可以使用低级配置数据
配置元素14。
[0066] 管理模块24可以确定用于供应那些尝试的供应未成功的意图的解决方法。例如,如下面关于图5和图6的流程图更详细地解释的,管理模块24可以确定供应失败是由于语义
失败还是不可达资源(即,诸如元素14的网络元素不可达)。如果失败是由于不可达的新资
源,则管理模块24可以通过将资源包括在排除列表中来获得新资源并供应网络。如果失败
是由于现有的资源不可达,则管理模块24可以保持旧资源列表并供应网络。对于语义失败,
管理模块24可以取消有状态意图,并且经由用户接口模块38向用户接口36输出表示用于相
应的有状态意图的语义失败的警报。失败的语义意图可以被否定,并且这种意图可以被称
为否定的意图,表示对意图数据模型的改变以使意图改变无效。例如,如果进行了意图改变
以检测通信流并且触发两个失败的网络站点之间的GRE/IPSEC隧道,则否定的意图可以是
移除两个网络站点之间的隧道。
[0067] 另外,控制器装置10可以确定配置数据库40的图形模型的一个或多个无状态意图是否已经改变。如上所述,无状态意图可以对应于例如图1的网络2的预期的状态的完全声
明性描述,包括网络装置(例如,元素14)、网络装置中的一个或多个的状态和/或用于网络
的存储的状态。
[0068] 通常,业务策略改变依赖于无状态意图层中的原子性、一致性、隔离性以及耐久性。原子性指的是正在提交的所有装置改变,或者没有提交任何改变。一致性意味着提交给
装置的配置应该有效。跨装置的最终一致性是足够的,因为控制器装置10已经为意图视图
提供了强一致性。意图数据模型处的交易隔离支持并发意图更新。意图数据模型的耐久性
也很重要。
[0069] 默认情况下提供原子性,因为管理模块24使网络2进入一致状态。无状态意图层可以包括作为幂等的应用程序编程接口(API),因为在初始部署中,改变可能不会提交到某些
端点上。Netconf支持可用于实现幂等性的合并和移除操作。
[0070] 根据本公开的技术,控制器装置10可以确保提交到元素14的配置数据是有效的。跨元素14提供最终一致性,因为控制器装置10为意图视图提供强一致性。意图数据存储(例
如,配置数据库40)提供强一致性。当编辑意图数据模型时,仅改变不足以用于转换。因此,
控制器装置10可以使用依赖意图数据模型来转换改变。如果并发编辑依赖意图数据模型,
则意图改变可能会覆盖其他意图改变。控制器装置10可以被配置为确保一个意图改变不会
覆盖另一意图改变。这可以通过上面讨论的全局意图版本来实现。即,全局意图版本表示用
于生成低级模型资源的意图图形的版本。这与低级模型资源一起维护。如果新生成的低级
模型版本小于低级模型上的版本,则控制器装置10可以重新运行转换模块28。
[0071] 包括在配置数据库40中的意图数据存储提供跨转换的意图数据模型的隔离。同样地,包括在配置数据库40中的意图数据存储也提供耐久性。
[0072] 通常,管理模块24可以在配置数据库40中维护图形模型的两个版本。管理模块24可以维护对应于当前的部署到元素14的配置数据的已部署的图形模型,以及包括表示改变
的无状态意图(例如,相对于已部署的图形模型,添加或更新的无状态意图,以及省略删除
的无状态意图)的数据的未部署的图形模型两者。另外,管理模块24可以维护用于每个完整
图形模型的版本值,以及用于图形模型内的各个顶点的版本值。全局意图版本表示用于编
译到低级模型的意图的版本,并且时间戳可以用作全局意图版本。
[0073] 管理模块24还可以维护抽象配置模型,该抽象配置模型表示用于意图转换的装置的通用、低级模型。管理模块24还可以维护意图依赖信息,该意图依赖信息表示保存在抽象
配置模型中的参考信息,其表示通过抽象配置模型生成的意图。
[0074] 如下面更详细地讨论的,为了维护各种版本值,管理模块24可以维护快照表,该快照表包括用于图形模型的顶点的通用唯一标识符(UUID)。管理模块可以将用于未部署的图
形模型的新创建的顶点的状态设置为“创建”状态。管理模块可以将用于未部署的图形模型
的更新顶点的状态设置为“更新”状态。管理模块可以将用于未部署的图形模型的已删除顶
点的状态设置为“删除”状态。
[0075] 管理模块24可以使转换模块28编译未部署的图形模型的改变的无状态意图,以生成用于网络装置(例如,元素14)的低级配置数据。通常,转换模块28可以编译两个或更多并
发改变的无状态意图,这些意图不会并发(例如,并行)彼此冲突,并且可以防止改变的无状
态意图彼此无效。同样地,转换模块28还可以转换依赖于图形模型中改变的无状态意图的
任何依赖无状态意图,如依赖图形所示。
[0076] 然后,配置模块26可以通过经由网络接口模块32和网络接口34将配置数据分发到各自的元素14来使用低级配置数据配置元素14。在部署低级配置数据之后,管理模块24可
以用未部署的图形模型替换配置数据库40的已部署的图形模型,并且然后当接收到新的意
图改变时更新未部署的图形模型。
[0077] 控制器装置10可以使用抽象模型作为公共低级模型。抽象模型是供应商不可知模型。在openconfig.net和github.com/openconfig中描述的OpenConfig通常用作供应商不
可知模型,用YANG表示。控制器装置10可以使用对供应商不可知模型的扩展来表示资源,包
括诸如以下示例中的属性:
[0078]
[0079]
[0080] 为了扩展业务策略,用户(例如,管理员12中的一个)可以对资源收集器进行编程。为了扩展无状态意图数据模型,用户可以增大意图数据模型并增大编译逻辑(例如,反应式
映射器30中的一个)。
[0081] 为了增大意图数据模型,在YANG的情况下,用户可以编写新的YANG子模块。这可以引入新的图形顶点和到顶点的关联。为了添加新的参考,用户可以添加顶点并将参考‑边线
关联添加到现有的顶点中的一个或多个。YAML模型可以遵循类似的方法。
[0082] 如上所述,用户还可以用交易支持增大编译逻辑。编译逻辑可以实现为反应式映射器30的集合。每个反应式映射器可以采用全局版本标识符值。每个反应式映射器通常可
以执行以下操作:读取低级资源并检查现有的资源全局_版本(global_version)是否大于
全局版本。如果现有的资源版本大于全局版本,则重试,否则,更新低级资源和版本。用于更
新低级资源的示例REST API是“POST:http://127.0.0.1:8084/ems‑central/vlan/1234?
intent_global_version=1234”。
[0083] 管理模块24可以例如在更新元素14的配置之后用部署回复消息来记录意图部署。以下是示例部署回复消息:
[0084]
[0085]
[0086] 以这种方式,控制器装置10表示管理多个网络装置并且包括一个或多个处理器的控制器装置的示例,该处理器在电路中实现并且被配置为确定用于管理多个网络装置并且
由图形模型表示的一个或多个有状态意图由于为有状态意图分配的资源已经降级而降级;
响应于确定一个或多个有状态意图被降级,确定用于有状态意图的资源,该资源对应于图
形模型的顶点;使用所确定的资源供应有状态意图;确定有状态意图的供应是否成功;将成
功的有状态意图中的至少一个有状态意图编译成用于多个网络装置中的至少一个网络装
置的低级配置数据;以及使用低级配置数据配置至少一个网络装置。
[0087] 控制器装置10还表示管理多个网络装置并且包括一个或多个处理器的控制器装置的示例,该处理器在电路中实现并且被配置为确定包括用于管理多个网络装置的第一组
无状态意图的已部署的图形模型的一个或多个无状态意图已经改变,其中,无状态意图包
括对包括网络装置的网络的预期的状态、网络装置中的一个或多个的状态或用于网络的存
储状态的完全声明性描述;维护已部署的图形模型和未部署的图形模型两者,该未部署的
图形模型包括第二组无状态意图,该第二组无状态意图包括一个或多个改变的无状态意
图;编译未部署的图形模型的改变的无状态意图,以生成用于网络装置的低级配置数据;以
及使用低级配置数据配置网络装置。
[0088] 图3是示出用于意图数据模型的示例统一图形模型60的概念图。在该示例中,统一图形模型60包括节点A 62、节点B 64以及节点C 66等。最初,统一图形模型可以不包括VPN 
68、VPN 72以及VPN 78,也可以不包括光学1 80、LAMBDA 82、光学1 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之间添加附加
的节点光学1 80、LAMBDA 82、光学1 84以及LAMBDA 86。
[0089] 有状态业务策略可以写在无状态意图层的上面。例如,用户可以声明“在站点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。
[0090] 当实现有状态意图时,诸如控制器装置10的控制器装置可能需要考虑跨端点的现有的无状态意图以及当前状态。在上述示例中,为了执行各种意图,控制器装置10可以根据
需要查询连接图形(包括无状态意图),并且创建/修改无状态意图。在2017年3月17日提交
的美国申请号15/462,465中描述了关于使用统一图形模型和意图的技术,该申请的全部内
容通过引用结合于此。因此,可以使用统一图形模型表示意图数据模型。当添加更多用例
时,可以扩展意图数据模型(即,统一图形模型)。此外,统一图形模型的使用允许基于端点
(例如,通过查询图形)检索意图。
[0091] 图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实现。
[0092] 通常,业务策略分析器104管理有状态意图。业务策略分析器104与保证模块106通信以获取用于有状态意图的资源。业务策略分析器104还调用意图层112以供应无状态意
图。本公开的技术可用于确保业务策略被近乎实时地转换到网络,以防止对SLA的负面影
响。意图编译器114可以被配置为并发编译意图。在2019年2月21日提交的美国申请号16/
282,160“SUPPORTING COMPILATION AND EXTENSIBILITY ON UNIFIED GRAPH BASED 
INTENT MODELS”中描述了关于意图的并行、并发编译的附加的细节,该申请的全部内容通
过引用结合于此。
[0093] 当业务策略(即,有状态意图)降级时,业务策略分析器104可以确定适当的资源以解决降级的意图并调用意图基础设施110以供应意图。当意图实现失败时,业务策略分析器
104可以确定针对失败的解决方法。例如,如果失败与新资源相关,则业务策略分析器104可
以更新一组排除的资源,获得新资源,并且供应网络。如果失败与新资源无关,但是因为现
有的网络元素,并且现有的网络元素不可达,则业务策略分析器104可以确定保持旧资源并
供应网络。如果失败是由于语义失败,则业务策略分析器104可以提交否定的意图,供应网
络,并发出表示语义失败的警报。
[0094] 因此,通常,业务策略分析器104确保在意图数据模型改变中不存在冲突的改变。在确保不存在冲突的改变之后,业务策略分析器104向意图基础设施110提交意图数据模型
改变。当提交无状态意图改变时,意图基础设施110可以创建保持更新(例如,创建、更新或
删除)的顶点集和相应的版本标识符的改变集。意图基础设施110还在意图数据库118中维
护已部署的意图数据模型和未部署的意图数据模型两者。意图基础设施110触发意图编译
器114以执行改变集中的受影响顶点的转换器。
[0095] 转换可以是异步的,并且因此,意图基础设施110可以通过全局意图版本的使用确保意图改变不会覆盖其他意图改变。全局意图版本表示生成低级模型资源的意图图形的版
本。意图基础设施110例如在配置数据库120中维护已部署的图形模型的全局意图版本以及
低级模型资源。如果新生成的低级模型全局意图版本小于低级模型上的全局版本,则意图
基础设施110可以重新运行意图编译器114。如果当元素配置服务116向网络提交低级配置
数据时存在任何失败,则意图基础设施110可以向表示失败的业务策略分析器104提供数
据。
[0096] 为了支持更新,意图基础设施110支持意图数据模型(诸如已部署的意图数据模型和未部署的意图数据模型)的版本化。每次改变维护一个完整图形的版本将序列化意图改
变。因此,意图基础设施110在同一图形内维护已部署的意图数据模型和未部署的意图数据
模型,包括分别已部署的顶点和未部署的顶点。每个顶点包含一个状态和一个版本‑id。意
图基础设施110可以设置对应于意图改变的顶点的状态值,以表示“已创建”、“已更新”或
“已删除”的状态。意图基础设施110还可以设置状态值以表示一旦顶点已经被部署之后的
“部署”,如下所述。
[0097] 意图基础设施110可以在同一图形内维护更新的顶点。如上所述,意图基础设施110可以维护快照表,该快照表包含通用唯一标识符(UUID)和对应更新的顶点的旧版本的
列表。
[0098] 当创建顶点时,意图基础设施110将创建的顶点的状态值设置为表示“已创建”状态的值。在将顶点部署到网络之后,意图基础设施110更新状态值以表示“已部署”状态。
[0099] 当更新顶点时,意图基础设施110将更新的顶点的状态值设置为表示“已更新”状态的值。在将顶点部署到网络之后,意图基础设施110更新状态值以表示“已部署”状态。
[0100] 当删除顶点时,意图基础设施110将创建的顶点的状态值设置为表示“已删除”状态的值。在将更新部署到网络之后,意图基础设施110从图中移除已删除的顶点。
[0101] 下表表示示例状态转换:
[0102]
[0103] 图5是示出可以由业务策略分析器104执行的用于解决意图更新的失败的示例方法的流程图。最初,业务策略分析器104可以从用户接收业务策略更新(150)。可选地,业务
策略分析器104可以从保证模块106接收降级通知(151)。在任一情况下,业务策略分析器
104为现有的意图保存旧资源(152)。业务策略分析器104还从资源管理器确定用于意图(例
如,资源被降级的新意图或现有的意图)的新资源(154),并供应新资源。
[0104] 然后,业务策略分析器104可以生成无状态意图更新并调用意图基础设施110(156)。这可以使意图基础设施110使用意图编译器114来转换意图改变并更新意图数据库
118。此外,元素配置服务116可以分发低级配置数据更新和更新配置数据库120。
[0105] 如果存在任何意图实现失败,则业务策略分析器104可以确定失败并尝试解决失败。具体地,业务策略分析器104可以对于语义失败发出警报(158),其可以包括向表示语义
失败的用户发送消息。对于其他失败,业务策略分析器104可以确定失败是否是由于不可达
的网络资源(例如,元素14)(160)。如果失败是由于新网络资源不可达(160的“是”分支),则
业务策略分析器104可以更新一组排除的资源,获得新资源(154),然后再次生成无状态意
图更新并调用意图基础设施110(156)。否则,如果失败与新资源无关,但是因为现有的网络
元素,并且现有的网络元素不可达(160的“否”分支),则业务策略分析器104可以确定保持
旧资源,然后再次生成无状态意图更新并调用意图基础设施110(162)。
[0106] 图6是示出根据本公开的技术的用于并发无状态意图供应的示例方法的流程图。图6的方法可以由例如图1和图2的控制器装置10执行。
[0107] 最初,控制器装置10可以例如从应用程序接收意图改变(180)。管理模块24可以将已部署的图形模型和未部署的图形模型之间的差异(即,意图之间的差异)维护为配置数据
库40中的快照表(182)。管理模块24可以读取全局意图版本,其中,创建全局意图时的当前
时间的时间戳可以表示版本值(184)。
[0108] 转换模块28可以读取所有依赖顶点改变并生成低级模型(LLM)(186)。
[0109] 管理模块24可以确定全局意图版本是否大于LLM现有全局版本(188)。如果全局意图版本大于LLM现有全局版本(188的“是”分支),则配置模块26可以更新LLM对象(190)。如
果全局意图版本不小于LLM现有全局版本(188的“否”分支),则管理模块24可以再次读取全
局意图版本(184)并重新运行转换模块28并继续。配置模块26还可以根据LLM对象生成本机
配置数据,并将本机配置数据(192)提交到元素14。
[0110] 管理模块24还可以确定提交是否成功(194)。如果提交不成功(194的“否”分支),则管理模块24可以向应用程序输出失败指示(196)。否则,如果提交成功(194的“是”分支),
则管理模块24可以用先前未部署的意图数据模型更新已部署的意图数据模型,更新快照,
并等待新意图。
[0111] 图7是示出意图改变之后的示例未部署的意图图形200的图。在该示例中,未部署的意图图形200包括轮辐站点1顶点202、装置1顶点204、终止点1(TP1)顶点206、集线器站点
顶点208、装置2顶点210、TP2顶点212、GRE链路1顶点214、GRE链路2顶点216、TP2顶点218以
及VPN顶点220。
[0112] 通常,已部署的意图图形(未示出)和未部署的意图图形200可以对应于SD‑WAN。SD‑WAN具有例如由轮辐站点1顶点202和集线器站点208表示的站点对象。这些站点可以经
由集线器和轮辐或全网状连接。在本例中,这些站点用GRE覆盖连接,并且可选地可以启用
IPSEC。跨站点也可以存在WAN底层链路。
[0113] 在另一示例中,可以创建GRE隧道。因此,转换模块28可以执行名为“compile_gre_link”的转换器。可用资源可以包括站点、GRE链路、GRE终止点、IPSEC链路和终止点以及对
等站点终止点。转换模块28可以输出抽象配置和相应的本机配置,例如,如下:
[0114] 设置组
[0115] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0security zones security‑zone trust tcp‑rst
[0116] 设置组
[0117] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0security zones security‑zone trust
[0118] 主机‑入站‑流量系统‑所有服务(host‑inbound‑traffic system‑servicesall)
[0119] 设置组
[0120] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0security zones security‑zone trust
[0121] 主机‑入站‑所有流量协议(host‑inbound‑traffic protocols all)
[0122] 设置组
[0123] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0security zones security‑zone trust interfaces gr‑0/0/0.4001
[0124] 设置组
[0125] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0interfaces gr‑0/0/0unit 4001tunnel source172.30.48.3
[0126] 设置组
[0127] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0interfaces gr‑0/0/0unit 4001tunnel destination172.30.48.5
[0128] 设置组
[0129] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0interfaces gr‑0/0/0unit 4001family inet
[0130] 地址10.0.48.1/31
[0131] 设置组
[0132] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0interfaces gr‑0/0/0unit 4001family mpls
[0133] 设置组
[0134] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0interfaces gr‑0/0/0unit 4001tunnel
[0135] 路由‑实例目的地传输(routing‑instance destination transit)
[0136] 设置组
[0137] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0protocols oam gre‑tunnel interface gr‑0/0/0.4001keepalive‑time 1
[0138] 设置组
[0139] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0protocols oam gre‑tunnel interface
[0140] gr‑0/0/0.4001hold‑time 5
[0141] 设置组
[0142] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0routing‑instances transit interface
[0143] gr‑0/0/0.4001
[0144] 设置应用‑组(set apply‑groups)
[0145] green_green‑SpkVsrx1_WAN_2_green‑SpkVsrx2_WAN_2_GRE_IPSEC_0
[0146] 此外,根据上面的示例,可以使用动态VPN,其中,动态VPN表示仅当流量开始流动时在站点之间创建的隧道。在全网状拓扑中,流量可以在站点1和站点2之间开始,该站点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链路。
[0147] 因此,相应的已部署的意图图形可以省略GRE链路1顶点214并且具有不同版本的VPN顶点220。即,GRE链路1顶点214可以相对于已部署的意图图形(对应于示例已创建的GRE
隧道)被添加,并且VPN顶点214可以相对于已部署的意图图形被修改。此外,GRE链路2顶点
216可以从已部署的意图图形中删除。相应地,控制器装置10的管理模块24可以将用于GRE
链路1214的状态设置为“已创建”,将用于VPN顶点220的状态设置为“已更新”,并且将用于
GRE链路2顶点216的状态设置为“已删除”。在基于未部署的意图图形200将配置数据部署到
网络之后,管理模块24可以将用于GRE链路1214和VPN顶点220的状态设置为“已部署”,并且
从图形中删除GRE链路2顶点216。
[0148] 如果对应于装置1顶点204(“d1”)或装置2顶点210(“d2”)的装置中的任何一个或两个不可达,则可能导致失败。如果d1和/或d2中的任何一个或两个不可达,则控制器装置
10将移除站点1和站点2之间的链路(例如,站点1WAN‑0<‑>站点2WAN‑0)。
[0149] 在该示例中,可以为站点1和站点2之间的链路维护交易。为了实现这一点,控制器装置10将不允许在集线器和轮辐拓扑中进行编辑,或者不应编辑VPN网络(部)。如果VPN被
更新,则传统技术将影响业务策略SLA。
[0150] 以下是用于上述示例用例的IPSEC的示例反应式映射器:
[0151]
[0152]
[0153] 图8是示出根据本公开的技术的配置网络装置的示例方法的流程图。图8的方法关于图1和图2的控制器装置10进行说明,尽管其他装置(例如,符合图4的模型100)可以被配
置为执行该方法或类似方法。
[0154] 管理模块24可以在配置数据库40中维护已部署的图形模型。如上所述,已部署的图形模型包括由边线连接的顶点的图形,其中,顶点可以对应于诸如装置、连接、服务等的
网络资源。已部署的图形模型可以表示一组现有的有状态意图。
[0155] 然后,管理模块24可以接收用于一个或多个意图的资源被降级的指示(221)。管理模块24可以确定由于降级的资源而变为降级的任何现有的有状态意图(222)。
[0156] 管理模块24还可以确定用于有状态意图的新资源(224)。然后,管理模块24使用所确定的资源供应有状态意图(226)。
[0157] 然后,管理模块24可以确定供应是否成功(228)。管理模块24可以确定用于失败供应的解决方法(230),例如,如上面关于图5所讨论的。例如,对于语义失败,管理模块24可以
发出警报。作为另一示例,对于不可达网络资源,管理模块24可以更新排除列表并获得新资
源。
[0158] 管理模块24可以使转换模块28将成功的有状态意图编译成低级模型(232)。具体地,转换模块28可以确定未部署的图形模型中的顶点的版本是否匹配相应的改变集版本,
并且如果不匹配,则执行相应的反应式映射器以编译相应的改变集的元素。管理模块24还
可以使配置模块26使用低级模型配置元素14(234)。在根据得到的低级模型配置元素14之
后,管理模块24可以将已部署的图形模型更新为未部署的图形模型,并且等待有状态意图。
[0159] 以这种方式,图8的方法表示一种方法的示例,该方法包括由管理多个网络装置的控制器装置确定用于管理多个网络装置并且由图形模型表示的一个或多个有状态意图由
于为有状态意图分配的资源已经降级而降级;响应于确定一个或多个有状态意图被降级,
由控制器装置确定用于有状态意图的资源,该资源对应于图形模型的顶点;由控制器装置
使用所确定的资源供应有状态意图;由控制器装置确定有状态意图的供应是否成功;由控
制器装置将成功的有状态意图中的至少一个有状态意图编译成用于多个网络装置中的至
少一个网络装置的低级配置数据;以及由控制器装置使用低级配置数据配置至少一个网络
装置。
[0160] 图9是表示根据本公开的技术的配置网络装置的另一方法的示例的流程图。图9的方法关于图1和图2的控制器装置10进行说明,尽管其他装置(例如,符合图4的模型100)可
以被配置为执行该方法或类似方法。
[0161] 如上所述,管理模块24可以在配置数据库40中维护已部署的图形模型。如上所述,已部署的图形模型包括由边线连接的顶点的图形,其中,顶点可以对应于诸如装置、连接、
服务等的网络资源。已部署的图形模型可以表示一组现有的无状态意图。
[0162] 管理模块24可以接收新的无状态意图并确定关于现有的无状态意图的改变的无状态意图(250)。管理模块24可以维护表示当前已部署的无状态意图的已部署的图形模型
以及表示新的无状态意图的未部署图形模型两者(252)。管理模块24可以使用如上所述的
快照表设置未部署图形模型中的顶点的状态(254)。例如,管理模块24可以将用于未部署的
图形模型的创建的顶点的状态设置为表示“创建”状态的值,将用于关于已部署的图形模型
的更新的顶点的值设置为表示“更新”状态的值,以及将用于关于已部署的图形模型的删除
的顶点的值设置为表示“删除”状态的值。管理模块24还可以设置用于顶点的版本值(256)。
[0163] 然后,管理模块24可以使转换模块28将改变的无状态意图编译成低级模型(258)。管理模块24还可以使配置单元26使用低级模型(260)配置元素14(即,网络装置)。
[0164] 以这种方式,图9的方法表示一种方法的示例,该方法包括由管理多个网络装置的控制器装置确定包括用于管理多个网络装置的第一组无状态意图的已部署的图形模型的
一个或多个无状态意图已经改变,其中,无状态意图包括对包括网络装置的网络的预期状
态、网络装置中的一个或多个的状态或用于网络的存储状态的完全声明性描述;由控制器
装置维护已部署的图形模型和未部署的图形模型两者,该未部署的图形模型包括第二组无
状态意图,该第二组无状态意图包括一个或多个改变的无状态意图;由控制器装置编译未
部署的图形模型的改变的无状态意图,以生成用于网络装置的低级配置数据;以及由控制
器装置使用低级配置数据配置网络装置。
[0165] 本公开中所描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,所描述技术的各个方面可以在一个或多个处理器内实现,该处理器包括一个或多个
微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何
其他等效集成或离散逻辑电路,以及这些组件的任何组合。术语“处理器”或“处理电路”通
常可以指任何前述逻辑电路,单独地或与其他逻辑电路或任何其他等效电路组合。包括硬
件的控制单元还可以执行本公开的一个或多个技术。
[0166] 这样的硬件、软件以及固件可以在相同的装置内或者在单独的装置内实现,以支持本公开中描述的各种操作和功能。此外,任何所描述的单元、模块或组件可以一起或单独
地实现为离散但可互操作的逻辑装置。将不同特性描述为模块或单元旨在突出不同的功能
方面,并且不一定意味着这些模块或单元必须通过单独的硬件或软件组件实现。相反,与一
个或多个模块或单元相关联的功能可以由单独的硬件或软件组件执行,或者在共同或单独
的硬件或软件组件内集成。
[0167] 本公开中描述的技术还可以在包含指令的诸如计算机可读存储介质的计算机可读介质中实现或编码。嵌入或编码在计算机可读介质中的指令可以使可编程处理器或其他
处理器执行该方法,例如,当指令被执行时。计算机可读介质可以包括非暂时性计算机可读
存储介质和瞬态通信介质。有形并且非暂时性的计算机可读存储介质可以包括随机存取存
储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器
(EPROM)、电子可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD‑ROM、软盘、盒式磁带、磁
介质、光学介质或其他计算机可读存储介质。术语“计算机可读存储介质”指的是物理存储
介质,而不是信号、载波或其他瞬态介质。
[0168] 已经描述了各种示例。这些和其他示例在所附权利要求的范围内。