CN112152835B - 管理设备配置图式的多个语义版本 - Google Patents
管理设备配置图式的多个语义版本 Download PDFInfo
- Publication number
- CN112152835B CN112152835B CN201910919010.8A CN201910919010A CN112152835B CN 112152835 B CN112152835 B CN 112152835B CN 201910919010 A CN201910919010 A CN 201910919010A CN 112152835 B CN112152835 B CN 112152835B
- Authority
- CN
- China
- Prior art keywords
- node
- model
- level configuration
- network
- version
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/084—Configuration by using pre-existing information, e.g. using templates or copying from other elements
- H04L41/0846—Configuration by using pre-existing information, e.g. using templates or copying from other elements based on copy from other elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0213—Standardised network management protocols, e.g. simple network management protocol [SNMP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/212—Schema design and management with details for data modelling support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/0836—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/085—Retrieval of network configuration; Tracking network configuration history
- H04L41/0859—Retrieval of network configuration; Tracking network configuration history by keeping history of different configuration generations or by rolling back to previous configuration versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0889—Techniques to speed-up the configuration process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/22—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0233—Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/024—Standardisation; Integration using relational databases for representation of network management data, e.g. managing via structured query language [SQL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0866—Checking the configuration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0886—Fully automatic configuration
Abstract
一种控制器设备管理多个网络设备。控制器设备包括在电路系统中被实现并且被配置为进行以下操作的一个或多个处理单元:维护图数据结构,该图数据结构表示多个网络设备的设备级别配置图式的,该图数据结构包括多个网络设备中的网络设备的版本的第一模型的每个第一设备级别配置图式元素的特里节点;基于网络设备的版本的第二模型的路径来获取相应的第二设备级别配置图式元素;确定第二设备级别配置图式元素与第一设备级别配置图式之间的偏差;以及更新特里节点以添加去往表示第二设备级别配置图式元素的节点的分支。
Description
技术领域
本公开涉及计算机网络,并且更具体地涉及网络设备的管理。
背景技术
计算机网络是可以交换数据和共享资源的互连计算设备的集合。各种设备操作以促进计算设备之间的通信。例如,计算机网络可以包括路由器、交换机、网关、防火墙以及各种其他设备,以提供和促进网络通信。
这些网络设备通常包括用于本地或远程地配置设备的机制,诸如管理接口。通过与管理接口交互,客户端可以执行配置任务以及执行操作命令以收集和查看被管理设备的操作数据。例如,客户端可以配置设备的接口卡、调节所支持的网络协议的参数、指定设备内的物理组件、修改由路由器所维护的路由信息、访问驻留在设备上的软件模块和其他资源、以及执行其他配置任务。另外,客户端可以允许用户从设备查看当前操作参数、系统日志、与网络连接相关的信息、网络活动或其他状态信息,以及查看和响应于从设备接收的事件信息。
网络配置服务可以由多个不同的设备(诸如具有服务卡和/或专用服务设备的路由器)执行。这样的服务包括连接服务,诸如第三层虚拟专用网(L3VPN)、虚拟专用局域网服务(VPLS)和点对点(P2P)服务。其他服务包括网络配置服务,诸如Dot1q VLAN服务。网络管理系统(NMS)和NMS设备(也称为控制器或控制器设备)可以支持这些服务,使得管理员可以容易地创建和管理这些高级别网络配置服务。
特别地,设备的用户配置可以被称为“意图”。基于意图的网络系统允许管理员描述所意图的网络/计算/存储状态。用户意图可以分类为业务策略或无状态意图。业务策略或有状态意图可以基于网络的当前状态来解决。无状态意图可以是描述预期的网络/计算/存储状态的完全声明性方式,而不关心当前网络状态。
意图可以表示为可以使用统一的图来建模的意图数据模型。意图数据模型可以表示为连接的图,使得可以跨意图数据模型来实现业务策略。例如,数据模型可以使用连接的图来表示,该连接的图具有与具有边(has-edge)边和参考(ref)边连接的顶点。控制器设备可以将意图数据模型建模为统一的图,使得可以将意图模型表示为连接的。以这种方式,可以在意图数据模型之间实现业务策略。当使用统一的图模型对意图进行建模时,扩展新的意图支持需要对图模型和编译逻辑进行扩展。
为了配置设备以执行意图,用户(诸如管理员)可以编写将高级别配置指令(例如,符合意图数据模型的指令,其可以表示为统一的图模型)转换为低级别配置指令(例如,符合设备配置模型的指令)的转换程序。作为配置服务支持的一部分,用户/管理员可以提供意图数据模型以及意图数据模型与设备配置模型之间的映射。
为了向用户简化映射定义,可以将控制器设备设计为提供以简单方式定义映射的能力。例如,某些控制器设备提供Velocity模板和/或可扩展样式表语言转换(XSLT)的使用。这样的转换器包含从意图数据模型到低级别设备配置模型的转换或映射逻辑。通常,意图数据模型的相对少量的变化跨设备配置影响相对大量的属性。当创建、更新和从意图数据模型删除服务时,可以使用不同的转换器。
发明内容
通常,本公开描述了用于管理网络设备的技术。网络管理系统(NMS)设备(本文中也称为控制器设备)可以使用例如用又一代下一代(YANG)数据建模语言表达的低级别(即,设备级别)配置数据来配置网络设备。此外,控制器设备可以基于网络设备的配置数据来管理网络设备。根据本公开的技术,控制器设备可以维护图数据结构,图数据结构包括特里(trie)节点以表示网络设备的公共模型的设备级别配置模型的偏差(例如,相同模型的网络设备的两个不同版本的配置图式)。也就是说,每个特里节点可以表示配置图式中的路径的模型。例如,特里节点可以指示某些配置参数是否不适用于网络设备的模型的特定版本和/或是否为网络设备的模型的特定版本添加附加的图式属性。
在一个示例中,一种管理多个网络设备的方法包括:由管理多个网络设备的控制器设备维护图数据结构,该图数据结构表示用于多个网络设备的设备级别配置图式的,该图数据结构包括用于每个第一设备级别配置图式元素的特里节点,该第一设备级别配置图式元素用于多个网络设备中的网络设备的版本的第一模型;由控制器设备基于用于网络设备的版本的第二模型的路径来获取相应的第二设备级别配置图式元素;由控制器设备确定第二设备级别配置图式元素与第一设备级别配置图式元素之间的偏差;以及由控制器设备更新特里节点以添加去往节点的分支,所示节点表示第二设备级别配置图式元素。
在另一示例中,一种控制器设备管理多个网络设备。控制器设备包括在电路系统中被实现并且被配置为进行以下操作的一个或多个处理单元:维护图数据结构,所述图数据结构表示多个网络设备的设备级别配置图式,该图数据结构包括用于每个第一设备级别配置图式元素的特里节点,该第一设备级别配置图式元素用于多个网络设备中的网络设备的版本的第一模型;基于网络设备的版本的第二模型的路径来获取第二设备级别配置图式元素;确定第二设备级别配置图式元素与第一设备级别配置图式元素之间的偏差;以及更新特里节点以添加去往节点的分支,所述节点表示第二设备级别配置图式元素。
在另一示例中,一种计算机可读存储介质上存储有指令,这些指令在被执行时使得管理多个网络设备的控制器设备的处理器:维护图数据结构,该图数据结构表示多个网络设备的设备级别配置图式,该图数据结构包括用于每个第一设备级别配置图式元素的特里节点,该第一设备级别配置图式元素多个网络设备中的网络设备的版本的第一模型;基于网络设备的版本的第二模型的路径来获取第二设备级别配置图式元素;确定第二设备级别配置图式元素与第一设备级别配置图式元素之间的偏差;以及更新特里节点以添加去往节点的分支,该节点表示第二设备级别配置图式元素。
在附图和以下描述中阐述了一个或多个示例的细节。根据说明书和附图以及权利要求,其他特征、目的和优点将是很清楚的。
附图说明
图1是示出包括使用管理设备管理的企业网络的元件的示例的框图。
图2是示出用于图1的管理设备的示例性组件的集合的框图。
图3是示出示例性哈希映射数据结构的图。
图4是示出根据本公开的技术的包括特里数据结构的示例性图数据结构的图。
图5是示出表示节点与节点的特里数据结构中表示的值之间的对应关系的图表的概念图。
图6A-6C是示出根据本公开的技术的在加载各种示例性图式之后的示例性图数据结构的图。
图7A-7C是示出根据本公开的技术的在进一步加载各种示例性图式之后的示例性图数据结构的图。
图8是示出用于执行本公开的技术(例如,用于管理网络设备)的示例性方法的流程图。
具体实施方式
图1是示出包括使用控制器设备10管理的企业网络2的元件的示例的框图。企业网络2的管理元件14A-14G(统称为“元件14”)包括经由通信链路互连以形成通信拓扑以交换资源和信息的网络设备。元件14(通常也称为网络设备或远程网络设备)可以包括例如路由器、交换机、网关、网桥、集线器、服务器、防火墙或其他入侵检测系统(IDS)或入侵防御系统(IDP)、计算设备、计算终端、打印机、其他网络设备、或者这样的设备的组合。虽然在本公开中描述为传输、传送或以其他方式支持分组,但是企业网络2可以根据由任何其他协议定义的任何其他离散数据单元来传输数据,诸如由异步传输模式(ATM)协议定义的小区、或由用户数据报协议(UDP)定义的数据报。互连元件14的通信链路可以是物理链路(例如,光学的、铜等)、无线或他们的任何组合。
企业网络2被示出为经由通信链路被耦合到公共网络18(例如,因特网)。公共网络18可以包括例如一个或多个客户端计算设备。公共网络18可以提供对web服务器、应用服务器、公共数据库、媒体服务器、终端用户设备以及其他类型的网络资源设备和内容的访问。
控制器设备10经由企业网络2通信地被耦合到元件14。在一些示例中,控制器设备10形成设备管理系统的一部分,尽管为了示例的目的而在图1中仅示出了设备管理系统的一个设备。控制器设备10可以被直接或间接地耦合到各种元件14。一旦元件14被部署和被激活,管理员12就使用控制器设备10(或多个这样的管理设备)以使用设备管理协议来管理网络设备。一个示例设备协议是允许控制器设备10遍历和修改在每个被管理元件14内存储配置数据的管理信息库(MIB)的简单网络管理协议(SNMP)。SNMP协议的更多细节可以在从http://tools.ietf.org/html/rfc3411可获取的,2002年12月的网络工作组的互联网工程任务组草案的的RFC 3411“An Architecture for Describing Simple NetworkManagement Protocol(SNMP)Management Frameworks”(Harrington等)中找到,其全部内容通过引用并入本文。作为另一示例,网络配置协议(NETCONF)提供用于配置网络设备的机制,并且使用基于可扩展标记语言(XML)的数据编码用于配置数据(其可以包括策略数据)。NETCONF在从tools.ietf.org/html/rfc4741可获取的,2006年12月的网络工作组的Enns,RFC 4741,“NETCONF Configuration Protocol”中描述,其全部内容通过引用并入本文。
在通常的实践中,控制器设备10(也称为网络管理系统(NMS)或NMS设备)和元件14由企业的IT组集中维护。管理员12与控制器设备10交互以远程监测和配置元件14。例如,管理员12可以从控制器设备10接收关于任何元件14的警报,查看元件14的配置数据,修改元件14的配置数据,向企业网络2添加新的网络设备,从企业网络2移除现有网络设备,或者以其他方式操纵企业网络2和其中的网络设备。虽然关于企业网络进行描述,但是本公开的技术适用于其他公共和私有网络类型,包括LAN、VLAN、VPN等。
在一些示例中,管理员12使用控制器设备10或本地工作站来与元件14直接地交互,例如通过telnet、安全外壳(SSH)或其他这样的通信会话。也就是说,元件14通常提供用于直接交互的接口,诸如命令行接口(CLI)、基于web的接口、图形用户界面(GUI)等,通过这些接口,用户可以与设备交互以直接发布基于文本的命令。例如,这些接口通常允许用户直接与设备交互,例如,通过telnet、安全shell(SSH)、超文本传输协议(HTTP)或其他网络会话,以根据定义的语法输入文本以将命令提交给托管元件。在一些示例中,用户使用控制器设备10与元件14中的一个元件(例如,元件14F)发起SSH会话15以直接地配置元件14F。以这种方式,用户可以以用于直接地执行的格式向元件14提供命令。
此外,管理员12还可以创建脚本,该脚本可以由控制器设备10提交给任何或所有元件14。例如,除了CLI接口之外,元件14还提供用于接收根据脚本语言指定命令的脚本的接口。在某种意义上,脚本可以由控制器设备10输出以自动地调用被管理元件14上的相应远程过程调用(RPC)。脚本可以符合例如可扩展标记语言(XML)或其他数据描述语言。
管理员12使用控制器设备10来配置元件14以指定进一步实现管理员12的目标的某些操作特性。例如,管理员12可以为元件14指定关于安全性、设备可访问性、流量工程、服务质量(QoS)、网络地址转换(NAT)、分组过滤、分组转发、速率限制的特定操作策略或其他策略。控制器设备10使用被设计用于管理被管理网络元件14内的配置数据的一个或多个网络管理协议(诸如SNMP协议、NETCONF协议或其衍生物,诸如瞻博网络设备管理接口)来执行配置。控制器设备10可以与一个或多个元件14建立NETCONF会话。
控制器设备10可以被配置为将新意图数据模型与现有(或旧)意图数据模型进行比较,确定新意图数据模型与现有意图数据模型之间的差异,并且将反应性映射器应用于新意图数据模型与旧意图数据模型之间的差异。具体地,控制器设备10确定新数据模型是否包括相对于旧意图数据模型的任何附加的配置参数、以及新数据模型是否修改或省略旧意图数据模型中包括的任何配置参数。
意图数据模型可以是统一的图模型,而低级别配置数据可以用YANG表示,YANG被在从tools.ietf.org/html/rfc6020可获取的,2010年10月的互联网工程任务组的RFC6020,Bjorklund,“YANG—A Data Modeling Language for the Network ConfigurationProtocol(NETCONF)”中描述。在一些示例中,意图数据模型可以用YAML Ain't标记语言(YAML)来表示。控制器设备10可以包括用于转换意图数据模型差异的各种反应性映射器。这些功能被配置为接受意图数据模型(其可以表示为结构化输入参数,例如,根据YANG或YAML)。这些功能还被配置为输出各组低级别设备配置数据模型变化,例如,设备配置添加和删除。即,y1=f1(x),y2=f2(x),……yN=fN(x)。
控制器设备10可以将用于建模意图数据模型的YANG和低级别设备配置模型。该数据可以包含YANG实体之间的关系,诸如列表项和容器。如下面更详细讨论的,控制器设备10可以将YANG数据模型转换为图数据模型,并且将YANG验证转换为数据验证。用于使用用于高级别配置数据的图模型来管理网络设备的技术在于2017年3月17日提交的美国专利申请No.15/462,465“CONFIGURING AND MANAGING NETWORK DEVICES USING PROGRAM OVERLAYON YANG-BASED GRAPH DATABASE”中描述,其全部内容通过引用并如本文。
控制器设备10可以从管理器12中的一个管理器接收表示关于统一的意图数据模型的创建、更新和/或删除动作中的任何一个或全部的数据。控制器设备10可以被配置为针对应用于图模型的创建、更新和删除中的每一个使用相同的编译逻辑。
通常,控制器(如控制器设备10)使用用于意图、低级别数据模型和资源的分层数据模型。分层数据模型可以基于YANG或YAML。如上所述,分层数据模型可以表示为图。现代系统已经支持意图以简化网络管理。意图是声明性的。为了实现意图,控制器设备10尝试选择最佳资源。客户环境可以被配置为允许客户(例如,管理员12)控制意图实现并且确保编程的意图。
YANG可以用作数据建模语言来管理诸如元件14等被管理网络设备的配置和状态。元件14可以支持YANG作为数据建模语言,而控制器设备10可以使用YANG建模用于供应商不可知配置模型。企业网络2的元件14可以包括各种供应商设备、模型和软件版本(例如,操作系统版本)。
网络管理系统可以使用设备模型图式来检查意图改变(抽象配置)是否对于元件14的特定网络设备有效,合并配置,生成表示配置(配置增量)之间的差异的数据,以及configlet。通常,configlet允许用户(诸如管理员12等)管理用于元件14的简档中的任何可配置参数的配置。因此,控制器设备10可以提供表示用于每个元件14的每个可用的可配置参数的数据,这可以取决于安装在元件14上的软件版本。元件14本身可以使用转换器从抽象数据模型转换为本机数据模型。也就是说,元件14可以原生地支持开放配置YANG数据模型。
如上所述,控制器设备10可以进一步编译意图以形成低级别(即,设备级别)配置。在一些情况下,可以为网络设备的模型产生两个或更多个设备级别配置图式。例如,对于交换机或路由器的特定模型,可能存在多种不同的配置图式,例如,因为交换机或路由器的不同实例可能安装了不同版本的操作系统(诸如,JUNOS)。因此,意图或其他高级别配置数据的编译可以导致用于相同模型的网络设备的两个或更多个设备级别配置(例如,相同模型的网络设备的不同版本)。
根据本公开的技术,控制器设备10可以维护图数据结构(例如,以YANG建模的)以包括设备级别配置图式。特别地,当两个或更多个设备级别配置图式可用于网络设备的模型时,控制器设备10可以存储包括相应设备级别配置图式的每个元素的分支的特里类型节点。这些技术在下面更详细地讨论。
以这种方式使用特里类型节点提供了在存储器中加载和维护分层图式的有效方式。例如,这些技术可以提供在存储器中维护“设备模型”图式和一个或多个“版本”图式的有效方式,而无需具有图式的多个副本。网络设备可以存在很多模型(m)并且每个模型可以存在很多版本(n),因此,这些技术可以用于避免维护图式的m*n个变化。因此,这些技术可以用于解决用于管理使用多个图式的网络设备的先前技术的存储器约束问题。这些技术还支持针对新模型和新设备版本按需加载图式。
元件14可以支持开放配置模块,尽管这些模块尚未成熟。RFC6020表明YANG的版本是向后兼容的。由于开放式配置/IETF模块仍在开发中,因此尚无法维护YANG的版本标准。Opencofig(在www.openconfig.net/docs/semver中描述)遵循语义版本。当遵循语义版本时,应当有一种有效方法将图式加载到存储器中。
在分布式架构中,功能可以分布在微服务之间。这些微服务可能需要访问某些字段的图式(schema)。在这些应用中,应当有一种方法将图式加载到微服务并且单独加载所需要的属性。可以提供数据结构以支持图式属性的按需加载。例如,假定配置管理器需要来自图式的数据类型、列表和键属性。configlet设计器微服务可能需要所有属性,诸如枚举(枚举)值、描述、叶子默认类型、扩展等。系统应当能够单独加载一些属性,并且稍后数据结构应当支持加载其他属性。本公开描述了支持图式属性的这种按需加载的技术。
通常,根据本公开的技术,控制器设备10可以被配置为在图数据结构内使用特里数据结构的变体(本文中通常简称为“特里数据结构”)以维护多个架构元素版本之间的偏差。也就是说,特里数据结构可以包括用于图式元素的每个版本的单独分支。以这种方式使用特里数据结构可以提高存储器使用和访问速度。在将图式加载到特里数据结构中时,特里数据结构会扩展。控制器设备10可以配置有阈值,并且一旦特里数据结构超过阈值,控制器设备10就可以调节特里数据结构中的节点以缩小特里数据结构。这可以进一步提高存储器使用和访问速度。使用特里数据结构来存储图式元素可以减少图数据结构的存储器占用空间。本公开的特里数据结构可以用于要填充具有偏差的值的很多场景。尽管通常关于存储网络设备的设备级别配置模型进行描述,但是特里数据结构可以用于存储表示硬件清单的模型、各种子语言的字典中的单词的含义或其他用途。
图2是示出用于图1的控制器设备10的示例性组件的集合的框图。在该示例中,控制器设备10包括控制单元22、网络接口34和用户接口36。网络接口34表示可以将网络设备20通信地耦合到外部设备(例如,图1的元件14中的一个元件)的示例接口。网络接口34可以表示无线和/或有线接口,例如,被配置为根据无线标准进行通信的以太网接口或无线无线电,诸如IEEE 802.11无线网络协议中的一个或多个(诸如802.11a/b/g/n或其他这样的无线协议)。在各种示例中,控制器设备10可以包括多个网络接口,但是出于示例的目的仅示出了一个网络接口。
控制单元22表示用于实现归因于控制单元22及其组成模块和元件的功能的硬件、软件和/或固件的任何组合。当控制单元22包括软件或固件时,控制单元22还包括用于存储和执行软件或固件的任何必要硬件,诸如一个或多个处理器或处理单元。通常,处理单元可以包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其他等效的集成或离散逻辑电路、以及任何这些组件的组合。此外,处理单元通常使用固定的和/或可编程的逻辑电路来实现。
用户接口36表示一个或多个接口,诸如管理员12(图1)等用户通过该接口与控制器设备10交互,例如,以提供输入和接收输出。例如,用户接口36可以表示显示器、键盘、鼠标、触摸屏、触摸板、触控板、扬声器、相机、麦克风等中的一种或多种。此外,尽管在该示例中控制器设备10包括用户接口,但是管理员12不需要直接与控制器设备10交互,而是可以例如经由网络接口34远程访问控制器设备10。
在该示例中,控制单元22包括用户接口模块38、网络接口模块32和管理模块24。控制单元22执行用户接口模块38以从用户接口36接收输入和/或向用户接口36提供输出。控制单元图22还执行网络接口模块32以经由网络接口34发送和接收数据(例如,分组)。用户接口模块38、网络接口模块32和管理模块24可以再次实现为相应的硬件单元,或者以软件或固件或其组合实现。
控制单元22的功能可以实现为固定或可编程数字逻辑电路中的一个或多个处理单元。这种数字逻辑电路可以包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其他等效的集成或离散逻辑电路、以及这样的组件任何组合。当被实现为可编程逻辑电路时,控制单元22还可以包括存储将要由控制单元22的处理单元执行的硬件或固件指令的一个或多个计算机可读存储介质。
控制单元22执行管理模块24以管理各种网络设备,例如图1的元件14。例如,管理包括根据从用户(例如,图1的管理员12)接收的指令来配置网络设备,并且向用户提供提交用于配置网络设备的指令的能力。在该示例中,管理模块24还包括配置模块26和转换模块28。
管理模块24被配置为从诸如管理员12等用户接收一组被管理网络设备的意图统一的图建模配置数据。这种意图统一的图建模配置数据可以被称为“意图数据模型”。随着时间的推移,用户可以更新配置数据,例如,添加新服务,移除现有服务,或者修改由被管理设备执行的现有服务。统一的意图数据模型可以根据例如YANG或YAML来构造。图模型可以包括以分层方式由边连接的多个顶点。在YANG中,图模型的边通过“叶参考leafref”元素表示。在YAML的情况下,这样的边可以用“参考ref”边表示。类似地,父到子顶点关系可以用“具有”边来表示。例如,元素A的顶点使用具有边引用了元素B的顶点,可以被理解为表示“元素A具有元素B”。在一些示例中,管理模块24还向用户提供提交转换模块28执行以将意图数据模型转换为特定于设备的低级别配置指令的反应性映射器的能力。
控制器设备10还包括配置数据库40。配置数据库40通常包括描述被管理网络设备(例如,元件14)的信息。配置数据库40可以充当可以用于持久化和管理意图数据模型集合的意图数据存储器。例如,配置数据库40可以包括指示设备标识符(诸如MAC和/或IP地址)、设备类型、设备供应商、设备种类(例如,路由器、交换机、网桥、集线器等)等的信息。配置数据库40还存储被管理设备(例如,元件14)的当前配置信息(例如,意图数据模型,或者在一些情况下,意图数据模型和低级别配置信息两者)。
转换模块28基于配置数据库40的信息来确定哪些反应性映射器30将要在意图数据模型上执行,例如,哪些设备将要接收低级别配置指令。然后,转换模块28执行反应性映射器30的确定的反应性映射器中的每个反应性映射器,将意图数据模型作为输入提供给反应性映射器并且接收低级别配置指令。转换模块28还可以被称为意图编译器,意图编译器是包含诸如反应性映射器30等一组映射器的服务。
配置模块26可以首先确定由要为其更新配置的设备执行的每个服务的现有意图数据模型,例如,通过从配置数据库40检索每个服务的意图数据模型。然后,配置模块26可以将现有意图数据模型(本文中也称为部署的图模型)与新接收的意图数据模型进行比较,并且确定现有意图数据模型与新接收的意图数据模型(也称为未部署的图模型)之间的差异。配置模块26然后可以将这些变化添加到编译器流,并且反应性映射器30然后可以将这些变化转换为低级别配置信息。变化可以被包括在变化集中,变化集可以是包含目标图顶点和相应的版本标识符的列表。管理模块24可以使用变化集来跟踪在意图更新中改变的顶点列表。在提交了意图之后,管理模块24可以使用变化集来更新意图图模型中的顶点状态。配置模块26还基于新接收的意图数据模型来更新记录在配置数据库40中的现有意图数据模型。
在一些示例中,执行更新转换(即,转换统一意图数据模型中的变化,其导致更新低级别配置信息的值,而不创建或删除低级别配置数据中的元素)的反应性映射器30可以如下操作。在一个示例中,执行更新的反应性映射器30可以覆盖单个元素。也就是说,这些反应性映射器的性能可能导致元素值的删除,例如,通过用新值替换旧元素值。有时,配置服务模型中的单个值可以映射到设备配置中的列表。在这些情况下,转换模块28可以发送旧值以及新值。
转换模块28(其可以根据反应性映射器30配置)可以使用相同的反应性映射器来创建、更新和删除意图数据模型顶点。因为每个顶点具有自己的相应的反应性映射器,所以可以并行执行编译。也就是说,表示统一意图数据模型的图模型的每个顶点的反应性映射器可以并行执行,从而实现并行编译。转换模块28可以被配置为仅允许处理受影响的意图数据模型数据变化(即,意图数据模型中受变化影响的那些元素)。基于反应性映射器30,转换模块28可以推断意图数据模型中的顶点之间的依赖性。当意图数据模型改变时,转换模块28可以基于依赖图在编译器流中发布消息,如上所述。
当上载“创建”模板时(即,相对于现有的意图数据模型配置信息,处理意图数据模型配置信息中的新数据的反应性映射器30),转换模块28可以使用依赖图确定依赖性。当服务改变时,转换模块28可以基于依赖性生成现有的意图数据模型配置信息与新的意图数据模型配置信息之间的差异。然后,转换模块28可以使用反应性映射器30来处理差异,并且从而将意图数据模型配置信息转换为低级别配置指令。转换模块28然后可以向配置模块28提供低级别配置指令。
在从转换模块28接收到低级别配置指令之后,配置模块28将低级别配置指令发送到相应的被管理网络设备,这些被管理网络设备的配置将经由网络接口模块32进行更新。网络接口模块32将低级别配置指令传递给网络接口34。网络接口34将低级别配置指令转发到相应的网络设备。
尽管出于示例的目的将用户接口36描述为允许管理员12(图1)与控制器设备10交互,但是在其他示例中可以使用其他接口。例如,控制器设备10可以包括可以充当到另一设备的接口的代表性状态转移(REST)客户端(未示出),管理员12可以通过该接口配置控制器设备10。同样,管理员12可以通过经由REST客户端与控制器设备10交互来配置元件14。
管理模块24可以将配置数据库40建模为表示YANG配置数据元素的图数据结构(或图数据库)。YANG指定了各种类型的数据结构,包括列表、叶子列表、容器、具有存在的容器和特征。管理模块24可以将列表、容器、具有存在的容器和特征以及顶级别容器中的每个建模为图数据结构中的顶点。或者,配置数据库40可以表示YAML配置数据元素。
在一些情况下,管理模块24可以管理相同版本的网络设备的多个不同模型的设备。例如,路由器或交换机的特定版本可以具有多个不同的模型,每个模型具有其自己的特定配置参数集,同时通常还共享该版本的公共配置参数集。根据本公开的技术,管理模块24可以维护包括每个配置元素的特里数据结构的图数据结构。特里数据结构可以表示网络设备的版本的各种模型的公共配置参数集和与公共配置参数集的偏差。
该数据结构可以包括在相应的设备级别配置数据图式元素中具有偏差的网络设备的版本的每个模型的分支。因此,当管理(例如,配置)网络设备的模型时,管理模块24可以使用特里数据结构的对应分支来确定适当的配置参数。
在构建图数据结构之后,管理模块24可以对图数据结构的数据执行操作。例如,管理模块24可以将基于Netconf的操作(诸如get-config、具有过滤器的get-config和edit-config)映射到图查询语言查询(诸如Gremlin查询)。Gremlin在gremlindocs.spmallette.documentup.com和github.com/tinkerpop/gremlin/wiki,GremlinDocs中被描述。如果条件属性被改变,则管理模块24可以执行映射到图数据结构的顶点和边的条件。响应于这些条件,管理模块24可以处理附加变化,处理为如下面更详细讨论的函数。管理模块24还可以更新事务语义的所有变化。
以这种方式,控制器设备10表示控制器设备的示例,控制器设备管理多个网络设备并且包括在电路系统中实现并且被配置为进行以下操作的一个或多个处理器:维护表示多个网络设备的设备级别配置图式的图数据结构,图数据结构包括多个网络设备中的网络设备的版本的第一模型的每个第一设备级别配置图式元素的特里节点;基于网络设备的版本的第二模型的路径来获取第二设备级别配置图式元素;确定第二设备级别配置图式元素与第一设备级别配置图式元素之间的偏差;以及更新特里节点以添加去往表示第二设备级别配置图式元素的节点的分支。
图3是示出示例性哈希映射数据结构60的图。哈希映射数据结构60包括根配置(config)节点62、虚拟局域网(VLAN)节点64、接口(IF)节点66、过滤器节点68、VLAN节点70、标识符(ID)节点72、名称节点74和过滤器名称节点76。在该示例中,存在从配置节点62到VLAN节点64、IF节点66和过滤器节点68中的每个的边。VLAN节点64具有到VLAN节点70的边,并且VLAN节点70具有到ID节点72、名称节点74和过滤器名称节点76中的每个的边。
哈希图数据结构60是本质上是分层的数据模型的一个示例。哈希映射数据结构60的节点可以通过图式路径来标识,其中公共父节点的子节点共享图式路径的公共前缀。控制器设备10可以维护每个路径的图式。例如,路径包括:
·/配置/vlans(与VLANS节点64相对应)
·/配置/vlans/vlan(与VLAN节点70相对应)
·/配置vlans/vlan/名称(与名称节点74相对应)
·/配置/vlans/vlan/vlan-id(与ID节点72相对应)
·/配置/vlans/vlan/滤波器-名称(与过滤器名称节点76相对应)
传统上,诸如控制器设备10等控制器设备将维护这样的哈希映射,其中以路径作为密钥并且以图式作为密钥的值。然而,当管理公共版本的网络设备的很多不同模型时,这可能导致大量的存储器消耗。因此,根据本公开的技术,控制器设备10可以使用特里数据结构表示网络设备的共同版本的各种模型的配置元件之间的偏差。
图4是示出根据本公开的技术的包括特里数据结构92的示例性图数据结构80的图。在该示例中,图数据结构80包括族节点82。族节点82表示一系列设备,例如一系列路由器或一系列交换机。族节点82包括去往子版本节点84A-84D(版本节点84)的边。例如,版本节点84A可以表示交换机的版本9.1,版本节点84B可以表示交换机的版本9.2,版本节点84C可以表示交换机的版本9.3,并且版本节点84D可以表示交换机的版本10.1。
在该示例中,版本节点84A是特里数据结构92的根。传统的特里数据结构具有字符串中的每个字符的分支。本公开的特里数据结构是传统特里数据结构的变体,其中字符串的多个字符可以用在每个节点中以描述用于到达节点的路径。例如,模型节点86A可以表示交换机的版本9.1的模型“4200”,模型节点88A可以表示交换机的版本9.1的模型“4200-24T”,并且模型节点88B可以表示交换机的版本9.1的模型“4200-48T”。模型节点86B可以表示交换机的版本9.1的模型“2400”。
模型节点86A、86B、88A和88B中的每个可以对应于交换机的版本9.1(即,由版本节点84A表示的版本)的图式的偏差。图4的图式节点90A-90D通常可以表示图式元素的变体。例如,图式节点90A可以表示模型节点86A的图式元素相对于版本节点84A的偏差,图式节点90B可以表示模型节点86B的图式元素相对于版本节点84A的偏差,图式节点90C可以表示模型节点88A的图式元素相对于模型节点86A的偏差,并且图式节点90A可以表示模型节点88B的图式元素相对于模型节点86A的偏差。
以这种方式,图数据结构80表示设备配置管理中的模式。通常,对于设备族中的设备的给定版本,设备族的图式变化较少。补丁和各种版本可能没有图式更改。从设备版本开始,模型可能存在偏差,并且可以从设备的特定版本开始支持新的图式元素。使用图4中表示的本公开的技术可以表示仅图式元素的偏差,而不是与模型节点86A、86B、88A和88B相对应的每个模型的完整图式。因此,使用本公开的技术可以改善存储器存储和访问速度。根据本公开的技术的特里可以取分层图式特里节点的值。也就是说,特里数据结构92的节点可以取模型节点86A、86B、88A、88B的相应模型的值。
图5是示出表示节点与节点的特里数据结构中表示的值之间的对应关系的图表100的概念图。在该示例中,图100包括与在特里104中表示的值相对应的过滤器名称节点102。如上所述,特里可以包括用于分层图式特里节点的值。
图6A-6C是示出根据本公开的技术的在加载各种示例性图式之后的示例性图数据结构的图。例如,假定除模型8200外,版本10.4的所有交换机平台都支持IEEE 802.1X,并且安全设备和路由器不支持IEEE 802.1X。设备的族名称、模型和版本的图式的示例加载顺序如下所示:
A)安全性9.0
B)交换机9.0
C)交换机10.4,模型8200
D)交换机10.4,模型9200
E)交换机10.4,模型2200
F)交换机10.4,模型3200
G)交换机10.4,模型4200
H)安全性9.1、9.2、9.3、9.4
图6A包括根节点110,根节点110可以表示上面的步骤A-C之后的整个图数据结构。也就是说,在上述假定下,IEEE 802.11的版本9.0和10.4的设备的安全和交换机族中的各种设备的配置之间不包括偏差,并且因此,不需要附加节点。
图6B包括具有去往族节点112(表示设备的交换机族)的边的根节点110、具有去往版本节点114(表示交换机的版本10.4)的边的族节点112、以及具有去往模型节点116A、116B和116C的边的版本节点114。图6B表示在上面讨论的步骤C、D、E之后的图数据结构的状态。在上述假定下,交换机版本10.4的模型9200和模型8200之间存在偏差,因为模型9200支持IEEE 802.1X,而模型8200则不支持。因此,控制器设备10可以构建图数据结构以添加模型节点116A、116B和116C以指示对IEEE802.1X的支持并且相应地设置配置信息,而版本节点114A可以指示其他模型通常不支持IEEE802.1X。
如上所述,在一些示例中,控制器设备10可以配置有用于图式元素的多个偏差的阈值。在该示例中,阈值可以是3。在达到或超过阈值之后,控制器设备10可以重新配置图数据结构以切换被认为是偏差的内容以及跨版本被认为是标准的内容。因此,在步骤G之后,其中另一交换机模型(模型4200)支持IEEE 802.1X,控制器设备10可以重新配置图数据结构以指示对于交换机版本10.4的IEEE 802.1X的支持,针对模型8200具有偏差。因此,图6C表示具有重新配置的图数据结构的上述步骤G之后的图数据结构的状态。特别地,图6C示出了具有去往族节点112的边的根节点110。该示例中的族节点112具有去往版本节点118(表示交换机的版本10.4)的边,并且版本节点118具有去往模型节点120的边。在该示例中,版本节点118通常可以指示对IEEE 802.1X的支持,并且模型节点120可以指示对于模型8200,不支持IEEE 802.1X。在步骤H之后,图数据结构没有变化。
在已经构建图6C的图数据结构之后,检索图式元素以获取版本9.1、9.2、9.3或9.4的安全设备将仅进行一次查找(作为根节点110)。检索图式元素以获取版本10.4的交换机通常需要两次查找,对应于版本节点118。
控制器设备10可以被配置为根据本公开的技术执行图数据结构插入算法。图数据结构插入算法可以如下:
控制器设备10还可以被配置为执行图数据结构元素更新算法,如下:
控制器设备10还可以被配置为执行图数据结构调节偏差算法,如下:
获取父节点的非偏差的元素。这可以与特里节点一起被维护
将“非偏差的元素计数”与“偏差的元素计数”进行比较
如果偏差的元素计数大于非偏差的元素计数:
则更改父特里节点值
将“非偏差的子项”与“偏差的子项”交换
对于父节点递归地执行该操作
控制器设备10还可以被配置为执行图数据结构查找图式算法,如下:
查找基于路径族->版本->模型
从根节点开始
基于路径进行遍历
如果找不到子项,则返回当前图式元素
图7A-7C是示出根据本公开的技术的在进一步加载各种示例性图式之后的示例性图数据结构的图。图7A表示在步骤H之后的图6C的图数据结构的状态(如上所述,这不改变图数据结构)。在该示例中,假定需要使用交换机的版本10.4的模型3200、2200和9200的附加属性来扩展架构元素。如上所述,在这些示例中,版本节点118表示交换机的版本10.4。
控制器设备10可以扩展图7A的图数据结构以形成图7B的图数据结构,其进一步包括模型3200和2200的相应模型节点122A、122B。模型节点122A、122B指示对上面讨论的附加的图式属性的支持。
在加载模型9200的附加的图式属性时,控制器设备10可以确定阈值(为3,继续上面讨论的示例)已经被超过,并且因此可以形成图7C的图数据结构。图7C的图数据结构包括根节点110、族节点112、版本节点124和模型节点120。在该示例中,版本节点124包括表示对上面讨论的附加的图式属性的支持的数据,而模型节点120指示不支持该图式元素,如上所述。
控制器设备10可以被配置为执行上面讨论的插入算法。当更新特里节点时,控制器设备10可以确定特里节点是否已经存在,并且相应地更新特里节点。控制器设备10可以使用图数据结构来确保在更新特里节点时适当地设置偏差。在一些示例中,控制器设备10还可以为所有模型和版本组合分配数字编号,使得每个图式元素特里消耗更少的存储器。
以这种方式,本公开的技术包括以下内容:
·特里数据结构的变体,其可以用于有效地保持元数据的偏差,以优化速度和存储器要求和支持:
o按需加载新的路径和值,以及
o按需更新值节点。
·使用该特里数据结构来管理设备模型和版本和图式:
o按需加载新的架构,以及
o按需加载新的图式属性。
图8是示出用于执行本公开的技术(例如,用于管理网络设备)的示例性方法的流程图。图8的方法关于控制器设备10来解释,但是其他设备可以被配置为执行该方法或类似方法。
最初,控制器设备10在图数据结构中加载用于设备版本的第一模型的图式(150)。然后,控制器设备10可以为每个图式元素构造特里数据结构(152)。例如,如图6A所示,特里数据结构可以最初从根节点110开始。然后,控制器设备10可以加载设备的版本的第二模型的图式(154)。在该示例中,假定第二模型的图式具有至少一个图式元素是相对于第一图式的偏差。因此,控制器设备10将去往第二模型的节点的分支添加到特里数据结构(156)。控制器设备10还将偏差的图式元素存储在特里数据结构的分支节点中(158)。例如,如图6B所示,控制器设备10可以为网络设备的版本的第二模型添加族节点112、版本节点114和模型节点116A,以存储第二模型的偏差的图式元素。
另外,控制器设备10可以确定来自特里数据结构的节点的分支的偏差的图式元素的数目是否超过阈值(160)。如果偏差元素的数目超过阈值(160的“是”分支),则控制器设备10可以交换偏差元素(即,分支节点)的属性与节点的相应属性(162)。例如,如图6C所示,控制器设备10可以用版本节点118替换版本节点114,并且移除模型116A、116B、116C的分支节点(并且添加模型120作为来自版本节点118的分支节点)。另一方面,如果偏差元素的数目不超过阈值(160的“否”分支),或者在执行162的交换之后,则控制器设备10可以使用图数据结构来配置被管理网络设备(164)。
以这种方式,图8的方法表示包括以下各项的方法的示例:由管理多个网络设备的控制器设备维护表示多个网络设备的设备级别配置图式的图数据结构,该图数据结构包括多个网络设备中的网络设备的版本的第一模型的每个第一设备级别配置图式元素的特里节点;由控制器设备基于网络设备的版本的第二模型的路径来获取第二设备级别配置图式元素;由控制器设备确定第二设备级别配置图式元素与第一设备级别配置图式元素之间的偏差;以及由控制器设备更新特里节点以添加去往表示第二设备级别配置图式元素的节点的分支。
本发明中描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,所描述的技术的各个方面可以在一个或多个处理器(包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效的集成或离散逻辑电路、以及这些组件的任何组合)内被实现。术语“处理器”或“处理电路”通常可以是指代任何前述逻辑电路(单独地或与其他逻辑电路相结合)或任何其他等效电路。包括硬件的控制单元还可以执行本公开的一种或多种技术。
这样的硬件、软件和固件可以在同一设备内或在单独的设备内被实现以支持本公开中描述的各种操作和功能。另外,任何所描述的单元、模块或组件可以一起或单独实现为离散但可互操作的逻辑设备。将不同特征描述为模块或单元旨在突出不同的功能方面,并且不一定暗示这些模块或单元必须由单独的硬件或软件组件来实现。而是,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件组件执行,或者可以被集成在公共的或单独的硬件或软件组件中。
本公开中描述的技术还可以在包含指令的计算机可读介质(例如,计算机可读存储介质)中实现或编码。被嵌入或被编码在计算机可读介质中的指令可以使得可编程处理器或其他处理器执行该方法,例如,当指令被执行时。计算机可读介质可以包括非瞬态计算机可读存储介质和瞬态通信介质。有形和非瞬态的计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、闪存存储器、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他瞬态介质。
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
Claims (20)
1.一种管理多个网络设备的方法,所述方法包括:
由管理多个网络设备的控制器设备维护图数据结构,所述图数据结构表示用于所述多个网络设备的设备级别配置图式,所述图数据结构包括表示第一设备级别配置图式元素的特里节点,所述第一设备级别配置图式元素用于所述多个网络设备中的网络设备的版本的第一模型;
由所述控制器设备获取第二设备级别配置图式元素,所述第二设备级别配置图式元素用于所述网络设备的所述版本的第二模型;
由所述控制器设备确定所述第二设备级别配置图式元素与所述第一设备级别配置图式元素之间的偏差;以及
由所述控制器设备更新所述特里节点以添加去往节点的分支,所述节点表示所述第二设备级别配置图式元素,
其中所述图数据结构包括在相应的设备级别配置数据图式元素中具有偏差的所述网络设备的版本的每个模型的分支。
2.根据权利要求1所述的方法,还包括使用所述图数据结构的所述特里节点来管理所述多个网络设备中与所述网络设备的所述版本相匹配的网络设备。
3.根据权利要求2所述的方法,其中管理所述网络设备包括:
使用所述第一设备级别配置图式元素来管理作为所述网络设备的所述版本的所述第一模型的网络设备;以及
使用所述第二设备级别配置图式元素来管理作为所述网络设备的所述版本的所述第二模型的网络设备。
4.根据权利要求2所述的方法,其中管理所述网络设备包括:
根据所述第一设备级别配置图式元素来设置作为所述网络设备的所述版本的所述第一模型的网络设备的配置数据;以及
根据所述第二设备级别配置图式元素来设置作为所述网络设备的所述版本的所述第二模型的网络设备的配置数据。
5.根据权利要求1至4中任一项所述的方法,其中获取所述第二设备级别配置图式元素包括加载所述第二设备级别配置图式元素。
6.根据权利要求1至4中任一项所述的方法,其中获取所述第二设备级别配置图式元素包括编译意图模型以产生所述第二设备级别配置图式元素,所述意图模型包括用于所述网络设备的所述版本的所述第二模型的数据。
7.根据权利要求1至4中任一项所述的方法,还包括:
确定来自所述图数据结构的所述特里节点的分支的数量;以及
响应于确定所述分支的数量超过阈值:
将所述特里节点的属性与所述分支的节点的偏差的属性进行交换;以及
移除所述分支。
8.根据权利要求1至4中任一项所述的方法,还包括接收路径值,所述方法还包括遍历所述图数据结构以标识与所述路径值相对应的节点,包括:
在所述图数据结构的根节点处开始,递归地:
根据所述路径值来确定所述图数据结构的当前节点是否具有子节点;
当所述当前节点具有所述子节点时,遍历到所述子节点;以及
当所述当前节点不具有所述子节点时,返回所述当前节点的值。
9.根据权利要求1至4中任一项所述的方法,还包括在所述分支中设置值,所述值表示所述偏差是否指示所述特里节点的图式属性不适用于所述设备的所述版本的所述第二模型,或者所述值表示所述偏差包括相对于所述特里节点的图式属性的附加的图式属性。
10.一种管理多个网络设备的控制器设备,所述控制器设备包括一个或多个处理单元,所述一个或多个处理单元在电路系统中被实现并且被配置为:
维护图数据结构,所述图数据结构表示用于所述多个网络设备的设备级别配置图式,所述图数据结构包括表示第一设备级别配置图式元素的特里节点,所述第一设备级别配置图式元素用于所述多个网络设备中的网络设备的版本的第一模型;
获取第二设备级别配置图式元素,所述第二设备级别配置图式元素用于所述网络设备的所述版本的第二模型;
确定所述第二设备级别配置图式元素与所述第一设备级别配置图式元素之间的偏差;以及
更新所述特里节点以添加去往节点的分支,所述节点表示所述第二设备级别配置图式元素,
其中所述图数据结构包括在相应的设备级别配置数据图式元素中具有偏差的所述网络设备的版本的每个模型的分支。
11.根据权利要求10所述的控制器设备,其中所述一个或多个处理单元还被配置为使用所述图数据结构的所述特里节点来管理所述多个网络设备中与所述网络设备的所述版本相匹配的网络设备。
12.根据权利要求11所述的控制器设备,其中为了管理所述网络设备,所述一个或多个处理单元被配置为:
使用所述第一设备级别配置图式元素来管理作为所述网络设备的所述版本的所述第一模型的网络设备;以及
使用所述第二设备级别配置图式元素来管理作为所述网络设备的所述版本的所述第二模型的网络设备。
13.根据权利要求11所述的控制器设备,其中为了管理所述网络设备,所述一个或多个处理单元被配置为:
根据所述第一设备级别配置图式元素来设置作为所述网络设备的所述版本的所述第一模型的网络设备的配置数据;以及
根据所述第二设备级别配置图式元素来设置作为所述网络设备的所述版本的所述第二模型的网络设备的配置数据。
14.根据权利要求10至13中任一项所述的控制器设备,其中为了获取所述第二设备级别配置图式元素,所述一个或多个处理单元被配置为加载所述第二设备级别配置图式元素。
15.根据权利要求10至13中任一项所述的控制器设备,其中为了获取所述第二设备级别配置图式,所述一个或多个处理单元被配置为编译意图模型以产生所述第二设备级别配置图式元素,所述意图模型包括用于所述网络设备的所述版本的数据。
16.根据权利要求10至13中任一项所述的控制器设备,其中所述处理单元还被配置为:
确定来自所述图数据结构的所述特里节点的分支的数量;以及
响应于确定所述分支的数量超过阈值:
将所述特里节点的属性与所述分支的节点的偏差的属性进行交换;以及
移除所述分支。
17.根据权利要求10至13中任一项所述的控制器设备,其中所述一个或多个处理单元还被配置为:
接收路径值;
在所述图数据结构的根节点处开始,递归地:
根据所述路径值来确定所述图数据结构的当前节点是否具有子节点;
当所述当前节点具有所述子节点时,遍历到所述子节点;以及
当所述当前节点不具有所述子节点时,返回所述当前节点的值。
18.根据权利要求10至13中任一项所述的控制器设备,其中所述一个或多个处理单元还被配置为在所述分支中设置值,所述值表示所述偏差是否指示所述特里节点的图式属性不适用于所述设备的所述版本的所述第二模型,或者所述值表示所述偏差包括相对于所述特里节点的图式属性的附加的图式属性的。
19.一种计算机可读存储介质,包括指令,所述指令在被执行时使得管理多个网络设备的控制器设备的处理器:
维护图数据结构,所述图数据结构表示用于所述多个网络设备的设备级别配置图式,所述图数据结构包括表示第一设备级别配置图式元素的特里节点,所述第一设备级别配置图式元素用于所述多个网络设备中的网络设备的版本的第一模型;
获取第二设备级别配置图式元素,所述第二设备级别配置图式元素用于所述网络设备的所述版本的第二模型;
确定所述第二设备级别配置图式元素与所述第一设备级别配置图式元素之间的偏差;以及
更新所述特里节点以添加去往节点的分支,所述节点表示所述第二设备级别配置图式元素,
其中所述图数据结构包括在相应的设备级别配置数据图式元素中具有偏差的所述网络设备的版本的每个模型的分支。
20.根据权利要求19所述的计算机可读存储介质,还包括使得所述处理器使用所述图数据结构的所述特里节点来管理所述多个网络设备中与所述网络设备的所述版本相匹配的网络设备的指令,包括使得所述处理器执行以下操作的指令:
根据所述第一设备级别配置图式元素来设置作为所述网络设备的所述版本的所述第一模型的网络设备的配置数据;以及
根据所述第二设备级别配置图式元素来设置作为所述网络设备的所述版本的所述第二模型的网络设备的配置数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/456,976 US11165647B2 (en) | 2019-06-28 | 2019-06-28 | Managing multiple semantic versions of device configuration schemas |
US16/456,976 | 2019-06-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112152835A CN112152835A (zh) | 2020-12-29 |
CN112152835B true CN112152835B (zh) | 2023-09-05 |
Family
ID=68084593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910919010.8A Active CN112152835B (zh) | 2019-06-28 | 2019-09-26 | 管理设备配置图式的多个语义版本 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11165647B2 (zh) |
EP (1) | EP3758292A1 (zh) |
CN (1) | CN112152835B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3627343A1 (en) * | 2018-09-19 | 2020-03-25 | censhare AG | Efficient in-memory multi-version concurrency control for a trie data structure based database |
US10841182B2 (en) | 2019-03-29 | 2020-11-17 | Juniper Networks, Inc. | Supporting near real time service level agreements |
US10897396B2 (en) | 2019-03-29 | 2021-01-19 | Juniper Networks, Inc. | Supporting concurrency for graph-based high level configuration models |
US11502905B1 (en) * | 2019-12-19 | 2022-11-15 | Wells Fargo Bank, N.A. | Computing infrastructure standards assay |
US11204961B1 (en) * | 2020-09-29 | 2021-12-21 | Atlassian Pty Ltd. | Apparatuses, methods, and computer program products for dynamic generation and traversal of object dependency data structures |
US11818015B2 (en) * | 2020-12-23 | 2023-11-14 | Nokia Solutions And Networks Oy | Device management |
CN112765176B (zh) * | 2021-01-22 | 2023-02-03 | 浪潮通用软件有限公司 | 一种微服务模式下属性扩展方法、装置及存储介质 |
CN115529268B (zh) | 2021-06-24 | 2024-01-19 | 瞻博网络公司 | 处理配置网络设备的指令 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2902954A1 (fr) * | 2006-06-21 | 2007-12-28 | Netasq Sa | Systeme et procede de stockage d'un inventaire des systemes et/ou services presents sur un reseau de communication |
US7953779B1 (en) * | 2002-10-08 | 2011-05-31 | Trilogy Development Group, Inc. | Configuration representation and modeling using configuration spaces |
CN106576054A (zh) * | 2014-08-17 | 2017-04-19 | 微软技术许可有限责任公司 | 网络设备配置框架 |
EP3327727A2 (en) * | 2016-11-23 | 2018-05-30 | Optum, Inc. | Data processing systems and methods implementing improved analytics platform and networked information systems |
CN108140260A (zh) * | 2015-09-25 | 2018-06-08 | 微软技术许可有限责任公司 | 来自地图数据的3d模型生成以及用户界面 |
CN109271621A (zh) * | 2017-07-18 | 2019-01-25 | 腾讯科技(北京)有限公司 | 语义消歧处理方法、装置及其设备 |
US10200248B1 (en) * | 2016-06-30 | 2019-02-05 | Juniper Networks, Inc. | Translating high-level configuration instructions to low-level device configuration |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933642A (en) | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US5870559A (en) | 1996-10-15 | 1999-02-09 | Mercury Interactive | Software system and associated methods for facilitating the analysis and management of web sites |
US6078744A (en) | 1997-08-01 | 2000-06-20 | Sun Microsystems | Method and apparatus for improving compiler performance during subsequent compilations of a source program |
US6041053A (en) | 1997-09-18 | 2000-03-21 | Microsfot Corporation | Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards |
US6298321B1 (en) * | 1998-11-23 | 2001-10-02 | Microsoft Corporation | Trie compression using substates and utilizing pointers to replace or merge identical, reordered states |
EP1107108A1 (en) * | 1999-12-09 | 2001-06-13 | Hewlett-Packard Company, A Delaware Corporation | System and method for managing the configuration of hierarchically networked data processing devices |
US6678646B1 (en) | 1999-12-14 | 2004-01-13 | Atmel Corporation | Method for implementing a physical design for a dynamically reconfigurable logic circuit |
US6973488B1 (en) | 2000-03-31 | 2005-12-06 | Intel Corporation | Providing policy information to a remote device |
US7209473B1 (en) | 2000-08-18 | 2007-04-24 | Juniper Networks, Inc. | Method and apparatus for monitoring and processing voice over internet protocol packets |
US8195779B2 (en) | 2002-09-27 | 2012-06-05 | Broadcom Corporation | System and method of a management information base (MIB) autocast in a communications network |
US7457296B2 (en) | 2004-09-30 | 2008-11-25 | Intel Corporation | Method and apparatus for sorting packets in packet schedulers using a connected trie data structure |
US8571882B1 (en) | 2006-07-05 | 2013-10-29 | Ronald J. Teitelbaum | Peer to peer database |
JP5119902B2 (ja) | 2007-12-19 | 2013-01-16 | 富士通セミコンダクター株式会社 | 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム |
US8572717B2 (en) | 2008-10-09 | 2013-10-29 | Juniper Networks, Inc. | Dynamic access control policy with port restrictions for a network security appliance |
US8069374B2 (en) | 2009-02-27 | 2011-11-29 | Microsoft Corporation | Fingerprinting event logs for system management troubleshooting |
US9117071B2 (en) | 2009-06-03 | 2015-08-25 | Apple Inc. | Methods and apparatuses for secure compilation |
US8677329B2 (en) | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
US8838653B2 (en) | 2010-11-01 | 2014-09-16 | Cisco Technology, Inc. | Translating an object-oriented data model to a YANG data model |
US9489184B2 (en) | 2011-12-30 | 2016-11-08 | Oracle International Corporation | Adaptive selection of programming language versions for compilation of software programs |
US9979738B2 (en) | 2012-01-23 | 2018-05-22 | Hrl Laboratories, Llc | System and method to detect attacks on mobile wireless networks based on motif analysis |
CN103034617B (zh) | 2012-12-13 | 2015-09-30 | 深圳市同创国芯电子有限公司 | 用于实现可重构系统配置信息存储的缓存结构和管理方法 |
US9727339B2 (en) | 2013-07-18 | 2017-08-08 | Nvidia Corporation | Method and system for distributed shader optimization |
US9755960B2 (en) | 2013-09-30 | 2017-09-05 | Juniper Networks, Inc. | Session-aware service chaining within computer networks |
US10523502B2 (en) * | 2014-05-29 | 2019-12-31 | Abb Schweiz Ag | Method and system for configuration of devices of a control system |
US9705815B2 (en) | 2014-06-27 | 2017-07-11 | Juniper Networks, Inc. | Graph database for services planning and configuration in network services domain |
US9436443B2 (en) | 2014-08-28 | 2016-09-06 | At&T Intellectual Property I, L.P. | Software defined network controller |
US9806991B2 (en) | 2015-01-21 | 2017-10-31 | Cisco Technology, Inc. | Rendering network policy and monitoring compliance |
US10084670B2 (en) | 2015-03-12 | 2018-09-25 | International Business Machines Corporation | Network node on-demand link resources |
US9715380B2 (en) | 2015-05-26 | 2017-07-25 | Cisco Technology, Inc. | Techniques for enabling dynamic update of device data models |
US10187321B2 (en) | 2015-08-19 | 2019-01-22 | Cisco Technology, Inc. | Dynamic VPN policy model with encryption and traffic engineering resolution |
US9942934B2 (en) * | 2015-11-04 | 2018-04-10 | Motorola Mobility Llc | Wireless ad hoc network assembly using network coding |
US10102172B1 (en) | 2015-12-27 | 2018-10-16 | Altera Corporation | Method and apparatus for performing a single pass compilation for systems with dynamically reconfigurable logic blocks |
US10374872B2 (en) | 2016-05-24 | 2019-08-06 | Apstra, Inc. | Configuring system resources for different reference architectures |
US10148506B1 (en) * | 2016-06-28 | 2018-12-04 | Juniper Networks, Inc. | Network configuration service discovery |
US10680852B2 (en) * | 2016-07-14 | 2020-06-09 | Hewlett Packard Enterprise Development Lp | Configuration of a managed device |
US10783183B2 (en) * | 2016-11-30 | 2020-09-22 | At&T Intellectual Property I, L.P. | Systems and methods for driving graph structure and behavior using models |
US10374888B2 (en) | 2016-12-14 | 2019-08-06 | At&T Intellectual Property I, L.P. | Scheduler for upgrading access point devices efficiently |
US10278112B1 (en) | 2016-12-30 | 2019-04-30 | Juniper Networks, Inc. | Resolving out-of-band configuration changes to high-level service configuration for managed network devices |
US10374886B1 (en) | 2016-12-30 | 2019-08-06 | Juniper Networks, Inc. | Processing multiple parallel high level configuration changes for managed network devices |
US11567994B2 (en) | 2017-01-24 | 2023-01-31 | Apstra, Inc. | Configuration, telemetry, and analytics of a computer infrastructure using a graph model |
US10489358B2 (en) * | 2017-02-15 | 2019-11-26 | Ca, Inc. | Schemas to declare graph data models |
US10567223B1 (en) | 2017-03-07 | 2020-02-18 | Juniper Networks, Inc. | Optimistic concurrency control for managed network devices |
US20170187577A1 (en) | 2017-03-14 | 2017-06-29 | Nuviso Networks Inc | System for configuring network devices |
US10516761B1 (en) * | 2017-03-17 | 2019-12-24 | Juniper Networks, Inc. | Configuring and managing network devices using program overlay on Yang-based graph database |
US10937214B2 (en) | 2017-03-22 | 2021-03-02 | Google Llc | System and method for merging maps |
US10558542B1 (en) * | 2017-03-31 | 2020-02-11 | Juniper Networks, Inc. | Intelligent device role discovery |
US10810210B2 (en) | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
US10122872B1 (en) * | 2017-05-31 | 2018-11-06 | Xerox Corporation | Automatic configuration of network devices in remote managed print service applications utilizing groups of historical device data |
US10382265B1 (en) * | 2017-08-28 | 2019-08-13 | Juniper Networks, Inc. | Reversible yang-based translators |
US10554500B2 (en) * | 2017-10-04 | 2020-02-04 | Futurewei Technologies, Inc. | Modeling access networks as trees in software-defined network controllers |
US10756983B2 (en) | 2017-12-08 | 2020-08-25 | Apstra, Inc. | Intent-based analytics |
JP6744882B2 (ja) | 2018-02-26 | 2020-08-19 | 株式会社日立製作所 | 行動パターン探索システム、および行動パターン探索方法 |
US11140049B2 (en) | 2018-09-07 | 2021-10-05 | Juniper Networks, Inc. | Dynamic intent assurance and programmability in computer networks |
-
2019
- 2019-06-28 US US16/456,976 patent/US11165647B2/en active Active
- 2019-09-25 EP EP19199447.4A patent/EP3758292A1/en active Pending
- 2019-09-26 CN CN201910919010.8A patent/CN112152835B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7953779B1 (en) * | 2002-10-08 | 2011-05-31 | Trilogy Development Group, Inc. | Configuration representation and modeling using configuration spaces |
FR2902954A1 (fr) * | 2006-06-21 | 2007-12-28 | Netasq Sa | Systeme et procede de stockage d'un inventaire des systemes et/ou services presents sur un reseau de communication |
CN106576054A (zh) * | 2014-08-17 | 2017-04-19 | 微软技术许可有限责任公司 | 网络设备配置框架 |
CN108140260A (zh) * | 2015-09-25 | 2018-06-08 | 微软技术许可有限责任公司 | 来自地图数据的3d模型生成以及用户界面 |
US10200248B1 (en) * | 2016-06-30 | 2019-02-05 | Juniper Networks, Inc. | Translating high-level configuration instructions to low-level device configuration |
EP3327727A2 (en) * | 2016-11-23 | 2018-05-30 | Optum, Inc. | Data processing systems and methods implementing improved analytics platform and networked information systems |
CN109271621A (zh) * | 2017-07-18 | 2019-01-25 | 腾讯科技(北京)有限公司 | 语义消歧处理方法、装置及其设备 |
Non-Patent Citations (1)
Title |
---|
基于被动测量的网络拓扑推断及可视化研究;练鑫鑫;《西安电子科技大学》;20190116;第22-35页 * |
Also Published As
Publication number | Publication date |
---|---|
US20200412614A1 (en) | 2020-12-31 |
EP3758292A1 (en) | 2020-12-30 |
US11165647B2 (en) | 2021-11-02 |
CN112152835A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112152835B (zh) | 管理设备配置图式的多个语义版本 | |
US10999410B1 (en) | Configuring and managing network devices using program overlay on Yang-based graph database | |
US10892952B2 (en) | Supporting compilation and extensibility on unified graph-based intent models | |
EP3716532B1 (en) | Supporting concurrency for graph-based high level configuration models | |
US10200248B1 (en) | Translating high-level configuration instructions to low-level device configuration | |
EP3620920B1 (en) | Dynamic intent assurance and programmability in computer networks | |
EP3716534B1 (en) | Supporting near real time service level agreements | |
US11929886B2 (en) | Model driven intent policy conflict detection and resolution through graph analysis | |
US10278112B1 (en) | Resolving out-of-band configuration changes to high-level service configuration for managed network devices | |
US10897395B2 (en) | Programmable configlets through opaque intents in graph based intent controllers | |
US11736410B1 (en) | Synchronizing device resources for element management systems | |
EP4287036A1 (en) | Supporting graphql based queries on yang based configuration data models | |
EP3952212B1 (en) | Using a programmable resource dependency mathematical model to perform root cause analysis | |
CN115529268B (zh) | 处理配置网络设备的指令 | |
CN115550186A (zh) | 用于网络管理系统的拓扑编译器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |