This disclosure relates generally to network management. More specifically, it relates to system and method for creating and executing network applications that can automate network tasks such as documenting a network design and troubleshooting certain types of network problems.
In a traditional network management method, a network professional usually runs a set of standard commands and processes manually for each network device. The commands and parameters associated therewith, however, are difficult to remember and cumbersome to use. In addition, repeated data retrieval has to be conducted for each individual network device in the network. For a large network containing many devices, pinpointing a network issue to a small number of devices is difficult to accomplish.
Moreover, network devices in the same network may not be of the same type. For example, devices may be from different vendors, operated under different operation systems, and equipped with different command sets. Therefore, a command suitable for one device may not be executable by another device in the same network.
Because it is difficult to efficiently and effectively retrieve information from different network devices, it is also difficult to combine, compare, and/or analyze data from these devices. As a result, some network management tasks, such as neighbor check, path analysis, etc. are difficult to accomplish in an efficient manner.
To overcome or mitigate the problems set forth above, many types of network management tools have been developed to automate network management tasks. However, most of these tools are only applicable to certain types of network tasks and difficult to customize. Because of this inflexibility, network professionals may still have to manually tackle various network management problems. For example, some may create script-based applications to improve efficiency of solving particular tasks using script language such as Perl. Creating such an application from the scratch using script language, however, is difficult and time consuming.
The present application discloses a visual network programming method and system to further improve flexibility and customizability in network management automation. For example, the disclosed method and system enable a network professional to create or customize network applications for various types of network management tasks via Graphical User Interface (GUI) with little or no need of writing scripts.
One aspect of the present disclosure involves a method, implemented by a processor device, for providing a visual network programming interface (e.g., a GUI) and platform to enable a user with even limited or no programming experience to create a network application to automate network management tasks associated with a computer network. With the interface, the network application can be defined using an execution flow containing a set of graphical icons. Different graphical icons can be associated with different types of functions, operations, or input/output (I/O) data. For example, graphical icons may include one or more of device queues, device selectors, commands, tables, table operations, or outputs. Various operations associated with the graphical icons will be discussed in greater detail in other passages of this disclosure. Different types of network tasks can be automated by using different types of execution flows. For example, a network application can be defined to include a device queue as input. The device queue may include a set of network devices and/or a set of neighboring network devices. Information of the network devices and/or their neighboring network devices in the device queue can be automatically obtained when the network application is executed. The device queue can also include a network traffic path. In this case, information of network devices and interfaces along the network traffic path can be automatically discovered and obtained when the network application is executed. A set of network commands can be defined to be executed by each network device in the device queue. Different sets of commands can be customized for different types of network devices. When the network application is executed, the network application can provide mechanism to determine which set of commands is to be used according to the type of network device for each network device in the device queue. A suitable set of network commands may then be used to retrieve information from the corresponding network device. A parser can be defined to parse the output or result of each command. The parsed data may be stored in a tabular format and used in various output operations. For example, the parsed data may be used to display information on a map, compare data against a threshold value, create an alert, and/or export data to a file. After a network application is defined, the network application can be saved and/or complied to generate an executable network application.
Another aspect of the present disclosure involves a system for providing a visual network programming interface and platform to enable a user with even limited or no programming experience to create a network application to automate network management tasks associated with a computer network. The system may include a memory device storing computer codes for achieving network management task automation. The system may also include a processor device operatively coupled to the memory device. The computer codes stored on the memory device, when executed by the processor device, may cause the processor device to perform various operations, including receiving input from a user to define the network application and generating executable codes of the network application based on the definition. With this system, the application can be defined using an execution flow containing a set of graphical icons. Different graphical icons can be associated with different types of functions, operations, or I/O data. For example, graphical icons may include one or more of device queues, device selectors, commands, tables, table operations, or outputs. Different types of network tasks can be automated by using different types of execution flows. For example, a network application can be defined to include a device queue as input. The device queue may include a set of network devices and/or a set of neighboring network devices. Information of the network devices and/or their neighboring network devices in the device queue can be automatically obtained when the network application is executed. The device queue can also include a network traffic path. In this case, information of network devices and interfaces along the network traffic path can be automatically discovered and obtained when the network application is executed. A set of network commands can be defined to be executed by each network device in the device queue. Different sets of commands can be customized for different types of network devices. When the network application is executed, the system can determine which set of commands is to be used according to the type of network device for each network device in the device queue. A suitable set of network commands may then be used to retrieve information from the corresponding network device. A parser can be defined to parse the output or result of each command. The parsed data may be stored in a tabular format and used in various output operations. For example, the parsed data may be used to display information on a map, compare data against a threshold value, create an alert, and/or export data to a file. After a network application is defined, the network application can be saved and/or complied to generate an executable network application.
A further aspect of the present disclosure involves a method, implemented by a processor device, for providing a visual network programming platform. The method may include providing a GUI for programming a network application to automate network management tasks associated with a computer network. The method may also include obtaining, through the GUI, a device queue including a plurality of network devices in the computer network. The method may further include identifying topological information associated with the plurality of network devices in the device queue. For each network device in the device queue, the method may include providing a customized network command executable by the network device based on a type of the network device. The method may also include receiving, through the GUI, an execution flow including one or more graphical icons. Each of the one or ore graphical icons may be associated with one or a set of corresponding functions or operations. The method may also include associating the execution flow with at least one of the network devices in the device queue based on the topological information and the corresponding customized network command. The method may also include generating the network application based on the device queue and the execution flow. The network application may include instructions for executing the corresponding customized command and performing the execution flow for the at least one of the network devices in the device queue.
A further aspect of the present disclosure involves a system for providing visual network programming. The system may include a memory device storing computer codes for automating network management tasks associated with a computer network. The system may also include a processor device operatively coupled to the memory device. The computer codes stored on the memory device, when executed by the processor device, may cause the processor device to perform various operations. The operations may include providing a GUI and obtaining, through the GUI, a device queue including a plurality of network devices in the computer network. The operations may also include identifying topological information associated with the plurality of network devices in the device queue. For each network device in the device queue, the operations may include providing a customized network command executable by the network device based on a type of the network device. The operations may also include receiving, through the GUI, an execution flow including one or more graphical icons. Each of the one or more graphical icons may be associated with one or a set of corresponding functions or operations. The operations may also include associating the execution flow with at least one of the network devices in the device queue based on the topological information and the corresponding customized network command. The operations may also include generating a network application based on the device queue and the execution flow. The network application may include instructions for executing the corresponding customized command and performing the execution flow for the at least one of the network devices in the device queue.
A further aspect of the present disclosure involves a method, implemented by a processor device, for executing a network application to automate network management tasks associated with a computer network. The method may include retrieving a device queue including a plurality of network devices of the computer network. The method may also include extracting topological information associated with the plurality of network devices in the device queue. For each network device in the device queue, the method may include executing a network command customized for that network device based on a type of the network device and performing an execution flow associated with the network device based on the network command and the topological information. Performing the execution flow ay include performing data analysis on output resulting from the execution of the network command according to an analysis flow. The analysis flow may be customized or defined by a user.
A further aspect of the present disclosure involves a system for executing a network application. The system may include a memory device storing computer codes for automating network management tasks associated with a computer network. The system may also include a processor device operatively coupled to the memory device. The computer codes stored on the memory device, when executed by the processor device, may cause the processor device to perform various operations. The operations may include retrieving a device queue including a plurality of network devices of the computer network. The operations may also include extracting topological information associated with the plurality of network devices in the device queue. For each network device in the device queue, the operations may include executing a network command customized for that network device based on a type of the network device and performing an execution flow associated with the network device based on the network command and the topological information. Performing the execution flow may include performing data analysis on output resulting from the execution of the network command according to an analysis flow. The analysis flow may be customized or defined by a user.
Additional objects and advantages of the present disclosure will be set forth in part in the following detailed description, and in part will be obvious from the description, or may be learned by practice of the present disclosure. The objects and advantages of the present disclosure will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
It is to be understood that the foregoing general description and the following detailed description are exemplary and explanatory only, and are not restrictive of the invention, as claimed.
The accompanying drawings, which constitute a part of this specification, illustrate several embodiments and, together with the description, serve to explain the disclosed principles.
Reference will now be made in detail to exemplary embodiments of the invention, examples of which are illustrated in the accompanying drawings. When appropriate, the same reference numbers are used throughout the drawings to refer to the same or like parts.
Embodiments consistent with the present disclosure involve system and method for automating network management tasks. Exemplary network management tasks may include network neighbor check (e.g., interface speed/duplex matching), data traffic path analysis (e.g., quality of service check along the path), inventory report, network performance monitoring, network troubleshooting, network mapping, or other tasks. Automating a network management task may refer to a process in which one or more steps of the network management task are automatically conducted by at least one processor device, such as a CPU of a network management station. A network management station may include a dedicated hardware computer device specifically designed for management of computer networks. Alternatively or additionally, a network management station may include a general purpose computer equipped with network management software. Automating network management tasks may be accomplished using one or more network management applications (also referred to as network applications), which may include software instructions (also referred to as instructions, software codes, or codes) to be executed by one or more processor devices (e.g., a CPU of a network management station) to automatically perform one or more steps of a network management task. For convenience of description, a network management application is also referred to herein as a Qapp, although such an application can have other names.
Qapp 130 may receive various input information. For example, Qapp 130 may receive device related information 104, such as information of a single device, a device group, or a network data traffic path (also referred to as traffic path, application path, or path) consisting of a plurality of devices. As used herein, a device refers to a network device that is part of a computer network, such as a switch, a router, a hub, a bridge, a brouter, a gateway, etc. Device related information 104 may be preset and loaded into Qapp 130, input by a user, automatically generated through a discovery process, dynamically determined based on a network map on which Qapp 130 is running, or through other suitable means. Qapp 130 may also receive table data 106, including any data in a tabular format. For example, table data 106 may be in the form of a CSV file, a TXT file, an XLS file, or other types of digital files having a tabular format. Table data 106 may be preset and loaded into Qapp 130, imported from a digital file into Qapp 130, input by a user, generated by another Qapp, or through other suitable means. Device related information 104 and/or table data 106 may also be modified during runtime of Qapp 130.
Qapp 130 may interact with a network 150 to retrieve information using various network commands 140. For example, network 150 may include a plurality of network devices, which may be at different network levels (e.g., Level 2, Level 3, etc.), made by different vendors (e.g., Cisco, Juniper, etc.), and operate under different software. Qapp 130 may retrieve information from the network devices using network commands customized to these network devices. Different sets of commands may be executed for different types of network devices. The commands may include CLI commands, SNMP commands, or API calls. In this way, Qapp 130 may act as a universal network management tool applicable to any network regardless of the underlying structure and composition of the network. The retrieved information may be analyzed and processed by one or more operation logics of Qapp 130 to generate desirable output information.
The output information of Qapp 130 may be in various forms and be used in many ways. For example,
Qapp 130 may include one or more functional components. For example,
Qapp 130 may include an execution flow 220. Execution flow 220 may include a series of operations to process input data and generate output data. Execution flow 220 may include control blocks such as If and Loop blocks, dialogs, and canvases. The term canvas, as used herein, refers to an execution unit capable of performing a set of operations to its input to generate an output. In other words, each canvas may perform a specific function or a set of functions.
As described above, a canvas is an execution unit to perform a specific function or a set of functions. For example, a common type of canvas may be used to retrieve data from one or more network devices and perform data analysis. A canvas may achieve its functionality using a flow of operations similar to execution flow 300. As used herein, the term execution flow may refer to any flow of execution or operation that processes input data and generate output data. In the context of a Qapp, an execution flow may include a series of canvases and other types of nodes. In the context of a canvas, an execution flow may include a series of functional blocks, usually represented as a flow of graphical icons, that collectively perform the specific function or set of functions associated with the canvas.
Table 1 shows an exemplary device queue that includes a single device R1 (e.g., “this” device) and its interfaces (s0/0, s0/1, e0/0, and e0/1). Table 2 shows another exemplary device queue that includes neighboring device pairs. For example, the header of Table 2 indicates “this” device, the interface of “this” device, “neighbor” device, and the interface of the “neighbor” device. The first row of Table 2 indicates that device R1 are R2 are neighboring devices and they are connected to each other through their corresponding interfaces s0/0 (R1's interface) and s0/0 (R2's interface). The other rows of Table 2 indicate similar information. The neighboring devices may be L1, L2, or L3 neighbors. In some embodiments, a device pair may not be neighbors and the pair may be referred to as “this” device and “other” device. Table 3 shows an exemplary device queue that includes a device group. The device group may include a plurality of devices (R1, R2, R3, . . . ) and their interfaces (s0/0, s0/1 e0/0, etc.). Table 4 shows another exemplary device queue that includes only the devices without their interfaces.
Device queue 410 may be used to control a looping operation of canvas 400. For example, each row in device queue 410 may be used as an input to initiate a series of operations defined by other components of canvas 400. After the operations based on one row finishes, the next row may be used to initiate another round of operations until all rows in device queue 410 are traversed.
In some embodiments, device queue 410 may be obtained by receiving information provided by a user. For example, the user may input device queue information through GUI 120. In some embodiments, device queue 410 may be obtained by importing information from a digital file. For example, device queue information may be stored in a CSV file and may be imported, e.g., through GUI 120, into canvas 400. Device queue 410 can be dynamically modified. For example, a canvas can be created to discover a network. An initial device queue may contain information of a seed network device, such as its P address or other types of identifier. System 100 may then perform an auto discovery process to automatically discover neighboring network devices of the seed network device. The neighboring network devices may be physically or logically connected to the seed network device. For example, the neighboring network devices may be Level 3 neighbors of the seed device. In another example, the neighboring network devices may be Level 2 neighbors of the seed device. The auto discovery process may discover the first level neighbors of the seed device, where the discovered neighbors are immediately connected to (logically or physically) the seed device. The auto discovery process may further discover additional levels of the neighbors, e.g., the neighbors of the first level neighbors. In this way, any portion or the entirety of the network connected to the seed device may be discovered. The collection of the discovered network devices, or any subset thereof, may be used as information of device queue 410.
Device queue 410 may contain topological information associated with the devices in the device queue. For example, as shown in Table 2 above, device queue 410 may include two columns, containing information of a device and its neighbors. In some embodiments, one device in the device queue may be identified as “this” device. “This” device's neighbor may be identified as “neighbor” or “nbr” device. Connected interfaces or other types of information can also be included in device queue 410 as additional columns. In some embodiments, devices in device queue 410 may form a network traffic path. In this case, once a device is identified as “this” device, the device immediately prior to “this” device in the path may be identified as “previous” or “prey” device, while the device immediately following “this” device in the path may be identified as “next” device. While these exemplary topological identifiers are intuitive, other identifiers may also be used to indicate the connection information between a pair of devices. In some embodiments, when a Qapp is executed, neighboring devices or devices along an application path can be automatically discovered and information of the discovered devices can be automatically ported into device queue 410.
Referring to
Once the proper command is selected, data acquisition may be performed using the command to retrieve information from the device. In some embodiments, information may be retrieved using a sample-driven approach, in which the execution result of the command is analyzed and parsed based on customizable or user definable variables. The retrieved information may be processed by data operation block 440.
Data operation block 440 may include operation logics for data manipulation. For example, as the execution flow defined by canvas 400 loops for each row of device queue 410, operation result of each individual row (e.g., information retrieved from the underlying device or interface corresponding to the row) may be saved individually after each loop. Each individual operation result may be processed and/or analyzed. After all rows are traversed, operation results individually saved, processed, or analyzed may be combined, compared, or further processed or analyzed together.
Data processed by data operation block 440 may be output in various forms. For example, the data may be used by alert block 452 to trigger an alert, by mapping block 454 to generate a map or map components, by device queue modification block 456 to modify device queue 410, or by topology modification block 458 to modify the topological information. The data may also be used as an input to another canvas, or be exported as digital files or reports.
The specification has described network management systems and methods. The illustrated steps are set out to explain the exemplary embodiments shown, and it should be anticipated that ongoing technological development will change the manner in which particular functions are performed. Thus, these examples are presented herein for purposes of illustration, and not limitation. For example, steps or processes disclosed herein are not limited to being performed in the order described, but may be performed in any order, and some steps may be omitted, consistent with disclosed embodiments. Further, the boundaries of the functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternative boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Alternatives (including equivalents, extensions, variations, deviations, etc., of those described herein) will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. Such alternatives fall within the scope and spirit of the disclosed embodiments.
While examples and features of disclosed principles are described herein, modifications, adaptations, and other implementations are possible without departing from the spirit and scope of the disclosed embodiments. Also, the words “comprising,” “having,” “containing,” and “including,” and other similar forms are intended to be equivalent in meaning and be open ended in that an item or items following any one of these words is not meant to be an exhaustive listing of such item or items, or meant to be limited to only the listed item or items. It must also be noted that as used herein and in the appended claims, the singular forms “a,” “an,” and “the” include plural references unless the context clearly dictates otherwise.
Furthermore, one or more computer-readable storage media may be utilized in implementing embodiments consistent with the present disclosure. A computer-readable storage medium refers to any type of physical memory on which information or data readable by a processor ay be stored. Thus, a computer-readable storage medium may store computer code instructions for execution by one or more processors, including computer code instructions for causing the processor(s) to perform steps or stages consistent with the embodiments described herein. The term “computer-readable medium” should be understood to include tangible items and exclude carrier waves and transient signals, i.e., be non-transitory. Examples include RAM, ROM, volatile memory, nonvolatile memory, hard drives, CD ROMs, DVDs, flash drives, disks, and any other known physical storage media.
It is intended that the disclosure and examples be considered as exemplary only, with a true scope and spirit of disclosed embodiments being indicated by the following claims.
The present application claims the benefit of priority to U.S. Provisional Application No. 62/169,995, filed Jun. 2, 2015; 62/171,795, filed Jun. 5, 2015; and 62/171,802, filed Jun. 5, 2015. The entire contents of each of these applications are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62169995 | Jun 2015 | US | |
62171795 | Jun 2015 | US | |
62171802 | Jun 2015 | US |