CN115268940B - 支持在网络设备处进行配置的多种部署的动态可配置模板 - Google Patents
支持在网络设备处进行配置的多种部署的动态可配置模板 Download PDFInfo
- Publication number
- CN115268940B CN115268940B CN202111250095.9A CN202111250095A CN115268940B CN 115268940 B CN115268940 B CN 115268940B CN 202111250095 A CN202111250095 A CN 202111250095A CN 115268940 B CN115268940 B CN 115268940B
- Authority
- CN
- China
- Prior art keywords
- data
- variables
- particular configuration
- variable
- configuration
- 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
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000003068 static effect Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 8
- 238000012549 training Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 238000010801 machine learning Methods 0.000 description 14
- 238000012795 verification Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/226—Validation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及支持在网络设备处进行配置的多种部署的动态可配置模板。提供了用于在网络设备处部署配置的系统和方法。所述配置的所述部署包括:接收计算组件的特定配置要被部署的指示;从所述计算组件提取语法数据,所述语法数据包括用于部署所述计算组件的特定配置的命令和与所述命令的子集相对应的限制;生成用于部署所述特定配置的模板;从所述语法数据确定当前未确定并且被包括在所述特定配置中的变量;获取所述变量;将所述变量合并到所述模板中;以及基于所述模板来部署所述特定配置。
Description
背景技术
配置可以被编程到诸如设备或服务器等计算组件中,以合并或启用特定设置、功能和/或命令。作为说明性示例,这种功能可以包括故障排除、日志记录、安全性或可管理性。在诸如交换机等网络设备的特定示例中,作为说明性示例,配置的特征可以包括启用虚拟中继协议(VTP)、接入端口配置、中继端口配置、安全外壳协议(SSH)配置、设置管理IP(互联网协议)、指派主机名和域名。
附图说明
根据一个或多个各种实施例,本公开参照以下附图详细描述。这些附图被提供仅用于说明的目的,并且仅描绘典型或示例实施例。
图1A是根据本公开中描述的实施例的在合并或注入诸如网络状况的输入数据和/或当前确定数据等可变数据的同时部署配置的计算系统的示例性图示。
图1B是根据本公开中描述的实施例的从可以是JavaScript对象表示法(JSON)格式的语法数据到诸如JSON模式等模式的转换的示例性图示。
图2A是根据本公开中描述的实施例的从设备的语法数据获取的JSON模式的示例性图示。
图2B是根据本公开中描述的实施例的指向JSON模式库的参考指针的示例性图示。
图3是根据本公开中描述的实施例的指向JSON模式库的参考指针的示例性图示。
图4是根据本公开中描述的实施例的编辑界面的示例性图示,其中用于修改或替换网络的现有配置或者创建新配置的命令可以被输入。
图5是根据本公开中描述的实施例的为请求部署配置所需的输入而生成的界面的示例性图示。
图6A是根据本公开中描述的实施例的实施方式的示例性图示,其中与网络状况相关的当前数据或参数在JSON模式之外获取并且用于部署配置。
图6B是根据本公开中描述的实施例的指定变量将被呈现的方式的处置器的示例性图示。
图7是根据本公开中描述的实施例的实施方式的示例性图示,其中当前数据或参数在JSON模式内获取,并且界面被生成以请求来自当前数据或参数的输入。
图8是根据本公开中描述的实施例的配置将被部署的模板。
图9是示例性流程图,图示了根据本公开中描述的实施例的诸如服务器等计算组件在合并或注入可变数据的同时如何部署配置。
图10是可以被用于实施本公开中描述的实施例的各种特征的示例计算组件。
附图不是详尽的,并且不将本公开限制为所公开的精确形式。
具体实施方式
上传交换机、路由器或其他网络设备的配置的一种常见方法涉及使用模板文件。在诸如交换机或路由器等网络设备上,模板文件可以被用于实施广泛的网络配置。模板文件可以从存储在网络设备上的配置文件的片段或部分(在下文中称为“部分”)生成。每个模板文件都可以覆盖或重新定义存储的配置文件的部分,以增加运行不同配置的多功能性和选项范围。作为特定的说明性示例,通过增加选项范围以暂停对超过数据业务的阈值量的某些客户端设备的网络访问,或者增加某些客户端设备获取网络访问的安全性要求,模板文件可以修改现有的配置文件。
然而,模板文件的一个限制是它们在很大程度上是静态的。具体地,通常当前的模板文件既无法通过改变网络中的参数或数据来动态更新,也无法根据改变的参数或数据进行动态更新以运行不同的配置。这种限制可能会损害现有配置的稳健性和功能性,并且限制了部署更复杂配置的能力。附加地,模板文件的创建主要是手动过程。因此,尝试实施模板文件的许多当前解决方案不会自动生成现有或先前使用或实施的配置的现有命令或参数。附加地,现有解决方案无法或被限于支持流和控制逻辑、接受输入数据或者合并实时或最近确定的网络数据的能力。现有解决方案的其他缺点包括在运行时间期间模板文件的创建或修改的缺乏或有限功能性。此外,当前的解决方案通常不会在配置部署之前和期间实施一致性检查。由于寻求连接至网络的客户端设备的数量和功能性的扩散,解决诸如上述缺点变得更加紧迫。因此,网络数据和状况快速变化,这意味着网络配置需要适应这种变化的状况。
用于实施网络设备配置的许多当前模板文件的静态和有限性质可能不足以解决当前和未来网络环境的挑战。本文描述的实施例通过实施计算组件(诸如服务器)来解决这些挑战,该计算组件包括从存储在网络设备处的语法文件自动生成现有命令和配置参数的逻辑或指令。网络设备的语法文件可以包括网络配置中可用的命令,从而封装网络配置的特征和/或能力。附加地,计算组件可以支持流和控制逻辑,接受输入数据,并且合并实时或最近确定的网络数据。而且,计算组件可以包括用于在运行时间期间创建或修改模板文件的逻辑或指令,同时在配置部署之前和期间实施一致性检查。通过解决这些挑战,下面描述的解决方案促进了来自网络的当前数据的合并,以提高配置的性能和稳健性。作为一个示例,这些解决方案可以支持基于意图的联网。例如,分组的路由可以基于延迟、抖动和丢包率。与延迟、抖动和丢包率相关联的当前参数或数据可以被获取,并且用于调整配置设置或协议。这种配置设置或协议可以被持续适应,以最小化当前延迟、抖动和丢包。通过这种方式,这些解决方案可以不断适应不断变化的网络状况以优化网络性能,而不是停留在特定配置上。
图1A是在合并或注入诸如输入数据和/或网络状况的当前确定数据等可变数据的同时部署配置的计算系统110的示例性图示。在图1A中,计算系统110可以包括计算组件111,该计算组件111包括一个或多个硬件处理器,这些硬件处理器执行功能以控制或协调一个或多个设备(诸如网络设备120)处的操作。计算组件111可以包括服务器,诸如与网络设备分开设置的远程服务器。在一些实施例中,操作例如可以包括部署或修改配置。虽然前述描述主要引用交换机,但前述描述也可以适用于诸如路由器等其他网络设备。附加地,下面描述的这种实施例不仅可以适用于网络(例如交换机或路由器配置),还可以适用于利用配置文件的任何其他组件,诸如服务器或其他设备。计算组件111可以包括逻辑113,该逻辑113包括执行计算组件111的功能的指令,其可以包括从网络设备120提取语法数据121并且从语法数据121生成模式,该语法数据121包括用于修改现有配置或创建新配置的输入数据。语法数据121可以被表现为语法文件,其可以被存储或封装在网络设备内。语法数据121可以包括由网络设备120支持的设置、功能性、协议、定义和/或命令。在命令或定义内,语法数据121还可以在特定配置中指示或标识静态的部分(例如不需要附加输入或数据)和需要附加输入或数据的其他部分,诸如由特定客户端设备的用户键入的信息,这些客户端设备在拥塞的情况下具有更高网络速度的优先级。语法数据121可以被用于生成模式,诸如JavaScript对象表示法(JSON)模式,其包括与语法数据121类似的信息,但以重组格式呈现语法数据121以更有利于在被部署之前验证新配置。例如,JSON模式可以包括来自语法数据的命令或定义的不同部分的特性和/或可以基于标识对不同部分进行注释。例如,JSON模式可以标识静态部分和需要附加输入或数据的其他部分。
作为语法数据121的功能性的说明性示例,语法数据121可以包括MAC(介质访问控制)地址过滤,其通过基于检测到的MAC地址允许或拒绝对某些客户端设备的访问来控制客户端设备对网络的访问。附加地,在部署配置之前,输入或以其他方式合并到配置中的命令可以被验证,例如以核实正确的句法。验证可以基于合并的命令和JSON模式之间的比较。
由语法文件152表示的语法数据121的一部分到对应的JSON模式154的转换的示例性图示在图1B中图示。语法文件152可以包括由网络设备120支持的不可执行格式的命令或定义以及命令或定义内所包括的变量,诸如参数、输入和/或数据。在一些实施例中,可能需要变量,以便命令或定义作为特定配置的一部分执行。语法文件152可以标识变量的格式、要求或其他约束。例如,语法文件152可以标识变量“优选服务器”是网络时间协议(NTP)的一部分。语法文件152还可以包括示例性的、推荐的或所需的格式,其中优选服务器将被输入或合并。JSON模式154可以包含与语法文件152相同或类似的信息,但重组变量的要求或约束以逐行出现。例如,JSON模式的一行规定优选服务器以数组的格式键入或合并。单独的一行规定数组的最大条目或元素数量为8。通过这种重组,配置可以在部署配置之前通过逐行运行JSON模式154来验证,以确定配置的相关部分是否满足JSON模式154的每行。作为说明性示例,如果优选服务器的假设输入是“x.x.x”,则这种输入将无法符合JSON模式,因为它不符合IPv4(例如“x.x.x.x”)格式或IPv6(例如y:y:y:y:y:y:y:y)格式。因此,逻辑113将标识JSON模式的最后四行未被满足。
参照回图1A,逻辑113还可以包括用于获取网络的更新参数或数据的指令。逻辑113可以附加地包括获取输入数据的指令。输入数据和/或更新的参数可以被合并到模板文件中,该模板文件定义对现有配置的修改或创建新配置。逻辑113还可以包括在配置运行期间持续验证输入数据、更新的参数或数据以及网络的其他状况或参数的指令。在后续描述中,对执行功能的网络设备120的任意引用都可以被解释为该功能使用计算组件111的逻辑113来执行。
计算组件111可以与数据库112集成在一起。数据库112可以存储诸如输入参数或数据等信息以及网络的其他参数。作为说明性示例,这种参数或数据可以包括遥测数据,诸如当前端口配置、边界网关协议(BGP)邻居、开放最短路径优先(OSPF)邻居、高可用性(HA)状态或虚拟系统扩展(VSX)设置。数据库112还可以存储运行或执行配置所需的数据或文件。计算组件111可以从数据库112访问、获取或取回信息,以执行配置的修改和部署。
计算组件111可以从网络设备120接收由网络设备120使用的语法数据121的信息。语法数据121可以被存储或封装在存储装置122中,并且可以包括由网络设备120支持的设置、功能性、协议和/或命令库、可以被输入到命令中或以其他方式在网络设备120的配置中使用的参数以及诸如命令和参数的句法规则等特定规则。语法数据121可以是原始数据和不可执行文本的格式。取决于网络设备120的特定固件模型或版本,语法数据121可以捕获网络配置的特征和/或能力。作为说明性示例,计算组件111可以从语法数据121提取支持的命令或协议,诸如NTP、VSX(虚拟系统扩展)或RADIUS(远程认证拨入用户服务)、连接单独网络的隧道传输协议和/或foo命令,它们定义了可变参数或设置,诸如主机名和端口号。语法数据121可以是JavaScript对象表示法(JSON)格式,或者类似于JSON的格式。计算组件111可以使用API(应用编程接口)(诸如代表性状态转移(REST))来提取或获取语法数据121。计算组件111可以将获取的语法数据121变换为JSONS模式,其示例性图示在图1B中提供,以获取作为输入所需的具体参数或数据,以便执行网络的特定配置。JSON模式可以包括文档或文件,其示例性部分被示出为图1B的JSON模式154,其指示用于执行网络配置的命令的特性,如从语法数据121获取的。例如,特性可以包括命令中所包括的变量(例如输入和/或数据)。JSONS模式还可以定义变量要符合的数据类型。具体地,数据类型可以包括字符串、数字、对象、数组、布尔值和空值。JSON模式还可以包括依赖关系(例如如果存在特定变量,那么另一变量也必须存在)、约束(例如变量要符合的值或对象的范围)、枚举值或对象(例如变量要符合的特定值或对象的有限选择)以及用于存储变量的编码(例如base64用于二进制数据,包括多媒体数据,但7bit、8bit、quoted-printable和二进制是其他编码选项)。关于该前述机制的附加细节在下面将关于后续附图(具体地在图2A中)描述。
如图1A所示,存储装置122可以在网络设备120内部或在网络设备120外部。网络设备120可以被连接至客户端设备,诸如客户端设备131和132,它们当前正在访问网络,或者等待确认或认证以通过网络设备120访问网络。虽然仅两个客户端设备被示出,但是任意合适数量和/或类型的客户端设备可以被连接至网络设备120。
计算组件111最初可以接收特定配置的网络设备120要被部署的请求或指示。逻辑113可以包括提取语法数据121的子集或部分的指令,该子集或部分包括被包括在该特定配置中的相关命令以及这些命令的限制。此处,对实体或元素的子集的任意引用可以指其整体或其一部分。如图2A所示,逻辑113可以将可以是JSON格式的语法数据121的子集转换为JSON模式。JSON模式可以被存储或表现为例如要被存储在数据库112中的文件202。文件202可以是可以从语法数据121生成的JSON模式库的一部分。为了生成和存储JSON模式,逻辑113可以对每个配置命令和对应的参数、规则和/或限制执行从语法数据121到JSON模式的变换。这些命令可以包括NTP、VSX或radius,以图示几个示例。作为说明性示例,并且作为图1B所示的示例性图示的进一步扩展,JSON模式可以包括特定命令或协议(诸如NTP)的数据或与之相关的数据。JSON模式还可以定义或标识NTP(诸如优选服务器或对等体203)所需的参数或输入和优选服务器或对等体203所需的格式,其可以包括IPv4或IPv6格式的字符串。如文件202中所示,NTP的(例如对应于NTP)JSON模式可以标识优选服务器或对等体203将作为数组输入。数组可以包括IPv4或IPv6格式的字符串。备选地,数组可以包括标识特定路由器的主机名。附加地,JSON模式可以包括NTP允许的优选服务器或对等体203的最大输入数量是8的限制。JSON模式还可以包括附加服务器204是NTP的所需输入的标识。JSON模式还可以包括附加服务器204所需的格式,其可以包括IPv4或IPv6格式的字符串。如文件202中所示,NTP的JSON模式可以标识附加服务器204将作为数组输入。数组可以包括IPv4或IPv6格式的字符串。备选地,数组可以包括主机名。附加地,JSON模式可以包括如下限制:针对NTP所允许的附加服务器204的最大输入数量是8。文件202可以被存储在与计算组件111相关联的存储装置中,诸如数据库112,并且可以由计算组件111取回以用于进一步处理和/或执行,诸如在特定命令、功能性、行或配置的一部分的验证期间。通过上述这种方式,JSON模式可以被自动生成,而不是手动输入,从而节省大量的时间和资源。
在一些实施例中,如图2B所图示的,逻辑113可以包括用指向JSON模式库的参考指针222替换文件202中的输入或参数的JSON模式定义的指令(例如优选服务器或对等体203和附加服务器204)。这种库可能是从交换机120的语法自动生成的,如图2A所图示的。该库可以被存储在例如数据库112和/或另一数据库中,诸如远程认证拨入用户服务器(RADIUS)服务器。库可以包括要求,诸如优选服务器或对等体203和附加服务器204的类型、格式和限制。通过这种方式,文件202可以被压缩,使得文件202不需要明确地包括与优选服务器或对等体203和附加服务器204相关联的所有数据,但是逻辑113仍然可以从库中取回数据。附加地,可以利用来自库的任意数据的其他文件或资源可能能够引用该数据,而无需明确地包括所有这种数据。类似地,替换与配置的所需输入或参数相关联的JSON模式定义的逻辑113的附加示例在图3中图示,其中逻辑113可以用指向包括这种定义的库的参考指针304替换与认证端口相关联的定义302。
图4描绘了使用语法数据121使之成为可能的另一实施方式或优点,并且包括可以被用于生成配置要被部署的模板的特征,如稍后将描述的。图4图示了编辑界面或屏幕402(在下文中称为“编辑界面”),其中修改或替换网络的现有配置或创建新配置的命令可以例如以命令行界面(CLI)格式输入。具体地,逻辑113可以包括基于语法规则121识别命令、参数和参数规则的指令。在一些实施例中,逻辑113可以区分配置行的恒定或公共部分和配置行的可变部分。逻辑113可以至少部分地通过使用API来执行这种区分。例如,在图4中,编辑界面402可以包括变量404和406,并且逻辑113可以识别变量404和406是网络的特定配置的参数。作为特定示例,逻辑113可以识别变量404和406可能需要作为输入,并且可能特定于给定的网络或配置。逻辑113还可以包括诸如命令完成、句法检查和识别当前网络设备与其他网络设备之间的差异等特征,并且显示关于上述内容的信息。例如,逻辑113可以包括用于显示弹出窗口422以显示与变量404“主机名”相关联的特定变量设置的指令。弹出窗口422可以标识在主干叶片拓扑下的给定主机名下列出的所有主干。作为又一示例,逻辑113可以包括命令完成特征,例如通过基于先前配置中使用的命令的历史频率和/或先前配置中部署的特征来推断特定用户的意图。这种意图推断可以基于机器学习算法。在一些实施例中,机器学习模型可以使用两个训练数据集来训练。一个训练数据集可以包括在网络状况的特定组合下以至少阈值频率的频率使用或部署的配置或命令。第二训练数据集可以包括在该网络状况组合下以小于阈值频率的频率使用或部署的替代配置或命令。例如,第二训练数据集可以包括可能已经在该网络状况组合下部署的替代配置或命令,诸如可能已经由其他用户部署的那些配置或命令。因此,机器学习模型可能能够确定并区分被频繁部署的命令或配置和不常部署但可能已在特定网络状况下部署的命令或配置。
一旦逻辑113推断出特定意图,逻辑113可以基于推断出的意图建议某些命令,接收所建议的命令是由用户接受还是拒绝的输入,并且如果它们被用户接受则填充命令。如果任何建议的命令由用户修改,则机器学习算法可以被调整,使得对该用户的未来建议将用户的修改考虑在内。
参照回图2A,逻辑113可以包括生成界面以接收由JSON模式指示的输入或文件202的指令。逻辑113可以识别JSON模式中的哪些输入或参数需要诸如用户输入等输入,并且描述这些输入并在界面上对其进行建模。例如,逻辑113可以包括生成界面以接收优选服务器或对等体203和附加服务器204的数据的指令。在其他实施例中,这种界面可以被用于接收或获取BGP邻居、端口配置或HA状态的数据。
示例性界面在图5中图示。具体地,逻辑113可以生成界面502,其可以是例如用户界面,该用户界面包括字段503和504以分别获取优选服务器或对等体以及附加NTP服务器的数据。界面502可以至少部分地基于JSON模式生成。逻辑113可以从JSON模式识别优选服务器或对等体203和附加服务器204需要作为输入数据。界面502还可以基于JSON模式指示字段503和504中的输入的特定要求或限制。这种限制可以包括输入的类型和/或格式。逻辑113还可以包括用于验证任意输入与限制的符合性的指令。响应于完成验证,逻辑113可以将验证后的输入注入或合并到配置中,该配置可以被描述或表现为模板文件,如将相对于后续附图描述的。界面502、来自界面502的数据和/或来自界面502的元数据可以被存储在与计算组件111相关联的存储装置中,诸如数据库112,并且可以由计算组件111取回以用于进一步处理和/或执行。在一些实施例中,如果适用,则输入的部分或全部可以基于用户的意图来建议。用户的意图可以通过机器学习算法基于来自该用户的先前输入从其他用户确定或获取。在一些实施例中,机器学习模型可以使用两个训练数据集来训练。一个训练数据集可以包括在网络状况的特定组合(例如特定范围、类别或类型的参数或指示网络状况的数据)下以至少阈值频率的频率在历史上已被合并到界面502中的输入。第二训练数据集可以包括例如在该网络状况组合下以小于阈值频率的频率很少或从不合并的替代输入。例如,第二训练数据集可以包括可能在该网络状况组合下合并的替代输入,诸如可能已被其他用户合并的那些输入。因此,机器学习模型可能能够确定和区分被频繁合并的输入和不常合并但可能在特定网络状况下合并的输入。
作为另一示例,备选地或附加地,机器学习模型可以使用两个训练数据集来训练。第一训练数据集可以包括最近在网络状况的特定组合下以至少阈值频率的频率合并的最近输入。第二训练数据集可以包括先前已被合并但最近很少合并的历史输入,例如在该网络状况组合下低于阈值频率。因此,机器学习模型可以被训练,以区分最近被合并的输入和不再经常被合并的输入。在一些实施例中,机器学习模型可以基于输入有多新来确定先前输入的权重。例如,在确定或推断用户的意图时,与较不近期的输入相比,机器学习模型可以更重地加权较近期的输入。
逻辑113可以附加地包括用于确定、获取或监测网络中的当前数据或参数的指令,其可以包括网络中的一个或多个特定设备的数据和/或与网络状况相关联的数据。这种数据或参数可以被存储或记录在诸如数据库112等数据存储装置中,并且可能需要执行某些配置。因此,存储的数据或参数可以从数据库112取回或获取,并且可以被注入或合并到JSON模式和/或模板文件中。如图6A所图示的,逻辑113可以包括合并当前数据或参数和输入的数据或参数的指令,以便将叶片交换机上行端口配置到主干并且将下行端口配置到叶片主干架构中的服务器。这种指令可以被嵌入或以其他方式合并到文件602中,并且位于从语法数据121导出或生成的JSON模式的框架608之外。JSON模式可以在文件602中的“inputSchema”定义下描述或定义。在JSON模式之外,文件602可以包括用于获取网络的数据或参数的命令或功能性,这可以涉及或调用一个或多个应用编程接口(API)来收集或获取不同类型的数据或参数。这种命令或功能性可以在执行文件602时返回一种对象类型,其可以包括JSON对象、散列映射和/或数字和/或文本数据。返回的对象可以被合并到模板622中,其定义或描述了配置。这种命令或功能性可以被格式化为JSON数组,其中每个元素包括特定命令或指令的标识符、参数数组以及当合并到另一文件(诸如模板622)中时返回的对象类型出现的名称。参数可以被硬编码以指示特定类型的数据将被传递到另一文件上,诸如模板622,如图6A所示,或者备选地指示来自输入的结果将被传递到另一文件或界面上,如图7所示,其中返回的对象被合并到单独界面上的下拉菜单中,并且从下拉菜单接收到的任意选择都将被合并到模板622中。
作为特定示例,在图6A中,模板622可以包括定义或描述配置的邻居(例如BGP邻居)的测量的当前数据。邻居的测量的当前数据可以作为一个或多个变量604被存储在数据库112中。在一些实施例中,逻辑113可以从数据库112取回或提取一个或多个变量604,以合并到模板622中。逻辑113还可以将标识网络接口和/或网络接口的特定特性或参数(诸如接口中的每个接口的速度)的输入数据合并到配置中,如在文件602中定义的。这种机制也可以在JSON模式的框架外部。所标识的和/或接口的特定特性或参数的输入数据可以作为一个或多个变量606被存储在数据库112中。在一些实施例中,逻辑113可以从数据库112取回或提取一个或多个变量606,以合并到模板622中。在一些实施例中,逻辑113可以包括处置器,该处置器在将这种变量合并到模板622中时以特定格式呈现变量。变量可以被呈现为以逗号分隔的列表或者括号内的数组,仅举几个示例。结合JSON模式不支持的附加验证652,指定虚拟可扩展局域网(VxLAN)网络标识符(VNI)列表如何被呈现的处置器650的示例在图6B中示出。处置器650指定VxLAN网络标识符将被呈现为逗号分隔值的列表而没有包围括号。
取决于所标识的网络接口或者所标识的网络接口的一个或多个特定特性或参数,诸如速度,逻辑113还可以包括用于选择、修改、回滚或调整配置或者配置的特定设置或参数的指令,如在模板622中定义或描述的。例如,如果网络接口的速度是10GB,则特定配置可以被部署。如果该网络接口的速度为40GB,则不同的配置可能会被部署。通过这种方式,当前数据或参数和/或输入数据可以被直接应用或合并到模板622中,该模板622定义或描述了配置。附加地,当前数据或参数可以在运行时间期间不断地或周期性地测量或确定,使得网络的最新数据可以被获取。通过确保网络的最新数据或参数被用于部署和/或选择配置,当前数据或参数的这种合并极大地改进了现有技术。例如,与当前速度相比,六小时前的网络接口速度可能不同。如果配置基于过去(诸如六小时前)的数据部署或选择,则这种配置将无法准确反映网络的当前状况,并且针对网络可能不是次优的。一旦模板被实际运行,模板中定义的配置就可以被执行或部署。因此,当前数据或参数和/或输入数据实际上被直接应用或合并到配置中,并且用于确定配置的特定设置或者要被执行的特定配置。
总之,连同用于执行或部署配置的命令或协议,模板622可以包括实例化的变量(诸如来自输入(例如用户输入)的变量606)、附加的对象变量(诸如变量604,可以包括当前测量或确定的数据或参数)以及涉及实例化变量和/或附加对象变量的条件和/或流控制逻辑。实例化变量和/或附加对象变量可以包括网络的数字、特征或特性。取决于实例化的变量和/或附加的对象变量,条件和/或流控制逻辑可以实施或执行配置的不同设置或者不同的配置。作为另一示例,条件和/或流控制逻辑可以实施或执行配置的不同设置或者不同的配置,这取决于邻居的数量和/或任意或所有邻居的特定参数或设置。
作为将数据或参数直接合并或应用到模板622的替代或补充,如图6A所图示的,在如图7所图示的生成模板之前,数据和/或参数可以被应用于JSON模式。具体地,逻辑113可以包括生成文件702的指令。文件702可以包括JSON模式703,其可以以相同或类似的方式从语法数据121提取或生成,例如如在2A中。文件702还可以包括用于获取网络的数据或参数的命令或功能性,其可以涉及或调用一个或多个应用编程接口(API)以收集或获取不同类型的数据或参数。这种命令或功能性可以返回一种类型的对象。与图6A相反,其中命令或功能性在JSON模式之外(例如在“inputSchema”定义之外),这种命令或功能性可以被添加到JSON模式703,如“includeData”命令704中所示。“includeData”命令704可以包括数据收集说明符,并且可以包括占位符。在执行或运行文件702时,“includeData”命令可以触发指定数据的收集,诸如与VSX配置相关的数据,诸如VSX对。逻辑113可以从运行文件702生成结果752,其可以包括已被收集的指定数据754,包括例如VSX对、VSX对的类型和检测到的特定VSX对。附加地,文件702可以在JSON模式703内包括功能性或命令706以生成界面,诸如UI。功能性或命令706可以包括输入表单中的每个输入字段的标签、建议和误差文本。例如,如果用户在不符合条目的限制或规则的输入表单中键入输入,则建议可以包括建议文本以使输入符合。同时,误差文本可以标识特定误差,诸如条目超出所需边界。参照回图5,误差文本“必须是逗号分隔的IPv4、IPv6或主机名格式”的特定示例在字段503下示出。
在执行这种命令或功能性时,逻辑113可以生成包括检测到的VSX对的下拉栏UI756。逻辑113然后可以获取包括以下输入:对下拉栏UI 756中的VSX对中的一个VSX对的选择,生成模板文件,并且基于该选择执行或部署配置。因此,在生成模板文件以执行或部署配置之前,当前网络数据和/或参数也可以被合并到JSON模式本身中。由于图6A和图7所图示的机制,其中网络的当前数据可以被合并到配置中,复杂配置的附加可能性的聚宝盆被打开,诸如需要运行时间数据(包括BGP邻居和端口速度)的那些。网络配置的现有特征可以被进一步增强,诸如特定网络设备之间(诸如主干、叶片和核心交换机之间)的配置。
用于部署或执行特定配置的模板的又一示例性实施方式在图8中示出。逻辑113可以在网络配置的实际部署之前生成模板802。参照回图5,逻辑113可以将网络的数据或参数(诸如来自字段503和504的验证后的输入数据)合并到模板802中。具体地,来自字段503的输入数据可以被插入到占位符803中,以指示NTP优选服务器的地址和来自字段504的输入数据可以被合并到指示附加服务器地址的占位符804中。逻辑113可以生成结果852,其中占位符803和804已经分别用来自行853和854中的字段503和504的验证输入数据填充。假设来自字段503的验证输入数据实际上是192.168.1.6。结果852然后可以在逻辑113和/或用户的附加验证之后执行或部署。结果852可以使用例如REST API来部署。
在一些实施例中,诸如图8的模板802或图6A的模板622等模板可以从配置改变的记录或捕获生成,例如从诸如图4的编辑界面402等编辑界面中的改变生成,从过去的配置变化的快照生成,或者从可能由用户提供的配置片段或部分生成。在一些示例中,逻辑113可以识别通常由特定用户在特定网络状况下部署的配置的特定特征的某些模式或趋势,建议这些特征,并且在由该特定用户批准时,生成包括那些特定特征的模板,和/或修改现有或当前模板以包括那些特定特征。这种识别可以基于机器学习算法。在一些实施例中,机器学习模型可以使用两个训练数据集来训练。一个训练数据集可以包括在网络状况的特定组合下以至少阈值频率的频率使用或部署的特征。第二训练数据集可以包括在该网络状况组合下以小于阈值频率的频率使用或部署的备选特征。例如,第二训练数据集可以包括可能在该网络状况组合下部署的备选特征,诸如可能已被其他用户部署的那些特征。因此,机器学习模型可能能够确定和区分被频繁部署的特征和不常部署但可能在特定网络状况下部署的那些特征。
在编辑界面的特定示例中,如图4暗指的,逻辑113可以基于JSON模式(例如JSON模式库)来区分命令或功能的静态或不变部分以及来自编辑界面402的先前记录配置的可变部分。逻辑113还可以将来自先前记录配置的行映射或关联到JSON模式中的特定定义。逻辑113然后可以生成区分静态、不变分量和可变分量或部分的模板。例如,逻辑113可以将占位符合并到模板中,以对应于仍然需要被确定或获取的可变分量或部分。在确定可变部分之后,逻辑113可以确定需要输入的任意数据或参数(例如如图5和图7所示)或者需要确定或测量的任意数据或参数(如图6A所示),并且发起界面的创建以请求输入或者确定或测量数据或参数。在获取输入和/或数据或参数之后,逻辑113然后可以将获取的输入、数据和/或参数合并或插入到可变部分或对应于可变部分的占位符中。通过这种方式,逻辑113可能能够生成模板的至少一部分,以简单地从实际部署配置的先前记录部署配置,并且在不同时间和/或在不同网络状况下复制先前使用的配置。除了使用先前记录来复制先前使用或部署的配置之外,通过类似方式,逻辑113还可以从例如由用户提供的配置片段或者例如在编辑界面402中做出的过去配置改变的快照来生成模板。这种实施例不仅可以适用于网络(例如交换机或路由器配置),而且可以适用于利用配置文件的任意其他组件,诸如服务器或其他设备。
在实际部署配置之前以及在配置的部署期间,如先前暗指的,逻辑113还执行符合性检查或验证以确保模板和配置的稳健性。部署前验证的一些示例包括确定VxLAN的要求是否被满足,是否有任何组件或网络使用VxLAN进行通信,所有所需的输入或者测量数据或参数是否已被获取,或者是否存在虚拟路由转发(VFR)设置。在令人满意地完成这种部署前验证检查之后,逻辑113可以部署模板并且部署配置。部署后验证的一些示例可以包括确定VSX链接聚合组(VSX-LAG)是否被配置以及是否存在BGP邻居。在其他示例中,逻辑113可以确定网络状况是否改变以及当前配置是否应该由于网络状况改变而修改。例如,在当前配置的部署期间,附加设备可能进入网络,并且如果设备总数超过阈值,则一个或多个参数可能不再符合部署当前配置所需的某些限制。在这种情况下,逻辑113可以基于当前网络状况修改配置。
图9图示了包括一个或多个硬件处理器902和存储机器可读/机器可执行指令集合的机器可读存储介质904的计算组件900,该机器可读/机器可执行指令集合在被执行时使(多个)硬件处理器902执行一种生成与网络设备的语法数据相对应的语法文件的说明性方法。应该了解的是,除非另有规定,否则在本文讨论的各种实施例的范围内,能够存在以类似或替代顺序或者并行执行的附加、更少或替代步骤。计算组件900可以被实施为图1A、1B、2A和3至8的计算组件111。计算组件900可以包括服务器。机器可读存储介质904可以包括图10所描述的合适的机器可读存储介质。
在步骤906中,(多个)硬件处理器902可以执行存储在机器可读存储介质904中的机器可读/机器可执行指令,以接收计算组件的特定配置要被部署的指示。例如,指示的接收可以包括接收对先前部署的配置的至少一部分的选择,诸如来自从编辑界面402记录的先前记录的部署。在其他示例中,要被部署的特定配置可以包括来自用户的配置片段或者先前指示的配置改变,例如来自编辑界面402。
接下来,在步骤908中,(多个)硬件处理器902可以从计算组件提取语法数据。提取的语法数据可以是JSON格式或者类似于JSON的格式。提取的语法数据可以被转换为JSON模式格式。语法数据可以提供又一上下文来部署特定配置,诸如用于部署特定配置的相关命令和对应于命令子集(例如意味着全部或部分)的限制。具体地,一些命令可能具有关联限制。例如,与NTP协议相关联的某些命令可能需要优选服务器或对等体203的输入(如图2A所图示的)以及优选服务器或对等体203所需的格式,其可以包括IPv4或IPv6格式的字符串。从JSON模式格式,(多个)硬件处理器902可以区分命令的静态或恒定部分以及需要输入或确定的可变部分。
接下来在步骤910中,(多个)硬件处理器902可以生成或组装用于部署特定配置的模板。该步骤表示对需要用户手动创建模板的现有方法的改进。作为一个示例,(多个)硬件处理器902可以基于特定配置组装模板,该模板可以从先前记录的配置、配置的片段或现有配置的编辑指示,如相对于先前步骤906描述的。(多个)硬件处理器902可以填充模板以包括特定配置所需的命令,并且区分命令的静态分量和可变分量。(多个)硬件处理器902可以将模板中的可变分量指定为占位符,使得一旦可变分量被确定、输入和/或验证,它们将被注入到占位符中。
随后,在步骤912中,(多个)硬件处理器902可以从语法数据中确定或标识当前未确定并且被包括在特定配置中的变量。在一些实施例中,变量可以是特定配置内的一个或多个命令或定义的一部分。在一些实施例中,变量可能需要被确定或输入和验证。需要的变量可以被解释为意味着例如但不限于在没有这种确定或输入和验证的情况下,特定配置可能无法被部署。当前未确定的变量可以被解释为尚未输入或确定的变量,或者使得例如由于网络状况变化,该变量的先前确定或输入是过时的或不可靠的。再次参照图1B或图2A的示例,(多个)硬件处理器902可以确定变量可以将图1B中的优选服务器或者图2A中的优选服务器或对等体203包括在命令中,该命令被包括在运行NTP的特定配置中。可能需要图1B中的优选服务器或者图2A中的优选服务器或对等体203,使得在没有上述经过验证的确定或输入的情况下,硬件处理器902无法部署该特定配置。具体地,因为NTP是用于时钟同步的联网协议,如果优选服务器未知,则硬件处理器902将无法确定如何执行时钟时间的这种同步,因为硬件处理器902将不知道使用哪些服务器来执行同步。
接下来,在步骤914中,(多个)硬件处理器902可以获取变量。变量的获取可以经由一个或多个API来测量或确定变量。备选地或附加地,(多个)硬件处理器902可以请求变量的输入,诸如用户输入。在这种场景中,(多个)硬件处理器902可以生成界面以请求变量的输入,并且通过该界面接收条目或选择。界面的示例相对于图5和图7示出和描述。例如,(多个)硬件处理器902可以生成诸如图5的界面502等界面以获取条目。备选地或附加地,(多个)硬件处理器902可以生成诸如图7的界面752等界面,以在变量被确定之后从诸如下拉菜单等菜单获取选择。
接下来,在步骤916中,(多个)硬件处理器902可以在步骤910中指定的占位符的位置处或者与该占位符相对应地将变量合并或注入到模板916中。(多个)硬件处理器902可以在将变量合并、注入或插入到模板916中之前执行验证或者核实变量的符合性。
在步骤918中,(多个)硬件处理器902可以基于模板部署特定配置。(多个)硬件处理器902可以在部署特定配置之前验证网络状况的总体符合性,和/或在部署特定配置之前接收诸如来自用户的确认。在一些实施例中,特定配置的部署可以包括基于被合并或注入到模板中的变量来确定配置的特定设置。例如,参照图6A,(多个)硬件处理器902可以取决于特定网络接口的速度(诸如速度是40GB还是10GB)来确定配置的不同设置。在一些实施例中,(多个)硬件处理器902可以持续监测网络状况是否符合特定配置的要求或限制,即使在特定配置被部署时,并且如果网络状况未能符合要求或限制,则可以调整该特定配置的特定设置。因此,(多个)硬件处理器能够有效地适应不断变化的网络状况,而不会中断服务。
图10描绘了本文描述的各种实施例可以被实现的示例计算机系统1000的框图。计算机系统1000包括总线1002或用于传递信息的其他通信机制、与总线1002耦合以用于处理信息的一个或多个硬件处理器1004。(多个)硬件处理器1004可以例如是一个或多个通用微处理器。
计算机系统1000还包括耦合至总线1002的主存储器1006,诸如随机存取存储器(RAM)、缓存和/或其他动态存储设备,用于存储信息和要由处理器1004执行的指令。主存储器1006也可以被用于在要由处理器1004执行的指令的执行期间存储临时变量或其他中间信息。当被存储在处理器1004可访问的存储介质中时,这种指令使计算机系统1000成为专用机器,该专用机器被定制为执行在指令中指定的操作。
计算机系统1000还包括耦合至总线1002的只读存储器(ROM)1008或其他静态存储设备,用于存储静态信息和处理器1004的指令。诸如磁盘、光盘或USB拇指驱动器(闪存驱动器)等存储设备1010被提供并耦合至总线1002,用于存储信息和指令。
计算机系统1000可以经由总线1002被耦合至显示器1012,诸如液晶显示器(LCD)(或触摸屏),用于向计算机用户显示信息。包括字母数字键和其他键的输入设备1014被耦合至总线1002,用于将信息和命令选择传递给处理器1004。另一类型的用户输入设备是光标控件1016,诸如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传递给处理器1004并且控制显示器1012上的光标移动。在一些实施例中,与光标控件相同的方向信息和命令选择可以经由在没有光标的情况下接收触摸屏上的触摸来实施。
计算系统1000可以包括用于实施GUI的用户界面模块,该GUI可以作为由(多个)计算设备执行的可执行软件代码被存储在海量存储设备中。通过示例,该模块和其他模块可以包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、过程、功能、属性、程序、子例程、程序代码分段、驱动器、固件、微码、电路系统、数据、数据库、数据结构、表格、阵列和变量。
通常,如本文使用的,词语“组件”、“系统”、“组件”、“数据库”、“数据存储库”等能够指代在硬件或固件中实施的逻辑,或者指代软件指令的集合,可能具有入口和出口点,以诸如例如Java、C或C++等编程语言编写。软件模块可以被编译并链接到可执行程序中,安装在动态链接库中或者可以用解释编程语言(诸如例如BASIC、Perl或Python)编写。要了解,软件组件可以从其他组件或者从它们自身可调用,和/或可以响应于检测到的事件或中断而调用。被配置用于在计算设备上执行的软件组件可以被设置在计算机可读介质上,诸如压缩盘、数字视频盘、闪存驱动器、磁盘或者任意其他有形介质,或者作为数字下载提供(并且最初可以以在执行之前需要安装、解压或解密的压缩或可安装格式存储)。这种软件代码可以部分或完全地被存储在执行计算设备的存储器设备上,以由计算设备执行。软件指令可以被嵌入在固件中,诸如EPROM。要进一步了解的是,硬件组件可以包括连接的逻辑单元,诸如门和触发器,和/或可以包括可编程单元,诸如可编程门阵列或处理器。
计算机系统1000可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施本文描述的技术,该程序逻辑与计算机系统组合使计算机系统1000成为专用机器,或者将其编程为专用机器。根据一个实施例,响应于(多个)处理器1004执行主存储器1006中所包含的一个或多个指令的一个或多个序列,本文的技术由计算机系统1000执行。这种指令可以从诸如存储设备1010等另一存储介质被读取到主存储器1006中。主存储器1006中所包含的指令序列的执行使(多个)处理器1004执行本文描述的过程步骤。在替代实施例中,硬连线电路系统可以代替软件指令或者与其组合使用。
本文使用的术语“非瞬态介质”和类似术语指的是存储数据和/或指令的任何介质,该指令使机器以具体方式操作。这种非瞬态介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备1010。易失性介质包括动态存储器,诸如主存储器1006。非瞬态介质的常见形式例如包括软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、闪存EPROM、NVRAM、任何其他存储器芯片或磁带盒及其联网版本。
非瞬态介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与在非瞬态介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括构成总线1002的电线。传输介质还能够采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
计算机系统1000还包括耦合至总线1002的通信接口1018。网络接口1018提供与被连接至一个或多个本地网络的一个或多个网络链路的双向数据通信耦合。例如,通信接口1018可以是集成服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或用于提供与对应类型的电话线的数据通信连接的调制解调器。作为另一示例,网络接口1018可以是局域网(LAN)卡,以提供与兼容LAN(或与WAN通信的WAN组件)的数据通信连接。无线链路也可以被实施。在任何这种实施方式中,网络接口1018发送和接收电信号、电磁信号或光学信号,其携带表示各种类型的信息的数字数据流。
网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过本地网络提供与主机计算机或由互联网服务提供方(ISP)操作的数据设备的连接。ISP进而通过现在通常称为“互联网”的全球分组数据通信网络来提供数据通信服务。本地网络和互联网都使用携带数字数据流的电信号、电磁信号或光学信号。通过各种网络的信号以及在网络链路上并且通过通信接口1018的信号(将数字数据携带到计算机系统1000并且从计算机系统1000携带数字数据)是示例形式的传输介质。
计算机系统1000能够通过(多个)网络、网络链路和通信接口1018发送消息,并且接收包括程序代码的数据。在互联网示例中,服务器可以通过互联网、ISP、本地网络和通信接口1018来传输所请求的应用程序的代码。
接收到的代码可以在被接收到时由处理器1004执行,和/或被存储在存储设备1010或其他非易失性存储装置中,以供稍后执行。
先前章节中描述的过程、方法和算法中的每一个可以被实施在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码组件中,并且由其完全或部分地自动化。一个或多个计算机系统或计算机处理器还可以操作,以在“云计算”环境中或者作为“软件即服务”(SaaS)支持相关操作的执行。过程和算法可以部分或全部地在专用电路系统中实施。上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。不同的组合和子组合旨在落入本公开的范围内,并且某些方法或过程框可以在一些实施方式中省略。本文描述的方法和过程也不被限于任何特定的顺序,并且与其相关的框或状态能够以适当的其他顺序执行,或者可以被并行执行,或者以某种其他方式执行。框或状态可以被添加到所公开的示例实施例,或者从所公开的示例实施例中移除。特定操作或过程的执行可以被分布在计算机系统或计算机处理器中,不仅驻留在单个机器内,也跨多个机器部署。
如本文使用的,电路可以利用任何形式的硬件、软件或其组合来实施。例如,一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件例程或其他机制可以被实施以组成电路。在实施方式中,本文描述的各种电路可以被实施为离散电路,或者所描述的功能和特征能够在一个或多个电路之间部分或全部地共享。尽管各种特征或功能性元件可以作为单独的电路单独描述或要求保护,但这些特征和功能性能够在一个或多个公共电路之间共享,并且这种描述不应要求或暗示需要单独的电路来实施这种特征或功能性。在电路全部或部分地使用软件实施的情况下,这种软件能够被实施为与能够执行相对于其描述的功能性的计算或处理系统一起操作,诸如计算机系统900。
如本文使用的,术语“或者”可以以包括性或排他性意义解释。而且,单数形式的资源、操作或结构的描述不应被读取为排除复数形式。除非另有具体规定或者在上下文内以其他方式理解为使用,否则条件语言(诸如“能够”、“可”、“可能”或“可以”等)通常旨在传达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。
除非另有明确规定,否则本文档中使用的术语和短语及其变型应被解释为开放式而非限制性的。诸如“常规的”、“传统的”、“正常的”、“标准的”、“已知的”等形容词以及类似含义的术语不应被解释为将所描述的项目限制在给定时间段内或限制于给定时间可用的项目,但应该被读取为涵盖现在或未来任何时间可能可用或已知的常规、传统、正常或标准技术。存在扩展词和短语(诸如“一个或多个”、“至少”、“但不限于”或者一些实例中的其他类似短语)不应被读取为意味着在可能不存在这种扩展短语的实例中打算或需要较窄的情况。
除非上下文另有要求,否则贯穿本说明书和权利要求,词语“包括”及其变型(诸如“包括有”和“包括了”)应以开放的、包括性的意义解释,即,作为“包括但不限于”。贯穿本说明书的对数值范围的列举旨在用作单独引用落入范围内的每个单独值的速记符号,包括定义范围的值,并且每个单独的值都被包含在说明书中,因为它在本文中单独列举。因此,单数形式“一”、“一个”和“该”包括复数指示物,除非上下文另有明确指定。短语“…中的至少一个”、“选自…的组中的至少一个”或“选自包括…的组中的至少一个等应以反意连接词解释(例如不被解释为A中的至少一个和B中的至少一个)。
Claims (20)
1.一种计算机实施的方法,包括:
接收计算组件的特定配置要被部署的指示;
从所述计算组件提取语法数据,所述语法数据包括用于部署所述计算组件的所述特定配置的命令和与所述命令的子集相对应的限制;
生成用于部署所述特定配置的模板;
从所述语法数据中标识当前未被确定并且被包括在所述特定配置中的变量;
获取所述变量;
将所述变量合并到所述模板中;以及
基于所述模板来部署所述特定配置。
2.根据权利要求1所述的计算机实施的方法,其中生成所述模板包括:在所述变量被确定之前,添加与所述变量要被合并的位置相对应的占位符;并且将所述变量合并包括:利用所获取的所述变量来替换所述占位符。
3.根据权利要求1所述的计算机实施的方法,其中所述变量包括以下中的任意项:要被输入的数据或者与网络状况相关联的当前数据。
4.根据权利要求3所述的计算机实施的方法,其中响应于所述变量包括要被输入的数据,所述方法还包括:
生成用以获取所述变量的界面;并且其中:
获取所述变量包括:通过所述界面接收选择。
5.根据权利要求1所述的计算机实施的方法,其中所述语法数据是JavaScript对象表示法JSON格式;并且所述方法还包括:
响应于提取所述语法数据,生成包括所述命令的JSON模式库,所述JSON模式库指示:所述特定配置的一个或多个静态分量、所述变量和被包括在所述特定配置中的一个或多个其他变量。
6.根据权利要求1所述的计算机实施的方法,其中部署所述特定配置包括:基于所述变量来确定所述特定配置的设置。
7.根据权利要求1所述的计算机实施的方法,其中接收所述指示包括:接收对先前部署的配置的至少一部分的选择。
8.根据权利要求1所述的计算机实施的方法,还包括:
在部署所述特定配置之前,验证所述变量以确保符合由所述语法数据指示的对所述变量的任意限制;以及
在部署所述特定配置期间,确定所述变量是否符合由所述语法数据指示的对所述变量的任意限制。
9.一种计算系统,包括:
服务器,将特定配置部署到网络设备;
一个或多个处理器;以及
存储指令的存储器,所述指令在由所述一个或多个处理器执行时,使所述一个或多个处理器:
接收计算组件的特定配置要被部署的指示;
从所述计算组件提取语法数据,所述语法数据包括用于部署所述计算组件的所述特定配置的命令;
至少部分地基于所述语法数据来组装用于部署所述特定配置的模板;
从所述语法数据中标识被包括在所述特定配置中的变量;
获取所述变量;
将所述变量注入到所述模板中;以及
基于所述模板来部署所述特定配置。
10.根据权利要求9所述的计算系统,其中生成所述模板包括:在所述变量被确定之前,添加与所述变量要被合并的位置相对应的占位符;并且将所述变量合并包括:利用所获取的所述变量来替换所述占位符。
11.根据权利要求9所述的计算系统,其中所述变量包括以下中的任意项:要被输入的数据或者与网络状况相关联的当前数据。
12.根据权利要求11所述的计算系统,其中所述指令还使所述一个或多个处理器:
响应于所述变量包括要被输入的数据:
生成用以获取所述变量的界面;并且
获取所述变量包括:通过所述界面接收选择。
13.根据权利要求9所述的计算系统,其中所述语法数据是JavaScript对象表示法JSON格式;并且所述指令还使所述一个或多个处理器:
响应于提取所述语法数据,生成包括所述命令的JSON模式库,所述JSON模式库指示:所述特定配置的一个或多个静态分量、所述变量和被包括在所述特定配置中的一个或多个其他变量。
14.根据权利要求9所述的计算系统,其中部署所述特定配置包括:基于所述变量来确定所述特定配置的设置。
15.根据权利要求9所述的计算系统,其中接收所述指示包括:接收对先前部署的配置的至少一部分的选择。
16.根据权利要求9所述的计算系统,其中所述指令还使所述一个或多个处理器:
在部署所述特定配置之前,验证所述变量以确保符合由所述语法数据指示的对所述变量的任意限制;以及
在部署所述特定配置期间,确定所述变量是否符合由所述语法数据指示的对所述变量的任意限制。
17.一种非瞬态计算机可读存储介质,包括指令,所述指令在由计算系统的至少一个处理器执行时,使所述计算系统执行方法,所述方法包括:
接收计算组件的特定配置要被部署的指示;
从所述计算组件提取语法数据,所述语法数据包括用于部署所述计算组件的特定配置的命令和与所述命令的子集相对应的限制;
生成用于部署所述特定配置的模板;
从所述语法数据标识当前未被确定并且被包括在所述特定配置中的变量;
获取所述变量;
将所述变量合并到所述模板中;以及
基于所述模板来部署所述特定配置。
18.根据权利要求17所述的非瞬态计算机可读存储介质,其中生成所述模板包括:在所述变量被确定之前,添加与所述变量要被合并的位置相对应的占位符;并且将所述变量合并包括:利用所获取的所述变量来替换所述占位符。
19.根据权利要求17所述的非瞬态计算机可读存储介质,其中所述变量包括以下中的任意项:要被输入的数据或者与网络状况相关联的当前数据;并且其中:
响应于所述变量包括要被输入的数据,所述方法还包括:
生成用以获取所述变量的界面;并且
获取所述变量包括通过所述界面接收选择。
20.根据权利要求17所述的非瞬态计算机可读存储介质,其中部署所述特定配置包括:基于所述变量来确定所述特定配置的设置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/244,827 US11562140B2 (en) | 2021-04-29 | 2021-04-29 | Dynamically configurable templates to support versatile deployment of configurations at network devices |
US17/244,827 | 2021-04-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115268940A CN115268940A (zh) | 2022-11-01 |
CN115268940B true CN115268940B (zh) | 2024-02-23 |
Family
ID=83600799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111250095.9A Active CN115268940B (zh) | 2021-04-29 | 2021-10-26 | 支持在网络设备处进行配置的多种部署的动态可配置模板 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11562140B2 (zh) |
CN (1) | CN115268940B (zh) |
DE (1) | DE102021127247B4 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220391388A1 (en) * | 2021-06-08 | 2022-12-08 | Red Hat, Inc. | Automatic replacement of command parameters during command history searching |
US20230185584A1 (en) * | 2021-12-13 | 2023-06-15 | Yext, Inc. | Custom publisher system integration |
CN115437683A (zh) * | 2022-11-10 | 2022-12-06 | 平安银行股份有限公司 | 基于sdk的变量配置方法、装置及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7793087B2 (en) * | 2005-12-30 | 2010-09-07 | Sap Ag | Configuration templates for different use cases for a system |
CN107786378A (zh) * | 2017-10-30 | 2018-03-09 | 上海斐讯数据通信技术有限公司 | 一种智能终端配置路由器的方法,智能终端及网络配置系统 |
US10284418B2 (en) * | 2016-07-25 | 2019-05-07 | American Megatrends, Inc. | Network switch management via embedded management controller using management information base (MIB) to JSON parser |
US10530662B2 (en) * | 2018-05-11 | 2020-01-07 | Cisco Technology, Inc. | Machine learning method to validate run-time rules and detect software/hardware consistency errors for network elements |
US10887190B2 (en) * | 2018-03-23 | 2021-01-05 | Hewlett Packard Enterprise Development Lp | System for simultaneous viewing and editing of multiple network device configurations |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2365436A1 (en) * | 2001-12-19 | 2003-06-19 | Alcatel Canada Inc. | Command language interface processor |
EP1322066B1 (en) * | 2001-12-19 | 2006-12-20 | Alcatel Canada Inc. | Command line interface processor |
US20050071170A1 (en) * | 2003-09-30 | 2005-03-31 | Comerford Liam D. | Dissection of utterances into commands and voice data |
JP6682007B2 (ja) * | 2016-11-11 | 2020-04-15 | 旭化成株式会社 | 電子機器、電子機器の制御方法及び電子機器の制御プログラム |
US11115278B2 (en) * | 2019-02-25 | 2021-09-07 | Cisco Technology, Inc. | Learning by inference from brownfield deployments |
-
2021
- 2021-04-29 US US17/244,827 patent/US11562140B2/en active Active
- 2021-10-20 DE DE102021127247.5A patent/DE102021127247B4/de active Active
- 2021-10-26 CN CN202111250095.9A patent/CN115268940B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7793087B2 (en) * | 2005-12-30 | 2010-09-07 | Sap Ag | Configuration templates for different use cases for a system |
US10284418B2 (en) * | 2016-07-25 | 2019-05-07 | American Megatrends, Inc. | Network switch management via embedded management controller using management information base (MIB) to JSON parser |
CN107786378A (zh) * | 2017-10-30 | 2018-03-09 | 上海斐讯数据通信技术有限公司 | 一种智能终端配置路由器的方法,智能终端及网络配置系统 |
US10887190B2 (en) * | 2018-03-23 | 2021-01-05 | Hewlett Packard Enterprise Development Lp | System for simultaneous viewing and editing of multiple network device configurations |
US10530662B2 (en) * | 2018-05-11 | 2020-01-07 | Cisco Technology, Inc. | Machine learning method to validate run-time rules and detect software/hardware consistency errors for network elements |
Also Published As
Publication number | Publication date |
---|---|
DE102021127247A1 (de) | 2022-11-03 |
US20220350966A1 (en) | 2022-11-03 |
US11562140B2 (en) | 2023-01-24 |
DE102021127247B4 (de) | 2023-11-30 |
CN115268940A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115268940B (zh) | 支持在网络设备处进行配置的多种部署的动态可配置模板 | |
US10795992B2 (en) | Self-adaptive application programming interface level security monitoring | |
US10797987B1 (en) | Systems and methods for switch stack emulation, monitoring, and control | |
CN110147411A (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN110521169A (zh) | 用于服务链的策略保证 | |
US10169434B1 (en) | Tokenized HTTP event collector | |
US11829381B2 (en) | Data source metric visualizations | |
US11558252B2 (en) | Learning by inference from previous deployments | |
US7565416B1 (en) | Automatic application of implementation-specific configuration policies | |
US11909744B2 (en) | Network verification method and apparatus | |
US11093476B1 (en) | HTTP events with custom fields | |
JP2011008806A (ja) | 装置管理システム及びそのシステムにおける装置管理命令スケジューリング方法 | |
US10560370B1 (en) | Intelligent exception recovery in network services | |
CN102801714B (zh) | 旁路式解析和还原tns协议中sql命令的方法 | |
CN111258627A (zh) | 一种接口文档生成方法和装置 | |
CN113709810B (zh) | 一种网络服务质量的配置方法、设备和介质 | |
CN111385124A (zh) | 一种网关业务实现方法、控制装置和网关 | |
CN111865662B (zh) | 网络设备配置方法及系统 | |
US11552868B1 (en) | Collect and forward | |
US20190386886A1 (en) | Method and system for virtual network service activation | |
CN109714208A (zh) | 一种设备纳入网管的方法、存储介质及电子设备 | |
JP4634467B2 (ja) | ネットワーク管理プログラムおよびネットワーク管理装置 | |
Dai et al. | Detecting network topology and packet trajectory with SDN-enabled FPGA Platform | |
WO2020159725A1 (en) | Availability factor (afactor) based automation system | |
US11861345B2 (en) | Updating grammar file to configure deployment of updates of network devices |
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 |