In order to effectively manage a network, administrators commonly require detailed metrics with regard to how that network is performing. Performance metrics such as packet loss, latency, bandwidth, utilization, throughput, mean time between failures, load, capacity, and hop count, for example, may each play a role in the effective administration of a modern network. Such performance metrics are not static, however. Indeed, network conditions often change quite dramatically. For example, user traffic may shift significantly according to need, and hardware failures may cause significant routing problems. Accordingly, mechanisms to efficiently and effectively keep administrators apprised of the present condition of the network are highly valued. In addition, the ability to review historical performance data can provide network administrators with valuable tools for ensuring that their network is up to task for future expansion, for diagnosing previous network failures, and other important network administration tasks.
Various embodiments of the present disclosure include methods, apparatus, computer program products embodiment on computer-readable storage mediums, and systems of generating a graphical user interface (GUI) from performance data. In an embodiment, a computer-implemented method comprises receiving performance data comprising first and second performance metrics for a communications network. The first performance metric is associated with a first performance warning threshold, and the second performance metric is associated with a second performance warning threshold. The method further comprises generating a GUI from the performance data. The GUI comprises an x-axis graphically representing a range of available x-values for the first performance metric, and a y-axis graphically representing a range of available y-values for the second performance metric. The y-axis intersects the x-axis at an intersection point (xi, yi). The x- and y-values of the intersection point (xi, yi) correspond to the first and second performance warning thresholds, respectively. The GUI further comprises a graphical icon graphically representing a third performance metric and positioned at point (x1, y1). The x- and y-values of the point (x1, y1) respectively correspond to the x- and y-values of the first and second performance metrics at a given time. The method further comprises outputting the GUI to a display device for display to a user.
In another embodiment, a computing device comprises interface circuitry and processing circuitry. The interface circuitry is configured to exchange signals with a user and a network. The processing circuitry is communicatively coupled to the interface circuitry and is configured to receive performance data comprising first and second performance metrics for a communications network via the interface circuitry. The first performance metric is associated with a first performance warning threshold, and the second performance metric is associated with a second performance warning threshold. The processing circuitry is further configured to generate a graphical user interface (GUI) from the performance data. The GUI comprises an x-axis graphically representing a range of available x-values for the first performance metric, and a y-axis graphically representing a range of available y-values for the second performance metric. The y-axis intersects the x-axis at an intersection point (xi, yi). The x- and y-values of the intersection point (xi, yi) correspond to the first and second performance warning thresholds, respectively. The GUI further comprises a graphical icon graphically representing a third performance metric and positioned at point (x1, y1). The x- and y-values of the point (x1, y1) respectively correspond to the x- and y-values of the first and second performance metrics at a given time. The processing circuitry is further configured to output the GUI, via the interface circuitry, to a display device for display to the user.
In a further embodiment, a non-transitory computer-readable storage medium comprises computer program code that, when executed by processing circuitry of a programmable computing device, configures the programmable computing device to receive performance data comprising first and second performance metrics for a communications network. The first performance metric is associated with a first performance warning threshold, and the second performance metric is associated with a second performance warning threshold. The computer program code, when executed by the processing circuitry of the programmable computing device further causes the programmable computing device to generate a graphical user interface (GUI) from the performance data. The GUI comprises an x-axis graphically representing a range of available x-values for the first performance metric, and a y-axis graphically representing a range of available y-values for the second performance metric. The y-axis intersects the x-axis at an intersection point (xi, yi). The x- and y-values of the intersection point (xi, yi) correspond to the first and second performance warning thresholds, respectively. The GUI further comprises a graphical icon graphically representing a third performance metric and positioned at point (x1, y1). The x- and y-values of the point (x1, y1) respectively correspond to the x- and y-values of the first and second performance metrics at a given time. The computer program code, when executed by the processing circuitry of the programmable computing device further causes the programmable computing device to output the GUI to a display device for display to a user.
The embodiments of the present disclosure are not limited to the above contexts or examples, but may include other features and advantages, such as those described in the following detailed description.
Aspects of the present disclosure are illustrated by way of example and are not limited by the accompanying figures with like references indicating like elements. In general, the use of a reference numeral should be regarded as referring to the depicted subject matter generally, whereas discussion of a specific instance of an illustrated element will append a letter designation thereto (e.g., discussion of a computing device 110, generally, as opposed to discussion of particular instances of computing devices 110a, 110b, 110c).
As will be appreciated by one skilled in the art, aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or contexts including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented entirely as hardware, entirely as software (including firmware, resident software, micro-code, etc.), or combining software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
Any combination of one or more computer readable media may be utilized. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an appropriate optical fiber with a repeater, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB.NET, Python or the like, conventional procedural programming languages, such as the “C” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computing environment or offered as a service such as a Software as a Service (SaaS).
Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatuses (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable instruction execution apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Accordingly, embodiments of the present disclosure generally relate to a computing device that generates a graphical user interface (GUI) for a user from performance data comprising performance metrics for a communications network.
The network 105 may be any network capable of exchanging communication signals with a computing device 110. Examples of the network 105 include (but are not limited to) one or more of the Internet, one or more local area networks, one or more wireless networks, one or more cellular networks, one or more Internet Protocol-based networks, one or more Ethernet networks, one or more optical networks, and one or more circuit switched networks. The network 105 may comprise any number of networking devices including, but not limited to, routers, gateways, switches, hubs, firewalls, and the like (not shown). These networking devices, as well as the computational and networking functions they provide, are resources that are important for operation of the network. These resources may be organized into subnetworks, as will be further discussed below.
The computing devices 110a-c are communicatively connected to the network 105, and may be any computing device that is capable of exchanging signals with the network 105. Examples of a computing device 110 include a personal computer, a laptop computer, a desktop computer, a workstation, a smartphone, a tablet computer, a wearable computer, a server, a server cluster, and a smart appliance.
The computing devices 110a-c receive performance data from the network 105. According to embodiments, a computing device 110 may receive this performance data by communicating with one or more networking devices in the network 105. According to other embodiments, computing devices 110a-c may communicate with each other via the network to share performance data amongst themselves. For example, computing device 110a may poll networking devices in the network via an appropriate protocol (e.g., Simple Network Management Protocol (SNMP)) for the performance data, and distribute the performance data to computing devices 110b, 110c in response to requests therefrom.
Although
Each subnetwork 210 may comprise respective resources of the network 105. For example, the subnetworks 210a-c may each correspond to a geographic location in which the resources therein are located. Alternatively, each of the subnetworks 210a-c may correspond to a department of a business to which the resources therein are allocated. The manner in which a subnetwork 210 is defined for a network 105 may vary depending on the needs of the network 105 or the needs of the users therein.
With reference to the examples illustrated in
The performance data received by a computing device 110 may comprise a plurality of performance metrics.
The performance data may pertain to certain resources within the network 105 at a particular time. For example, the performance data of
For example, a computing device 110 may receive performance data hourly and save this performance data to a database, along with a timestamp reflecting the time to which the performance data pertains. By reviewing the performance data in the database, a user of the computing device 110 may determine how the network 105 has performed, e.g., throughout the day. The extent to which performance data may be reviewed and analyzed will depend on the frequency and duration for which performance data has been retained by the computing device 110. According to various embodiments, performance data may be available to analyze network performance over days, weeks, months, or even years.
In addition, the computing device 110 may compute additional performance metrics from the received performance data. For example, the computing device 110 may compute a ratio of utilization over capacity. Thus, as applied to the example of
In view of the above, a computing device 110 may accumulate a significant volume of performance data over long periods of time, particularly when the network 105 is highly complex. To facilitate analysis of such performance data by a user of the computing device 110, the computing device generates a GUI from the performance data. An example of such a GUI is illustrated in
As shown in
In this example, the first performance metric is a packet loss metric, as illustrated in
The second performance metric in this example is a network latency metric, as illustrated in
It may be important for a user of the computing device 110 to understand whether the performance metrics in the performance data reflect poor network conditions at a given time. With respect to packet loss ratios and latency times, high values are generally considered less-desirable than low values. To assist the user of the computing device 110 with a more particular understanding of the extent to which present network conditions are acceptable or unacceptable, discrete performance warning thresholds may be associated with respective performance metrics in the performance data. Such performance warning thresholds may be included in the performance data, or may be otherwise configured at the computing device 110 (e.g., by a user). In order to graphically represent the performance warning thresholds that are associated with the performance metrics of the x- and y-axes, the computing device 110 generates the GUI such that the x- and y-axes intersect each other at a particular intersection point (xi, yi).
In this example, the x- and y-values of the intersection point (xi, yi) correspond to the first and second performance warning thresholds, respectively. With particular reference to
With further reference to
The second quadrant 420b is diagonally opposed to the first quadrant 420a, and comprises a plurality of x- and y-values that exceed the first and second warning thresholds, respectively. In particular, the second quadrant 420b includes x-values between 5 and 10 percent, and y-values between 50 and 100 milliseconds.
The third quadrant 420c comprises a plurality of x-values that exceed the first warning threshold, and a plurality of y-values that do not exceed the second warning threshold. In particular, the third quadrant 420c includes x-values between 5 and 10 percent, and y-values between zero and 50 milliseconds.
The fourth quadrant 420d comprises a plurality of x-values that do not exceed the first warning threshold, and a plurality of y-values that exceed the second warning threshold. In particular, the fourth quadrant 420d includes x-values between zero and 5 percent, and y-values between 50 and 100 milliseconds.
The above describes an example wherein relatively low x- and y-values are preferable over high x- and y-values. The computing device 110 may graphically represent this using a color gradient as a background indicator within the GUI, as shown in
As applied to the example of
Although
In the example of
In addition to understanding whether the performance metrics in the performance data reflect poor network conditions at a given time, it may also be helpful for a user to understand whether network conditions are trending favorably or unfavorably. Thus, the computing device 110 may also generate the GUI to further graphically represent a change metric derived from a change to the first and second performance metrics over time. This change metric may comprise a magnitude (i.e., an extent of the change) and a direction of the change (e.g., whether the change is in the positive and/or negative direction for the first and second performance metrics). This change metric may be calculated by the computing device 110 from the received performance data, or may be comprised in the received performance data itself.
The change metric may be graphically represented in the GUI by a graphical icon 410. In particular, the computing device 110 may generate a shape of a graphical icon 410 to graphically represent the magnitude and direction of the change relative to the axes. The graphical icons 410a-c of
Graphical icon 410a has a comet-like outer shape 450a comprising a round leading end and a pointed, elongated trailing end opposing the leading end along a longitudinal axis. The outer shape 450a is much longer than it is wide, which graphically represents that the magnitude of change to the performance metrics of subnetwork A is significant. The orientation of the longitudinal axis and leading end are pointed toward the bottom left of the GUI, which graphically represents that both of the first and second performance metrics for subnetwork A are improving.
The graphical icon 410a also has a circular inner shape 460a with a center positioned at (1, 10), the x- and y-values of which, as previously mentioned, correspond to the first and second performance metrics, respectively, for subnetwork A at the given time. The sizes of the inner and outer shapes, 450a, 460a, also graphically represent performance metrics. Specifically, the size of the inner shape 460b graphically represents the utilization of subnetwork A, whereas the size of the outer shape 460a graphically represents the capacity of subnetwork A. Further, the sizes of the shapes 450a, 460a, relative to each other graphically represent the ratio of utilization over capacity for subnetwork A.
As shown in
Graphical icon 410a is an example of graphically representing performance metrics for a subnetwork 210 that are relatively volatile. By contrast, graphical icon 410b is an example of graphically representing performance metrics for a subnetwork 210 that are relatively stable. In particular, the outer shape 450b of graphical icon 410b is circular, and lacking the elongated trailing end present in graphical icon 410a. Thus, the outer shape 450b graphically represents that the performance metrics of subnetwork B are not experiencing significant change. According to some embodiments, slight changes may be represented by a slight bulge in outer shape 450.
The scale of the shape sizes used to graphically represent performance metrics within the GUI may be consistent across graphical icons 410, according to embodiments. For example, similarly to graphical icon 410a, the sizes of the inner and outer shapes 460b, 450b of graphical icon 410b depict the utilization and capacity, respectively, of subnetwork B. As shown in
In contrast to graphical icon 410a and graphical icon 410b, which graphically represent performance metrics that are relatively volatile and relatively static, respectively, graphical icon 410c is an example of graphically representing performance metrics for a subnetwork 210 that are changing, but to a lesser degree than those of subnetwork A. In particular, the outer shape 450c of graphical icon 410c is elliptical and has an elongated trailing end similar to the outer shape 450a of graphical icon 410a. However, the elongated trailing end of outer shape 450c is not pointed as in outer shape 450a. Thus, graphical icon 410c conveys to the user a lesser-magnitude of change than that of graphical icon 410c. Notwithstanding, being clearly elongated, graphical icon 410c graphically represents a greater-magnitude of change than that of graphical icon 410b, which is substantially circular.
As shown in
A color of each of the shapes may graphically represent even further performance metrics. For example, in contrast to the shape of outer shape 450, which as discussed above may convey a change metric for the first and second performance metrics (i.e., packet loss ratio and latency) of a subnetwork 210, a color of the inner shape 460 may indicate a rate of change to the utilization of a subnetwork 210, and a color of the outer shape 450 may indicate a rate of change to the capacity of the subnetwork 210.
For example, the colors green, yellow, and red may represent low, medium, and high degrees of change, respectively. With reference to the example of
The ability to graphically depict these numerous performance metrics cohesively within the same GUI conveys a substantial amount of information about a network in a concise manner. For example, the shapes, colors, and positioning of graphical icon 410a, when taken together indicates to a user that a moderate amount of change in utilization within subnetwork A is occurring, such that packet loss and latency within subnetwork A is favorably plummeting in a significant manner. A user could extrapolate that, because the capacity is stable and only slightly above the present utilization, the change in utilization appears to be benefiting the network greatly. This may, for example, confirm for the user that a recent change in the configuration of subnetwork A is having a positive overall effects. Of course, this is only one possible interpretation. The particular embodiments and other attendant circumstances of the user and the network 105 may lead one of ordinary skill to come to other conclusions. Notwithstanding, embodiments of the present disclosure are a power analytical tool for understanding, diagnosing, tracking, and/or evaluating the performance of a network 105, or subnetworks 210 therein.
The GUI depicted in
Further, aspects of the GUI generated by the computing device 110 may be user-customizable. For example, the GUI may allow a user to select a performance metric to associate with one or more of the axes 430, 440. For example, the GUI may accept a right-click mouse input on a particular axis from the user, and display a list of the available performance metrics in the performance data from which the user may make a selection with the left mouse button. In response to receiving this input from the user via the GUI, the computing device 110 may reassign the right-clicked axis to graphically represent a range of axis values that correspond to the user-selected performance metric, and reposition the graphical icons 410 of the GUI accordingly.
From the discussion above, it is apparent that embodiments of the present disclosure exist according to a variety of computer-implemented methods. An example of such a method 500 is illustrated in
A more detailed example of a computer-implemented method 600, according to embodiments of the present disclosure, is illustrated in
In response to receiving input from a user reassigning an axis (step 690), the method 600 may update the GUI by regenerating the various aspects therein (steps 630, 640, 650, 660, 670, 680, 690). If no input reassigning an axis is received (step 690), the method 600 may receive additional performance data (step 610) until a subsequent request for the GUI is received (step 620), and the method 600, in response, updates the GUI by regenerating the various aspects of the GUI (steps 630, 640, 650, 660, 670) and outputting an updated GUI to the display for the user (step 680).
The computing device 110 may be implemented according to the example hardware illustrated in
The interface circuitry 730 may be a controller hub configured to control the input and output (I/O) data paths of the computing device 110. Such I/O data paths may include data paths for exchanging signals over a communications network 105 and data paths for exchanging signals with a user. For example, the interface circuitry 730 may comprise a transceiver configured to send and receive communication signals over one or more of a cellular network, Ethernet network, or optical network. The interface circuitry 730 may also comprise one or more of a graphics adapter, display port, video bus, touchscreen, graphical processing unit (GPU), display port, Liquid Crystal Display (LCD), and Light Emitting Diode (LED) display, for presenting visual information to a user. The interface circuitry 730 may also comprise one or more of a pointing device (e.g., a mouse, stylus, touchpad, trackball, pointing stick, joystick), touchscreen, microphone for speech input, optical sensor for optical recognition of gestures, and keyboard for text entry.
The interface circuitry 730 may also comprise input circuitry 750 and output circuitry 740. For example, the output circuitry 740 may comprise a transmitter configured to send communication signals over the communications network 105, whereas the input circuitry 750 may comprise a receiver configured to receive communication signals over the communications network 105. Thus, the interface circuitry 730 may be implemented as a unitary physical component, or as a plurality of physical components that may be contiguously or separately arranged, any of which may be communicatively coupled to any other, or may communicate with any other via the processing circuitry 710. Similarly, the output circuitry 740 may comprise a display, whereas the input circuitry 750 may comprise a keyboard. Other examples, permutations, and arrangements of the above and their equivalents will be readily apparent to those of ordinary skill.
The processing circuitry 710 may be configured to receive performance data comprising first and second performance metrics for a communications network 105 via the interface circuitry 730. The first performance metric is associated with a first performance warning threshold, and the second performance metric is associated with a second performance warning threshold. The processing circuitry 710 may be further configured to generate a graphical user interface (GUI) from the performance data. The GUI comprises an x-axis 430 graphically representing a range of available x-values for the first performance metric, and a y-axis 440 graphically representing a range of available y-values for the second performance metric. The y-axis 440 intersects the x-axis 430 at an intersection point (xi, yi), wherein the x- and y-values of the intersection point (xi, yi) correspond to the first and second performance warning thresholds, respectively. The GUI further comprises a graphical icon 410 graphically representing a third performance metric and positioned at point (x1, y1), wherein the x- and y-values of the point (x1, y1) respectively correspond to the x- and y-values of the first and second performance metrics at a given time. The processing circuitry 710 may be further configured to output the GUI, via the interface circuitry 730, to a display device for display to the user.
The present invention may, of course, be carried out in other ways than those specifically set forth herein without departing from essential characteristics of the invention. The present embodiments are to be considered in all respects as illustrative and not restrictive, and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein.