背景技术:
计算机网络(诸如广域网(wan)、存储区域网络(san)和企业网络等)可以包括被配置为传递信息的网络设备的集合。这样的联网设备可以包括路由器、交换机、集线器、调制解调器和其他设备。
每个联网设备被配置为在网络内操作。用于联网设备的配置可能是复杂的。为了确保适当的功能,用于联网设备的配置通常是经验证的。配置验证是冗长的过程,这要求每条命令通常逐行验证。
附图说明
根据一个或多个各种实施例,参考以下附图详细描述本公开。附图仅出于图示的目的而提供并且仅描绘典型或者示例实施例。
图1图示了根据本文所公开的技术的实施例的示例网络。
图2图示了根据本文所公开的技术的实施例的示例网络设备。
图3a图示了根据本文所公开的技术的实施例的网络设备上的设备配置简档的在线验证的示例架构。
图3b图示了根据本文所公开的技术的实施例的网络设备上的设备配置简档的在线验证的另一示例架构。
图4图示了根据本文所公开的技术的各种实施例的执行实况设备上验证的示例方法。
图5图示了根据本文所公开的技术的各种实施例的具有机器可读指令的示例网络设备。
图6是可以用于实现本公开中所描述的实施例的各种特征的示例计算组件。
附图不是详尽的并且不将本公开限于所公开的精确形式。
具体实施方式
网络设备可以以两种方式之一进行配置。一种方法是通过网络设备的命令行接口本地输入配置命令。另一方法是通过简单网络管理协议(smnp)向网络设备发送配置命令。在这两种方法下,配置命令直接影响网络设备的操作,包括设备的各种数据结构和特征集。一旦命令由网络设备输入和/或接收,则与配置命令相关联的网络设备的配置方面立即被改变。因此,如果错误存在于配置命令内,使得新配置不与网络设备的能力、错误配置结果兼容。错误配置可能引起计算机网络内的服务的昂贵中断。因此,网络管理员想要在将配置简档移植到网络设备之前验证配置简档(配置的命令集)以尽可能避免错误配置。
验证配置简档的当前方法是昂贵的并且易于潜在错误和错误配置。当其在线时执行网络设备上的验证并且在计算机网络中的操作通常避免,因为任何错误引起计算机网络中的直接错误配置,这导致相同昂贵中断验证被认为避免。因此,当前方法要求验证离线执行。离线验证的一个方法涉及开发并且建立复制网络设备将操作的计算机环境的测试网络环境。测试环境可以运行以在将配置移植到目标网络设备之前验证配置简档。传统地,测试环境要求类似于运行计算机网络的复制测试网络和对应的软件以操作测试网络。复制测试硬件对于设立测试网络以及代替目标网络设备也是必要的。这是昂贵的努力,这要求相当于复杂的计算机网络,其包括这样的环境的设计和建立。而且,测试环境的分离的操作软件和/或物理组件是特定设备类型的。如果网络设备是底架设备或者支持以太网供电(poe)的设备或者如果网络设备是网桥或者路由器,则可能需要组件的分离集合。
离线验证配置简档的另一传统方法涉及开发目标网络设备的模拟版本。目标网络设备的虚拟版本被写入并且被设计为仿真(尽可能近地)设备特性。这些设备特性可以包括目标网络设备的硬件细节或者特性。验证程序可以在模拟网络设备上运行,并且如果被验证,则配置简档可以被存储在目标网络设备上。然而,类似于测试环境方法,使用模拟器是相当复杂的,通常要求整个虚拟网络开发以测试配置简档。虚拟环境的不同版本将需要针对每种类型的网络设备进行开发。该添加的复杂性还增加了验证的成本。而且,模拟软件将需要更新以用于对网络设备做出的任何(一个或多个)固件更新。
验证的两种方法存在另一不足,通常,两种方法都不验证其写入的实际硬件上的配置简档。利用模拟方法,利用网络设备的硬件的虚拟表示来完成验证。给定虚拟环境中的差异,某些命令可以如何执行中的差异可以存在于软件定义的版本。这些改变可以指示测试期间的有效命令,其一旦实现则可能与网络设备不相容。通过不使用实际硬件验证配置简档,对于错误配置的潜在性增加,并且实际上,错误配置是相当常见的。
在测试环境中,类似于目标网络设备,可以使用复制网络设备。虽然可以采取一些步骤以使目标网络设备与复制网络设备之间的硬件差异最小化,但是,复制网络设备不实现/不包括预期配置简档的相同硬件。在一些情况下,一个网络设备上的有效命令可能不与类似的另一网络设备相容,但是关于类型和硬件细节仍然不相同。克服该硬件差异的一种方式是使用测试环境中的目标网络设备,但是这样的方法将要求替代网络设备在操作(非测试)网络中配置和实现。该方法还要求替代网络设备保持操作,同时新配置简档在目标网络设备上验证,自身添加成本和复杂性。
本技术的实施例实现网络设备上的配置简档的在线验证,避免与当前方法相关联的许多问题。如此处所讨论的,本技术的实施例创建网络设备上的隔离的验证环境,在隔离的验证环境的,可以验证配置简档,同时网络设备在计算机网络中保持操作。该“影子(shadow)”过程可以与网络设备的正常操作并行运行,使用设备自身的实际硬件和软件执行验证。
数据库结构可以用于将配置和设备细节存储在网络设备上。当新配置简档需要验证时,激活隔离的验证环境的命令可以用于开始验证过程,并且可以请求数据库结构的副本。任何新配置命令可以然后鉴于实际/目标网络设备细节(例如,存储器分配、端口分配、处理能力等)而被验证以确保新配置与网络设备相容。由于隔离的验证环境不直接影响网络设备的当前操作,因而任何错误可以被标记并且被标识,这允许修改做出而不引起错误配置。一旦验证,则包括新配置简档的新数据库结构被存储以用于稍后使用。在任何未来点处,验证结果(新配置简档)可以被部署到利用新配置简档替换运行的配置简档的网络设备。
图1图示了根据本文所公开的本技术的实施例的示例计算机网络100。如所图示的,计算机网络100包括提供终端104之间的通信的各种网络设备。客户端可以具有各种终端104(诸如服务器),其需要基于客户要求以各种不同方式通信。在各种实施例中,计算机网络100可以是局域网(lan)、广域网(wan)、存储区域网络(san)、企业网络或者其他类型的网络配置。为了便于讨论,简化计算机网络100,但是本领域普通技术人员将理解到,本文所公开的技术适用于任何网络配置。
计算机网络100的终端104可以通过各种不同网络设备相连接。网络设备(例如,基于客户要求或者操作偏好)提供网络100内的不同终端104之间的连接性。网络设备的非限制性示例包括调制解调器106、路由器108、交换机110和桥接器112。在各种实施例中,附加网络设备可以存在于计算机网络100内。
当前,配置命令被输入并且维持在网络设备内的方式是特定实现的并且通常专用于网络设备的制造商。通常,命令行接口(cli)用于输入配置命令。cli与在设备上运行的过程和处理器直接通信,并且立即地利用相关联的处理或处理器实现新配置命令。当每个配置命令单独输入时,配置命令通过cli格式化并且嵌入在联网设备的相关硬件组件的固件(例如,专用集成电路(asic))中。因此,配置命令直接影响网络设备的运行,冒昂贵的错误配置的风险(如果输入),同时网络设备在线并且在网络中操作。
此外,cli不是用于存储已经通过cli输入的配置命令的存储库。由于其中不同设备和/或组件制造商设计嵌入过程的所有权性质,因而配置命令难以标识以下配置。硬件和软件高度耦合以确保快速、有效和小代码操作。因此,尝试并且聚集输入网络设备中的所有配置命令是非常困难并且高度密集的过程。
图2图示了根据本文所公开的技术的实施例的示例网络设备200。网络设备200表示各种网络设备的共同组件,诸如图1中所图示的调制解调器106、路由器108、交换机110和桥接器112。取决于设备的性质(例如,设备是路由器),附加组件(即,设备特定组件214)被包括在网络设备200的不同实施例中。图2仅聚焦于共同组件不应当被解释为将根据本文所公开的技术的网络设备200仅限于那些组件。本领域普通技术人员将理解到如何实现网络设备200内的设备特定组件214以使得网络设备200能够执行其网络内的预期功能,诸如交换卡、管理模块和千兆界面转换器。
如在图2中所图示的,示例网络设备200包括用于执行和控制网络设备200的功能的处理器202。在各种实施例中,超过一个处理器202可以被实现在网络设备200中。在各种实施例中,处理器202可以具有单个处理核,而在其他实施例中处理器202可以具有多个处理核。在一些实施例中,处理器202中的一个或多个可以被配置为执行特定任务。处理器202的非限制性示例包括:微控制器;微处理器;专用集成电路(asic);现场可编程门阵列(fpga);被配置为根据指令集执行算术和逻辑操作的其他类型的组件等。
网络设备200还可以包括用户接口204,其通信地耦合到处理器202。用户接口204使得人员输入命令并且直接地在网络设备200处执行其他动作。在各种实施例中,用户接口204可以是被包括在网络设备200上的物理用户接口。物理用户接口204的非限制性示例包括:触摸屏接口;键盘;显示器;触摸板;本领域中已知的其他物理接口等。在各种实施例中,用户接口204可以是被配置为允许一个或多个输入设备连接到网络设备204以实现命令的局部进入的一个或多个输出端口。例如,在一些实施例中,用户接口204可以是使得分离的显示器能够连接到网络设备的视频图形阵列(vga)连接器,允许用户观看网络设备200的图形输出(例如,cli接口)。用于用户接口204的输出端口的非限制性示例包括以下连接协议的一个或多个变型:ps/2;usb;dvi;hdmi;标准插座(rj);bnc;tnc;火线;显示端口;雷电接口;其他连接类型等。在各种实施例中,用户接口204可以是网络或者管理端口。
在各种实施例中,用户接口204与由处理器202执行的用户接口程序进行交互以使得用户能够与网络设备200交互。在各种实施例中,执行的用户接口程序可以是cli,其中处理器202通过用户接口204将cli接口显示给用户。用户可以通过用户接口204将处理器202可以接收并且处理的一个或多个命令输入cli中。在各种实施例中,不同于当前方案,处理器202可以将接收到的配置命令存储在配置数据库206中,而不是仅解译并且将命令嵌入在特定组件的固件内。
配置数据库206可以维持与网络设备200的操作相关联的多个数据。在各种实施例中,配置数据库206可以包括多个数据表,每个数据表涉及网络设备200的不同方面。例如,在一些实施例中,一个或多个数据表可以是平台特定的,描述了网络设备200的硬件能力(例如,存储器容量、处理功率、网络端口号等),一个或多个表可以是协议特定的(例如,网络时间协议(ntp)、以太网等),并且一个或多个表可以是功能特定的(例如,虚拟局域网(vlan)等)。配置数据库206还包括描述所包括的数据表中的每一个之间的关系的关系文件。在一些实施例中,每个数据表可以具有其自己的关系文件,维持配置数据库206中的相应数据表与其他数据表之间的关系。每个数据表包括操作数据和配置命令。在各种实施例中,操作数据定义相关功能或者硬件组件,并且配置命令包括功能或者硬件将在网络内如何操作。
在各种实施例中,一个或多个数据表中的每个数据字段被分配分类,标识数据的类型。对于非限制性示例,分类可以包括“配置”、“状态”和“统计数字”。配置分类标识由网络设备的配置命令提供的数据项。状态分类标识对应的平台、协议或者功能特定数据表的操作状态相关联的数据项。统计数字配置是描述与该数据项相关联的系统的操作的统计数字的集合。通过这样的分类,本文所公开的技术的实施例维持网络设备的配置命令的清楚列表而不需要分离的动作(例如,轮询各种网络设备组件)。
配置数据库206促进网络设备200的启动过程期间的设备配置的实例化。当前方案分离地将配置数据嵌入在各种组件的组件内,允许配置发生而不限制同时标识所有配置数据的能力。配置数据库206的非限制性示例包括:随机存取存储器(ram);静态ram(sdram);动态ram(dram);只读存储器(rom);可编程rom(prom);可擦prom(eprom);电气eprom(eeprom);闪存;固态存储器;等等。
网络设备200还可以包括存储器208,其通信地耦合到处理器202。存储器208可以存储与网络设备200的操作有关的一个或多个计算机指令集。处理器202可以执行计算机指令集以执行各种功能。在各种实施例中,存储器208可以包括易失性存储器、非易失性存储器、或其组合。存储器208的非限制性示例包括:随机存取存储器(ram);静态ram(sdram);动态ram(dram);只读存储器(rom);可编程rom(prom);可擦prom(eprom);电气eprom(eeprom);闪存;固态存储器;等等。在各种实施例中,存储器208和配置数据库206可以组合为单个组件,其中配置数据库206是存储器组件的划分区段。
网络设备200还包括电源210,其通信地耦合到处理器202。电源210为网络设备200提供必要的功率电平以基于其设计操作。在各种实施例中,电源202可以通过一个或多个电缆连接到网络设备200的所有组件。在其他实施例中,电源202可以连接到被配置为将必要的功率分布到网络设备200的一个或多个组件的电源背板,该组件通过电源背板上的连接器连接。在这样的实施例中,处理器202可以通信地耦合到电源背板。在各种实施例中,可以包括超过一个电源202。处理器202可以在各种实施例中被配置为监测电源210,并且在其他实施例中,处理器202还可以被配置为控制电源202的操作和配置。
网络设备200还包括联网接口212,其通信地耦合到处理器。取决于适用于给定网络设备200的通信协议的类型,联网接口212可以包括一个或多个不同网络通信接口。例如,在一些实施例中,网络设备200可以包括用于有线(即,以太网端口)和无线(即,以太网收发器)通过以太网通信的接口。可以被包括在联网接口212中的接口的类型的非限制性示例包括:以太网接口;蓝牙收发器;wi-fi;蜂窝通信(例如,4g、5g、lte等);等等。在各种实施例中,网络设备200可以通过联网接口212的一个或多个部分而不是直接通过用户接口208接收一个或多个配置命令。在这样的实施例中,图1的管理员102可以通过网络连接发送可以由cli接收和处理的配置命令。
网络设备200还可以包括附加设备操作组件214,其通信地耦合到处理器202。如上文所讨论的,设备操作组件214包括对于网络设备200操作为关于图1讨论的联网设备之一必要的附加组件。例如,在网络设备200操作为路由器108的情况下,设备操作组件214可以包括为路由器108提供路由查找和转发功能的转发引擎板(feb)配置。本领域普通技术人员将理解到什么组件被包括在设备操作组件214内以使得网络设备200能够根据其类型操作。在各种实施例中,处理器202可以直接地控制设备操作组件214内的一个或多个组件,而在其他实施例中,处理器202可以与关联于设备操作组件214的一个或多个组件的专用处理器通信。
如上文所讨论的,本文所公开的技术的实施例使得实况在线配置验证能够在网络中的网络设备处被执行。以这种方式,更准确的验证是可能的(通过使用待配置的实际设备),验证的时间被减少(通过减少或者从网络移除设备或者将来自测试设备的伪验证配置简档集成到目标设备的需要),并且减少验证的总体成本(通过物理测试网络或者仿真目标设备的模拟器来减少开发测试台的需要)。该先前地达不到的功能涉及执行设备上的隔离的验证环境内的验证程序。
图3a图示了根据本文所公开的技术的实施例在网络设备200上的设备配置简档的在线验证的示例架构。在附图标记在附图之间公用的情况下,附图标记的描述适用于每个附图。如在图3a中所图示的,管理员102通过网络308通信地耦合到网络设备200。在各种实施例中,网络308可以是局域网(lan)、广域网(wan)、软件定义wan或lan(sdwan或sdlan)、或者任何其他类型的通信网络。网络设备200可以通过一个或多个联网接口(未图示)通信地耦合到网络308,诸如关于图2讨论的联网接口212。在一些实施例中,管理员102可以是管理网络308的网络站点(诸如数据中心或其他核心站点)处的个体。在各种实施例中,取决于实现,管理员102可以通过图形用户接口或者门户与网络308交互。
在操作期间,被存储在配置数据库206中的配置命令由命令处理器302解译。在各种实施例中,命令解译器302是由关于图2讨论的处理器202执行的功能。命令解译器302可以是网络设备200的操作系统的一部分。命令解译器302解译以特定格式写入的每个配置命令,并且执行命令。命令的执行可以包括验证命令语法,(即,使用尚未定义的vlan)检查语义错误,并且将命令转换为以由网络设备200的一个或多个组件可理解的格式的一个或多个特定数据元素。在各种实施例中,命令解译器302可以是cli的一部分。命令解译器302可以存储当通过用户接口208或者联网接口212接收时在配置数据库206中接收到的配置命令。
当新配置简档需要验证时,管理员102可以通过网络308将验证开始命令发送到网络设备200。在各种实施例中,验证开始命令可以是实例化隔离的验证环境304的命令。隔离的验证环境304是沙箱型执行环境,其中在隔离的验证环境304内执行的命令不实际上控制网络设备组件中的任一个。当网络设备200的当前配置简档或者其他操作数据以数据库格式维持时,隔离的验证环境304的使用是可能并且有效的,因为所有必要数据是容易可用的。
验证处理程序310从管理员102接收验证开始命令。验证处理程序310管理验证过程。在各种实施例中,在接收到验证开始命令时,验证处理程序310创建隔离的验证环境304,生成当前配置简档(下面详细讨论的)的验证副本206x,发送用于擦除来自验证副本206x的所有“配置”分类数据项的命令,生成验证报告,并且(最终地)破坏隔离的验证环境304。
隔离的验证环境304内的影子解译器306执行命令解译器302的功能。在各种实施例中,影子解译器306是来自命令解译器302的过程的第二过程实例。这实现网络设备200的实际命令解译代码的使用,而不是或者要求分离的命令解译代码针对模拟器开发或者使用类似(但是分离的)设备以执行验证。使用实际命令解译代码导致配置命令的更准确并且有效的验证。并且还与网络中的网络设备200的实际操作并行减少对于当在设备上执行验证时的验证必要时间,而不是独立于实际网络设备200执行验证(从而一旦验证过程完成,则要求集成)。
如在图3a中所图示的,配置数据库206的验证副本206x生成并且通过验证处理程序310与隔离的验证环境304相关联。在各种实施例中,验证处理程序310可以向影子解译器306(在隔离的验证环境304中)逐个发送cli命令以生成验证副本206x。在各种实施例中,验证副本206x包含由配置数据库206维持的所有数据和信息,如关于图2所讨论的。出于验证目的,管理员102可以发送验证处理程序310可以存储在验证副本206x而不是配置数据库206中的新配置简档。在各种实施例中,新配置简档被包括在来自发起对于隔离的验证环境304的需要的管理员102的验证开始命令中。在其他实施例中,新配置简档可以在由验证处理程序310接收到的后续命令中被发送到网络设备200。新配置简档在验证副本206x中替换当前在配置数据库206内的配置简档(即,当前配置数据)。新配置简档可以包括以列出方式的多个命令,诸如{command#1;command#2;command#3;…;command#n}。每个命令是单独可标识的。
配置简档包括描述在网络设备上操作的多个硬件组件和软件过程将如何操作的所有命令。在各种实施例中,验证处理程序310可以在除配置数据库206之外的分离的存储器组件内创建验证副本206x,而在其他实施例中,可以在与配置数据库206相同的存储器组件的分区中生成验证副本206x。
为了验证新配置简档,验证处理程序310将每个配置命令输入影子解译器306中。影子解译器306读取并且执行由验证处理程序310提供的命令,其然后将配置数据存储在验证副本206x内(利用“配置”分类)。除了由影子解译器306解译的命令实际上不由网络设备200执行之外,该过程几乎与由命令解译器302执行的过程相同。
当验证发生时,影子解译器可以由于命令语法或者语义错误或者由于新配置命令与网络设备之间的不相容性而生成错误。当这发生时,影子解译器306可以生成错误消息,标识引起错误的特定命令。在验证期间(并且通常在执行期间),创建验证副本206x中的数据的主副本,其组合来自所包括的所有数据表的所有数据。以这种方式,影子解译器306可以标识错误在配置简档内的特定cli命令处发生。验证处理程序310检测错误并且保存用于包括在验证结果报告中的行号和错误消息。例如,影子解译器306可以标识所发生的错误试图执行主副本文件内的特定行。基于该标识,管理员102能够标识哪个命令引起错误。在各种实施例中,错误消息将包括发生的错误类型的描述。
基于错误消息,管理员102可以修改一个或多个配置命令(包括或不包括错误发生的命令)并且试图基于验证报告来重新验证新配置简档。在各种实施例中,验证处理程序310可以被编程为通过网络308将验证报告生成并且发送到管理员。管理员102可以使用验证报告开发对配置简档的修改。在各种实施例中,管理员102可以应用预测软件(诸如机器学习和神经网络)以做出对做出什么修改的确定。管理员102可以然后将修改的配置简档发送到网络设备200,并且验证过程可以然后再次利用验证处理程序310运行,擦除先前的“配置”分类数据项并且输入修改的配置简档。
一旦验证处理程序未找到新配置简档(包括任何修改命令)中的任何错误,则管理员102可以将新配置简档加载到配置数据库206中。在各种实施例中,管理员102可以接收指示无错误的验证报告并且发送清除验证过程的停止命令。在各种实施例中,删除验证副本206x并且停止用于影子解译器306的进程分支,并且停止隔离的验证环境。管理员可以然后通过网络308将新配置简档发送到网络设备200以更新配置数据库206。在一些实施例中,管理员102可以发送利用验证副本206x替换配置数据库206的命令。新配置简档的副本还可以由管理员102维持在网络内的一个或多个储存库处,使得管理员能够使用类似设备中的配置简档(或者对当前网络设备200进行重新成像)。
在一些实施例中,验证程序可以在网络设备200处直接地被触发。图3b图示了用户310可以何处通过网络设备200的用户接口输入开始验证的命令。在各种实施例中,用户310可以指导网络设备200针对新配置命令轮询管理员102,而在其他实施例中,用户310可以将配置命令直接地输入到cli中。在一些实施例中,用户310可以执行关于图3a讨论的管理员的所有相同功能。在其他实施例中,用户310和管理员102可以共享验证过程的方面。
通过生成数据库的副本(其包括配置命令),本公开的实施例使得验证当在操作中时在网络设备上被执行。执行这样的在线验证的当前设备的能力的缺乏导致较高成本、较长验证时间,并且仍然许多错误配置发生。生成沙箱型执行环境(隔离的验证环境304),本文所公开的技术可以使用网络设备的实际软件验证各种配置命令而不影响网络设备的直接操作。
图4图示了根据本公开的实施例的执行实况设备上验证的示例方法400。方法400可以被实现在关于图1、2、3a和3b所描述的网络内。方法400图示了在网络设备域和管理员域内执行的操作。在402处,由网络设备接收用于发起验证程序的发起命令。在各种实施例中,发起命令可以由管理员通过网络发送,并且通过联网接口被接收。在其他实施例中,发起命令可以通过网络设备的用户接口被本地输入。在各种实施例中,发起命令可以包括新配置简档,包括新配置命令。在发起命令本地输入的实施例中,配置命令可以逐行输入。
在操作404处,生成隔离的验证环境。隔离的验证环境是可以执行命令而不影响网络设备的操作的沙箱型执行环境。这类似于进入计算机上的安全模式,其中程序能够运行但是将不会对底层硬件和/或固件做出改变。在各种实施例中,可以通过网络设备上的验证处理程序创建隔离的验证环境。验证处理程序可以以管理验证程序的硬件、软件或两者的组合来实现。在各种实施例中,验证处理程序可以被配置有定义隔离的验证环境的指令,或者对定义隔离的验证环境的指令的访问。在各种实施例中,隔离的验证环境可以定义在验证程序内并且由被存储在网络设备上的一个或多个指令的执行来生成。在其他实施例中,指令可以被发送到网络设备的验证处理程序,跟随发起验证程序的命令,而在其他实施例中验证处理程序可以请求指令。在一些实施例中,隔离的验证环境的许可可以是由验证处理程序可调节的,以容纳待执行的不同类型的验证。在各种实施例中,生成用于隔离的验证环境的第二命令解译器或者影子解译器。影子解译器是与主命令解译器相同的代码,但是在隔离的验证环境内运行,使得由影子解译器解译的命令不直接影响网络设备的操作。
还在操作404处,生成配置数据库的验证副本。如上文所讨论的,配置数据库维持网络设备的当前配置和各种其他操作数据。配置数据库的验证副本是由验证处理程序做出并且与影子解译器相关联的副本,使得影子解译器和验证副本通信地耦合。在一些实施例中,验证副本可以包括主表,包括组成配置数据库的多个数据表中的所有数据项。如上文所讨论的,验证副本和配置数据库可以维持在相同存储器组件内,通过使用本领域中已知的分区或者其他数据分离装置相分离。在其他实施例中,验证副本可以维持在分离的存储器组件上。在各种实施例中,验证处理程序然后擦除被分类为“配置”的数据项,使验证副本准备好用于新命令。
在操作406处,网络设备的验证处理程序输入新配置简档命令。验证处理程序将在操作402处接收到的每个命令逐个输入到影子解译器,诸如关于图3a和3b讨论的影子解译器306。当隔离的验证环境不与实际硬件连接时(即,不允许改变运行时期间的当前运行网络设备配置的任何部分的性质),影子解译器能够验证新配置命令的兼容性。影子解译器运行与主命令解译器相同的代码,确保直接利用设备而不是间接通过使用测试网络或者模拟设备来确保适当的配置。在每个命令之后,验证处理程序确定在操作402处接收到的新配置简档中是否存在更多命令。如果“是”,则验证处理程序继续输入配置命令。
在所有新配置命令输入之后,在操作408处验证处理程序生成验证报告并且将报告传输给管理员。验证报告标识哪些命令是兼容的,并且如果不是的话,则发生错误。在各种实施例中,验证报告可以指示所发生的错误类型的解释。在一些实施例中,验证报告特别地标识命令代码的哪行是不兼容的。网络设备向管理员发送验证报告以用于分析。
在生成验证报告之后,在操作410处验证处理程序破坏隔离的验证环境。在各种实施例中,破坏隔离的验证环境包括停止影子解译器的执行。在一些实施例中,验证处理程序可以存储验证副本(在406处输入所有命令之后创建的配置数据库)。通过存储验证副本,如果未发现错误,则验证处理程序可能能够将配置命令输入主命令解译器以实现新配置简档。在其他实施例中,破坏隔离的验证环境包括冲刷验证副本。
在接收到验证报告之后,管理员分析验证报告。如果未发现错误,那么在操作412处管理员可以可选地保存验证报告数据。然而,如果发现错误,则在操作414处修改新配置简档。在各种实施例中,可以在管理员站点处由用户或者在网络设备处本地执行修改。用户可以标识验证报告中的特定故障命令并且确定如何修改达到兼容性的命令。在其他实施例中,机器学习或者其他预测方案可以适用于数据。一旦修改,则就在操作416处修改的配置简档可以被发送到网络设备,并且周期(操作402-410)可以在新修改配置简档上再次运行。
图5图示了根据本文所公开的技术的各种实施例的示例网络设备500。在各种实施例中,网络设备500可以类似于关于图1-4讨论的网络设备106、108、110、112和网络设备200。网络设备500包括硬件处理器502。在各种实施例中,硬件处理器502可以类似于上文关于图1-4讨论的处理器202。在各种实施例中,硬件处理器502可以包括一个或多个处理器。
硬件处理器502被配置为执行被存储在机器可读介质504上的指令。机器可读介质504可以是一种或多种类型的非暂态计算机存储介质。非限制性示例包括:闪存、固态存储设备(ssd);存储区域网络(san);可移除存储器(例如,记忆棒、cd、sd卡等);或者内部计算机ram或rom;其他类型的计算机存储介质等。被存储在机器可读介质504上的指令可以包括用于执行由所标识的功能实现的功能的各种子指令。例如,指令“接收用于验证程序的发起命令”506可以包括用于在联网接口500(未示出)的联网接口与验证处理程序之间接收和路由发起命令的各种子指令,诸如关于图1-4讨论的联网接口212讨论的功能。此外,该指令可以包括用于标识包括在发起命令内的新配置简档的子指令,包含待验证的新配置命令,如相对于图1-4所讨论的。指令“生成隔离的验证环境”508可以包括网络设备500的验证处理程序创建命令可以在没有对于改变网络设备500的操作必要的许可的情况下运行的沙箱型环境的各种子指令,诸如关于图1-4所讨论的隔离的验证环境304。该指令还可以包括用于生成包括命令解译器的过程的第二实例的影子解译器的子指令。指令“将配置命令输入到影子解译器中”510可以包括使得验证处理程序输入在发起命令中接收到的每个新配置命令的子指令,如关于图1-4所讨论的。该指令还可以包括复制被包括在配置数据库内的所有数据表并且擦除“配置”数据项的子指令,如关于图1-4所讨论的。指令“生成验证报告”512可以包括标识故障的特定命令和错误的解释,如关于图1-4上文所讨论的。指令“破坏隔离的验证环境”可以包括停止影子解译器过程的操作并且冲刷与隔离的验证环境相关联的配置数据的子指令,如关于图1-4所讨论的。
使用本文所公开的技术的实施例,当每个设备在网络中操作时,管理员可以同时重新配置多个网络设备。通过将验证负载分布到网络设备自身,在不需要多个测试环境或者设备的多个模拟版本的创建的情况下,多个网络设备的验证是可能的。在各种实施例中,所有网络设备可以同时验证新配置简档。本文所公开的技术的实施例急剧减少实现网络内的新配置所花费的时间。
在各种实施例中,关于图4所讨论的方法可以同时针对多个网络设备而被实现。在一些实施例中,在操作408处发送的新配置简档可以被发送到类似的多个网络设备。例如,如果管理员想要重新配置网络内的路由器,则在操作408处管理员可以将相同新配置简档发送到网络内的路由器中的一些或全部。每个路由器可以执行其自己的验证,发送回验证报告。基于验证报告,管理员可以然后定制用于每个路由器的配置简档。换句话说,管理员可以使用测试网络或者模拟版本并行而不是一次一个地重新配置多个路由器。此外,当验证在实际硬件上执行时,不存在关于将新配置简档集成到设备中的问题;配置简档已经在特定硬件上被验证,因此其不需要调节以解释测试设备或者模拟器与目标设备之间的差异。
图6描绘了在其中可以实现本文所描述的各种实施例的示例计算机系统600的块图。计算机系统600包括总线602或者用于传递信息的其他通信机构、与总线602耦合以用于处理信息的一个或多个硬件处理器604。例如,(一个或多个)硬件处理器604可以是一个或多个通用微处理器。
计算机系统600还包括主存储器606(诸如随机存取存储器(ram)、高速缓存和/或其他动态存储设备),其耦合到总线602以用于存储待由处理器604执行的信息和指令。主存储器606还可以被用于在待由处理器604执行的指令的执行期间存储临时变量或其他中间信息。当被存储在对处理器604可访问的存储介质中时,这样的指令将计算机系统600提供到定制为执行指令中指定的操作的专用机器中。
计算机系统600还包括只读存储器(rom)608或者其他静态存储设备,其耦合到总线602以用于存储用于处理器604的静态信息和指令。存储设备610(诸如磁盘、光盘或者usb拇指驱动器(闪盘驱动器)等)被提供并且耦合到总线602以用于存储信息和指令。
计算机系统600可以经由总线602耦合到显示器612(诸如液晶显示器(lcd)(或者触摸屏)),以用于将信息显示给计算机用户。输入设备614(包括字母数字和其他键)被耦合到总线602以用于将信息和命令选择传递到处理器604。另一类型的用户输入设备是光标控制器616(诸如鼠标、轨迹球或光标方向键)以用于将方向信息和命令选择传递给处理器604并且用于控制显示器612上的光标运动。在一些实施例中,与光标控制相同的方向信息和命令选择可以在没有光标的情况下经由接收触摸屏上的触摸来实现。
计算系统600可以包括实现可以被存储在大容量存储设备中作为由(一个或多个)计算设备执行的可执行软件代码的gui的用户接口模块。以示例的方式,该模块和其他模块可以包括组件,诸如软件组件、面向对象软件组件、类组件和任务组件、过程、函数、属性、程序、子例程、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表、数组和变量。
一般而言,如本文所使用的,词语“组件”、“引擎”、“系统”、“数据库”、“数据存储库”等可以指代以硬件或者固件实现的逻辑,或者以编程语言(诸如例如java、c或c )编写的可能具有进入点或出口点的软件指令的集合。软件组件可以编译并且链接到可执行程序、被安装在动态链接库中,或者可以以解释性编程语言(诸如例如basic、perl、或python)编写。将理解到,软件组件可以从其他组件或者从自身可调用,和/或可以响应于检测到的事件或者中断而调用。配置用于在计算设备上执行的软件组件可以被提供在计算机可读介质上,诸如光盘、数字视频光盘、闪盘驱动器、磁盘、或任何其他有形介质、或者数字下载(并且可以最初以在执行之前要求安装、解压或者解密的压缩或者可安装格式来进行存储)。这样的软件代码可以部分或者全部存储在执行计算设备的存储器设备上,以用于由计算设备执行。软件指令可以被嵌入在固件中,诸如eprom。将进一步理解到,软件组件可以包括连接的逻辑单元(诸如门和触发器),和/或可以包括可编程单元,诸如可编程门阵列或者处理器。
计算机系统600可以使用定制硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑实现本文所描述的技术,其组合计算机系统使得或者将计算机系统600编程为专用机器。根据一个实施例,本文中的技术响应于(一个或多个)处理器604执行被包含在主存储器606中的一个或多个指令的一个或多个序列而由计算机系统600执行。这样的指令可以从另一存储介质(诸如存储设备610)读取到主存储器606中。被包含在主存储器606中的指令的序列的执行使得(一个或多个)处理器604执行本文所描述的过程步骤。在备选实施例中,硬连线电路可以代替或者组合软件指令使用。
如本文所使用的术语“非暂态介质”和类似术语指代存储使得机器以特定方式操作的数据和/或指令的任何介质。这样的非暂态介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光学或者磁盘,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。非暂态介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带、或任何其他磁性数据存储介质、cd-rom、任何其他光学数据存储介质、具有孔的图案的任何物理介质、ram、prom、和eprom、flash-eprom、nvram、任何其他存储器芯片或磁带盒、和相同内容的联网版本。
非暂态介质与传输介质不同,但是可以结合传输介质使用。传输介质参与在非暂态介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的接线。传输介质还可以采取声或光波的形式(诸如在无线电波和红外数据通信期间生成的声或光波)。
计算机系统600还包括耦合到总线602的通信接口618。联网接口618提供耦合到连接到本地网络的一个或多个网络链接的双路数据通信。例如,通信接口618可以是提供对应类型的电话线的数据通信连接的综合服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或者调制解调器。作为另一示例,联网接口618可以是向兼容lan提供数据通信连接的局域网(lan)卡(或者与wan通信的wan组件)。还可以实现无线链接。在任何这样的实现中,联网接口618发送并且接收携带表示各种类型的信息的数字数据流的电气、电磁或者光学信号。
网络链接通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链接可以通过本地网络向主计算机或者由因特网服务提供商(isp)操作的数据设备提供连接。isp进而通过现在通常被称为“因特网”的世界范围分组数据通信网络提供数据通信服务。本地网络和因特网二者使用携带数字数据流的电气、电磁或者光学信号。通过各种网络的信号和在网络链接上并且通过携带至和自计算机系统60的数字数据的通信接口618的信号是传输介质的示例形式。
计算机系统600可以通过(一个或多个)网络、网络链接和通信接口618发送消息并且接收数据(包括程序代码)。在因特网示例中,服务器可以通过因特网、isp、本地网络和通信接口618传输用于应用程序的请求代码。
接收到的代码可以当其被接收时由处理器604执行,和/或被存储在存储设备610或其他非易失性存储装置中以用于稍后执行。
在前述章节中所描述的过程、方法和算法中的每一个可以实现在由包括计算机硬件的一个或多个计算机系统或者计算机处理器执行的代码组件中并且全部或者部分地自动化。一个或多个计算机系统或者计算机处理器还可以操作以支持“云计算”环境中的相关操作的性能或者作为“软件即服务”(saas)。过程和算法可以部分或者全部实现在专用电路中。上文所描述的各种特征和过程可以独立于彼此使用,或者可以以各种方式组合。不同组合和子组合旨在落在本公开的范围内,并且在一些实现中,可以省略某些方法或者过程块。本文中所描述的方法和过程也不限于任何特定顺序,并且与其有关的块或状态可以以适当的其他顺序来执行,或者可以并行或以某种其他方式执行。块或者状态可以添加到所公开的示例实施例或者从所公开的示例实施例移除。操作或者过程中的某些的性能可以被分布在计算机系统或者计算机处理器中间,不仅驻留在单个机器内,而且跨若干机器部署。
如本文所使用的,电路可以使用任何形式的硬件、软件、或其组合实现。例如,一个或多个处理器、控制器、asic、pla、pal、cpld、fpga、逻辑组件、软件例程或者其他机构可以被实现为组成电路。在实现中,本文所描述的各种电路可以被实现为分立电路,或者所描述的功能和特征可以部分或者全部在一个或多个电路中间共享。即使功能的各种特征或者元素可以单独地被描述或者要求保护为分离电路,这些特征和功能也可以在一个或多个共同电路中间共享,并且这样的描述不应当要求或者隐含分离电路要求实现这样的特征或功能。在电路全部或部分使用软件实现的情况下,这样的软件可以被实现为利用能够执行关于其所描述的功能的计算或者处理系统(诸如计算机系统600)而操作。
在常见用法中,术语“或者”可以具有包含性意义或者排他性意义。如本文所使用的,除非排他性意义特别地指示或者逻辑上必要,否则术语“或者”应当总是以包含性意义解释。当例如术语“或者”与术语“任一”配对作为以“或者a或者b”时,“或者”的排他性意义特别地指示。作为另一示例,排他性意义还可以通过在项的列表之后添加“排他性”或者“但非两者”作为以“a或者b,排他性”和“a或者b但非两者”特别地指示。而且,单数的资源、操作或者结构的描述不应当理解为排除多个。除非另外特别说明,否则如所使用的上下文内以其他方式理解的条件语言(诸如“能够”、“能”、“可”、或“可以”等)通常旨在传达某些实施例包括而其他实施例不包括某些特征、元件和/或步骤。
除非另外明确说明,与限制性相反,本文档中使用的术语和短语和其变型应当被解释为开放式的。诸如“常规”、“传统”、“正常”、“标准”、“已知”和具有类似意思的术语的形容词不应当解释为将所描述的项限于给定时间段或者可用作给定时间的项,但是相反应当理解为涵盖可用或者现在已知或在将来任何时间处的常规、传统、正常或者标准技术。在一些实例中,诸如“一个或多个”、“至少”、“但不限于”或者其他类似短语的扩展词语和短语的存在不应当被理解为意指在这样的扩展短语可以缺少的实例中预期或者要求更窄情况。
1.一种方法,包括:
由网络设备接收验证开始命令;
由所述网络设备的验证处理程序生成隔离的验证环境,当配置命令被执行时,所述隔离的验证环境不能影响所述网络设备的实时操作,生成所述隔离的验证环境包括:
生成存储多个数据表的、所述网络设备的数据库的验证副本;
发起包括主命令解译器过程的新实例的影子解译器过程;
由所述验证处理程序输入在所述验证开始命令中接收到的一个或多个配置命令;以及
由所述验证处理程序生成反映输入所述一个或多个配置命令的结果的验证报告。
2.根据权利要求1所述的方法,其中所述验证副本的所述多个数据表包含与所述网络设备的一个或多个功能组件相关联的多个数据。
3.根据权利要求2所述的方法,其中所述一个或多个功能组件包括所述网络设备的硬件组件和/或功能。
4.根据权利要求1所述的方法,生成所述验证副本包括:
由所述网络设备拷贝所述配置数据库;以及
删除被分类为配置数据项的、所述验证副本的所述多个数据表中的一个或多个数据项。
5.根据权利要求1所述的方法,其中所述验证开始命令通过网络连接被接收。
6.根据权利要求1所述的方法,其中所述验证开始命令通过所述网络设备的用户接口被接收。
7.根据权利要求1所述的方法,其中所述验证报告被发送到管理员,所述方法还包括:
标识所述验证报告中的一个或多个错误;
生成修改的配置简档,包括修改的配置命令;以及
将所述修改的配置命令在新验证开始命令中发送到所述网络设备。
8.根据权利要求1所述的方法,还包括由所述验证处理程序破坏所述隔离的验证环境。
9.根据权利要求8所述的方法,其中破坏所述隔离的验证环境包括停止所述影子解译器的操作。
10.根据权利要求1所述的方法,还包括:在所述验证处理程序输入所述配置命令中的所有之后,由所述验证处理程序存储所述验证副本。
11.根据权利要求1所述的方法,其中管理员将包括配置命令的验证开始命令发送到网络内的多个网络设备,所述多个网络设备配置为执行根据权利要求1所述的方法。
12.一种网络设备,包括:
处理器;
网络对接组件,其包括一个或多个接口;
存储器;
配置数据库;所述配置数据库被配置为维持包括多个配置命令的多个数据表;
所述处理器被配置为通过以下执行验证程序:
由网络设备接收验证开始命令;
由所述网络设备的验证处理程序生成隔离的验证环境,当配置命令被执行时,所述隔离的验证环境不能影响所述网络设备的实时操作,生成所述隔离的验证环境包括:
生成存储多个数据表的、所述网络设备的数据库的验证副本;
发起包括主命令解译器过程的新实例的影子解译器过程;
由所述验证处理程序输入在所述验证开始命令中接收到的一个或多个配置命令;以及
由所述验证处理程序生成反映输入所述一个或多个配置命令的结果的验证报告。
13.根据权利要求12所述的网络设备,其中所述网络设备包括以下一项:路由器;网络交换机;桥接器;调制解调器。
14.根据权利要求12所述的网络设备,其中所述配置数据库和所述存储器是单个组件,所述配置数据库包括所述存储器的划分部分。
15.根据权利要求12所述的网络设备,其中所述网络设备还包括用户接口。
16.根据权利要求12所述的网络设备,所述处理器还被配置为执行一个或多个网络功能,所述一个或多个网络功能与所述验证程序同时被执行。
17.根据权利要求16所述的网络设备,其中所述网络设备包括多个处理器,并且一个或多个处理器专用于执行所述验证程序。
18.一种网络设备的配置命令的在线验证的方法,包括:
在所述网络设备上维持包括多个数据表的配置数据库,所述多个数据表包含与所述网络设备的硬件组件和功能相关联的信息;
从管理员接收验证开始命令;
由所述网络设备的验证处理程序生成隔离的验证环境,当配置命令被执行时,所述隔离的验证环境不能影响所述网络设备的实时操作,生成所述隔离的验证环境包括:
生成存储多个数据表的、所述网络设备的数据库的验证副本;
发起包括主命令解译器过程的新实例的影子解译器过程;
由所述验证处理程序输入在所述验证开始命令中接收到的一个或多个配置命令;以及
由所述验证处理程序生成反映输入所述一个或多个配置命令的结果的验证报告;以及
将所述验证报告发送给所述管理员。
19.根据权利要求18所述的方法,进一步包括:
从所述网络设备接收所述验证报告;
标识所述验证报告中的一个或多个错误;
确定所述配置命令中引起所述错误的一个或多个配置命令;
响应于所述验证报告中所标识的所述一个或多个错误,修改所述配置命令中的一个或多个配置命令以生成修改的配置命令;以及
将所述修改的配置命令在新验证开始命令中发送到所述网络设备。
20.根据权利要求19所述的方法,其中所述网络设备被配置为与所述验证程序同时执行一个或多个网络功能。
技术总结