首页 / 专利库 / 软件 / 建模语言 / YANG配置数据模型上支持基于GraphQL的查询

YANG配置数据模型上支持基于GraphQL的查询

阅读:626发布:2020-05-08

专利汇可以提供YANG配置数据模型上支持基于GraphQL的查询专利检索,专利查询,专利分析的服务。并且本 发明 公开了YANG配置数据模型上支持基于GraphQL的查询。在一个示例中,一种网络管理系统(NMS)装置管理多个网络装置。装置包括: 存储器 ,被配置为存储表示由NMS管理的多个网络装置的数据模型的数据;以及一个或多个处理器,被配置为检索表示数据模型的数据,构建具有多个 节点 的GraphQL模型,对应于根据数据模型的一个网络装置的每个节点存储表示与根据数据模型的GraphQL模型的相应节点相关联的网络装置的属性的数据,接收包括表示至少一个查询属性的数据的GraphQL查询,确定哪个节点具有与至少一个查询属性匹配的属性,并且返回识别哪个网络装置对应于具有与至少一个查询属性匹配的属性的节点的数据。,下面是YANG配置数据模型上支持基于GraphQL的查询专利的具体信息内容。

1.一种方法,包括:
检索表示由网络管理系统管理的多个网络装置的数据模型的数据;
构建具有多个节点的GraphQL模型,每个所述节点与根据所述数据模型的所述网络装置之一对应;
存储表示与根据所述数据模型的GraphQL模型的对应的节点相关联的所述网络装置的属性的数据;
接收包括表示至少一个查询属性的数据的GraphQL查询;
确定哪个所述节点具有与所述至少一个查询属性匹配的属性;并且
返回识别哪个所述网络装置对应于具有与所述至少一个查询属性匹配的属性的节点的数据。
2.根据权利要求1所述的方法,其中,所述数据模型用另一种下一代(YANG,Yet Another Next Generation)数据建模语言表示,并且其中,所述配置模型包括低级装置配置模型、服务模型、库存模型中的一者。
3.根据权利要求1所述的方法,还包括从所述配置模型生成GraphQL模式。
4.根据权利要求1所述的方法,其中,所述GraphQL查询包括表示数据模型路径和对应于所述至少一个查询属性的至少一个条件的数据。
5.根据权利要求1至4中任一项所述的方法,还包括从所述数据模型生成文档数据库模式。
6.根据权利要求5所述的方法,其中,生成所述文档数据库模式包括:
将具有所述数据模型的实体扩展的列表建模为所述文档数据库模式的文档;并且根据来自所述数据模型的相应的属性设置文档的属性。
7.根据权利要求5所述的方法,其中,生成所述文档数据库模式包括:
生成对应于具有GraphQL模型的子顶点的GraphQL模型的父顶点的父顶点文档,其中,生成所述父顶点文档包括生成所述父顶点文档,以具有子属性,所述子属性包括对应于所述子顶点的子顶点文档的标识符;并且
生成对应于所述子顶点的所述子顶点文档,其中,生成所述子顶点文档包括生成所述子顶点文档,以具有包括所述父顶点文档的标识符的父属性。
8.根据权利要求5所述的方法,其中,确定哪个所述节点具有与所述至少一个查询属性匹配的属性,包括:使用文档数据库模式来支持以下各项中的一项或多项,以确定哪个所述节点具有与所述至少一个查询属性匹配的属性,其中,所述各项为分类所述GraphQL模型、搜索所述GraphQL模型、过滤所述GraphQL模型。
9.一种网络管理系统的装置,所述装置包括:
存储器,被配置为存储表示由所述网络管理系统管理的多个网络装置的数据模型的数据;以及
电路中实现的一个或多个处理器,所述处理器被配置为:
检索表示所述数据模型的所述数据;
构建具有多个节点的GraphQL模型,每个所述节点与根据所述数据模型的所述网络装置之一对应;
存储表示与根据所述数据模型的GraphQL模型的对应的节点相关联的所述网络装置的属性的数据;
接收包括表示至少一个查询属性的数据的GraphQL查询;
确定哪个所述节点具有与所述至少一个查询属性匹配的属性;并且
返回识别哪个所述网络装置对应于具有与所述至少一个查询属性匹配的属性的节点的数据。
10.根据权利要求9所述的装置,其中,所述GraphQL查询包括表示数据模型路径和对应于所述至少一个查询属性的至少一个条件的数据。
11.根据权利要求9和10中任一项所述的装置,其中,所述一个或多个处理器还被配置为从所述数据模型生成文档数据库模式。
12.根据权利要求11所述的装置,其中,为了生成所述文档数据库模式,所述一个或多个处理器被配置为:
将具有所述数据模型的实体扩展的列表建模为所述文档数据库模式的文档;并且根据来自所述数据模型的相应的属性设置文档的属性。
13.根据权利要求11所述的装置,其中,为了生成所述文档数据库模式,所述一个或多个处理器被配置为:
生成对应于具有GraphQL模型的子顶点的GraphQL模型的父顶点的父顶点文档,其中,所述一个或多个处理器被配置为生成所述父顶点文档,以具有子属性,所述子属性包括对应于所述子顶点的子顶点文档的标识符;并且
生成对应于所述子顶点的所述子顶点文档,其中,所述一个或多个处理器被配置为生成所述子顶点文档,以具有包括所述父顶点文档的标识符的父属性。
14.根据权利要求11所述的装置,其中,为了确定哪个所述节点具有与所述至少一个查询属性匹配的属性,所述一个或多个处理器被配置为:使用文档数据库模式来支持以下各项中的一项或多项,以确定哪个所述节点具有与所述至少一个查询属性匹配的属性,其中,所述各项为分类所述GraphQL模型、搜索所述GraphQL模型、过滤所述GraphQL模型。
15.一种存储指令的计算机可读存储介质,在执行时,所述指令促使被配置为管理网络管理系统的多个网络装置的管理装置的处理器:
检索表示所述多个网络装置的数据模型的数据;
构建具有多个节点的GraphQL模型,每个所述节点与根据所述数据模型的所述网络装置之一对应;
存储表示与根据所述数据模型的GraphQL模型的对应的节点相关联的所述网络装置的属性的数据;
接收包括表示至少一个查询属性的数据的GraphQL查询;
确定哪个所述节点具有与所述至少一个查询属性匹配的属性;并且
返回识别哪个所述网络装置对应于具有与所述至少一个查询属性匹配的属性的节点的数据。

说明书全文

YANG配置数据模型上支持基于GraphQL的查询

技术领域

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

背景技术

[0002] 计算机网络是能够交换数据和共享资源的互连计算装置的集合。各种装置操作,以促进计算装置之间的通信。例如,计算机网络可以包括路由器、交换机、网关、防火墙和各种其他装置,以提供和促进网络通信。
[0003] 这些网络装置通常包括用于本地或远程配置装置的机制,例如,管理接口。通过与管理接口交互,客户端可以执行配置任务以及执行操作命令,以收集和查看被管理的装置的运行数据。例如,客户端可以配置装置的接口卡,调整支持的网络协议的参数,指定装置内的物理组件,修改路由器维护的路由信息,访问软件和驻留在装置上的其他资源,并且执行其他配置任务。此外,客户端可以允许用户查看来自装置的当前运行参数、系统日志、与网络连接相关的信息、网络活动或其他状态信息,并且查看从装置接收的事件信息并对其做出反应。
[0004] 网络配置服务可以由多个不同的装置来执行,例如,具有服务卡和/或专用服务装置的路由器。这种服务包括连接服务,诸如,第三层虚拟专用网络(L3VPN)、虚拟专用局域网服务(VPLS)和对等(P2P)服务。其他服务包括网络配置服务,诸如,Dot1q VLAN服务。NM系统可以支持这些服务,以便管理员可以轻松创建和管理这些高级网络配置服务。在客户部署中,可能有数千到数百万个连接服务。当服务改变时,NM系统通常经由事务在网络中部署。在某些情况下,装置可能同时改变,因为多个管理员可能会并行修改服务。
[0005] 为了配置装置,以执行服务,用户(例如,管理员)可以编写将高级配置指令(例如,根据网络服务模型的指令)转换成低级配置指令(例如,根据装置配置模型的指令)的转换程序。作为配置服务支持的一部分,用户/管理员可以提供服务模型以及服务模型到装置配置模型之间的映射。
[0006] 为了对于用户简化映射定义,NM系统装置可以被设计为提供以简单方式定义映射的能。例如,一些NMS装置提供Velocity模板和/或可扩展样式表语言转换(XSLT)的使用。这种转换器包含从高级服务模型到低级装置配置模型的转换或映射逻辑。通常,高级服务模型中较少量的变化会影响装置配置中较大量的属性。在从高级服务模型中创建、更新和删除服务时,可能会使用不同的转换器。
发明内容
[0007] 通常,本公开描述了用于管理网络装置的技术。网络管理系统(NMS)装置可以使用配置数据来配置网络装置,例如,用另一种下一代(YANG,Yet Another Next Generation)数据建模语言表示。配置数据模型可以是低级(例如,装置级)配置数据模型、服务模型、库存模型等。因此,数据模型可以是任何YANG模型。此外,NMS装置可以基于网络装置的配置数据来管理网络装置。根据本公开的技术,NMS装置可以将高级和/或低级配置数据转换成图形数据库。然后,NMS装置可以通过对于图形数据库中的图形查询来处理YANG操作。此外,NMS装置可以通过覆盖图形功能来执行网络服务管理功能,覆盖图形功能可以近乎实时地支持操作。NMS装置可以提供对插件的支持或上传新的图形功能,使用图形功能提供有效的转换,并提供处理图形内的草稿变化以支持高性能的能力。
[0008] 在一个示例中,一种方法包括:检索表示由网络管理系统管理的多个网络装置的数据模型的数据;构建具有多个节点的GraphQL模型,每个节点对应于根据所述数据模型的一个网络装置;存储表示与根据所述数据模型的GraphQL模型的相应节点相关联的网络装置的属性的数据;接收包括表示至少一个查询属性的数据的GraphQL查询;确定哪个节点具有与至少一个查询属性匹配的属性;并且返回识别哪个网络装置对应于具有与至少一个查询属性匹配的属性的节点的数据。
[0009] 在另一示例中,一种网络管理系统的装置包括:存储器,其被配置为存储表示由网络管理系统管理的多个网络装置的数据模型的数据;以及在电路中实现的一个或多个处理器,其被配置为:检索表示数据模型的数据;构建具有多个节点的GraphQL模型,每个节点对应于根据所述数据模型的一个网络装置;存储表示与根据所述数据模型的GraphQL模型的相应节点相关联的网络装置的属性的数据;接收包括表示至少一个查询属性的数据的GraphQL查询;确定哪个节点具有与至少一个查询属性匹配的属性;并且返回识别哪个网络装置对应于具有与至少一个查询属性匹配的属性的节点的数据。
[0010] 在另一示例中,一种计算机可读存储介质,在其上存储有指令,在执行时,所述指令促使管理网络管理系统的多个网络装置的管理装置的处理器:检索表示多个网络装置的数据模型的数据;构建具有多个节点的GraphQL模型,每个节点对应于根据所述数据模型的一个网络装置;存储表示与根据所述数据模型的GraphQL模型的相应节点相关联的网络装置的属性的数据;接收包括表示至少一个查询属性的数据的GraphQL查询;确定哪个节点具有与至少一个查询属性匹配的属性;并且返回识别哪个网络装置对应于具有与至少一个查询属性匹配的属性的节点的数据。
[0011] 在附图和以下描述中阐述一个或多个示例的细节。通过说明书和附图以及权利要求书,其他特征、目的和优点将是显而易见的。

附图说明

[0012] 图1是示出包括使用管理装置管理的企业网络的元件的示例的框图
[0013] 图2是示出用于图1的管理装置的一组示例组件的框图。
[0014] 图3是示出图形数据库的一组示例顶点和边的概念图
[0015] 图4是示出带有附加的触发器的顶点的示例的概念图。
[0016] 图5是示出对等(P2P)管理服务的一组示例图形数据库顶点和边的概念图。
[0017] 图6是示出响应于配置更新对图5的图形数据库元件的草稿变化的概念图。
[0018] 图7是示出用于执行本公开的技术的示例方法的流程图
[0019] 图8是示出根据本公开的技术的从示例YANG数据模型构建的示例图形的概念图。
[0020] 图9是示出根据本公开的技术的生成和使用GraphQL模型的示例方法的流程图。

具体实施方式

[0021] 图1是示出包括使用管理装置10管理的企业网络2的元件的示例的框图。企业网络2的被管理的元件14A至14G(统称为“元件14”)包括经由通信链路互连的网络装置,以形成通信拓扑,从而交换资源和信息。元件14(通常也称为网络装置或远程网络装置)可以包括例如路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(IDS)或入侵防御系统(IDP)、计算装置、计算终端、打印机、其他网络装置或这些装置的组合。虽然在本公开中被描述为传输、传送或以其他方式支持数据包,但是企业网络2可以根据由任何其他协议定义的任何其他离散数据单元来传输数据,例如,由异步传输模式(ATM)协议定义的单元或者由用户数据报协议(UDP)定义的数据报。互连元件14的通信链路可以是物理链路(例如,光链路、链路等)、无线链路或其任意组合。
[0022] 企业网络2示为经由通信链路耦接到公共网络18(例如,互联网)。公共网络18可以包括例如一个或多个客户端计算装置。公共网络18可以提供对网络服务器、应用服务器、公共数据库、媒体服务器、终端用户装置以及其他类型的网络资源装置和内容的访问。
[0023] 管理装置10经由企业网络2通信地耦接到元件14。在一些示例中,管理装置10形成装置管理系统的一部分,尽管出于示例的目的,在图1中仅示出了装置管理系统的一个装置。管理装置10可以直接或间接耦接到各种元件14。一旦部署和激活元件14,管理员12使用管理装置10(或多个这样的管理装置)来使用装置管理协议来管理网络装置。一个示例装置协议是简单网络管理协议(SNMP),其允许管理装置10遍历和修改在每个被管理的元件14内存储配置数据的管理信息库(MIB)。可在http://tools.ietf.org/html/rfc3411获得的Harrington等人的RFC 3411“An Architecture for Describing Simple Network Management Protocol(SNMP)Management Frameworks”,Network Working Group,the Internet Engineering Task Force draft,2002年12月,可以找到SNMP协议的更多细节,其全部内容通过引用结合于此。
[0024] 常见的做法是,管理装置10(也称为网络管理系统(NMS)或NMS装置)以及元件14由企业的IT组集中维护。管理员12与管理装置10交互,以远程监控和配置元件14。例如,管理员12可以从管理装置10接收关于任何元件14的警报,查看元件14的配置数据,修改元件14的配置数据,向企业网络2添加新的网络装置,从企业网络2移除现有的网络装置,或者以其他方式操纵企业网络2和其中的网络装置。尽管针对企业网络进行了描述,但是本公开的技术可应用于其他类型的公共和私有网络,包括LAN、VLAN、VPN等。
[0025] 在一些示例中,管理员12使用管理装置10或本地工作站直接与元件14交互,例如,通过远程登录、安全外壳(SSH,secure shell)或其他这样的通信会话。即,元件14通常提供用于直接交互的接口,诸如,命令行接口(CLI)、基于网络的接口、图形用户接口(GUI)等,通过这些接口,用户可以与装置交互,以直接发布基于文本的命令。例如,这些接口通常允许用户直接与装置交互,例如,通过远程登录、安全外壳(SSH)、超文本传输协议(HTTP)或其他网络会话,以根据定义的语法输入文本,以向被管理元件提交命令。在一些示例中,用户使用管理装置10启动与一个元件14(例如,元件14F)的SSH会话15,以直接配置元件14F。以这种方式,用户可以以直接执行元件14的格式提供命令。
[0026] 此外,管理员12还可以创建可由管理装置10提交给任何或所有元件14的脚本。例如,除了CLI接口之外,元件14还提供用于接收根据脚本语言指定命令的脚本的接口。在某种意义上,脚本可以由管理装置10输出,以自动调用被管理的元件14上相应的远程过程调用(RPC)。脚本可以符合例如可扩展标记语言(XML)或另一种数据描述语言。
[0027] 管理员12使用管理装置10来配置元件14,以指定某些操作特征,这些操作特征促进管理员12的目标。例如,管理员12可以为元件14指定关于安全性、装置可访问性、流量工程、服务质量(QoS)、网络地址转换(NAT)、数据包过滤、数据包转发、速率限制的特定操作策略或其他策略。管理装置10使用一个或多个网络管理协议来执行配置,所述网络管理协议被设计用于管理被管理的网络元件14内的配置数据,例如,SNMP协议或网络配置协议(NETCONF)协议或其衍生物,例如,Juniper装置管理接口。通常,NETCONF提供配置网络装置的机制,并对配置数据使用基于可扩展标记语言(XML)的数据编码,配置数据可能包括策略数据。可在tools.ietf.org/html/rfc4741获得的Enns的“NETCONF Configuration Protocol”,Network Working Group,RFC 4741,2006年12月,描述了NETCONF。管理装置10可以与一个或多个元件14建立NETCONF会话。
[0028] 管理装置10可以被配置为将新的一组高级配置数据与现有的(或旧的)一组高级配置数据进行比较,从比较中确定新的和现有的一组高级配置数据之间的差异,并将转换功能应用于新的和旧的高级配置数据之间的差异。具体地,管理装置10确定新的一组配置数据是否包括相对于旧的一组高级配置数据的任何额外配置参数,以及新的一组配置数据是否修改或省略旧的一组高级配置数据中包括的任何配置参数。
[0029] 高级配置数据和/或低级配置数据可以用YANG来表示,这在可在tools.ietf.org/html/rfc6020获得的Bjorklund的“YANG—A Data Modeling Language for the Network Configuration Protocol(NETCONF)”,Internet Engineering Task Force,RFC 6020,2010年10月中描述。管理装置10包括用于转换高级配置数据差异的各种转换功能。这些功能被配置为接受高级配置数据(其可以表示为结构化输入参数,例如,根据YANG)。这些功能还被配置为输出相应组的低级装置配置数据变化,例如,装置配置的添加和移除。即,y1=f1(x),y2=f2(x),…yN=fN(x)。可以在例如Jiang等人于2016年6月30日提交的“TRANSLATING HIGH-LEVEL CONFIGURATION INSTRUCTIONS TO LOW-LEVEL DEVICE CONFIGURATION”的美国专利申请第15/198,657号中,找到关于将高级配置信息转换成低级装置配置信息的示例过程的额外细节,其全部内容通过引用结合于此。
[0030] 通常,管理装置10在将配置变化提交给元件14之前,例如,在私有数据存储中,维护要应用于元件14的候选配置的工作草案。以这种方式,管理装置10维护配置信息的高级模型(HLM)、配置信息的低级模型(LLM)以及元件14的装置原始配置信息的私有副本。一旦配置信息的草稿提交给网络,管理装置10可以在应用数据存储中保持HLM和LLM变化。可能是多个级别的服务抽象。例如,可以是高级服务、基本服务元件等。
[0031] 管理装置10可以将YANG建模用于高级服务和低级装置配置模型。这些数据可能包含跨YANG实体的关系,例如,列表项和容器。通常,NMS装置不支持实时配置管理功能。根据本公开的技术,如下面更详细讨论的,管理装置10可以将YANG数据模型转换成数据库模型,并将YANG验证转换成数据验证。
[0032] 本公开认识到,基于简单创建、读取、更新和删除(CRUD)的数据库层非常严格,以至于有时业务层中的调用方最终从数据库中获取的数据比所需的多。这可能会降低功能的执行速度。许多功能对于所有NMS都是通用的,例如,私有配置数据存储、配置数据从高级配置信息到低级配置信息的转换以及其他功能。这些功能可能是数据库层之上的公共平台的一部分。
[0033] 在某些情况下,数据需要以二进制大对象(BLOB)的形式存储。例如,配置数据的私有数据存储可以存储为BLOB。BLOB的数据过滤、排序和索引通常很困难。
[0034] 在某些情况下,如果跨两个更高级模型实例共享一个资源,则删除一个更高级服务,将导致删除相应的更低级实例(如果该低级资源没有被任何其他更高级模型使用)。同样,如果低级资源被另一高级实例使用,则删除一个更高级服务,不应导致删除低级实例。通常在NMS装置(例如,管理装置10)的业务层中处理低级实例是否被高级实例使用的这种检查,这可能导致对相应数据库的多次往返检查。
[0035] 支持私有数据存储的NMS装置将私有数据副本单独保存在私有数据存储中,直到私有副本提交给数据库。可能需要检查一个草稿中的数据变化请求是否与其他草稿冲突,并保存变化。数据变化请求可能发生在业务层。因此,冲突检测不会实时发生。Chandrasekhar等人在2016年12月30日提交的美国申请第15/396,262号“PROCESSING MULTIPLE PARALLEL HIGH LEVEL CONFIGURATION CHANGES FOR MANAGED NETWORK DEVICES”中更详细地讨论了用于检测配置数据的多个提议变化上的冲突的技术示例,该申请的全部内容通过引入结合于此。
[0036] 为了解决上面讨论的问题,在一些示例中,管理装置10可以在图形数据库上实现薄层,该薄层捕捉例如上面讨论的公共NMS功能。如果需要,管理装置10还可以提供用于扩展该薄层和添加更多功能的技术。
[0037] 根据本公开的技术,管理装置10可以将网络管理服务功能附加到图形数据库顶点,以近乎实时地支持操作。在这种方法中,图形数据库可以用于YANG数据模型,并且NETCONF操作可以通过图形操作来执行。管理装置10可以附加到图形数据库的一些配置管理功能包括对数据的数据模型约束(基于层次结构中其他节点的存在或值来限制节点的外观或值)、模型转换、私有数据复制支持、资源分配、带外(OOB)变化处理和/或参考对象处理。此外,管理装置10可以提供用于将新功能附加到图形数据库的方法。
[0038] 具体地,关于对数据的约束,YANG提供了数据的语义。可能对顶点属性和/或边属性有约束。属性的验证可以强制验证,同时将值设置为顶点节点。约束可以包括例如“必须”、“强制”、“最小元件”和“最大元件”、“何时”或“如果特征(if-feature)”,并且管理装置10可以在数据库级别实施这些约束。
[0039] 关于模型转换,当创建和/或更新服务模型时,管理装置10可以执行转换处理,以跨层转换服务数据并生成装置配置。管理装置10可以将转换规则作为网络功能附加到图形顶点。这种方法可以实现转换中的并行性,从而可以近乎实时地转换服务变化。基于映射器,管理装置10可以导出功能并将功能附加到顶点。
[0040] 关于私有数据副本支持,管理装置10可以支持相同配置服务的多个并行变化。由管理装置10执行的配置管理可以使用多层配置模型。操作员可能在模型的不同层操作。管理装置10可以检测不同级别的冲突,并提供冲突视图和建议的解决方案。
[0041] 关于资源分配(或共享的资源管理),如果在两个高级模型实例上共享资源,如果低级资源没有被任何其他高级模型使用,则删除一个高级服务,应该导致管理装置10删除低级实例,但是如果低级资源被另一高级实例使用,则不应该导致管理装置10删除低级实例。
[0042] 关于参考对象处理,在数据模型中,一个对象可以参考另一对象。管理装置10可以将这样的参考建模为leafrefs。在这些情况下,管理装置10可以删除被参考的对象。这可以作为一个功能附加到图形数据库中。
[0043] 管理装置10(像其他网络管理系统一样)可以将低级配置模型(例如,YANG模型)用于高级服务和低级装置配置和资源。这些数据模型上的参考可以通过leafrefs来表示。如本文所讨论的,这样的参考可以表示为图形数据模型。应用程序可能需要跨YANG数据模型查询数据。在传统系统中,应用程序会发出多个资源应用程序编程接口(API)调用,并运行业务逻辑来获取从这些查询中得到的过滤信息。
[0044] 此外,应用程序可以使用文档数据库来支持分类、搜索和过滤。当应用程序接收到过滤请求(例如,GraphQL查询)时,过滤器可以应用于文档数据库。
[0045] 根据本公开的技术,管理装置10可以支持查询,以从图形数据库中获得一个或多个过滤对象,例如,YANG数据建模对象图形。管理装置10还可以提供GraphQL接口,来与YANG数据模型图形交互。在graphql.org描述GraphQL。在一些示例中,管理装置10可以从配置模型创建GraphQL模式(GraphQL schema),该模式可以再次用YANG表示。此外,管理装置10可以从YANG数据模型生成文档数据库模式。此外,管理装置10可以将GraphQL查询转换成图形数据库查询,然后将其发布到图形数据库,以确定图形数据库中与接收到的查询相匹配的元件。
[0046] 图2是示出图1的管理装置10的一组示例组件的框图。在该示例中,管理装置10包括控制单元22、网络接口34和用户接口36。网络接口34表示可以将网络装置20通信耦接到外部装置(例如,图1的一个元件14)的示例接口。网络接口34可以表示无线和/或有线接口,例如,以太网接口或无线电,其被配置为根据无线标准进行通信,例如,一个或多个IEEE802.11无线网络协议(例如,802.11a/b/g/n或其他这样的无线协议)。在各种示例中,管理装置10可以包括多个网络接口,尽管出于示例的目的,仅示出了一个网络接口。
[0047] 控制单元22表示硬件、软件和/或固件的任意组合,用于实现归于控制单元22及其组成模块和元件的功能。当控制单元22包括软件或固件时,控制单元22还包括用于存储和执行软件或固件的任何必要硬件,例如,一个或多个处理器或处理单元。通常,处理单元可以包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程阵列(FPGA)、或任何其他等效的集成或分立逻辑电路以及这些组件的任何组合。此外,通常使用固定和/或可编程逻辑电路来实现处理单元。
[0048] 用户接口36表示一个或多个接口,通过这些接口,用户(例如,管理员12)(图1)与管理装置10交互,例如,以提供输入和接收输出。例如,用户接口36可以表示监视器、键盘鼠标触摸屏触摸板、触控板、扬声器、照相机、麦克等中的一个或多个。此外,尽管在该示例中,管理装置10包括用户接口,但是应当理解,管理员12不需要直接与管理装置10交互,而是可以远程访问管理装置10,例如,经由网络接口34。
[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来构造。在一些示例中,管理模块24还向用户提供提交转换模块28执行的转换功能的能力,以将高级配置指令转换成装置特定的低级配置指令,如下所述。
[0053] 管理装置10还包括配置数据库40。配置数据库40通常包括描述被管理的网络装置(例如,元件14)的信息。例如,配置数据库40可以包括指示装置标识符(例如,MAC和/或IP地址)、装置类型、装置供应商、装置种类(例如,路由器、交换机、网桥、集线器等)等的信息。配置数据库40还存储被管理的装置(例如,元件14)的当前配置信息(例如,高级配置信息,或者在某些情况下,高级配置和低级配置信息)。根据本公开的技术,配置数据库40可以包括一组或多组公共或私有HLM配置、LLM配置和/或装置级配置。
[0054] 转换模块28基于配置数据库40的信息来确定在高级配置指令上执行哪个转换功能30,例如,哪个装置将接收低级配置指令。转换模块28然后执行转换功能30的每个确定的转换功能,向转换功能提供高级配置指令作为输入,并接收低级配置指令。
[0055] 配置模块26可以首先例如通过从配置数据库40中检索每个服务的现有的一组高级配置信息,来确定要更新配置的装置所执行的每个服务的现有的一组高级配置信息。配置模块26然后可以将现有的一组高级配置信息与新接收的一组高级配置信息进行比较,并确定现有的和新接收的一组高级配置信息之间的差异。配置模块26然后可以将这些差异传递给转换模块28,用于转换成相应的几组低级配置信息。配置模块26还基于新接收的一组高级配置信息更新记录在配置数据库40中的现有高级配置信息。
[0056] 如上所述,用户(例如,管理员12)可以为数据创建、数据更新和数据删除创建不同的转换器。本公开基于“更新转换器”需要检查高级配置信息中的修改变量以及更新低级配置模型中的相应配置这一理解,来描述转换技术。当更新低级配置信息时,转换器不应该仅依赖于高级差异数据,因为可能需要读取高级配置数据的未改变数据,来适当地改变低级配置数据。因此,本公开的技术可以简化用于将高级配置数据转换成低级配置数据的更新和/或删除转换器。在一些示例中,“创建”转换器可以用于执行更新和/或删除转换,如下所述。
[0057] 在一些示例中,执行更新转换(即,导致低级配置信息的值更新的高级配置数据的转换变化,而不创建或删除低级配置数据中的元件)的转换功能30可以如下操作。在一个示例中,执行更新的转换功能30可以覆盖单个元件。即,这些转换功能的执行可以导致删除元件值,例如,通过用新值替换旧的元件值。有时,配置服务模型中的单个值可以映射到装置配置中的列表。在这些情况下,转换模块28可以发送旧值和新值。
[0058] 例如,高级模型(HLM)中的叶元件可以映射到用于装置级配置信息的低级模型(LLM)中的元件列表。假设HLM元件的名称为“VLAN名称”,但是在LLM中,对应的元件称为“列表”。如果用户通过用新名称(例如,“新VLAN名称”)替换名称“VLAN名称”来修改HLM对象,则转换功能将需要删除“VLAN名称”,否则旧条目将保留在低级配置信息中。此外,执行更新的转换功能30可以使得转换模块28通过根据需要添加新条目和删除旧条目来更新列表。
[0059] 转换模块28(可以根据转换功能30来配置)可以使用同一转换模板来创建、更新和删除高级配置指令。转换模块28可以被配置为仅允许处理受影响的高级数据变化(即,受变化影响的高级配置信息中的那些元件)。基于转换器逻辑,转换模块28可以推断高级模型中的HLM元件以及相应的LLM元件之间的依赖性。当高级配置信息改变时,转换模块28可以生成现有高级配置信息和新的高级配置信息之间的差异。这种差异可以解释LLM元件中的依赖性。因此,当计算差异时,转换模块28可以确定差异以及例如基于依赖性来用于处理差异的信息。转换模块28可以执行一个转换功能30,向一个执行的转换功能30提供确定的信息(差异和依赖性)作为输入。
[0060] 当上传“创建”模板时(即,相对于现有的高级配置信息,处理高级配置信息中的新数据的转换功能30中的转换功能),转换模块28可以确定高级配置信息内的元件之间的依赖性。这些依赖性可能基于服务到装置的配置映射。当服务改变时,转换模块28可以基于依赖性产生现有高级配置信息和新的高级配置信息之间的差异。转换模块28然后可以使用“创建”模板(转换功能30中的转换功能)来处理差异,从而将高级配置信息转换成低级配置指令。转换模块28然后可以向配置模块28提供低级配置指令。
[0061] 在从转换模块28接收到低级配置指令之后,配置模块28经由网络接口模块32将低级配置指令发送到相应的被管理的网络装置,其中,对于这些被管理的网络装置,将更新配置。网络接口模块32将低级配置指令传递给网络接口34。网络接口34将低级配置指令转发给相应的网络装置。
[0062] 尽管出于示例的目的,用户接口36被描述为允许管理员12(图1)与管理装置10交互,但是应当理解,在其他示例中,可以使用其他接口。例如,管理装置10可以包括代表性状态转移(REST)客户端(未示出),该客户端可以充当到另一装置的接口,管理员12可以通过该接口来配置管理装置10。同样,管理员12可以通过REST客户端与管理装置10交互来配置元件14。
[0063] 根据本公开的技术,管理模块24可以将配置数据库40建模为表示YANG配置数据元件的图形数据库。YANG指定了各种类型的数据结构,包括列表、叶列表、容器、具有存在的容器、特性。管理模块24可以将列表、容器、具有存在的容器和特性以及顶层容器中的每一个建模为图形数据库中的顶点。
[0064] 具体地,管理模块24可以将YANG模型中的列表节点建模为图形数据库的顶点。“最小元件”和“最大元件”对父顶点和列表节点顶点之间的边进行约束。管理模块24可以将叶节点、叶列表等建模为顶点的属性。
[0065] 管理模块24还可以将容器属性建模为父顶点属性(attribute)。管理模块24可以在属性名称之前指定容器名称。例如,下面是YANG容器的示例。
[0066]
[0067]
[0068] 在该示例中,管理模块24将p2p建模为顶点,并将顶点的属性指定为包括属性“名称”、“带宽设置/带宽限制”和“带宽设置/突发长度限制”。
[0069] 管理模块24可以将具有存在的容器建模为父顶点属性。管理模块24可以将所有特征建模为特征顶点的一部分。具体地,管理模块24可以构建单个特征顶点,并且将每个YANG特征指定为特征顶点的相应属性。管理模块24可以进一步指定属性值,以表示是否支持该特征。管理模块24可以进一步将顶层YANG容器建模为图形数据库的顶点。
[0070] 管理模块24还可以使用边来连接上面讨论的各种顶点,以形成图形数据库。管理模块24可以使用两种边:包含边和参考边。包含边也可以称为“有边”。即,当对应于第一顶点的元件“包含”对应于第二顶点的元件(因此,第一顶点“具有”第二顶点)时,管理模块24可以使用包含边或有边将第一顶点连接到第二顶点。因此,包含另一顶点的顶点会在顶点之间产生“有”关系。作为另一示例,列表到列表包含在列表元件对应的顶点之间具有“有边”关系,其中,管理模块24可以在这些顶点之间构建这样的边。如果管理模块24删除父顶点,则管理模块24也可以自动删除与父顶点的有边相关联的子顶点。管理模块24也可以在顶点之间构建参考边。叶参考可以在顶点之间具有参考边,并捕捉“参考”属性。
[0071] 管理模块24可以将顶点上的“用户排序”属性建模为父顶点到当前顶点之间的“边属性”-“顺序”。管理模块24可以为属性指定整数值。
[0072] YANG指定了数据的语义。这种语义可以对在YANG数据之后建模的图形数据库的顶点属性和边属性施加约束。管理模块24可以对顶点和边的属性执行验证过程,以实施验证。管理模块24也可以将值设置到顶点节点,例如,作为验证过程的一部分。
[0073] 在如上所述构建图形数据库之后,管理模块24可以对图形数据库的数据执行操作。例如,管理模块24可以将基于Netconf的操作(例如,get-config、带有过滤器的get-config、edit-config)映射到图形数据库查询(例如,Gremlin查询)。在gremlindocs.spmallette.documentup.com的GremlinDocs和github.com/tinkerpop/gremlin/wiki中描述Gremlin。如果条件属性改变,则管理模块24可以执行映射到图形数据库的顶点和边的条件。响应于这些条件,管理模块24可以处理额外的变化,作为如下文更详细讨论的功能来处理。管理模块24可以进一步更新事务语义中的所有变化。此外,根据本公开的技术,管理模块24可以将接收到的GraphQL查询转换成图形数据库查询,例如,Gremlin查询。
[0074] 根据本公开的技术,管理装置10还为服务和资源使用YANG数据模型,并且提供用于在获取过滤信息时(例如,根据查询)对这些对象应用过滤器的机制。过滤器可以支持基于条件遍历数据模型,获取选择性属性和分页。管理模块24可以实现对RESTConf的支持(根据Bierman等人的“RESTCONF Protocol”,Internet Engineering Task Force(IETF),RFC8040,2017年1月,可在tools.ietf.org/html/rfc8040上获得)。RESTConf支持内容、深度和字段,但不支持基于条件的过滤,也不支持跨YANG模块获取信息。因此,在其他示例中,管理装置10可以接受GraphQL查询,作为RESTConf的替代。
[0075] 管理装置10首先可以例如经由用户接口36或交互工作接口34接收图形查询,作为请求的一部分。查询可能包含YANG数据模型路径和属性的条件,遵循GraphQL语法,并包含leafref处理。例如,对于leafref处理,可以在参考对象中直接引用要参考的对象。在接收到查询之后,管理模块24可以从GraphQL查询生成图形查询,其中,图形查询以领域特定语言(DSL)来表示。
[0076] 本公开的技术可以提供各种优点。例如,YANG是分层数据模型,GraphQL支持分层数据模型。这些技术允许只使用单个API调用来获取过滤的信息,而不是多个API调用,从而减少计算负载并提高计算性能。这些技术允许在遍历查询时包含条件。该查询可以进一步定义图形形状,并且可以是强类型的。
[0077] 为了生成GraphQL模式,管理模块24可以将YANG数据类型转换成相应的GraphQL模式数据类型,如表1所示:
[0078] 表1
[0079]
[0080]
[0081] 管理模块24基于生成的模式支持GraphQL查询。GraphQL查询可能包含YANG数据模型路径和属性条件以及leafref处理信息,其中,要参考的对象可以在参考对象中直接引用。
[0082] 管理模块24还可以基于生成的模式来执行GraphQL模式的突变。突变可能包含YANG数据模型路径和属性条件。
[0083] 在一些示例中,管理模块24可以生成文档数据库,以支持分类、搜索和过滤。具体地,管理模块24可以从YANG数据模型生成文档数据库模式。管理模块24可以在文档数据库上运行过滤查询。具体地,管理模块24可以用实体扩展作为顶点来建模YANG列表,并且管理模块24可以将每个顶点建模为文档数据库的文档。管理模块24可以设置叶节点、叶列表和诸如文档属性等其他这种元件。管理模块24还可以从YANG叶数据类型生成文档属性数据类型。
[0084] 管理模块24可以确定包含另一顶点的顶点具有包含边或“有边”,并在顶点之间具有“有”关系。管理模块24可以为子顶点生成文档,以包含具有父顶点标识符(例如,完全限定名(fq-name))的父属性。同样,管理模块24可以为父顶点生成文档,以包含将具有子顶点标识符的子属性,例如,完全限定名(fq-name)。
[0085] 管理模块24可以确定两个叶顶点在它们之间具有参考边(ref-edge)。管理模块24可以在顶点之间具有叶参考的参考边。管理模块24可以为具有到另一顶点的参考边的一个顶点生成一个文档,以具有要参考的顶点文档的反向参考属性,并且包含要参考的顶点的标识符,例如完全限定名(fq-name)。管理模块24还可以为要参考的顶点生成一个文档,以具有对参考顶点文档的参考属性,并且包含参考顶点的标识符,例如,完全限定名(fq-name)。
[0086] 图3是示出图形数据库的一组示例顶点和边的概念图。在图3的示例中,顶点50表示对应于服务模块的顶点的示例,顶点52表示对应于装置的顶点的示例,装置边54是有边,表示对应于顶点50的服务模块“具有”符合顶点52的数据的一个或多个装置。图2的管理模块24可以基于下面所示的YANG模型的示例YANG补丁操作或者基于YANG创建操作来构建顶点50、52和装置边54:
[0087] 模块:服务
[0088]
[0089]
[0090] 如上面的YANG数据所示,示例服务模块包括名称和连接设置,包括名称、vc-id、unit-id和vlan-id。因此,管理模块24构建顶点50,以包括名称、连接性设置/名称、连接性设置/vc-id、连接性设置/mtu、连接性设置/unit-id和连接性设置/vlan-id的属性。此外,如上所示的服务模块包括一个或多个装置,每个装置都具有装置id、邻居名称和接口名称的属性。因此,管理模块24构建顶点52,以包括装置id、邻居名称和接口名称的属性。管理模块24还将装置边54构建为从顶点50到顶点52的有边,以表示服务模块如上所示“具有”一个或多个装置。
[0091] 图3的模型的示例补丁请求是:
[0092]
[0093] p2p1
[0094]
[0095] 915
[0096] 2467
[0097]
[0098]
[0099]
[0100] 10.1.1.1
[0101]
[0102]
[0103]
[0104] 管理模块24可以为上述示例数据生成以下Gremlin图查询:v=g.v(“p2p1”);
[0105] v.removeProperty(connectivity-settings/unit-id)
[0106] v.removeProperty(connectivity-settings/vlan-id)
[0107] d=g.addVertex([device-id:’10.1.1.1’]);
[0108] g.addEdge(v,d,'has-edge',[path:’devices’])
[0109] 图4是示出带有附加的触发器的顶点的示例的概念图。具体地,图4的示例示出了图形60,包括顶点62、66、70和74。顶点62包括触发器64,顶点66包括触发器68,顶点70包括触发器72,顶点74包括触发器76。
[0110] 管理模块24(图2)可以使用图形(例如,图形60)来管理被管理的服务的整个生命周期。管理模块24可以通过图形数据库覆盖功能支持如上所述的配置管理功能。这些功能可以遵循反应式编程原理。根据反应式编程原理的处理可以包括指定“定义(条件)”元件、“观察(触发)”元件、“反应(功能)”元件和“目标”元件的管理模块24。“观察(触发)”元件在图形60中由触发器64、68、72、76表示。
[0111] “定义(条件)”元件可以包含一个或多个表达式。表达式可以是列中的值变化或有效的可执行表达式。(条件)自变量是可选的。条件自变量可以是Python脚本。如果管理模块24将条件自变量指定为Python脚本,则管理模块24可以进一步为该脚本构造一个类,并为该类构造两种方法:filter()方法和watches()方法。管理模块24构造filter()方法来包含实际条件,并构造watches()方法来返回条件中使用的属性。如果使用表达式,则管理模块24直接从表达式读取条件属性。
[0112] 当管理模块24执行“观察(触发)”元件时,管理模块24解析“定义”表达式并观察所产生的属性变化。当满足反应条件时,管理模块24执行“反应(功能)”中指定的功能。作为“反应”的一部分,管理模块24响应于“反应”功能修改“目标”元件中指定的属性。
[0113] 管理模块24支持向数据库程序覆盖注册新的“反应”功能。管理模块24可以向覆盖添加新的“反应”功能。功能调用方还应该提供目标属性列表,这些属性将会受到应用“反应”功能的影响。数据库程序覆盖还可以包括如下所述的内置反应功能列表。
[0114] 在一些示例中,管理模块24使用如上针对以下任务所讨论的功能来执行配置服务管理:对数据实施约束、私有数据存储支持、转换(例如,从高级配置信息到低级配置信息)、资源分配以及带外(OOB)变化的处理。这些任务将在下面详细解释。
[0115] 管理模块24可以对配置数据库40的数据实施约束。例如,管理模块24可以为YANG“当”条件Xpath语句构造“定义(条件)”元件和“观察”属性。此外,管理模块24可以构建“反应(功能)”元件,以基于Xpath评估值设置顶点/顶点/边的属性。
[0116] 作为示例,管理模块24可以在以下示例模型数据中实施“当”条件:
[0117] augment/system/login/user{
[0118] when"class!='wheel'";
[0119] leaf uid{
[0120] type uint16{
[0121] range"1000..30000";
[0122] }
[0123] }
[0124] }
[0125] 在这个示例中,条件是“class!=wheel”,即,类别不等于车轮。对于这个示例,管理模块24将在“类”上生成“观察”元件和“启用uid”功能。因此,当用户的类别不等于“车轮”时,“观察”元件触发发射,导致管理模块24执行“启用uid”功能,该功能在图形数据库中为用户实例化叶节点“uid”。
[0126] 作为另一示例,管理模块24可以执行选择语句,作为条件强制。管理模块24可以为在选择中的YANG情况语句中找到的所有属性生成条件,并且执行将其他情况语句的属性设置为“空”的功能。例如,管理模块24可以处理下面的选择语句:
[0127] Choice aa{
[0128] Case bb1{
[0129] leaf d{type string};
[0130] leaf e{type string};
[0131] }
[0132] Case bb2{
[0133] leaf d1{type string};
[0134] leaf e1{type string};
[0135] }
[0136] }
[0137] 管理模块24可以从上面的“选择”示例中产生以下条件:
[0138] If(d!=null||e!=null)//用于情况bb1的条件
[0139] If(d1!=null||e1!=null)//用于情况bb2的条件
[0140] 管理模块24可以隐式地处理约束的层次(例如,必须、强制、最小元件、最大元件),因为如果不满足具有“当/如果-特征”的父节点,则不会创建父顶点。
[0141] 如上所述,管理模块24的转换模块28将高级配置信息转换成低级配置信息,即,装置级配置信息。根据本公开的技术,由转换模块28执行的转换规则可以作为网络功能附加到图形顶点。因此,当创建或更新高级配置服务模型时,转换模块28可以跨层转换高级服务数据,并生成低级装置级配置信息。将转换规则附加到图形数据库中的相应顶点,可以实现转换并行性,从而可以近乎实时地转换服务变化。基于用于转换的映射器,管理模块24导出转换功能并将这些功能附加到配置数据库40的图形数据库的相应顶点。
[0142] 以下是服务模块的高级模型示例:
[0143] 模块:服务
[0144]
[0145]
[0146] 转换模块28可以将上面的高级模型转换成下面的低级模型:模块:配置
[0147]
[0148] 将高级模型转换为低级模型的示例映射器是:
[0149]
[0150]
[0151]
[0152] 管理模块24可以从上面的示例映射器生成下面的图形转换功能。首先,管理模块24可以生成装置顶点功能。管理模块24可以将装置顶点功能与高级模型中的每个装置(服务/装置/装置)相关联。管理模块24可以生成对邻居名称、接口和/服务/连接性设置/vc-id的观察以及以下示例模板的反应功能:
[0153]
[0154]
[0155]
[0156] 管理模块24还可以生成接口顶点功能,并将该功能与高级模型中的每个接口(服务/装置/装置/接口)相关联。管理模块24还可以生成接口观察/服务/连接性设置/mtu以及以下示例模板的反应功能:
[0157]
[0158]
[0159]
[0160] 管理模块24也可以支持私有数据存储。管理装置10可以使用私有数据存储来支持相同配置服务的多个并行变化。配置管理可以有多层配置模型。操作员可以在模型的不同层上并行操作。管理模块24可以检测不同级别的冲突,提供冲突视图,并提供冲突解决方案。管理模块24可以支持私有数据存储中的配置数据库40的草稿变化的私有副本。当一个或多个管理员12改变草稿中的顶点时,管理装置24可以将变化保存在图形数据库的相应私有副本中。
[0161] 管理模块24可以例如由不同的管理员12提供多个并行变化。一旦做出改变,管理模块24可以自动检测私有数据存储中各种草稿之间的冲突。管理模块24可以进一步为图形数据库的顶点定义唯一的约束,并验证约束的变化。为了支持高性能,管理模块24可以将变化与图形一起保存,并且将顶点的每个草拟的变化与原始顶点一起保存。
[0162] 下表1总结了这些操作。在表1中,草稿顶点包括草稿id、更新属性(差异)和状态,而草稿边包括草稿id、更新属性(差异)和状态。
[0163] 表1
[0164]
[0165]
[0166]
[0167] 图5是示出对等(P2P)管理服务的一组示例图形数据库顶点和边的概念图。具体地,图2的管理模块24可以为在YANG中定义的以下示例服务模块构建图5的图形模型90:
[0168] 模块:服务
[0169]
[0170]
[0171] 如以上模型所示,服务模块包括一组装置。在图5的示例中,根据上述服务模块模型的P2P服务包括由相应的“有边”连接的两个实例化装置顶点。参考图5,假设首先在配置数据中指定了两个装置,管理模块24构建P2P顶点92,以对应于P2P管理的服务,并且构建装置顶点94A、94B以对应于初始一组装置。管理模块24还使用相应的“有边”95A、95B将P2P顶点92连接到装置顶点94A、94B。
[0172] 图6是示出响应于配置更新对图5的图形数据库元件的草稿变化的概念图。具体地,图6描绘了图100,图100包括P2P顶点92和通过相应的具有边95A、95B耦接到P2P顶点92的装置顶点94A、94B,如图5所示。然而,图形100还示出了对图5的图形90的建议修改。即,响应于服务配置更新(在该示例中,添加额外装置),图2的管理模块24可以构建图5的图形的更新草案,如图6所示。在该示例中,变化包括添加第三装置(由装置顶点94C表示)、更新对应于装置顶点94A的装置的邻居名称(导致装置顶点94A’)以及删除带宽设置(导致P2P顶点92’)。使用阴影显示添加和修改的顶点。
[0173] 另外,P2P顶点92通过边102连接到P2P顶点92’,装置顶点94A通过边104连接到装置顶点94A’,P2P顶点92通过边106连接到装置顶点94C。管理模块24可以用“草稿id-1”来标记边102、104和106中的每一个,以指定通过草稿变化(即,草稿id-1)来修改连接的顶点(分别是P2P顶点92’、装置顶点94A’和装置顶点94C)。此外,管理模块24可以指定“op=create”作为边106的标签的一部分,指示要创建装置顶点94C,而不是简单地修改。图形100还包括具有IDS:P2P触发器98的草稿顶点96。
[0174] 当提交草稿时,管理模块24将草稿实体和边中的变化与配置数据库40中图形数据库的实际副本合并。
[0175] 图7是示出用于生成可以在执行本公开的技术时使用的图形数据库的示例方法的流程图。出于示例和解释的目的,图7的方法被解释为由图2的管理模块24执行。应当理解,在其他示例中,其他装置和单元可以被配置为执行这些或类似技术。
[0176] 首先,管理模块24可以接收被管理的网络装置的配置数据(120)。在一些示例中,管理模块24可以接收被管理的网络装置的高级配置数据。在这些示例中,管理模块24的转换模块28使用转换功能30将高级配置数据转换成低级配置数据。如上所述,高级配置数据和/或低级配置数据可以用YANG表示。
[0177] 管理模块24可以根据配置数据构建图形数据库(122)。例如,如上所述,管理模块24可以构建表示配置数据的元件的多个顶点,并将相关顶点与边连接,例如,包含边(在本文也称为有边)或参考边。如上所述,顶点可以表示YANG列表元件、YANG容器元件(存在或不存在)、YANG特征元件和/或顶层容器元件。具体地,管理模块24可以构建图形数据库来表示高级配置数据和/或低级配置数据。
[0178] 管理模块24然后使用图形数据库管理网络装置(124)。例如,管理模块24可以将功能附加到图形数据库的顶点,并且响应于相应触发器的发射,执行这些功能来管理对应于顶点的服务或其他元件。另外或替代地,管理模块24可以接收对配置数据(例如,高级或低级配置数据)的更新,并且在私有数据存储中构建对图形数据库的草稿变化。管理模块24可以协调草稿变化之间的冲突,应用草稿变化,或者在无法协调冲突的情况下拒绝草稿变化。管理模块24还可以将转换功能附加到图形数据库的顶点,管理模块24可以使用该转换功能将适用的高级配置数据变化转换成对应于转换功能附加到的顶点的服务或其他元件的低级配置数据变化。
[0179] 图8是示出根据本公开的技术从示例YANG数据模型构建的示例图形150的概念图。管理装置10可以从下面的示例YANG数据模型构建图8的示例图形150:
[0180]
[0181]
[0182]
[0183]
[0184] 如上面的示例YANG数据模型所示,资源包括站点以及站点内的分支和装置。具体地,站点具有一个或多个分支,站点作为几个核心装置,分支具有一个或多个边装置。装置色数据指示存在核心装置和边装置。因此,管理装置10构建图形150,以具有站点顶点152、分支顶点154和装置顶点156。管理装置10还构建图形150,以包括从站点顶点152到分支顶点154的有边158以及从站点顶点152和分支顶点154到装置顶点156的参考边。此外,管理装置10为装置顶点156创建属性信息164,因为装置顶点156是叶顶点。
[0185] 过滤器应该能够使用图形150确定给定站点的核心和边装置。获取站点“Bangalore”的核心和边装置的示例查询如下所示:
[0186] site(name:"Bangalore"){
[0187] device(role:core){
[0188] id
[0189] }
[0190] branch(){
[0191] device(role:edge){
[0192] id
[0193] }
[0194] }
[0195] }
[0196] 示例过滤DSL查询如下所示:
[0197] site(name:"Bangalore"){
[0198] device(role:"PE"){
[0199] id,
[0200] interface{
[0201] name
[0202] }
[0203] }
[0204] 图9是示出根据本公开的技术的生成和使用图形数据模型的示例方法的流程图。出于示例和解释的目的,图9的方法被描述为由图1和图2的管理装置10执行。然而,应当理解,其他装置可以被配置为执行这种或类似的方法。
[0205] 首先,管理装置10检索在网络管理系统中管理的多个网络装置的数据模型(200)。例如,管理模块24可以从配置数据库40中检索数据模型。配置模型可以是可以用YANG表示的任何模型,例如,低级(例如,装置级)配置数据模型、服务模型、库存模型等。管理模块24然后使用数据模型生成GraphQL模型和图形数据模型(202)。例如,管理模块24可以构建图形数据模型,以具有多个节点(也称为顶点),每个节点对应于正在管理的一个网络装置,如数据模型所示。如以上参考图8所讨论的,管理装置10可以生成图形150,以包括表示一个或多个被管理的网络装置的装置顶点156。
[0206] 管理装置10然后存储每个网络装置的属性(204)。具体地,根据数据模型,管理装置10可以存储与图形数据模型的相应节点相关联的属性。例如,如图8所示和上面讨论的,管理装置10可以确定各种装置的属性,并存储与装置顶点156相关联的属性164。
[0207] 根据如上所述的本公开的技术,管理装置10可以进一步使用数据模型生成文档数据库模式(206)。例如,假设数据模型以YANG表示,管理装置10可以将YANG列表建模为文档数据库模式的文档,并且根据来自数据模型的相应属性设置文档的属性。如果两个装置被建模为在图形数据模型中具有父子关系,则管理装置10可以生成对应于图形数据模型的父顶点的父顶点文档和对应于图形数据模型的子顶点的子顶点文档。管理装置10还可以设置父顶点文档的子属性来识别子顶点文档,并且设置子顶点文档的父属性来识别父顶点文档。
[0208] 管理装置10然后可以接收指定装置属性的GraphQL查询(208)。根据本公开的技术,管理装置10可以将GraphQL查询转换成图形数据库查询(210)。管理装置10然后可以搜索与图形数据模型的顶点/节点相关联的属性,以确定哪个顶点/节点具有图形数据库查询中指定的属性,并且类似地,确定哪些装置对应于所确定的顶点/节点。具体地,管理装置10可以确定满足查询属性和/或使用文档数据库模式的图形节点(212),然后确定哪些装置对应于所确定的图形节点(214)。管理装置10可以进一步支持使用文档数据库模式对图形数据模型进行分类、搜索或过滤中的一个或多个。最后,管理装置10返回识别满足查询属性的装置的数据(216)。例如,管理装置10可以生成识别具有指定查询属性的一个或多个网络装置的报告,并将该报告发送回从其接收查询的装置。尽管图9示出了在已经构建了图形数据模型之后接收查询,但是应当理解,在一些示例中,管理装置10可以响应于对这样的查询的接收而首先生成图形数据模型和GraphQL模型。
[0209] 再次参考图8的示例,接收到的查询可以指定作为核心装置或边装置的装置的属性。假设查询指定了作为边装置的装置,管理装置10可以确定与也是边装置的装置顶点156相关联的网络装置,然后生成报告,指示哪些网络装置被确定为与也是边装置的装置顶点156相关联,例如,如属性164所指示的。管理装置10然后可以将报告返回(例如,输出)到最初从其接收查询的装置或实体。
[0210] 本公开中描述的技术可以至少部分地在硬件、软件、固件或其任意组合中实现。例如,所述技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效的集成或分立逻辑电路以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指任何前述逻辑电路,单独或与其他逻辑电路或任何其他等效电路相结合。包括硬件的控制单元也可以执行本公开的一种或多种技术。
[0211] 这种硬件、软件和固件可以在同一装置内或在单独的装置内实现,以支持本公开中描述的各种操作和功能。此外,任何所描述的单元、模块或组件可以一起或单独实现为分立但可互操作的逻辑装置。将不同特征描述为模块或单元旨在突出不同的功能方面,并不一定意味着这些模块或单元必须通过单独的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件来执行,或者集成在公共或单独的硬件或软件组件内。
[0212] 本公开中描述的技术也可以在包含指令的计算机可读介质中实现或编码,例如,计算机可读存储介质。在计算机可读介质中嵌入或编码的指令可以使得可编程处理器或其他处理器执行该方法,例如,当执行指令时。计算机可读介质可以包括非暂时性计算机可读存储介质和暂时性通信介质。有形且非暂时性的计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、磁带、磁介质、光学介质或其他计算机可读存储介质。应当理解,术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他瞬态介质。
[0213] 已经描述了各种示例。这些和其他示例在以下权利要求的范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈