Automated elimination of global configuration errors on clustered network devices

By aggregating configuration files into a common format and using a term replacement database to detect and correct errors, the system efficiently manages network switch configurations, addressing the challenges of error detection and validation in existing technologies.

DE102022126650B4Active Publication Date: 2025-05-28HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
DE102022126650
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-04-21
Filing Date
2022-10-13
Publication Date
2025-05-28
Estimated Expiration
2042-10-13

AI Technical Summary

Technical Problem

Existing systems for managing network switch configurations struggle with efficiently identifying and correcting configuration errors across multiple switches, leading to delays and potential network instability.

Method used

A method and system that aggregate multiple configuration files into a common configuration file, detect line specification and order errors, update a term replacement database, and validate switches using the updated configuration files, allowing for automatic or user-driven error correction.

Benefits of technology

This approach accelerates the validation process for multiple network switches by identifying and correcting configuration errors dynamically, reducing the risk of network instability and improving overall management efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A procedure for resolving configuration errors that includes: aggregating a plurality of configuration files, by a system comprising a hardware processor, to generate a first common configuration file; determining, by the system, a line specification error or a line ordering error in the first common configuration file, wherein the line specification error is an error associated with a line specification; Comparison of the first common configuration file with a term replacement database by the system; Updating the term replacement database with the determined line specification error or line ordering error by the system; updating, by the system, a second common configuration file corresponding to a plurality of switches; Validation of the second common configuration file by the system using the updated term replacement database; and Causing the installation of the second common configuration file on the plurality of switches as part of the activation of the plurality of switches.
Need to check novelty before this filing date? Find Prior Art

Description

background

[0001] A programming language is defined by its grammar, which can restrict the commands, parameters, and syntax that can be used in the language. The configuration files used to configure network switches generally follow a similar grammar, but one specific to configuring such switches.

[0002] US 2021 / 0 044 498 A1 relates to systems and methods for self-tuning networks using distributed analysis functions for network devices.

[0003] US 2003 / 0 149 756 A1 relates to the management of configurations and configuration changes in computer network devices and computer networks.

[0004] US 8 990 148 B1 relates to systems and methods for dynamic hierarchical parsing of data. Brief summary of Revelation

[0005] According to one embodiment, a method for resolving configuration errors by a server comprises aggregating a plurality of configuration files to generate a first common configuration file; determining one or more line specification errors or line ordering errors in the first common configuration file, the line specification errors being one or more errors associated with one or more line specifications; comparing the first common configuration file to a term rewrite database; updating the term rewrite database with the determined one or more line specification errors or line ordering errors; updating a second common configuration file corresponding to a plurality of switches; and validating the plurality of switches with the second common configuration file.

[0006] In other embodiments, the plurality of configuration files is a first plurality of configuration files, and the method further comprises identifying one or more additional line specification errors or line ordering errors within a second plurality of configuration files, wherein at least one of the one or more additional line specification errors or line ordering errors is a line specification or line ordering error within the first plurality of configuration files; and reclassifying the at least one of the one or more additional line specification errors or line ordering errors within the second plurality of configuration files.

[0007] In other embodiments, the method further comprises updating a user interface to display at least one of the one or more additional line specification errors or line ordering errors within the second plurality of configuration files.

[0008] In other embodiments, the method further comprises updating a user interface to display the one or more line specification errors or line ordering errors based on the error type.

[0009] In other embodiments, generating the common configuration file comprises replacing one or more pluralities of line specifications with one or more standardized line specifications, wherein each standardized line specification represents a plurality of line specifications.

[0010] In other embodiments, at least one of the errors comprises a row ordering error and further comprises performing a standardized reordering of the row specifications to correct the at least one row ordering error.

[0011] In other embodiments, the method further comprises prompting the user to correct the one or more line specification errors or line ordering errors.

[0012] In other embodiments, the method further comprises receiving user input to correct the one or more line specification errors or line ordering errors and updating the term replacement database with the user input.

[0013] In other embodiments, the method further comprises determining that the user input does not correct the error with the order of the row specifications and removing the user input from the term replacement database.

[0014] In other embodiments, the method further comprises sending a notification that the term replacement database has been updated.

[0015] According to another embodiment, a system comprises a hardware processor and a non-transitory, machine-readable storage medium encoded with instructions executable by the hardware processor to perform a method comprising: aggregating a plurality of configuration files to generate a first common configuration file; determining one or more line specification errors or line ordering errors in the first common configuration file, the line specification errors being one or more errors associated with one or more line specifications; comparing the first common configuration file to a term replacement database; updating the term replacement database with the determined one or more line specification errors or line ordering errors; updating a second common configuration file corresponding to a plurality of switches;and validating the plurality of switches with the second common configuration file.;

[0016] In other embodiments, the system further comprises a plurality of firmware, each firmware corresponding to at least one configuration file from the plurality of configuration files.

[0017] In other embodiments, the term replacement database is stored in a cloud network.

[0018] In other embodiments, the cloud network also includes a central configuration center.

[0019] According to another embodiment, a non-transitory computer-readable storage medium stores a plurality of instructions executable by one or more processors, wherein the plurality of instructions, when executed by the one or more processors, cause the processor to: aggregate a plurality of configuration files to generate a first common configuration file; determine one or more line specification errors or line ordering errors in the first common configuration file, wherein the line specification errors are one or more errors associated with one or more line specifications; compare the first common configuration file to a term rewrite database; update the term rewrite database with the determined one or more line specification errors or line ordering errors;Updating a second common configuration file corresponding to a plurality of switches; and validating the plurality of switches with the second common configuration file.;

[0020] In other embodiments, the plurality of configuration files is a first plurality of configuration files, and wherein the plurality of instructions further cause the processor to identify one or more additional line specification errors or line ordering errors within a second plurality of configuration files, wherein at least one of the one or more additional line specification errors or line ordering errors is a line specification or line ordering error within the first plurality of configuration files, and to reclassify the at least one of the one or more additional line specification errors or line ordering errors within the second plurality of configuration files.

[0021] In other embodiments, generating the common configuration file comprises replacing one or more pluralities of line specifications with one or more standardized line specifications, wherein each standardized line specification represents a plurality of line specifications.

[0022] In other embodiments, at least one of the errors includes a row ordering error, and the plurality of instructions, when executed by the one or more processors, further causes the processor to perform a standardized reordering of the row specifications to resolve the at least one row ordering error.

[0023] In other embodiments, the plurality of instructions, when executed by the one or more processors, also cause the processor to receive user input to correct the one or more line determination errors or line ordering errors and to update the term replacement database with the user input.

[0024] In other embodiments, the plurality of instructions, when executed by the one or more processors, also cause the processor to determine that the user input does not correct the error in the order of the line specifications and to remove the user input from the term replacement database. Brief description of the drawings

[0025] The present disclosure will be described in detail in accordance with one or more various embodiments with reference to the following figures. The figures are for illustrative purposes only and represent only typical or exemplary embodiments. Fig. Figure 1 shows an example of a network topology that can be implemented for an organization such as a business, educational institution, government agency, healthcare facility, or other organization. Fig. 2 is a block diagram of an example system in which the embodiments described herein may be implemented. Fig. 3 shows an example of the use of files in the system of Fig. 2. Fig. 4A shows an example system according to one embodiment. Fig. 4B shows an example of performing a method according to an embodiment. Fig. 5 shows a block diagram of an exemplary computer system in which various embodiments described herein may be implemented.

[0026] The figures are not exhaustive and do not limit the present disclosure to the precise form disclosed. Detailed description

[0027] Embodiments assist in dynamic repairs of the system grammar while processing configuration files of multiple network switches as a single file or "common configuration file." The system may detect the presence of configuration errors—that is, errors either in individual line specifications or in the order of the line specifications. The system may use this detection to compare the common configuration file with a term substitution dictionary, a database that stores information about how to resolve various configuration errors and that can offer repairs or solutions to perform a repair. The system may update the term substitution dictionary if the error or the solution to the error is not contained in the term substitution dictionary. Repairs may be performed automatically or by user prompt.Although various embodiments are described with respect to editing common configuration files for network switches, it should be noted that the technology described herein can be used to edit common configuration files for any configurable device.

[0028] To return to the example of network switches: The switches can be of the same or different models and therefore use the same or different configuration grammars. The base grammar of each switch can be obtained either directly from the switch or from other sources. The base grammar of a switch is the definition of which commands are valid in which context on the switch, along with the syntax for each command. A patch grammar can be defined for each of the network switches. Each patch grammar can contain (i) grammars known to be supported by the switch but not included in the switch's base grammar, and (ii) grammars that allow these grammars to be combined with the grammars of other switches.The base grammars and patch grammars of multiple switches can be combined into a single grammar, referred to here as an "extended grammar." This extended grammar allows the switches' configuration files to be viewed, validated, and edited as a single, shared configuration file. After validation, a corresponding configuration file for each switch can be modified or created and installed on the respective switches. In various implementations, multiple configuration files can be edited as a single, shared configuration file.

[0029] To form the common configuration file, similar line specifications are consolidated across multiple configuration files, so that each line specification in the common configuration file is representative of the line specification in multiple configuration files. For example, if the first line specification in each configuration contains a particular command, then the first line specification in the common configuration file would contain the same command. If the accompanying inputs or prerequisites for the command differ across configuration files, the common configuration file reflects all the different types of inputs at that line specification.For example, if two configuration files have matching inputs and two more configuration files have matching inputs that are different from the first two, then the shared configuration file will display one consolidated line specification based on the first pair and a second consolidated line specification based on the second pair. The shared configuration file may also combine all the different inputs into one line specification, with all the inputs represented in the one line specification. For example, if the first line specification in multiple configuration files includes "vlan 1", "vlan 2", "vlan 3", then the first line specification in the shared configuration file may be "vlan 1-3". The format for this shared configuration file may vary to account for any differences between the configuration files.It should be noted that the shared configuration may also include other objects not contained in files, such as databases. For example, multiple databases can be handled using a single shared configuration database by aggregating parameters across multiple databases to reflect a single overall parameter.

[0030] This grammar serves as a set of instructions for validating and enabling switches. By creating a shared configuration file, instructions for multiple switches can be updated simultaneously and dynamically, ensuring consistent updates across all switches because they are implemented only once. In some implementations, updates to the shared configuration file can also cause simultaneous updates to multiple switches by providing automatic edits to shorten the validation process. These automatic updates also provide dynamic edits that can also assist in validating future, not-yet-configured switches.

[0031] Validation can be performed almost entirely off-box, i.e., on a platform separate from the switch. The final validation of the resulting shared configuration file is performed on-box, but as a single operation for a shared configuration file that has already undergone off-box validation. This allows the operation of each switch to remain unaffected until the validated shared configuration file is installed in the switch.

[0032] Embodiments of the application describe various technical improvements, including accelerating the validation process for multiple network switches simultaneously. Previously, errors related to validation checks could significantly delay the validation process, particularly in cases where new parameters or functions are configured for a particular switch and the system lacks knowledge of the new parameters or functions, referred to herein as "false negatives." Embodiments of the application can determine whether a potential "error" represents a "false negative," so that the system never detects an error. Furthermore, embodiments of the application provide automated solutions that were previously unavailable, such asStandardized reordering and prompts for local error resolution, with the system providing the user with detailed information about the detected errors, including possible solutions. Therefore, the embodiments of the application describe various technical improvements to the validation process for network switches.

[0033] Before describing embodiments of the disclosed systems and methods in detail, it is useful to describe an exemplary network installation with which these systems and methods could be implemented in various applications. Fig. 1 shows an example of a network topology 100 that may be implemented for an organization, such as a business, educational institution, government agency, healthcare facility, or other organization. This diagram illustrates an example of a configuration implemented in an organization with multiple users (or at least multiple client devices 110A-J) and possibly multiple physical or geographic locations 102, 132, 142. The network topology 100 may include a primary site 102 that communicates with a network 120. The network topology 100 may also include one or more remote sites 132, 142 that communicate with the network 120.

[0034] The primary site 102 may include a primary network, which may be, for example, an office network, a home network, or other network installation. The primary network 102 may be a private network, such as a network that may include security and access controls to restrict access to authorized users of the private network. Authorized users may include, for example, employees of a company at the primary site 102, residents of a home, customers of a company, etc.

[0035] In the example shown, primary site 102 includes a controller 104 that communicates with network 120. Controller 104 may provide communication with network 120 for primary site 102, although it need not be the sole point of communication with network 120 for primary site 102. A single controller 104 is illustrated, although the primary site may include multiple controllers and / or multiple points of communication with network 120. In some embodiments, controller 104 communicates with network 120 via a router (not shown). In other embodiments, controller 104 provides router functions to devices at primary site 102.

[0036] A controller 104 may configure and manage network devices, e.g., at the primary site 102, and may also manage network devices at the remote sites 132, 134. The controller 104 may configure and / or manage switches, routers, access points, and / or client devices connected to a network. The controller 104 may itself be an access point or provide the functionality of one.

[0037] Controller 104 can communicate with one or more switches 108 and / or wireless access points (APs) 106A-C. Switches 108 and wireless APs 106A-C provide network connectivity to various client devices 110A-J. Through a connection to a switch 108 or AP 10A-C, a client device 110A-J can access network resources, including other devices in the network (primary site 102) and in the network 120.

[0038] Examples of client devices may include: desktop computers, laptops, servers, web servers, authentication servers, authentication-authorization-accounting (AAA) servers, Domain Name System (DNS) servers, Dynamic Host Configuration Protocol (DHCP) servers, Internet Protocol (IP) servers, Virtual Private Network (VPN) servers, network policy servers, mainframe computers, tablet computers, e-readers, netbook computers, televisions and similar displays (e.g., smart TVs), content receivers, set-top boxes, personal digital assistants (PDAs), mobile phones, smartphones, intelligent terminals, silent terminals, virtual terminals, video game consoles, virtual assistants, Internet of Things (IOT) devices, and the like.

[0039] Included within primary site 102 is a switch 108 as an example of an access point to the network established at primary site 102 for wired client devices 1101-J. Client devices 1101-J can connect to switch 108 and access other devices within network topology 100 through switch 108. Client devices 1101-J can also access network 120 through switch 108. Client devices 1101-J can communicate with switch 108 via a wired connection 112. In the illustrated example, switch 108 communicates with controller 104 via a wired connection 112, although this connection may also be wireless.

[0040] Wireless APs 106A-C are another example of an access point to the network established at primary site 102 for client devices 110A-H. Each of APs 106A-C may be a combination of hardware, software, and / or firmware configured to provide wireless network connectivity to wireless client devices 110A-H. In the illustrated example, APs 106A-C may be managed and configured by controller 104. APs 106A-C communicate with controller 104 and the network via connections 112, which may be either wired or wireless interfaces.

[0041] The network topology 100 may include one or more remote sites 132. A remote site 132 may be located in a different physical or geographical location than the primary site 102. In some cases, the remote site 132 may be located in the same geographical location or possibly in the same building as the primary site 102, but does not have a direct connection to the network of the primary site 102. Instead, the remote site 132 may utilize a connection through another network, such as the network 120. A remote site 132, as shown in Fig. 1, may be, for example, a satellite office, another floor or suite in a building, etc. The remote location 132 may include a gateway device 134 for communicating with the network 120. A gateway device 134 may be a router, a digital-to-analog modem, a cable modem, a DSL modem, or other network device configured to communicate with the network 120. The remote location 132 may also include a switch 138 and / or an AP 136 that communicates with the gateway device 134 via either wired or wireless connections. The switch 138 and the AP 136 provide connectivity to the network for various client devices 140A-D.

[0042] In various embodiments, the remote site 132 may be in direct communication with the primary site 102, such that client devices 140a-d at the remote site 132 access the network resources at the primary site 102 as if those client devices 140a-d were located at the primary site 102. In such embodiments, the remote site 132 is managed by the controller 104 at the primary site 102, and the controller 104 provides the necessary connectivity, security, and accessibility to enable communication of the remote site 132 with the primary site 102. Once connected to the primary site 102, the remote site 132 may function as part of a private network provided by the primary site 102.

[0043] In various embodiments, the network topology 100 may include one or more smaller remote sites 142 that include only a gateway device 144 for communicating with the network 120 and a wireless AP 146 through which various client devices 150A-B access the network 120. Such a remote site 142 may be, for example, the home of an individual employee or a temporary remote office. The remote site 142 may also communicate with the primary site 102 so that the client devices 150A-B at the remote site 142 access network resources at the primary site 102 as if those client devices 150A-B were located at the primary site 102. The remote site 142 may be managed by the controller 104 at the primary site 102 to enable this transparency.Once connected to the primary site 102, the remote site 142 may function as part of a private network provided by the primary site 102.

[0044] The network 120 may be a public or private network, such as the Internet or another communications network, that provides connectivity between the various locations 102, 130-142, as well as access to the servers 160AB. The network 120 may include third-party telecommunications lines, such as telephone lines, broadcast coaxial cable, fiber optic cable, satellite communications, cellular communications, and the like. The network 120 may include any number of intermediate network devices, such as switches, routers, gateways, servers, and / or controllers, that are not directly part of the network topology 100 but facilitate communication between the various parts of the network topology 100 and between the network topology 100 and other entities connected to the network. The network 120 may include various content servers 160A-B.Content servers 160A-B may include various providers of downloadable multimedia and / or streaming content, including audio, video, graphics, and / or text content, or any combination thereof. Examples of content servers 160A-B include web servers, streaming radio and video providers, and cable and satellite television providers. Client devices 110A-J, 140A-D, and 150A-B may request and access the multimedia content provided by content servers 160A-B.

[0045] Fig. Figure 2 is a block diagram of an example system 200 in which the embodiments described herein may be implemented. The example system 200 includes a plurality of network switches 202a-n connected to a network 204 and a network administrator interface 206 also connected to the network 204 (see Fig. 2). The network switch 202 may include a control plane 208 and a data plane 210. The control plane 208 may include a processor 212, a control interface 214, and a memory 216. A common configuration file 222, according to which the network switch 202 operates, may be stored in the memory 216. The control interface 214 may be connected to the network 204. The data plane 210 includes a switch fabric 220 and a plurality of network interfaces 218a-n. The network interfaces 218a-n may be connected to the network 204.

[0046] The network administrator interface 206 may be used by a network administrator to configure the network switch 202 via the control interface 214 of the network switch 202. For example, a network administrator may use the network administrator interface 206 to retrieve, edit, and replace or modify the shared configuration file 222 stored in the memory 216 of the network switch 202, as described in detail below.

[0047] In the described embodiments, several different files are used. Fig. 3 shows an example of the use of these files in the system 200 of Fig. 2. For the sake of clarity, these files are referred to here with reference to Fig. 3. With reference to Fig. 3, additional details for the network administrator interface 206 are shown. In particular, the network administrator interface 206 includes a processor 302, a memory 304, and a database 306. A base file for each network switch 202 can be stored in the database 306. That is, the database 306 can store base files Ba-n for the respective network switches 202a-n. Each base file B represents the configuration grammar of the respective network switch 202. The base files Ba-n can be obtained directly from the network switches 202a-n, from other sources, or from any combination thereof.

[0048] A corresponding patch file Pa-n can be stored in the database 306 for each of the network switches 202a-n. Each patch file P represents an extension grammar that is not provided by the respective network switch 202, but is used by various embodiments to extend the respective base grammar B such that the configuration files 222 of the network switches 202 can be displayed, validated, and edited as a common configuration file, as also shown in Fig. 3 shown.

[0049] Fig. 4A is a block diagram of an example computer component or device 400 for repairing common configuration files, according to one embodiment. Computing component 400 may be, for example, a server computer, a controller, or other similar computing component capable of processing data. In the example implementation of Fig. 4A, the computing component 400 includes a hardware processor 402 and a machine-readable storage medium 404. In some embodiments, the computing component 400 may be an embodiment of the processor 302 of the network administrator interface 206, the processor 212 of the network switch 202, or any combination thereof.

[0050] The hardware processor 402 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices capable of retrieving and executing instructions stored in the machine-readable storage medium 404. The hardware processor 402 may retrieve, decode, and execute instructions for components 406, 408, 410, and 412 to control dynamic gram expansion processes or operations for manipulating multiple network switch configuration files as a common configuration file. Alternatively, or in addition to retrieving and executing instructions, the hardware processor 402 may include one or more electronic circuits comprising electronic components for performing the functionality of one or more instructions, such as a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other electronic circuitry.

[0051] A machine-readable storage medium, such as machine-readable storage medium 404, may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, machine-readable storage medium 404 may be random access memory (RAM), non-volatile RAM (NVRAM), electrically erasable programmable read-only memory (EEPROM), a storage device, an optical disk, or the like. In some embodiments, machine-readable storage medium 404 may be a non-transitory storage medium, where the term "non-transitory" does not include the transitory transmission signals. As described in detail below, machine-readable storage medium 404 may be encoded with executable instructions for components 406, 408, 410, and 412.

[0052] Fig. 4B shows an example of implementing a method according to one embodiment. In block 405, the machine-readable storage medium 404 aggregates a plurality of configuration files to form a common configuration file. As described above, a common configuration file may be formed by consolidating line specifications such that each line specification in the common configuration file is representative of the line specification in multiple configuration files. The common configuration may also take the form of a non-file object, e.g., a database. The format of this common configuration file may vary to accommodate any differences between the configuration files.

[0053] In block 407, the system determines whether there are one or more errors related to the one or more line specifications ("line specification errors") and errors related to the ordering of the line specifications ("line ordering errors"). Line specification errors can occur when the parameters or prerequisites for an individual line specification are incorrect. For example, if a particular instruction requires a prerequisite with a value between 1 and 7, but the line specification specifies a value of 8, a line specification error has occurred. The system may determine that a value is not within the appropriate range, indicating a line ordering error. The system may also determine that there is a line specification error if the switch accepts the line specification but the grammar is more restrictive, or vice versa.Another example: If a command in the line specification does not match a valid command, the system may also indicate a line specification error. On the other hand, line ordering errors occur when multiple line specifications are out of order. This can happen if a line specification contains a declaration for a subsequent command or there is a non-standard prerequisite that must be met before the subsequent line specification. For example, if a line specification lists "vlan 3", where vlan 3 represents the declaration, and the command "interface vlan 3" precedes the declaration, a line ordering error can occur because the declaration must come before the interface command. In other words, the correct ordering might be: vlan 3 interface vlan 3 no shutdown IP address 44.42.9.0 / 24 ipv6 address de:fec8:d00:d00:caca:fee:ccc:2 / 96 interface delay 2 vlan access 3 no shutdown no routing.

[0054] The system can detect a line-order error by checking a term-replacement database accessed when loading a shared configuration file. This term-replacement database may be located on a cloud network accessible through a wired or wireless connection. The same cloud network may also have a central configuration center where users can access various shared configuration files. The term-replacement database may contain a model order for commands, default values ​​or ranges, user-defined orders and / or values, a dictionary of valid commands, and other information related to the formatting of shared configuration files.The term replacement database may contain information specific to different models or firmware versions, or it may contain information about new parameters or features related to other users and / or purposes related to the common configuration file. The term replacement database may list a specific command, the required declarations for the command, and the required positions in the order of the line specifications for the command. If the order in the term replacement database does not match the common configuration file, the system may determine that there is a line order error.

[0055] In block 409, the system compares the shared configuration file with the term reconciliation database. The system compares the shared configuration file with the term reconciliation database to determine any differences between the shared configuration file and the entries in the database, depending on a similar model or similar firmware version. In block 411, the system updates the term reconciliation database with the differences, i.e., the detected errors. The system can update the term reconciliation dictionary with line-order errors by changing the standardized ordering. The system can also create a separate standardized ordering to reflect the differences while maintaining a standardized default ordering. This can be associated with a specific model or firmware.For errors within line specifications, the system can add the error as a valid entry for one or more commands applicable to the line specification. The system can distinguish between detected errors that reflect new parameters or functionality for a switch and detected errors that can be resolved by one or more resolutions described below. The system can refrain from updating the term replacement database if the detected error can be resolved, or it can refrain from updating the database if the error reflects a false negative already stored in the term replacement database for another model.For example, if a particular row order is found to be a false negative, as evidenced by similar row orders stored in the term replacement database, the system can simply note that the row order may apply to different models and otherwise refrain from updating a standardized row order if it applies to a new feature or parameter.

[0056] Once the term replacement database is updated, the system can determine if a similar "bug" appears in subsequent shared configuration files. For example, a plurality of network switches may correspond to a different plurality of configuration files. These configuration files can be validated as a second shared configuration file. When validating the multiple network switches, the system can determine that the second shared configuration file corresponds to the new feature or parameter added to the term replacement database from the first shared configuration file. The plurality of network switches would then be validated more quickly because the system would not detect any bugs associated with the second shared configuration file that would otherwise delay the validation process.The system may still fail to detect errors when subsequent network switches are validated with a similar common configuration file.

[0057] If a system detects a line specification or line ordering error, various solutions can be applied. In one embodiment, the system can prompt a user to manually correct the error. This can be done through a prompt that gives the user the choice of manually correcting the error, applying an automatic solution, or determining that no error exists in the shared configuration file. The user can edit the shared configuration file to correct any errors, and subsequent validation would not prompt for the error correction. The suspected errors can be marked in the line specifications, allowing the user to locate the errors. For example, if a line specification error occurs, the line specification can be marked to indicate an error within the line specification.When a line-ordering error occurs, the system can mark the line specification that requires a declaration. The system can also search the line specifications to see if a line specification matches a required declaration, but in the wrong place. This line can also be marked, allowing the user to locate the declaration and move the line specification accordingly. The system can also give the user the opportunity to alert the system to errors, even if the system does not detect any errors. The system can prompt the user to note these errors, or it can prompt the user to confirm that no errors exist.

[0058] Once a user attempts to fix an error, the system can determine whether the user's edits fix the error. This can be determined by comparing the edits to the term replacement dictionary to find similarities between the edits, the standardized arrangement, and / or any new features or parameters in the term replacement dictionary. For example, if an edit was made and the edited row arrangement now matches the term replacement dictionary, the system can determine that the user's edits fixed the error. As another example, if an edit appears similar to another new feature or parameter stored in the replacement dictionary, the system can determine that the user's edit fixed the error.If the new feature or parameter is similar to the edits, but there is a difference between models or firmware, the system can still determine that the user's edits fixed the error and save the new feature or parameter as applicable to the current model or firmware.

[0059] If the error is not resolved after comparing the term substitution dictionary with the shared configuration file, the system may refrain from updating the term substitution database or roll back the line specification to the previous iteration. The system may notify the user that the error has not been resolved and display the above-mentioned error correction prompt. The system may submit the shared configuration file after a predetermined number of attempts to resolve the error. Once the shared configuration file reaches the central configuration center, other users can resolve the detected errors.

[0060] In another embodiment, the system may apply automatic resolution to correct the errors. For example, if the system detects a line-order error, it may locate the line specification that matches the declaration described above. The system may automatically move that line specification to the correct location. In the case of a line-spec error, the system may replace the inappropriate parameter with a default value or the value closest to the one specified in the error line. If the system is unable to correct the error automatically, it may prompt the user as described above. The system may also send the shared configuration file to the central configuration center so that other users can correct the error.

[0061] Fig.5 shows a block diagram of an exemplary computer system 500 in which various embodiments described herein may be implemented. Computer system 500 includes a bus 502 or other communication mechanism for conveying information, and one or more hardware processors 504 connected to bus 502 for processing information. Hardware processor(s) 504 may, for example, be one or more general-purpose microprocessors.

[0062] Computer system 500 also includes main memory 506, such as random access memory (RAM), a cache, and / or other dynamic storage devices, connected to bus 502 for storing information and instructions to be executed by processor 504. Main memory 506 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 504. When such instructions are stored in storage media accessible to processor 504, computer system 500 becomes a special-purpose machine adapted to perform the operations specified in the instructions.

[0063] Computer system 500 also includes a read-only memory (ROM) 508 or other static storage device connected to bus 502 to store static information and instructions for processor 504. A storage device 510, such as a magnetic disk, an optical disk, or a USB flash drive, etc., is provided and connected to bus 502 to store information and instructions.

[0064] Computer system 500 may be connected to a display 512, such as a liquid crystal display (LCD) (or a touchscreen), via bus 502 to display information to a computer user. An input device 514, including alphanumeric and other keys, is coupled to bus 502 to communicate information and command selections to processor 504. Another type of user input device is cursor control 516, such as a mouse, trackball, or cursor direction keys, for communicating direction information and command selections to processor 504 and controlling cursor movement on display 512. In some embodiments, the same direction information and command selections as with cursor control may be implemented via receiving touches on a touchscreen without a cursor.

[0065] Computer system 500 may include a user interface module for implementing a graphical user interface, which may be stored on a mass storage device as executable software code executed by the computing device(s). This and other modules may include, for example, components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.

[0066] In general, the word "component," "engine," "system," "database," "data store," and the like, as used herein, may refer to logic embodied in hardware or firmware, or to a collection of software instructions that may have entry and exit points and may be written in a programming language such as Java, C, or C++. A software component may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language such as BASIC, Perl, or Python. It is understood that software components may be callable by other components or by themselves, and / or may be called in response to detected events or interrupts. Software components configured to run on computing devices may be embodied on a computer-readable medium, such as a hard disk.a compact disc, digital video disc, flash drive, magnetic disk, or other tangible medium, or as a digital download (and may be originally stored in a compressed or installable format that must be installed, decompressed, or decrypted before execution). Such software code may be stored partially or entirely in a memory of the executing computing device for execution by the computing device. Software instructions may be embedded in firmware, such as an EPROM. In addition, the hardware components may consist of interconnected logic units, such as gates and flip-flops, and / or programmable units, such as programmable gate arrays or processors.

[0067] Computer system 500 may implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic that, in combination with the computer system, makes or programs computer system 500 into a special-purpose machine. According to one embodiment, the techniques described herein are performed by computer system 500 in response to processor(s) 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory 506 from another storage medium, such as storage device 510. Execution of the instruction sequences contained in main memory 506 causes processor(s) 504 to perform the process steps described herein.In alternative embodiments, hard-wired circuits may be used instead of or in combination with software instructions.

[0068] The term "non-transitory media" and similar terms as used herein refer to any media that stores data and / or instructions that cause a machine to operate in a particular manner. Such non-transitory media may include non-volatile media and / or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Common forms of non-transitory media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or other magnetic data storage media, CD-ROMs, other optical data storage media, physical media with hole patterns, RAM, PROM and EPROM, FLASH EPROM, NVRAM, other memory chips or cartridges, and networked versions thereof.

[0069] Non-transitory media are distinct from transmission media but can be used in conjunction with them. Transmission media are involved in the transfer of information between non-transitory media. Examples of transmission media include coaxial, copper, and fiber optic cables, including the wires that make up bus 502. Transmission media can also take the form of sound or light waves, such as those generated in radio and infrared data communications.

[0070] Computer system 500 also includes a communications interface 517 connected to bus 502. Network interface 517 establishes a two-way data communications connection to one or more network connections connected to one or more local area networks. For example, communications interface 517 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem for establishing a data communications connection to a corresponding type of telephone line. As another example, network interface 517 may be a LAN card for establishing a data communications connection to a compatible LAN (or a WAN component for communicating with a WAN). Wireless connections may also be implemented.In each of these implementations, the network interface 517 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams containing various types of information.

[0071] A network connection typically enables data communication across one or more networks to other data devices. For example, a network connection may connect across a local area network to a host computer or to data devices of an Internet service provider (ISP). The ISP, in turn, provides data communication services across the worldwide packet data communication network, now commonly referred to as the "Internet." Both the local area network and the Internet use electrical, electromagnetic, or optical signals that carry digital data streams. The signals across the various networks and the signals on the network connection and across the communication interface 517 that carry the digital data to and from the computer system 500 are examples of transmission media.

[0072] Computer system 500 can send messages and receive data, including program code, over the network(s), the network connection, and the communications interface 517. In the Internet example, a server could transmit requested code for an application program over the Internet, the ISP, the local network, and the communications interface 517.

[0073] The received code may be executed by processor 504 upon receipt and / or stored in storage device 510 or other non-volatile memory for later execution.

[0074] Each of the processes, methods, and algorithms described in the preceding sections may be embodied in, and fully or partially automated by, code components executed by one or more computer systems or computer processors comprising computer hardware. The one or more computer systems or computer processors may also operate to support the performance of the corresponding operations in a cloud computing environment or as software as a service (SaaS). The processes and algorithms may be partially or fully implemented in application-specific circuitry. The various features and methods described above may be used independently of one another or combined in various ways.Various combinations and subcombinations are intended to be within the scope of this disclosure, and certain method or process blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular order, and the associated blocks or states may be performed in other suitable orders, in parallel, or otherwise. Blocks or states may be added to or removed from the disclosed examples. The execution of certain operations or processes may be distributed among computer systems or computer processors located not only on a single machine, but distributed across a number of machines.

[0075] As used herein, a circuit may be implemented in any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms may be implemented to form a circuit. In implementation, the various circuits described herein may be implemented as discrete circuits, or the described functions and features may be distributed, in part or in whole, among one or more circuits.Although various features or functional elements are individually described or claimed as separate circuits, these features and functions may be shared by one or more common circuits, and such description is not intended to assume or imply that separate circuits are required to implement these features or functions. If a circuit is implemented in whole or in part with software, that software may be implemented to operate with a computer or processing system capable of performing the functionality described with respect to it, such as computer system 500.

[0076] As used herein, the term "or" can be interpreted both inclusively and exclusively. Furthermore, descriptions of resources, acts, or structures in the singular should not be construed to exclude the plural. Conditional terms such as "may," "could," "might," or "may," unless expressly stated otherwise or understood by context, are generally intended to convey that certain embodiments include certain features, elements, and / or steps, while other embodiments do not.

[0077] Unless expressly stated otherwise, the terms and expressions used in this document, as well as variations thereof, are not to be interpreted as limiting, but as open-ended. Adjectives such as "conventional," "traditional," "normal," "standard," "known," and terms of similar import are not to be construed as limiting the subject matter described to a particular period of time or to a subject matter available at a particular time, but should be understood to include conventional, traditional, normal, or standard technologies that may be available or known now or at any time in the future.The presence of broader words and phrases such as “one or more,” “at least,” “but not limited to,” or similar phrases in some cases should not be construed as meaning that the narrower case is intended or required in the absence of such broader phrases.

Claims

[1] A procedure for resolving configuration errors, comprising: aggregating a plurality of configuration files, by a system comprising a hardware processor, to generate a first common configuration file; determining, by the system, a line specification error or a line ordering error in the first common configuration file, wherein the line specification error is an error associated with a line specification; Comparison of the first common configuration file with a term replacement database by the system; Updating the term replacement database with the determined line specification error or line ordering error by the system; updating, by the system, a second common configuration file corresponding to a plurality of switches; Validation of the second common configuration file by the system using the updated term replacement database; and Causing the installation of the second common configuration file on the plurality of switches as part of the activation of the plurality of switches. [2] The method of claim 1, wherein the plurality of configuration files is a first plurality of configuration files, and the method further comprises: Identifying an additional line specification error or an additional line ordering error within a second plurality of configuration files, wherein the additional line specification error or the additional line ordering error is a line specification or a line ordering error within the first plurality of configuration files; and Reclassifying the additional line specification error or the additional line ordering error within the second plurality of configuration files. [3] The method of claim 2, further comprising updating a user interface to display the additional line specification error or the additional line ordering error within the second plurality of configuration files. [4] The method of claim 1, further comprising updating a user interface to display the line specification error or the line ordering error based on an error type. [5] The method of claim 1, wherein creating the first common configuration file comprises replacing a line specification in one of the plurality of configuration files with a standardized line specification representing a plurality of line specifications. [6] The method of claim 1, further comprising reordering line specifications in the first common configuration file to correct the line ordering error. [7] The method of claim 1, wherein the line specification error is based on a parameter, command, or prerequisite of the line specification being incorrect. [8] The method of claim 1, further comprising: Receiving user input to correct the line specification error or the line ordering error and Updating the term replacement database with user input. [9] The method of claim 8, further comprising: Determining that the user input does not correct the line specification error or the line ordering error; and Removing user input from the term replacement database. [10] The method of claim 1, wherein the line ordering error is an error in an order of line specifications in the first common configuration file. [11] A system comprising: a hardware processor and a non-transitory, machine-readable storage medium that stores instructions executable on the hardware processor to: Aggregating a plurality of configuration files to generate a first common configuration file; Determining a line specification error or a line ordering error in the first common configuration file, wherein the line specification error or the line ordering error is an error associated with a line specification; Comparison of the first common configuration file with a term replacement database; Updating the term replacement database with the specific line specification error or line ordering error; Updating a second common configuration file corresponding to a plurality of switches; Validation of the second common configuration file using the updated term replacement database and Causing the installation of the second common configuration file on the plurality of switches as part of the activation of the plurality of switches. [12] The system of claim 11, further comprising firmware, wherein the firmware corresponds to a configuration file of the plurality of configuration files. [13] The system of claim 11, wherein the line specification error is based on a parameter, command, or prerequisite of the line specification being incorrect. [14] The system of claim 11, wherein the row ordering error is an error in an order of row specifications. [15] A non-transitory computer-readable storage medium that stores instructions that, when executed, cause a system to: aggregating a plurality of configuration files to generate a first common configuration file; Determining a line specification error or a line ordering error in the first common configuration file, wherein the line specification error or the line ordering error is associated with a line specification; Comparing the first common configuration file with a term replacement database; Updating the term replacement database with the specific line specification error or line ordering error; Updating a second common configuration file corresponding to a plurality of switches; Validation of the second common configuration file using the updated term replacement database and Causing the installation of the second common configuration file on the plurality of switches as part of the activation of the plurality of switches. [16] The non-transitory computer-readable storage medium of claim 15, wherein the plurality of configuration files is a first plurality of configuration files, and wherein the instructions, when executed, cause the system to: Identifying an additional line specification error or an additional line ordering error within a second plurality of configuration files, wherein the additional line specification error or the additional line ordering error is a line specification or a line ordering error within the first plurality of configuration files; and Reclassifying the additional line specification error or the additional line ordering error within the second plurality of configuration files. [17] The non-transitory computer-readable storage medium of claim 15, wherein creating the first common configuration file comprises replacing a line specification in a configuration file with a standardized line specification representing a plurality of line specifications. [18] The non-transitory computer-readable storage medium of claim 15, wherein the instructions, when executed, cause the system to reorder row specifications to correct the row ordering error. [19] The non-transitory computer-readable storage medium of claim 15, wherein the line specification error is based on a parameter, command, or prerequisite of the line specification being incorrect. [20] The non-transitory computer-readable storage medium of claim 15, wherein the row ordering error is an error in an order of row specifications.

Citation Information

Patent Citations

  • Configuration management method and system

    US20030149756A1

  • Self-tuning networks using distributed analytics

    US20210044498A1

  • System and method for dynamic hierarchical data parsing

    US8990148B1