控制器设备及用于该控制器设备的方法和系统与流程

文档序号:32694154发布日期:2022-12-27 20:23阅读:37来源:国知局
控制器设备及用于该控制器设备的方法和系统与流程
控制器设备及用于该控制器设备的方法和系统
1.相关申请的交叉引用
2.本技术要求于2021年9月30日提交的美国专利申请第17/449601号的权益,其要求于2021年6月24日提交的印度临时专利申请第202141028381号的权益。这些申请中的每个申请的全部内容通过引用结合于此。
技术领域
3.本发明涉及计算机网络,并且更具体地说,涉及网络设备的管理。


背景技术:

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


技术实现要素:

11.一般而言,本发明描述了用于管理网络设备的技术。网络管理系统(nms)设备,在此也称为控制器或控制器设备,可以被配置成实现由高级意图文件指示的预期配置。控制器可以从多个被管理的网络设备的管理员接收高级意图文件。所述预期配置可以表示由管理员管理的多个网络设备的配置,并且控制器可以处理高级意图文件以实现所述预期配置。例如,控制器可以将高级意图转换为多个低级配置,所述多个低级配置中的每个低级配置对应于所述多个网络设备中的网络设备。控制器可以将低级配置推送到多个被管理的网络设备,以便实现高级意图文件中的预期配置。由于控制器基于预期配置生成低级配置,因此控制器可以存储推送到网络设备的低级配置的备份,以便保存预期配置的记录。在某些情况下,控制器还可以存储高级意图文件的备份。
12.在一些情况下,一个或多个被管理的网络设备可以实现不是由控制器推送的低级配置所指示的配置变化。这些配置变化可以称为“带外(out-of-band)”配置变化,因为控制器不会导致配置变化。带外配置变化有时与高级意图文件指示的预期配置不兼容。例如,网络设备处的带外配置变化可能干扰管理员管理网络设备的能力。因此,控制器确定带外配置变化是否与高级意图文件所指示的预期配置兼容可能是有益的。在一些情况下,控制器可以基于对与预期配置不兼容的带外配置变化进行的确定来输出指令以改变网络设备的配置。
13.本发明的技术可以提供对具有实际应用的计算机网络的计算机相关领域的特定改进。例如,控制器可以基于高级意图生成一个或多个标记的xml路径语言(xpath)操作。这些标记的xpath操作可能表示在带外配置中要“观察”的xpath操作。当控制器确定带外配置变化与一个或多个标记的xpath操作相关联时,控制器可以确定带外配置变化与预期配置不兼容。通过生成标记的xpath操作,与不生成标记的xpath操作的系统相比,控制器可以增加检测与预期配置不兼容的带外配置变化的能力。
14.在一些示例中,控制器设备管理网络设备的集合,该控制器设备包括存储器,该存储器包括配置数据库,该配置数据库包括存储的网络设备配置的集合,其中,该存储的网络设备配置的集合中的每个存储的网络设备配置对应于网络设备的集合中的网络设备。此外,控制器设备包括处理电路,该处理电路被配置成接收与用于网络设备的集合的预期配置相对应的意图文件;从该网络设备的集合中的网络设备接收指示在网络设备处的带外配置变化的消息;以及基于与该网络设备相对应的存储的网络设备配置和该网络设备的实际配置,确定意图文件是否与带外配置变化兼容。
15.在一些示例中,一种方法包括:通过控制器设备的处理电路,接收与用于该网络设
备的集合的预期配置相对应的意图文件;通过处理电路,从网络设备的集合中的网络设备接收指示在网络设备处的带外配置变化的消息;和通过处理电路,基于与网络设备相对应的所存储的网络设备配置和该网络设备的实际配置,确定意图文件是否与带外配置变化兼容,其中,控制器设备的存储器包括:配置数据库包括存储的网络设备配置的集合,其中,所存储的网络设备配置的集合中的每个存储的网络设备配置对应于网络设备的集合中的网络设备。
16.在一些示例中,系统包括网络设备的集合;以及控制器设备,该控制器设备管理网络设备的集合,该控制器设备包括:存储器,该存储器包括配置数据库,配置数据库包括存储的网络设备配置的集合,其中,所存储的网络设备配置的集合中的每个存储的网络设备配置对应于网络设备的集合中的网络设备;以及处理电路被配置成:接收与用于网络设备的集合的预期配置相对应的意图文件;从该网络设备的集合中的网络设备接收指示在网络设备处的带外配置变化的消息;以及基于与该网络设备相对应的存储的网络设备配置和该网络设备的实际配置,确定意图文件是否与带外配置变化兼容。
17.一个或多个示例的细节在附图和下面的描述中阐述。从描述和附图以及权利要求书中,其他特征、目的和优点将是显而易见的。
附图说明
18.图1是示出根据本发明的一种或多种技术的包括使用控制器设备管理的企业网络的元件的示例的框图。
19.图2是示出根据本发明的一种或多种技术的用于图1的控制器设备的组件的示例集合的框图。
20.图3是示出根据本发明的一个或多个技术的用于处理意图以使设备实现配置的示例操作的流程图。
21.图4是示出根据本发明的一个或多个技术的用于确定带外配置变化是否使意图无效的示例操作的流程图。
具体实施方式
22.图1是示出根据本发明的一种或多种技术的包括使用控制器设备10管理的企业网络2的元件的示例的框图。企业网络2的被管理元件14a至14g(统称为“元件14”)包括经由通信链路互连以形成通信拓扑以便交换资源和信息的网络设备。元件14(也通常称为网络设备或远程网络设备)可以包括例如路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(ids)或入侵预防系统(idp)、计算设备、计算终端、打印机、其他网络设备或这些设备的组合。尽管在本发明中描述为发送、传送或以其他方式支持封包,但企业网络2可以根据由任何其他协议限定的任何其他离散数据单元来发送数据,诸如由异步传输模式(atm)协议限定的信元或由用户数据报协议(udp)限定的数据报。互连元件14的通信链路可以是物理链路(例如,光链路、铜链路等)、无线链路或其任何组合。
23.所示的企业网络2经由通信链路耦合到公共网络18(例如,互联网)。公共网络18可以包括例如一个或多个客户端计算设备。公共网络18可以提供对网络服务器、应用服务器、公共数据库、媒体服务器、终端用户设备以及其他类型的网络资源设备和内容的访问。
24.控制器设备10经由企业网络2通信地耦合到元件14。在一些示例中,控制器设备10形成设备管理系统的一部分,尽管在图1中为了示例的目的仅示出了设备管理系统的一个设备。控制器设备10可以直接或间接地耦合到各种元件14。一旦元件14被部署和激活,管理员12使用控制器设备10使用设备管理协议来管理网络设备。一个示例设备协议是简单网络管理协议(snmp),该协议允许控制器设备10遍历和修改管理信息库,该管理信息库存储每个被管理元件14内的配置数据。
25.通常,控制器设备10(也称为网络管理系统(nms)或nms设备)和元件14由企业的it组集中维护。管理员12与控制器设备10交互以远程监测和配置元件14。例如,管理员12可以从控制器设备10接收关于任何元件14的警报,查看元件14的配置数据,修改元件14的配置数据,向企业网络2添加新的网络设备,从企业网络2移除现有的网络设备,或者以其他方式操纵企业网络2和其中的网络设备。尽管针对企业网络进行了描述,但本发明的技术可应用于其他网络类型,公共和专用,包括lan、vlan、vpn等。
26.在一些示例中,管理员12使用控制器设备10或本地工作站来与元件14直接交互,例如通过telnet、安全外壳(ssh)或其他此类通信会话。即,元件14通常提供用于直接交互的接口,诸如命令行接口(cli)、基于web的接口、图形用户接口(gui)等,通过这些接口,用户可以与设备交互以直接发出基于文本的命令。例如,这些接口通常允许用户直接与设备交互,例如通过telnet、安全外壳(ssh)、超文本传输协议(http)或其他网络会话,根据限定的语法输入文本以向被管理元件提交命令。在一些示例中,用户使用控制器设备10发起与元件14中的一者(例如元件14f)的ssh会话15,以直接配置元件14f。以这种方式,用户可以直接向元件14提供用于执行的格式的命令。
27.此外,管理员12还可以创建可以由控制器设备10提交给任何元件14或所有元件14的脚本。例如,除了cli接口之外,元件14还提供用于接收根据脚本语言指定命令的脚本的接口。在某种意义上,脚本可以由控制器设备10输出,以自动调用被管理元件14上的相应远程过程调用(rpc)。脚本可以符合例如可扩展标记语言(xml)或另一数据描述语言。
28.管理员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会话。
29.控制器设备10可以被配置成接受来自管理员12的高级配置数据或意图(其可以表示为结构化的输入参数,例如,根据在bjorklund描述的又一下一代(yang)语言,“yang-a data modeling language for the network configuration protocol(netconf)”,internet engineering task force,rfc6020,2010年10月,可在tools.ietf.org/html/rfc6020中获得)。控制器设备10还可以被配置成输出相应的低级设备配置数据的集合,例
如,设备配置添加、修改和移除。
30.在一些示例中,控制器设备10可以对意图数据模型和低级设备配置模型使用yang建模。此数据可能包含跨yang实体的关系,诸如列表项和容器。在一些示例中,控制器设备10可将yang数据模型转换为数据库模型,并将yang验证转换为数据验证。
31.控制器设备10可以从管理员12接收表示关于意图数据模型的创建、更新和/或删除动作中的任何或全部的数据。控制器设备10可以被配置成对于应用于图模型的创建、更新和删除中的每一者使用相同的编译逻辑。
32.通常,像控制器设备10这样的控制器针对意图、低级数据模型和资源使用分层数据模型。分层数据模型可以基于yang或yaml。分层数据模型可以表示为图(graph),如上所述。现代系统支持简化网络管理的意图。意图是陈述性的。为了实现意图,控制器设备10尝试选择最佳资源。客户环境可以被配置成允许客户(例如,管理员12)控制意图实现并确保编程意图。在一些示例中,控制器设备10可以通过查询元件14来确定由元件14提供的资源来构造图数据模型。控制器设备10通常可配置有表示由元件14中的每个元件提供的资源类型的信息,但是可以查询元件14以确定与元件14提供的资源类型中的每个类型相匹配的资源的特定资源信息。资源的类型可以包括,例如,转发表、路由表、网络访问策略(例如,用于某些用户的访问、防火墙策略等),或其他此类资源。
33.尽管控制器设备10可以将低级配置推送到一个或多个或多个元件14,但在一些情况下,元件14也可以在没有来自控制器设备10的指令的情况下实现配置变化。在没有来自控制器设备10的指令的情况下实现的配置变化可以被称为“带外”配置变化。在一些示例中,控制器设备10可以执行使用遥测数据对意图进行闭环验证的应用,以便确定意图是否因带外配置变化而无效。但是,在某些配置资源(如防火墙策略)的情况下,这样的遥测数据可能不可用。控制器设备10检测遥测数据不可用的配置资源中的带外配置变化可能是有益的。
34.在一些示例中,控制器设备10的存储器可以被配置成存储一个或多个低级配置,其中一个或多个低级配置的每个低级配置表示控制器设备10推送到元件14中的一个元件的低级配置。通过存储推送到元件14的低级配置,控制器设备10可以被配置成在配置被改动或以其他方式无效时恢复元件14的配置。存储低级配置还允许控制器设备10将低级配置与元件14的实际配置进行比较,以便确定是否对元件14的配置进行了任何变化。在一些情况下,这种变化可以表示在没有来自控制器设备10的输入的情况下在网络设备处进行的带外配置变化。在某些情况下,带外配置变化可以使控制器10接收的高级意图文件中的预期配置无效。控制器设备10确定带外配置变化是否与预期配置兼容可能是有益的。当控制器设备10确定带外配置变化与预期配置不兼容时,控制器设备10可以通知管理员(例如,管理员12)高级配置与带外配置变化不兼容。另外,或者替代地,控制器设备10可以输出一个或多个指令以恢复相应元件的配置,使得元件的配置与预期配置兼容。
35.在一些示例中,控制器设备10可以从元件14的元件(例如,元件14a)接收指示元件14a处的带外配置变化的消息。每当控制器设备10向元件14中的一个元件输出低级配置时,控制器设备10向相应元件输出消息,该消息包括指示从控制器设备10推送低级配置的标识标签。当元件实现由低级配置指示的配置变化时,元件可以向控制器10发送指示实现了配置变化的返回消息。另外,或者替代地,返回消息可以指示标识标签。控制器10可以接收该
消息并确定该配置变化不是带外配置变化,因为该消息包括标识标签。
36.在一些情况下,控制器10可以从元件14中的一个接收指示配置变化的消息,并且该消息不包括标识标签,该标识标签指示基于由控制器设备10推送的低级配置实现了配置变化的元件。基于省略标识标签的消息,控制器设备10可以确定配置变化是带外配置变化。
37.当控制器10在元件14中的一个元件处(例如,在元件14a)识别出带外配置变化时,控制器设备10可以确定带外配置变化是否使由控制器10接收的高级意图文件指示的预期配置无效或是否与由控制器10接收的高级意图文件指示的预期配置不兼容。为了确定带外配置变化是否使高级配置无效,控制器设备10可以从元件14a检索指示元件14a的实际配置的信息。在一些示例中,为了检索指示元件14a的实际配置的信息,控制器设备10可以向元件14a输出对元件14a的实际配置进行请求的消息。响应于该消息,控制器设备10可以从元件14a接收指示元件14a的实际配置的信息。元件14a的实际配置可以表示当实现带外配置变化时元件14a的配置。控制器设备10可以从控制器设备10的存储器中检索控制器设备10在元件14a实现带外配置变化之前推送到元件14a的低级配置。由于推送到元件14a的低级配置不包括带外配置变化,控制器设备10可以将低级配置变化与实际配置进行比较,以便识别带外配置变化。
38.控制器设备10可以执行差分操作,以便确定元件14a的实际配置与控制器设备10推送到元件14a的低级配置之间的差异。通过确定该差异,控制器设备10可以识别对应于带外配置变化的一个或多个xml路径语言(xpath)操作。xpath是一种编程语言,它被配置成从可扩展标记语言(xml)文档中选择节点。因此,所识别的一个或多个xpath操作可以指示元件14a的一个或多个节点,其涉及到带外配置变化或以其他方式受到带外配置变化的影响。控制器10可以确定对这些一个或多个节点的带外配置变化是否使高级配置无效。
39.如上所述,控制器10被配置成接收高级意图文件中的预期高级配置,并将高级配置转换为元件14的一个或多个低级配置。当控制器10将高级配置转换为一个或多个低级配置时,控制器10可以从高级配置提取信息以生成一个或多个xpath操作。例如,高级配置可以包括表示用户对元件(例如,元件14a)的一个或多个标记节点的选择的语法。控制器设备10可以基于该语法生成指示一个或多个标记节点的一个或多个标记的xpath。控制器设备10可以将一个或多个标记的xpath存储在存储器中。当控制器设备10识别与元件14a的配置的带外配置变化相关联的一个或多个xpath操作时,控制器设备10可以将与带外配置变化相关联的一个或多个xpath操作与对应于元件14a的一个或多个标记的xpath操作进行比较。当与带外配置变化相关联的一个或多个xpath操作中的至少一个与标记的xpath操作中的至少一个相匹配时,控制器设备10可以确定高级配置与带外配置变化不兼容。当与带外配置变化相关联的一个或多个xpath操作中没有一个与标记的xpath操作相匹配时,控制器设备10可以确定高级配置与带外配置变化兼容。
40.图2是示出根据本发明的一种或多种技术的用于图1的控制器设备10的组件的示例集合的框图。在该示例中,控制器设备10包括控制单元22、网络接口34、用户接口36和存储器40。控制单元22包括管理模块24、网络接口模块32和用户接口模块38。管理模块24包括配置模块26、转换模块28和配置变化分析模块30。存储器40包括标记的路径42、转换功能44和配置数据库46。
41.控制单元22表示用于实现归属于控制单元22及其组成模块和元件的功能性的硬
件、软件和/或固件的任何组合。当控制单元22包括软件或固件时,控制单元22还包括用于存储和执行软件或固件的任何必要硬件,例如一个或多个处理器或处理单元。通常,处理单元可以包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或离散逻辑电路,以及这些组件的任何组合。此外,处理单元通常使用固定和/或可编程逻辑电路来实现。
42.网络接口34表示可以通信地将控制器设备10耦合到外部设备(例如,图1的元件14中的一个元件)的示例接口。网络接口34可以表示无线和/或有线接口,例如,以太网接口或无线电,被配置成根据无线标准进行通信,例如ieee 802.11无线网络协议(诸如802.11a/b/g/n或其他这样的无线协议)中的一者或多者。在各种示例中,控制器设备10可以包括多个网络接口,尽管出于示例的目的仅示出了一个网络接口。
43.用户接口36表示诸如管理员12(图1)的用户与控制器设备10交互以提供输入和接收输出的一个或多个接口。例如,用户接口36可以表示监视器、键盘、鼠标、触摸屏、触摸板、触控板、扬声器、照相机、麦克风等中的一者或多者。此外,尽管在该示例中控制器设备10包括用户接口,但应当理解,管理员12不需要直接与控制器设备10交互,而是可以例如经由网络接口34远程访问控制器设备10。
44.存储器40可以被配置成在操作期间将信息存储在控制器设备10内。存储器40可包括计算机可读存储介质或计算机可读存储设备。在一些示例中,存储器40包括短期存储器和长期存储器中的一个或多个。存储器40可以包括,例如,随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、磁盘、光盘、闪存或电可编程存储器(eprom)或电可擦除和可编程存储器(eeprom)的形式。在一些示例中,存储器40用于存储由控制器设备10执行的程序指令。存储器40可由在控制器设备10上运行的软件或应用程序使用,以在程序执行期间临时存储信息。
45.在该示例中,控制单元22包括管理模块24、网络接口模块32和用户接口模块38。控制单元22执行用户接口模块38,以从用户接口36接收输入和/或向用户接口36提供输出。控制单元22还执行网络接口模块32以经由网络接口34发送和接收数据(例如,封包)。管理模块24、网络接口模块32和用户接口模块38可以再次被实现为相应的硬件单元,或以软件或固件,或它们的组合。
46.控制单元22执行管理模块24以管理各种网络设备,例如图1的元件14。管理包括,例如,根据从用户(例如,图1的管理员12)接收的指令配置网络设备,并向用户提供提交指令以配置网络设备的能力。在该示例中,管理模块24还包括配置模块26和转换模块28。
47.管理模块24被配置成从诸如管理员12的用户接收用于被管理网络设备的集合的意图文件(例如,高级配置指令)。随着时间的推移,用户可以更新配置指令,例如,以添加新服务、移除现有服务或修改由被管理设备执行的现有服务。所述意图可以根据例如yang来构造。在一些示例中,管理模块24还向用户提供提交转换功能44的能力,转换模块28执行该转换功能以将意图转换为设备特定的低级配置指令,如下所述。
48.存储器40包括配置数据库46。配置数据库46通常包括描述被管理网络设备(例如元件14)的信息。例如,配置数据库46可以包括指示设备标识符(例如媒体访问控制(mac)和/或互联网协议(ip)地址)、设备类型、设备供应商、设备种类(例如路由器、交换机、网桥、集线器等)等的信息。配置数据库46还基于被管理设备(例如,元件14)的意图(例如,高级配
置信息,或者在某些情况下,高级配置信息和低级配置信息两者)存储设备级配置信息。配置数据库46可以存储与元件14的每个元件相对应的配置信息,使得管理模块24可以访问元件14中任何一个或多个的配置。例如,管理模块24可以访问与控制器设备10推送到元件14c的配置相对应的配置信息。
49.转换模块28使用配置数据库46确定管理哪些设备。转换模块28基于配置数据库46的信息确定哪些转换功能44来执行高级配置指令,例如,哪些设备要接收低级配置指令。然后,转换模块28执行转换功能44的每个确定的转换功能,将高级配置指令作为输入提供给转换功能,并接收低级配置指令。然后,转换模块28可以向配置模块26提供低级配置指令。在一些示例中,转换模块28可以接收对应于高级配置的一个意图,并将高级配置转换为低级配置的集合,每个低级配置对应于元件14中的相应元件。在一些示例中,转换模块28可以接收对应于元件14中的一个元件的意图,并将该意图转换为对应于相应元件的低级配置。
50.在从转换模块28接收到低级配置指令之后,配置模块26通过网络接口模块32将低级配置指令发送到要更新配置的各个被管理网络设备(例如,元件14)。网络接口模块32将低级配置指令传递给网络接口34。网络接口34将低级配置指令转发到各个网络设备。
51.当管理模块24向元件14发送低级配置指令时,这些低级配置指令可以使各个元件进行配置变化。这些配置变化不是带外配置变化,因为响应于元件14从控制器设备10接收低级配置指令来实现配置变化。当元件14中的一个基于从控制器设备10以外的源接收的指令来实现配置变化时,该配置变化可以表示带外配置变化。在某些情况下,带外配置变化可能与控制器设备10接收的高级意图不兼容。例如,控制器设备10将低级配置指令推送到元件14,以便实现由控制器设备10接收的高级意图。偏离低级配置指令的带外配置变化可能会干扰低级配置指令并使高级意图无效。对于控制器10来说,检测带外配置变化并确定这些带外配置变化是否使高级意图无效是有益的。
52.尽管出于示例的目的将用户接口36描述为允许管理员12(图1)与控制器设备10交互,但是应该理解在其他示例中可以使用其他接口。例如,控制器设备10可以包括可充当到另一设备的接口的代表性状态传输(rest)客户端(未示出),管理员12可以通过该接口配置控制器设备10。同样,管理员12可以通过rest客户端通过与控制器设备10交互来配置元件14。
53.控制器设备10还将表示由元件14(图1)提供的资源的数据存储在配置数据库46中。资源可以包括例如网络服务、硬件和/或软件单元以及元件14的表。因此,资源可以包括例如网络隧道(例如标签交换路径(lps))、虚拟专用网络(vpn)、虚拟路由和转发(vrf)表、硬件接口、逻辑接口等。控制器设备10可以配置有脚本(playbook,剧本),管理员12(图1)可以使用脚本来对各种资源进行编程。脚本可以包含资源限定的集合、资源发现规则和资源合并策略。
54.在一些示例中,管理模块24被配置成接收与元件14中的一个或多个元件的预期配置相对应的高级意图文件。高级意图文件可以指示高级预期配置。如本文所使用的,术语“高级配置”和“预期配置”指的是可以由用户编程和/或改动的配置。“低级配置”可以指诸如元件14中的一个元件的网络设备被配置以处理和实现的配置。转换模块可以使用转换功能44将高级配置转换为一个或多个低级配置,其中所述一个或多个低级配置的每个低级配置对应于元件14的元件。转换模块28可以将一个或多个低级配置发送到配置模块26。
55.转换模块28可以基于高级意图文件,为转换模块28生成的一个或多个低级配置中的每个低级配置生成一个或多个标记的xpath操作。下面的yang扩展可能表示根据低级配置标记的一个或多个xpath。
[0056][0057]
该csp:watch扩展将用于高级意图以表示根据低级配置标记的xpath/xpath的,转换模块28可以将一个或多个低级配置的每个低级配置的一个或多个标记的xpath操作存储在存储器40中的标记的路径数据库42中。管理模块24可以评估存储在标记的路径数据库42中的标记的路径,以确定带外配置变化是否使控制器设备10接收的高级意图无效。xpath是一种编程语言,它被配置成从xml文档中选择节点。因此,所标识的一个或多个xpath操作可以指示涉及带外配置变化的元件14a的一个或多个节点。控制器10可以确定对这些一个或多个节点的带外配置变化是否使高级配置无效。
[0058]
在一些示例中,转换模块28可以从高级意图提取信息,以便为转换模块28生成的每个低级配置生成一个或多个标记的xpath操作。例如,高级意图可以包括表示用户对元件(例如,元件14a)的一个或多个标记节点的选择的语法。转换模块28可以基于该语法生成指示一个或多个标记节点的一个或多个标记的xpath。下面再现了来自yang高级意图的示例语法。
和“contains()”)。转换模块28可以生成与高级意图中的路径相对应的标记的xpath。转换模块28可以将标记的xpath存储在存储器40中的标记的路径数据库42中。在某些情况下,来自yang高级意图的示例语法可能包括上面没有示出的语法。例如,yang高级意图可以包括一个或多个有效载荷,其中所述一个或多个有效载荷中的每个有效载荷对应于网络设备的配置的一个或多个节点(例如,元件14中的一个元件)。
[0061]
在某些示例中,高级意图可能以粒度为基础标记路径。在一个示例中,高级意图的csp:watch扩展可以指示控制器设备10监视在低级配置中路径“/configuration/interfaces/interface[name=irb]/unit/[name={{evaluated-value}}]”下的任何变化。也就是说,转换模块28可以生成标记的xpath,其将使控制器设备10监视落在高级意图中识别的路径内的任何节点的配置变化。在另一示例中,高级意图的csp:watch扩展可以指示控制器设备10监视在低级配置中的路径“/configuration/interfaces/interface[name=irb]/unit/[name={{evaluaed-value}}]/family/address/name”的变化。语法“{{evaluated-value}}”可以表示xpath“current()/vlan_id”在限定csp:watch的高级意图模型的上下文中评估的值。在某些示例中,使用函数“contains()”,并且评估值可以前后加星号(*),例如“{{*evaluated-value*}}”,以指示通配符匹配。
[0062]
配置模块26可以经由网络接口34和网络接口模块32将一个或多个低级配置输出到相应的一个或多个元件。例如,转换模块28可以生成低级配置的集合,其中该低级配置的集合中的每个低级配置对应于元件14a、元件14b、元件14c、元件14d、元件14e、元件14f和元件14g中的相应一个元件。配置模块26可以将低级配置中的每个低级别配置输出到元件14a、元件14b、元件14c、元件14d、元件14e、元件14f和元件14g中的相应一个元件。另外,在一些示例中,配置模块26可以将低级配置的集合保存到配置数据库46。在一些示例中,配置模块26可以将高级意图保存到配置数据库46。在一些示例中,保存到配置数据库46的元件14的低级配置可以表示xml文件。下面再现了网络设备的xml低级配置示例。
[0063]
[0064]
[0065][0066]
示例xml低级配置限定了节点的层次结构。例如,示例xml低级配置中的“interface”节点依赖于“interfaces”节点,因为在示例xml低级配置中,interface节点是从interfaces节点缩进的。xml低级配置中存在一个或多个路径。例如,路径“/configuration/interfaces/interface[name=irb]/unit/[name=current()/vlan_id]/family/address/name”对应于示例xml低级配置中的以下路径。
[0067][0068]
当高级意图指示控制器设备10监测元件14a的配置中的路径“/configuration/interfaces/interface[name=irb]/unit/[name=current()/vlan_id]/family/address/name”时,控制器设备10可以生成xpath操作,以便监测与元件14a的配置相对应的xml文件中的相应路径。
[0069]
为了生成一个或多个xpath,转换模块28可以处理高级意图以识别在“csp:watch”扩展中识别的一个或多个路径。例如,转换模块28可以识别在示例yang高级意图的csp:watch扩展中识别的“/configuration/vlans/vlan[vlan-id=current()/vlan_id]”和“/configuration/interfaces/interface[name=irb]/unit/[name=current()/vlan_id]/family/address/name”路径。转换模块28可以处理高级意图并识别与在csp:watch扩展中识别的路径相对应的一个或多个有效载荷。例如,以下示例有效负载可能对应于“/configuration/vlans/vlan[vlan-id=current()/vlan_id]”路径。
[0070][0071]
转换模块28可以基于来自csp:watch扩展的标识路径和基于来自高级意图的标识有效载荷中的信息来生成xpath。例如,来自csp:watch扩展的标识路径包括方括号[vlan-id=current()/vlan_id],并且标识有效负载包括值“vlan_id”:100。转换模块28可以基于标识路径和来自有效负载的vlan_id值来生成xpath“/configuration/vlans/vlan[vlan-id=100]”。方括号内的xpath可以在限定csp:watch扩展的高级意图模型的节点上下文中进行评估。转换模块28可以评估方括号内的xpath,并生成在低级配置中要监视的xpath。换句话说,转换模块28可以处理有效载荷以提取在csp:watch扩展中标识路径的方括号内的信息。标识路径中的当前()/vlan_id请求对应于有效负载中vlan_id的值“100”。这可以允许开发人员在高级意图中输入路径,即使开发人员不知道希望包括在路径中的节点的确切id号。因此,通过基于高级意图的有效载荷和在csp:watch扩展中识别的路径自动生成xpath,转换模块28可以比不从有效载荷提取数据以基于用户选择的路径生成xpath的控制器设备更有效地监视高级意图的有效性。
[0072]
转换模块28不限于将高级意图转换为低级配置指令。在一些示例中,转换模块28可以将高级意图直接转换为元件14的命令行接口(cli)。转换模块28可执行一个或多个转换模板(例如,jinja模板)以直接从高级意图生成cli。当转换模块28根据高级意图生成cli时,转换模块28可以生成一个或多个标记的xpath。在某些示例中,转换模板可能表示用户创建的jinja文件。下面的示例表示转换模块28被配置成执行以基于高级意图生成cli的转换模板。
[0073][0074]
在一些示例中,转换模块28处理高级意图以识别高级意图的csp:watch扩展中的一个或多个路径,但这不是必需的。在一些示例中,转换模块28接收限定一个或多个路径的jinja文件,并且转换模块28可以基于由jinja文件限定的路径生成一个或多个标记的xpath。下面再现限定一个或多个路径的示例jinja文件。
[0075]
1{%-for vlan in site_vlans%}
[0076]
2/configuration/vlans/vlan[vlan-id={{vlan.vlan_id}}]
[0077]
3/configuration/interfaces/interface[name=irb]/unit/[name={{vlan.vlan_id}}]
[0078]
4/configuration/interfaces/interface[name=irb]/unit/[name={{vlan.vlan_id}}]/family/address
[0079]
/name
[0080]5[0081]
6{%-for lan_port in vlan.lan_ports%}
[0082]
7/configuration/interfaces/interface[name={{lan_port}}]
[0083]8[0084]
/configuration/interfaces/interface[name={{lan_port}}]/unit[name=0]/family/ethernet-switching/vlan/members
[0085]
9{%-endfor%}
[0086]
10{%-endfor%}
[0087]
如示例jinja文件所示,该文件识别路径/configuration/vlans/vlan[vlan-id={{vlan.vlan_id}}]、/configuration/interfaces/interface[name=irb]/unit/[name={{vlan.vlan_id}}]、/configuration/interfaces/interface[name=irb]/unit/[name={{vlan.vlan_id}}]/family/address/name、/configuration/interfaces/interface[name={{lan_port}}以及/configuration/interfaces/interface[name={{lan_port}}]/unit[name=0]/family/ethernet-switching/vlan/members。路径包括几个方括号,如“[vlan-id={{vlan.vlan_id}}]、”“[name={{vlan.vlan_id}}]”和“[name={{lan_
port}}]”。为了基于在jinja文件中识别的路径生成xpath,转换模块28被配置成识别高级意图中的一个或多个有效载荷,该有效载荷包括在jinja文件中识别的路径的方括号中请求的信息。例如,转换模块28可以处理高级意图以标识以下示例有效载荷。
[0088]
{
[0089]
"site_vlans":[
[0090]
{
[0091]
"vlan_id":100,
[0092]
"irb_ip_prefix":"192.168.100.254/24",
[0093]
"lan_ports":["ge-0/0/10","ge-0/0/11"]
[0094]
}
[0095]
]
[0096]
}
[0097]
转换模块28可以基于在示例jinja文件中识别的一个或多个路径并基于来自高级意图的示例有效载荷,来生成一个或多个标记的xpath。例如,转换模块28可以生成xpath“/configuration/interfaces/interface[name=irb]/unit/[name=100]/family/address/name”,对应于在示例jinja文件中识别的路径“/configuration/interfaces/interface[name=irb]/unit/[name={{vlan.vlan_id}}]/family/address/name”。转换模块28可以用方括号[name=100]替换在示例jinja文件中识别的路径中的方括号[name={{vlan.vlan_id}}],以生成xpath,因为示例有效负载包括值“vlan_id”:100。另外,或者替代地,转换模块28可以基于由示例jinja文件识别的路径“/configuration/interfaces/interface[name={{lan_port}}]/unit[name=0]/family/ethernet-switching/vlan/members”,生成xpath“/configuration/interfaces/interface[name=ge-0/0/10]/unit[name=0]/family/ethernet-switching/vlan/members”以及“/configuration/interfaces/interface[name=ge-0/0/11]/unit[name=0]/family/ethernet-switching/vlan/members”。因为示例有效负载引用了两个lan端口(例如,“lan_ports”:[“ge-0/10”、“ge-0/11”]),转换模块28可以生成对应于lan端口“ge-0/0/10”的标记的xpath和生成对应于lan端口“ge-0/0/11”的标记的xpath。转换模块28可以将标记的xpath保存到存储器42中的标记的路径数据库42。
[0098]
当配置模块26向元件14中的一个元件输出低级配置时,配置模块26可以用包括标识标签的消息来输出低级配置。标识标签可以指示从控制器设备10推送低级配置。当元件14的各个元件接收到低级配置和消息时,元件可以向控制器设备10输出返回消息,其中返回消息包括标识标签。返回消息可以指示在单元14的各个单元处实现低级配置,并且返回消息中的标识标签可以确认实现的配置从控制器设备10推送。换句话说,在返回消息中存在标识标签指示在元件14的各个元件处实现的低级配置不表示带外配置变化,因为控制器设备10将低级配置推送到元件。
[0099]
在一些情况下,配置模块26可以经由网络接口34和网络接口模块32从元件14中的一个元件(例如,元件14a)接收消息。该消息可以指示在单元14a实现的配置变化,并且该消息可以省略标记从控制器设备10推送的配置变化的标识标签。当管理模块24从元件14a接收到省略标识标签的消息时,管理模块24可以确定该消息指示在元件14a的带外配置变化。
即,元件14a可能已经基于对元件14a的用户输入来实现配置变化,而不是基于从控制器设备10接收低级配置来实现配置变化。在一些情况下,带外配置变化可使控制器设备10接收的高级意图无效。因此,对于控制器设备10来说,识别在元件14处发生的带外配置变化并确定这些带外配置变化是否使控制器设备10接收的高级配置无效是有益的。
[0100]
当控制器设备10从元件14a接收指示元件14a处的带外配置变化的消息时,管理模块24可基于存储在配置数据库46中的元件14a的配置并基于元件14a的实际配置,来确定带外配置变化是否使控制器设备10接收的高级意图无效。在一些示例中,为了确定带外配置变化是否使高级意图无效,管理模块24被配置成从配置数据库46检索指示对应于元件14a的存储的网络设备配置的信息。在一些示例中,指示对应于元件14a的存储的网络设备配置的信息包括表示由转换模块28基于高级意图文件生成的元件14a的低级配置的xml文件。在一些示例中,指示对应于元件14a的存储的网络设备配置的信息表示由转换模块28基于高级意图文件生成的一个或多个cli。此外,管理模块24被配置成从元件14a检索指示元件14a的实际配置的信息。在一些示例中,指示元件14a的实际配置的信息表示xml文件。
[0101]
配置变化分析模块30可以确定元件14a的实际配置与对应于元件14a的存储的网络设备配置之间的差异。对应于元件14a的存储的网络设备配置可以表示在元件14a处的带外配置变化之前控制器设备10推送到元件14a的低级配置。元件14a的实际配置可以表示元件14a实现带外配置变化之后的元件14a的配置。因此,通过确定元件14a的实际配置与对应于元件14a的存储的网络设备配置之间的差异,配置变化分析模块30可以确定对应于带外配置变化的信息。在一些示例中,对应于带外配置变化的信息可以包括对应于带外配置变化的一个或多个xpath。对应于带外配置变化的一个或多个xpath可以识别对应于元件14a的配置的xml文件中的一个或多个节点,其中由xpath识别的节点表示在带外配置变化中被更新的节点。
[0102]
配置变化分析模块30可以将对应于带外配置变化的一个或多个xpath与存储在标记的路径数据库42中对应于元件14a的一个或多个标记的xpath进行比较。如上所述,当转换模块28转换高级意图时,转换模块28可生成一个或多个xpath以检查元件14a实现带外配置变化的事件。如果对应于带外配置变化的一个或多个xpath中的至少一个对应于元件14a的标记的xpath,则配置变化分析模块30可以确定带外配置变化使高级意图无效。如果对应于带外配置变化的一个或多个xpath中没有一个与对应于元件14a的标记的xpath相匹配,则配置变化分析模块30可以确定带外配置变化没有使高级意图无效。
[0103]
通过为一个或多个被管理元件14生成一个或多个被标记的xpath,与不生成标记的xpath的控制器设备相比,控制器设备10可以更有效地管理元件14。例如,标记的xpath允许控制器设备评估检测到的带外配置变化,以确定带外配置变化是否使高级意图无效。
[0104]
图3是示出根据本发明的一个或多个技术的用于处理意图以使设备实现配置的示例操作的流程图。为了方便起见,图3是关于图1至图2的控制器设备10和元件14来描述的。然而,图3的技术可以由控制器设备10和元件14的不同组件或由附加或替代设备执行。
[0105]
转换模块28可以接收意图(302)。在一些示例中,转换模块28可以经由用户接口36和用户接口模块38接收意图。该意图可以表示文本文件,例如yang文件。在一些示例中,配置模块26接收意图并将意图与处理意图的指令一起转发到转换模块28。转换模块28可以处理意图(304)。在某些示例中,意图表示高级意图。转换模块28可以生成元件14a的配置信息
(306)。在一些示例中,转换模块28可以基于意图为元件14的任何一个或组合生成配置信息。当意图表示高级意图时,转换模块28可以通过基于转换功能44将高级意图转换为对应于元件14a的低级配置来生成配置信息。在一些示例中,转换模块28可以处理意图以生成用于配置元件14a的一个或多个cli,而不将高级意图转换为低级配置。在一些示例中,转换模块28可以将配置信息发送到配置模块26(308)。
[0106]
转换模块28可以将配置信息保存到配置数据库46(310)。在一些示例中,转换模块28可以保存与控制器设备10管理的每个元件14相对应的配置信息。即,配置数据库46可以包括推送到由控制器设备10管理的元件14的配置信息,使得控制器设备10可以在分析带外配置时访问配置信息。
[0107]
此外,转换模块28可以基于生成实体14a的配置信息来生成一个或多个标记的路径(312)。在一些示例中,该意图可以包括指示代表一个或多个路径的用户输入的一个或多个路径的文本,以供控制器设备10响应于检测带外配置而检查。当意图包括指示一个或多个路径的文本时,转换模块28可以基于文本并基于意图中的一个或多个有效载荷,生成一个或多个标记的xpath。在一些示例中,转换模块28可以接收路径模板,该路径模板指示代表一个或多个路径的用户输入的一个或多个路径,以供控制器设备10响应于检测带外配置而检查。转换模块28可以处理意图和路径模板以生成一个或多个标记的路径。转换模块28可以将标记的路径存储到标记的路径数据库42(314)。即,转换模块28可以存储标记的路径,使得控制器设备10可以在分析带外配置时访问标记的路径。
[0108]
配置模块26可以从转换模块28接收配置信息(316)。配置模块26可以将配置信息推送到元件14a(318)。在一些示例中,配置模块26可以利用包括标识标签的消息将配置信息推送到元件14a,该标识标签指示从控制器设备10推送配置信息。元件14a可以接收配置信息(320)并实现配置信息(322)。即,元件14a可以基于配置信息执行配置变化。元件14a可以在元件14a处发送对配置变化进行确认的消息(324)。在一些示例中,元件14a可以通过消息包括标识标签。配置模块26可以接收消息(326)。配置模块26可以确定在单元14a实现了配置变化(328)。在一些示例中,配置模块26可以确定配置变化不是带外配置变化,因为从元件14a到配置模块26的消息包括标识标签。
[0109]
图4是示出根据本发明的一个或多个技术的用于确定带外配置变化是否使意图无效的示例操作的流程图。为了方便起见,图4是关于图1至图2的控制器设备10和元件14来描述的。然而,图4的技术可以由控制器设备10和元件14的不同组件或由附加或替代设备执行。
[0110]
元件14a可以接收用于实现配置变化的指令(402)。元件14a可以基于接收到指令来实现配置变化(404)。在一些示例中,配置变化表示带外配置变化,因为配置变化是基于元件14a从控制器设备10以外的设备接收的指令或经由对元件14a的用户输入接收的指令。即,配置变化不基于控制器设备10接收的意图。元件14a可以发送指示配置变化的消息(406)。在一些示例中,元件14a可以从消息中省略标识标签,其中标识标签指示元件14a基于来自控制器设备10的指令实现的配置变化。由于配置变化是带外配置变化,所以元件14a可以从消息中省略标识标签。
[0111]
配置模块26可以接收消息(408)。配置模块26可以基于省略标识标签的消息将配置变化标识为带外配置变化(410)。基于配置模块26识别元件14a处的带外配置变化,配置
变化分析模块30可以从配置数据库46检索保存的配置。所保存的配置可以表示在带外配置变化之前由实体14a实现的配置信息。另外,配置变化分析模块30可以输出对元件14a的实际配置进行请求的消息(414)。元件14a可以接收消息(416)并输出元件14a的实际配置(418)。在一些示例中,元件14a的存储的配置和实际配置都表示xml文件。配置变化分析模块30可以接收实际配置(420)。配置变化分析模块30可以确定存储的配置和实际配置之间的差异,以便识别与带外配置变化相关联的一个或多个路径(422)。当元件14a的存储的配置和实际配置表示xml文件时,配置变化分析模块30可以生成与带外配置变化相关联的一个或多个xpath,其中一个或多个xpath中的每个xpath识别元件14a的配置的涉及配置变化的一个或多个节点。
[0112]
配置变化分析模块30可以将与带外配置变化相关联的一个或多个路径与存储在标记的路径数据库42中的一个或多个标记的路径进行比较。在一些示例中,控制器设备10在生成元件14a的配置信息时生成一个或多个标记的路径。配置变化分析模块30可以基于与带外配置变化相关联的路径中的一个或多个是否与对应于元件14a的标记的路径相匹配,来确定带外配置变化是否使意图无效。
[0113]
本发明中描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,所述技术的各个方面可以在一个或多个处理器内实现,所述处理器包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或离散逻辑电路,以及这些组件的任何组合。术语“处理器”或“处理电路”一般可指上述逻辑电路中的任何一者,单独或与其他逻辑电路组合,或任何其他等同电路。包括硬件的控制单元也可以执行本发明的一个或多个技术。
[0114]
这样的硬件、软件和固件可以在相同的设备内或在单独的设备内实现,以支持本发明中描述的各种操作和功能。此外,所描述的单元、模块或组件中的任何一个可以一起或单独地实现为离散但可互操作的逻辑器件。将不同特征描述为模块或单元旨在突出不同的功能方面,并不一定意味着这些模块或单元必须由单独的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件执行,或者集成在公共或单独的硬件或软件组件内。
[0115]
本发明中描述的技术也可以体现或编码在计算机可读介质中,例如包含指令的计算机可读存储介质中。嵌入或编码在计算机可读介质中的指令可使可编程处理器或其他处理器执行该方法,例如,当指令被执行时。计算机可读介质可以包括非瞬时计算机可读存储介质和瞬时通信介质。有形且非暂时性计算机可读存储介质可包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电子可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、盒式磁带、磁介质、光介质或其它计算机可读存储介质。术语“计算机可读存储介质”指的是物理存储介质,而不是信号、载波或其他瞬态介质。
[0116]
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1