1. Field of the Invention
This invention relates to systems and methods for providing a human-understandable visualization of a network topology.
2. Background of the Invention
Modern networks can be very complex. For example, a large corporation or organization with a large number of interconnected facilities may include a very large number of interconnected devices (hereinafter “nodes”). It can be difficult to visualize such a network. A high-level view of the network may include too much information and be useless for understanding the network as well as require a large amount of processing to render.
Algorithms exist to view information in different levels of details. For example, different amounts of detail may be displayed for different views. Some map viewing applications allow one to view maps with different levels of details of a region by zooming in or out of the region. However, at any one time, only one level of detail is shown. In instances where a viewing angle is other than directly downwards, distant objects may be shown in excess and unviewable detail or close objects may be shown with too little detail.
In the paper entitled “A Client-Server-Scenegraph for the Visualization of Large and Dynamic 3D Scenes”, Jörg Sahm and Ingo Soetebier, Journal of WSCG (2004) (hereinafter “Sahm”), a solution is proposed wherein objects closer to a viewpoint are shown in greater detail and objects further from a viewpoint are simultaneously shown in less detail.
This approach has difficulty with large networks because large network also contain a large number of long links which can cross multiple level of detail boundaries and furthermore, links are not independent objects but are intimately related to the end nodes which they connected.
This application is directed to an improved algorithm for visualizing networks in which different portions of the same network are shown in different level of detail in the same image.
In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the invention will be described and explained with additional specificity and detail through use of the accompanying drawings, in which:
It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of certain examples of presently contemplated embodiments in accordance with the invention. The presently described embodiments will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout.
The invention has been developed in response to the present state of the art and, in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available apparatus and methods. Accordingly, the invention has been developed to provide a system for visualizing network topology, the system comprising one or more processors and one or more memory devices operatively coupled to the one or more processors. The one or more memory devices storing executable and operational data effective to cause the one or more processors to define a tree representation of a network topology wherein a lowest level includes representations of nodes of the network and connections therebetween and upper levels include nodes representing clusters of nodes in a lower level and connections therebetween, each node having a location associated therewith. The tree may then be traversed to identify selected nodes lying within a level-specific threshold of a viewpoint. The tree may be traversed a second time to identify selected nodes having connections to non-selected nodes. Alternatively, nodes with connections to non-selected nodes may be identified during the first traversal of the tree. Heterogeneous links may be generated that define connections between the identified selected nodes and other selected nodes that are descendants of non-selected nodes that are an endpoint of a link connected to a selected node. A graphical representation of the network topology may be generated that includes representations of the selected nodes, the heterogeneous links and connections between selected nodes. The graphical representation may then be transmitted for display to a user.
Embodiments in accordance with the present invention may be embodied as an apparatus, method, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer-usable program code embodied in the medium.
Any combination of one or more computer-usable or computer-readable media may be utilized. For example, a computer-readable medium may include one or more of a portable computer diskette, a hard disk, a random access memory (RAM) device, a read-only memory (ROM) device, an erasable programmable read-only memory (EPROM or Flash memory) device, a portable compact disc read-only memory (CDROM), an optical storage device, and a magnetic storage device. In selected embodiments, a computer-readable medium may comprise any non-transitory medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Python, Smalltalk, C++, or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on a computer system as a stand-alone software package, on a stand-alone hardware unit, partly on a remote computer spaced some distance from the computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the 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).
The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. 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 or code. 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 data processing apparatus, create means 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 non-transitory computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which 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 or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus 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.
Some or all of the server 102, workstations 104, and user workstations 106 may communicate with one another by means of a network 108. The network 108 may be embodied as a peer-to-peer connection between devices, a connection through a local area network (LAN), WiFi network, the Internet, or any other communication medium or system.
The illustrated system 100 is just one example of a networked system that may be visualized according to method described herein. The number of clusters of workstations 104, 106, servers, networks 108, and the arrangement and connections between these components may have any arbitrary configuration and may be organized according to any principle for designing such networks. As noted above, large networks may be readily visualized according to the methods disclosed herein.
Computing device 200 includes one or more processor(s) 202, one or more memory device(s) 204, one or more interface(s) 206, one or more mass storage device(s) 208, one or more Input/Output (I/O) device(s) 210, and a display device 230 all of which are coupled to a bus 212. Processor(s) 202 include one or more processors or controllers that execute instructions stored in memory device(s) 204 and/or mass storage device(s) 208. Processor(s) 202 may also include various types of computer-readable media, such as cache memory.
Memory device(s) 204 include various computer-readable media, such as volatile memory (e.g., random access memory (RAM) 214) and/or nonvolatile memory (e.g., read-only memory (ROM) 216). Memory device(s) 204 may also include rewritable ROM, such as Flash memory.
Mass storage device(s) 208 include various computer readable media, such as magnetic tapes, magnetic disks, optical disks, solid-state memory (e.g., Flash memory), and so forth. As shown in
I/O device(s) 210 include various devices that allow data and/or other information to be input to or retrieved from computing device 200. Example I/O device(s) 210 include cursor control devices, keyboards, keypads, microphones, monitors or other display devices, speakers, printers, network interface cards, modems, lenses, CCDs or other image capture devices, and the like.
Display device 230 includes any type of device capable of displaying information to one or more users of computing device 200. Examples of display device 230 include a monitor, display terminal, video projection device, and the like.
Interface(s) 206 include various interfaces that allow computing device 200 to interact with other systems, devices, or computing environments. Example interface(s) 206 include any number of different network interfaces 220, such as interfaces to local area networks (LANs), wide area networks (WANs), wireless networks, and the Internet. Other interface(s) include user interface 218 and peripheral device interface 222. The interface(s) 206 may also include one or more user interface elements 218. The interface(s) 206 may also include one or more peripheral interfaces such as interfaces for printers, pointing devices (mice, track pad, etc.), keyboards, and the like.
Bus 212 allows processor(s) 202, memory device(s) 204, interface(s) 206, mass storage device(s) 208, and I/O device(s) 210 to communicate with one another, as well as other devices or components coupled to bus 212. Bus 212 represents one or more of several types of bus structures, such as a system bus, PCI bus, IEEE 1394 bus, USB bus, and so forth.
For purposes of illustration, programs and other executable program components are shown herein as discrete blocks, although it is understood that such programs and components may reside at various times in different storage components of computing device 200, and are executed by processor(s) 202. Alternatively, the systems and procedures described herein can be implemented in hardware, or a combination of hardware, software, and/or firmware. For example, one or more application specific integrated circuits (ASICs) can be programmed to carry out one or more of the systems and procedures described herein.
Referring to
The method 300 may begin with a current quadnode set to refer to the root node. The illustrated steps of the method 300 may proceed with respect to a current node up to a certain depth below the root node. Accordingly, the method 300 may include evaluating whether the current quadnode is at a maximum depth below the root node. If so, then any network nodes of the network topology located within an area defined by the current quadnode may be associated 304 with the current quadnode. As noted above, the root node has an area encompassing the entire network or portion of the network being visualized. Child quadnodes of the rootnode represent portions of this area. For example, the area may be divided into N (e.g. N=4) areas, each area associated with a quadnode. Likewise, all but lowest level quadnodes (“leaf” quadnodes) may have the area thereof subdivided into N areas and these subdivisions associated with child quadnodes thereof. The area associated with a quadnode has both an extent and a location with respect to the network topology. In some embodiments, a quadnode location may be represented by a location of a center of the area represented by the quadnode.
If the current node is not found 302 to be at a maximum depth level, then the method 300 may include determining 306 a node count for the current quadnode, e.g. counting the number of network nodes having locations within the area associated with the current quadnode. If this count is found 308 to be less than or equal to a maximum count, the nodes within the area defined by the quadnode may be associated 304 with that quadnode. In some embodiments, the maximum count is the same as the maximum number of child nodes of a quadnode, e.g. four for quadnodes having up to four child quadnodes.
If the count is found 308 to be greater than a maximum count, then the method 300 may include generating 310 a metanode and associating the metanode with the current quadnode. A metanode may be an entity that will be used to represent the nodes determined at step 306 in the method described herein. The metanode may have a location defined as a center of the current quadnode, e.g. the location of the quadnode, or may represent an average location of the network nodes located within the current quadnode.
The method 300 may further include dividing 312 the area of the current quadnode to obtain N sub-areas each having a center location within the area of the current quadnode and together covering the entire area of the current quadnode. For example, a rectangular area may be divided into four smaller rectangles. Child quadnodes may be defined each having one of the sub-areas associated therewith.
The method 300 may further include identifying 314 spanning links. Spanning links may be links between network nodes located within the area defined by the current quadnode that have a first end located within a first child quadnode of the current quadnode and a second end located within a second child node of the current quadnode. For a given pair of child quadnodes having one or more spanning links therebetween, a metalink may be generated 316. The metalink may define as ends thereof the locations of the pair of child nodes, e.g. the center thereof of some other coordinate used to define the location thereof. The metalink may also store information describing the one or more spanning links between the pair of child nodes. For example, the locations of first and second ends of each of the spanning links.
The method 300 may further include associating with the child quadnodes the network nodes determined at step 306 to lie within the current quadnode. For example, for each child quadnode, the network nodes that lie within the area defined by the each child quadnode may be associated with the child quadnode. Likewise, any non-spanning links between these network nodes may also be associated with the each child quadnode.
The method 300 may then be repeated 320 for each of the child quadnodes. It is possible that no network nodes lie within one or more of the child quadnodes of the current quadnode. Accordingly, the method 300 may be repeated 320 only for those quadnodes having network nodes associated 318 therewith. If a child quadnode has no network nodes associated therewith, it may be deleted or otherwise not be included in the quadtree generated according to the method. For example, up until step 318 where nodes are actually associated with a child quadnode, a child quadnode may not be created, but rather the area that a child quadnode would occupy is used to determine whether a network node is located therein.
As described above, the number of network nodes within the quadnode 400 may be counted, eight in the illustrated example. This exceeds the maximum node count, four in this example. Accordingly, as shown in
Referring to
Referring to
Referring again to
The method 500 may include removing 506 a quadnode from the consideration set (the “current quadnode) and evaluating 508 whether the current quadnode includes any links or metalinks, if so, these links are added 510 to a selected set of links, metalinks, nodes, and metanodes used to visualize a network.
The method 500 may include evaluating 512 whether the current quadnode is within a level specific threshold of the viewer position. As noted above, each quadnode has a position associated therewith, such as the center thereof. Accordingly, the distance to the viewer position may be the distance between this position and the viewer. The threshold used for comparison may depend on the level of the current quadnode in the quadtree. For example, for the root node (level 0) the threshold may be X, for the child quadnodes of the root node (level 1) the threshold may be X/2, for level 2 quadnodes, the threshold may be X/4, and so on up to X/(2̂Nmax), where Nmax is the deepest level of the quadtree (highest level of detail).
If the current quadnode has a position greater than the level-specific threshold from the viewpoint, any nodes or a metanode associated with the current node are added 514 to the selected set. If not, then the method 500 may include evaluating 516 whether the current quadnode has any child quadnodes, if not any network nodes associated with the current quadnode are added 514 to the selected set. If the current quad node is found 516 to have child quadnodes, these quadnodes are added 518 to the consideration set and the method continues at step 506 with respect to the current state of the consideration set. The method 500 end when no quadnodes remain in the consideration set.
Referring to
The method 700 may include identifying 702 metalinks in the selected set for which one or more metanodes at the ends thereof (“end nodes”) are not included in the selected set. As illustrated in
From among the metalinks identified at step 702, a metalink may be selected 704 for processing (the “current metalink”). For subsequent processing, a non-selected end node for the metalink may be identified 706. The non-selected end node may be a metanode or a non-viewable quadnode located at an endpoint of the current metalink.
The method 700 may further include selecting a link (the “current link”) associated with the current metalink. As noted above, a metalink may represent multiple spanning links, accordingly each of these links may be processed according to the method 700.
For subsequent processing, “current quadnode” may be set 710 to be the quadnode located at an endpoint of the current metalink, e.g. the non-viewable quadnode at an endpoint of the current metalink. The method 700 may include finding 712 a child quadnode of the current quadnode that is closest to an endpoint of the current link and evaluating 714 whether a node (network or metanode) of the closest child quadnode is in the selected set, if not, the current quadnode is set 716 to be the current quadnode and the method continues at step 712. If one or more nodes of the closest child quadnode is found 714 to be in the selected set, then the method 700 may include generating a heterogeneous link between an included endnode of the current metalink and one or more nodes of the closest child. In instances where both endnodes of a metalink are not in the selected set, the method 700 may include performing steps 708-718 twice for each link associated with the metalink, once for each end of the each link.
In one example, a metalink ML1 has end metanodes M1 and M2 that are not in the selected set. The quadnodes MQ1 and MQ2 for the metanodes M1 and M2, respectively may be identified. Among the children of MQ1 and MQ2, child quadnodes CQ1 and CQ2 are identified that are viewable quadnodes. CQ1 and CQ2 may be at the same or different levels in the quadtree. CQ1 and CQ2 may be identified by executing steps 708-716 starting with MQ1 and MQ2, respectively, as the current quadnode. A heterogeneous link may be generated between a node (network or meta-) associated with CQ1 and a node (network or meta-) associated with CQ2 and that heterogeneous link used to represent visually the metalink ML1 according to methods described herein. Where the metalink ML1 has multiple links associated therewith, it is possible that other pairs of child quadnodes could be identified in a same manner. The other pairs of child quadnodes could include one of CQ1 and CQ2 where the links have an end point located at either of CQ1 or CQ2.
In another example, metalink ML1 has end metanodes M1 and M2. M2 is in the selected set but M1 having associated quadnode MQ1 is not. For each link L1, L2, etc., associated with ML1, a viewable child quadnode CQ1, CQ2, etc., of MQ1 is identified (such as according to steps 708-716) that is closest to at an end point of the link L1, L2, etc. A heterogeneous link is then generated for each link L1, L2, etc. that has as one end point metanode M2 and as the other end point one or more nodes (network or meta-) associated with the corresponding identified child quadnode CQ1, CQ2, etc.
For example, a heterogeneous link may have one end point at a location of a metanode associated with the closest child and another end point at a metanode in the selected set associated with an endpoint of the current metalink. In another example, a heterogeneous link may have at one end point a network node that is both associated with the closest child and located at an end point of the current link and as another point the metanode in the selected set associated with an endpoint of the current metalink, e.g. an immediate child quadnode of the quadnode with which the current metalink is associated.
By adding metalinks to the selected set and using the location of the endpoints to limit the quadnodes evaluated when traversing the quadtree, less computation is required to determine the appropriate metanode or network nodes that are in the selected set but located at a deeper level of the quadtree.
The method 700 may include evaluating 720 whether any links associated with the current metalink have not been processed, if so the method 700 continues at step 708 with another link associated with the current metalink. If not, the method 700 may include evaluating 722 whether any of the metalinks identified at step 702 remain to be processed, if so, the method 700 may continue at step 704. If no more metalinks remain to be processed, the method 700 may end.
Any nodes, metanodes, links, and metalinks as well as any heterogeneous links may then be rendered for display on a display device, transmitted for display, or stored for later use. Examples of graphical representation of a network according to the methods disclosed herein are shown in
Referring to
In some instances a node 912 may not represent a cluster of other nodes, i.e. represents an individual node of the network. However, where such a node 912 is isolated or distanced from other nodes, a level of detail other than the highest level may represent that node as an individual node rather than as a metanode. Accordingly, a connection from a node 906 to such a node 912 may be a connection 908 defined for that level of detail rather than a heterogeneous link generated according to the methods disclosed herein.
A highest level of detail may include nodes 914 connected by links 916. The nodes 914 of the lowest level represent actual network nodes of the network topology and links 916 represent actual network connections between individual nodes. Links 916 may represent logical connections, physical wires, or wireless connections between individual nodes.
The highest level nodes 914 may be connected to intermediate nodes 912 by means of heterogeneous links 918 generated according to the methods described herein. In the graphical representation 900, only three levels of detail are shown. However, any number of levels of detail may be simultaneously shown in a single graphical representation 900 with heterogeneous links among nodes for different levels of detail, including non-contiguous levels of detail. In addition, a heterogeneous connection may span multiple levels, e.g. connect a lowest level node to a highest level node, depending on which nodes are selected for representation.
As shown in
Referring to
Referring to
The systems and methods described herein advantageously enable the rapid rendering of a network that includes representations of different portions of the network with different levels of detail. The methods disclosed herein further enable this functionality with relatively low computing requirements. For example, creating a quadtree according to the method 300 of
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. For example, although visualization of a network topology is disclosed, any representation of interconnected elements may be visualized according to methods disclosed herein. The described embodiments are to be considered in all respects only as illustrative, and not restrictive. The scope of the invention is, therefore, indicated by the appended claims, rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.