In the modern computer age, businesses rely on an electronic network to function properly. Networks are getting more and more complex but network engineers still depend on the traditional methods and tools, such as the text-based command-line interface (CLI), to manage their networks. To troubleshoot a network problem or to simply verify if a network functions, a network engineer still needs to manually log in to each of the network devices and issue a CLI command to gather the data, manually parse and analyze each of the output for key data, and manually eliminate each of the possible problem causes. With text-based CLI as the primary method for troubleshooting a network problem, a network professional usually needs to repetitively execute the same CLI commands and decode key data from the command output many times for many network devices. This process is error-prone, strenuous and time consuming. For each of the enterprises across the vast network world, this process may be repeated again and again, without any benefit from learning past lessons or from other people's experiences.
To further complicate this already tangled process, many vendors and models of network hardware devices that exist in today's network, are providing different sets of CLI commands which output many different formats of data information. It is difficult, if not impossible, for a network engineer to simplify this process by writing a simple executable program to retrieve, parse and analyze the output data of each of these different devices. It is even more challenging to require a network engineer to master a programming language in a short time, and apply such skills in a reliable manner. There is a need to find a universal solution to be able to parse and analyze data outputs of different devices from various vendors.
The system and method may be better understood with reference to the following drawings and description. Non-limiting and non-exhaustive embodiments are described with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. In the drawings, like referenced numerals designate corresponding parts throughout the different views.
By way of introduction, the disclosed embodiments relate to systems and methods for network management automation for multiple network devices from different vendors. Network devices from different vendors may include different variables, but a mapping from those different variables is used for providing an automation task that will function similarly across the different variables for devices from different vendors. As described below, the network management automation may be through the NetBrain QAPP (“Qapp”) system. The Qapp system is further described with respect to U.S. Pat. Nos. 9,374,278, 9,438,481, U.S. Pat. Pub. No. 2015/0156077, U.S. Pat. Pub. No. 2016/0359687, and U.S. Pat. Pub. No. 2016/0359688, the entire disclosure of each of which is hereby incorporated by reference. With a variable mapping, the Qapp system can run network automation tasks on devices from different vendors.
The devices 102, 103 may be any computing or network device, which belong to the network 104, such as a data center or enterprise network. Examples of devices 102, 103 include, but are not limited to, routers, access points, databases, printers, mobile devices, personal computers, personal digital assistant (“PDA”), cellular phones, tablets, other electronic devices, or any network devices. The devices 102, 103 may be managed by the network manager 112.
The network manager 112 may be a computing device for monitoring or managing devices in a network, including performing automation tasks for the management, such as with a Qapp. In other embodiments, the network manager 112 may be referred to as just a Qapp when performing a Qapp network management task. Alternatively, the network manager 112 may be referred to as a variable mapper when performing the variable mapping and for the operation of a Qapp using the variable mapping. The network manager 112 is further illustrated in
The user interface 114 may be a user input device or a display. The user interface 114 may include a keyboard, keypad or a cursor control device, such as a mouse, or a joystick, touch screen display, remote control or any other device operative to allow a user or administrator to interact with the network manager 112. The user interface 114 may communicate with any of the network devices (e.g. 102, 103), and/or the network manager 112. The user interface 114 may include a user interface configured to allow a user and/or an administrator to interact with any of the components of the network manager 112. The user interface 114 may include a display coupled with the processor 120 and configured to display an output from the processor 120. The display (not shown) may be a liquid crystal display (LCD), an organic light emitting diode (OLED), a flat panel display, a solid state display, a cathode ray tube (CRT), a projector, a printer or other now known or later developed display device for outputting determined information. The display may act as an interface for the user to see the functioning of the processor 120, or as an interface with the software 116 for providing data.
The processor 120 in the network manager 112 may include a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP) or other type of processing device. The processor 120 may be a component in any one of a variety of systems. For example, the processor 120 may be part of a standard personal computer or a workstation. The processor 120 may be one or more general processors, digital signal processors, application specific integrated circuits, field programmable gate arrays, servers, networks, digital circuits, analog circuits, combinations thereof, or other now known or later developed devices for analyzing and processing data. The processor 120 may operate in conjunction with a software program (i.e. software 116), such as code generated manually (i.e., programmed). The software 116 may include the Qapp system and tasks that are performed as part of the management of the network devices. Specifically, the variable mapping may be implemented as part of a Qapp stored in software, such as the software 116.
The processor 120 may be coupled with the memory 118, or the memory 118 may be a separate component. The software 116 may be stored in the memory 118. The memory 118 may include, but is not limited to, computer readable storage media such as various types of volatile and non-volatile storage media, including random access memory, read-only memory, programmable read-only memory, electrically programmable read-only memory, electrically erasable read-only memory, flash memory, magnetic tape or disk, optical media and the like. The memory 118 may include a random access memory for the processor 120. Alternatively, the memory 118 may be separate from the processor 120, such as a cache memory of a processor, the system memory, or other memory. The memory 118 may be an external storage device or database for storing recorded tracking data, or an analysis of the data. Examples include a hard drive, compact disc (“CD”), digital video disc (“DVD”), memory card, memory stick, floppy disc, universal serial bus (“USB”) memory device, or any other device operative to store data. The memory 118 is operable to store instructions executable by the processor 120.
The functions, acts or tasks illustrated in the figures or described herein may be performed by the programmed processor executing the instructions stored in the software 116 or the memory 118. The functions, acts or tasks are independent of the particular type of instruction set, storage media, processor or processing strategy and may be performed by software, hardware, integrated circuits, firm-ware, micro-code and the like, operating alone or in combination. Likewise, processing strategies may include multiprocessing, multitasking, parallel processing and the like. The processor 120 is configured to execute the software 116.
The present disclosure contemplates a computer-readable medium that includes instructions or receives and executes instructions responsive to a propagated signal, so that a device connected to a network can communicate voice, video, audio, images or any other data over a network. The user interface 114 may be used to provide the instructions over the network via a communication port. The communication port may be created in software or may be a physical connection in hardware. The communication port may be configured to connect with a network, external media, display, or any other components in system 100, or combinations thereof. The connection with the network may be a physical connection, such as a wired Ethernet connection or may be established wirelessly as discussed below. Likewise, the connections with other components of the system 100 may be physical connections or may be established wirelessly.
Any of the components in the system 100 may be coupled with one another through a (computer) network, including but not limited to the network 104. For example, the network manager 112 may be coupled with the devices 102, 103 through a network. Accordingly, any of the components in the system 100 may include communication ports configured to connect with a network. The network or networks that may connect any of the components in the system 100 to enable communication of data between the devices may include wired networks, wireless networks, or combinations thereof. The wireless network may be a cellular telephone network, a network operating according to a standardized protocol such as IEEE 802.11, 802.16, 802.20, published by the Institute of Electrical and Electronics Engineers, Inc., or WiMax network. Further, the network(s) may be a public network, such as the Internet, a private network, such as an intranet, or combinations thereof, and may utilize a variety of networking protocols now available or later developed including, but not limited to TCP/IP based networking protocols. The network(s) may include one or more of a local area network (LAN), a wide area network (WAN), a direct connection such as through a Universal Serial Bus (USB) port, and the like, and may include the set of interconnected networks that make up the Internet. The network(s) may include any communication method or employ any form of machine-readable media for communicating information from one device to another.
In
There are many hundreds of vendors of network devices, including but not limited to CISCO, JUNIPER, HEWLETT-PACKARD, CHECKPOINT, etc. Accordingly, a challenge of managing a network of devices involves the disparate operations and commands for devices from each vendor. From the perspective of an end user, a Qapp should work for different vendors' devices. To write a Qapp applicable to all mainstream vendors, however, may require a mapping of like variables from the different vendors. For the same task of obtaining a device's CPU usage, different vendors may have different CLI commands and their own variables for the usage. In that example, a CISCO device may use the CLI command “show process CPU” to retrieve average CPU usage for CISCO devices while an F5 load balancer may use the CLI command “show sys cpu” to retrieve the average CPU usage for an F5 load balancer device. Accordingly, a network task or Qapp to obtain CPU usage must consider the different commands required for every unique device if the single network task or Qapp is to be applied across a network. To create a Qapp to monitor the CPU usage for a network that has both CISCO and F5 devices, one must incorporate two decision branches where each branch has its own parser and analyzer depending on the vendor as illustrated in
The mapping of variables from devices of different vendors may be referred to as a data dictionary. The mapping may include a mapping of both the different commands and the different variables from multiple vendors. Using the variable mapping, a Qapp that is written for a single vendor may be expanded to cover other vendors when using the variable mapping.
Using variable CPU usage measurement as an example, it may be established that the variable $cpu defined in the parser “show process cpu” for CISCO devices and the variable $current_cpu_usage defined in the parser “show system cpu” for F5 Load Balancer may be similar or even have the same meaning. In other words, from the perspective of the end user and a data analysis node (e.g. analyzer 206), these two variables may be either equal or substantially similar. This equivalence can be presented as: “show process cpu” (Cisco).$cpu=“show system cpu”(F5).$current_cpu_usage. This mapping allows for the variables to be replaced depending on the vendor. A variable of a parser of one vendor can be mapped to multiple variables of parsers for multiple other vendors by referring to the variable mapping. In the CPU usage measurement example, if a CHECKPOINT device uses the command “opstat os-f cpu” to retrieve the cpu usage, then that variable can be mapped to the CISCO and F5 variables discussed above. Specifically, a mapping may be created for the CPU usage variables between the three parsers for CISCO, F5 and CHECKPOINT: “show process cpu” (Cisco).$cpu=“show system cpu” (F5).$current_cpu_usage=“opstat os-f cpu”(Checkpoint).$cpu_usage.
A Qapp can be created only for a single vendor, but when using the variable mapping, that Qapp may be run for different vendors. As discussed above, the Qapp may refer to a parser and analyzer (as described with respect to
In another embodiment, the search function may also allow for searching by variable. Accordingly, a search for a particular variable may show a list of the devices/parsers where that variable appears.
Referring back to
In addition to adding a variable mapping, a variable mapping may also be deleted.
Both the parsers and the variable mapping may be exported from the interface. Likewise, the parsers and the variable mapping may be imported into the interface. The export function may be used as a backup mechanism and the import function may be used for troubleshooting to return a network to a previously working state.
A Qapp may be executed against a list of devices, for example, all devices of a network map. If the current device, against which the Qapp is being executed, belongs to the device type originally defined by the Qapp, the Qapp may be executed as defined. Here “device type” may refer to both the vendor and/or the type of device. In one example, a Cisco IOS switch is one type of device while a Cisco ASA Firewall is another. Otherwise, if the device belongs to a different device type, the system executing the Qapp will check whether a mapping exists between this device type and the original device type (i.e. the device type for which the Qapp was written). If such a mapping exists, the system will call the mapped parser to retrieve the mapped variable and execute the corresponding data analysis with the analyzer. If such other mapping does not exist (i.e. there is no mapping for another device type), the system will record information in a table called “missing variable mapping.”
The system and process described above may be encoded in a signal bearing medium, a computer readable medium such as a memory, programmed within a device such as one or more integrated circuits, one or more processors or processed by a controller or a computer. That data may be analyzed in a computer system and used to generate a spectrum. If the methods are performed by software, the software may reside in a memory resident to or interfaced to a storage device, synchronizer, a communication interface, or non-volatile or volatile memory in communication with a transmitter. A circuit or electronic device designed to send data to another location. The memory may include an ordered listing of executable instructions for implementing logical functions. A logical function or any system element described may be implemented through optic circuitry, digital circuitry, through source code, through analog circuitry, through an analog source such as an analog electrical, audio, or video signal or a combination. The software may be embodied in any computer-readable or signal-bearing medium, for use by, or in connection with an instruction executable system, apparatus, or device. Such a system may include a computer-based system, a processor-containing system, or another system that may selectively fetch instructions from an instruction executable system, apparatus, or device that may also execute instructions.
A “computer-readable medium,” “machine readable medium,” “propagated-signal” medium, and/or “signal-bearing medium” may comprise any device that includes stores, communicates, propagates, or transports software for use by or in connection with an instruction executable system, apparatus, or device. The machine-readable medium may selectively be, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. A non-exhaustive list of examples of a machine-readable medium would include: an electrical connection “electronic” having one or more wires, a portable magnetic or optical disk, a volatile memory such as a Random Access Memory “RAM”, a Read-Only Memory “ROM”, an Erasable Programmable Read-Only Memory (EPROM or Flash memory), or an optical fiber. A machine-readable medium may also include a tangible medium upon which software is printed, as the software may be electronically stored as an image or in another format (e.g., through an optical scan), then compiled, and/or interpreted or otherwise processed. The processed medium may then be stored in a computer and/or machine memory.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Additionally, the illustrations are merely representational and may not be drawn to scale. Certain proportions within the illustrations may be exaggerated, while other proportions may be minimized. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
One or more embodiments of the disclosure may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any particular invention or inventive concept. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description.
The phrase “coupled with” is defined to mean directly connected to or indirectly connected through one or more intermediate components. Such intermediate components may include both hardware and software based components. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional, different or fewer components may be provided.
The above disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the true spirit and scope of the present invention. Thus, to the maximum extent allowed by law, the scope of the present invention is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description. While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible within the scope of the invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their equivalents.
This application claims priority to U.S. Provisional App. No. 62/652,566, filed on Apr. 4, 2018, entitled “MULTIPLE NETWORK DEVICE TYPE SUPPORT USING VARIABLE MAPPING IN A NETWORK MANAGEMENT SYSTEM,” the entire disclosure of which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
62652566 | Apr 2018 | US |