Abstract:
Improved network topology discovery techniques are disclosed. For example, an automated method for discovering a topology of a network, having a plurality of nodes, includes the following steps. A first traceroute process is performed for a given source node and one or more destination nodes listed in a target list so as to discover one or more paths through one or more intermediate nodes between the given source node and the one or more destination nodes. The one or more intermediate nodes discovered during the first traceroute process are added to the target list. A second traceroute process is performed for the given source node and the one or more intermediate nodes discovered during the first traceroute process so as to discover one or more paths through one or more additional intermediate nodes between the given source node and the one or more intermediate nodes discovered during the first traceroute process. When one or more additional intermediate nodes are discovered as a result of performance of the second traceroute process, the one or more additional intermediate nodes are added to the target list and the traceroute process is repeated to determine the existence of any further intermediate nodes. When no new intermediate nodes are discovered as a result of performance of the second traceroute process or a subsequent traceroute process, the nodes in the target list are identified as a target closure set for the given source node.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention generally relates to computing networks and, more particularly, to techniques for discovering topologies of such networks using a closure-based discovery approach. 
       BACKGROUND OF THE INVENTION 
       [0002]    Accurate information about a topology of a computer network is essential for system management tasks such as problem determination and performance analysis. However, this information is not always readily available, even within the boundaries of a company, especially if the intranet of the company is very large and consists of multiple subnetworks that are managed by different organizations. It is known that combining such information manually from multiple sources, and especially keeping it up to date, turns out to be quite tedious and time consuming. Moreover, collecting such information becomes even more complicated for the Internet, where different parts of the network are owned by different organizations. 
         [0003]    Currently, there are two common approaches to Internet structure discovery. One approach collects information from Border Gateway Protocol (BGP) inter-domain routing tables, and the other approach actively probes Internet Protocol (IP) addresses to trace the actual paths that packets traverse from source to destination. 
         [0004]    Some examples of techniques in the latter approach are as follows. The approach of R. Siamwalla et al., “Discovering Internet Topology,” IEEE INFOCOM &#39;99, pp 1-16, 1999, uses several heuristics and algorithms to discover network topology. The basic idea described in their work is to start from some initial set of IP addresses, and iteratively expand this set to obtain additional IP addresses, until all addresses are discovered. 
         [0005]    The procedure for expanding the current set of addresses is based on the assumption that network services (such as Simple Network Management Protocol (SNMP), broadcast ping, Domain Name Service (DNS) zone transfer, etc.) are enabled and users have the access privilege to use them. Using network services can help to create more accurate topology maps. Many researcher and commercial tools for network discovery rely on these services, in particular on the information provided by SNMP. These tools include OpenView from Hewlett Packard, Tivoli from IBM Corporation, Intermapper from Dartware, and Netviz products. 
         [0006]    A similar technique can also be used for the multicast overlay network of the Internet, i.e., the M-Bone, as described in A. Reddy et al., “Large-Scale Fault Isolation,” IEEE Journal of Selected Areas in Communication Special Issue on Network Management, 2000. Routers on the M-Bone can request a list of neighbor routers through the services. However, using this approach requires running SNMP service on every node from which information is to be obtained, which can be expensive. Also, network administrators can be reluctant to provide this service because of excessive load (or even potential denial-of-service attacks). Thus, not all the nodes in a given network may be SNMP-enabled. 
         [0007]    Other works such as are described in B. Huffaker et al., “Topology Discovery by Active Probing, Symposium on Applications and the Internet (SAINT),” 2002 and in B. Cheswick et al., “Mapping and Visualizing the Internet,” Proceedings of the 2000 USENIX Annual Technical Conference, June 2000, use traceroute style packets to map outgoing paths from a single source or multiple sources to each of the targets on the Internet. 
         [0008]    As is known, a traceroute utility works by increasing the “time-to-live” (TTL) value of each successive batch of packets sent. The first three packets have a TTL value of one (implying that they make a single hop—a hop being a traversal of one or more packets from one node to another node). The next three packets have a TTL value of two, and so on. When a packet passes through a host node, normally the host decrements the TTL value by one, and forwards the packet to the next host. When a packet with a TTL of one reaches a host, the host discards the packet and sends an Internet Control Message Protocol (ICMP) time-exceeded packet to the sender. The traceroute utility uses these returning packets to produce a list of hosts, in terms of hops, that the packets have traversed en route to the destination. 
         [0009]    However, using only source-destination traceroutes does not always give complete information about the topology, and may result in biased sampling, especially if the number of sources is small. 
         [0010]    Accordingly, a need exists for improved network topology discovery techniques. 
       SUMMARY OF THE INVENTION 
       [0011]    Principles of the present invention provide improved network topology discovery techniques. 
         [0012]    For example, in one aspect of the invention, an automated method for discovering a topology of a network, having a plurality of nodes, includes the following steps. A first traceroute process is performed for a given source node and one or more destination nodes listed in a target list so as to discover one or more paths through one or more intermediate nodes between the given source node and the one or more destination nodes. The one or more intermediate nodes discovered during the first traceroute process are added to the target list. A second traceroute process is performed for the given source node and the one or more intermediate nodes discovered during the first traceroute process so as to discover one or more paths through one or more additional intermediate nodes between the given source node and the one or more intermediate nodes discovered during the first traceroute process. When one or more additional intermediate nodes are discovered as a result of performance of the second traceroute process, the one or more additional intermediate nodes are added to the target list and the traceroute process is repeated to determine the existence of any further intermediate nodes. When no new intermediate nodes are discovered as a result of performance of the second traceroute process or a subsequent traceroute process, the nodes in the target list are identified as a target closure set for the given source node. 
         [0013]    The target closure set for the given source node may be used as an initial target set for a next source node such that one or more traceroute processes can be performed to determine a target closure list for the next source node. A target closure set may be generated for each subsequent source node selected in the network until the target closure set for the current source node is equal to the target closure set for the next source node. When the target closure set for the current source node is equal to the target closure set for the next source node, the target closure set for the current source node represents an overall closure set for the network. The overall closure set may be used to create a topology map of the network, which can be displayed, and updated as one or more target closure sets are updated. 
         [0014]    In another aspect of the invention, an automated method for discovering a topology of a network, having a plurality of nodes, includes the following steps. An initial target set is sent to a first source node such that the first source node runs a closure algorithm, beginning with the initial target set, which iteratively executes multiple traceroute processes until no new target nodes are discovered resulting in a closure target set for the first source node. The closure target set is collected from the first source node. The closure target set collected from the first source node is sent to a second source node for use as an initial target set to be used to run the closure algorithm so as to generate a closure target set for the second source node. The closure target set is collected from the second source node. The sending and collecting steps are continued for one or more other source nodes until the closure target set returned for the current source node is the same as the closure target set for the previous source node thus resulting in an overall target closure set. 
         [0015]    The overall target closure set may be analyzed. A topological representation of the network may be generated using the overall target closure set. The topological representation of the network may be displayed, and updated when the overall target closure set changes. 
         [0016]    These and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0017]      FIG. 1A  is an illustration of operation of a closure algorithm according to an embodiment of the invention. 
           [0018]      FIG. 1B  is a code implementation of a closure algorithm according to an embodiment of the invention. 
           [0019]      FIG. 1C  is a code implementation of a getClosure subroutine of the closure algorithm of  FIG. 1B . 
           [0020]      FIGS. 2A through 2H  are views of various topology maps and closure sets generated as a result of execution of a closure algorithm according to an embodiment of the invention. 
           [0021]      FIG. 3  is a diagram of a system for discovering a topology of a network using a closure algorithm according to an embodiment of the invention. 
           [0022]      FIG. 4  is a diagram of a computer system in accordance with which one or more components/steps of a network topology discovery system may be implemented according to an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0023]    Principles of the invention will be described below using a trace-based approach to discovering network topology. In particular, principles of the invention provide a closure methodology that allows for a more complete discovery of the underlying network structure than allowed by existing approaches. It has been realized that such a closure methodology is significantly more accurate than existing approaches, especially if used from multiple sources. The inventive approach overcomes limitations of existing topology discovery methods and provides an automated way of discovering an accurate network topology map. 
         [0024]    In one illustrative embodiment, such an inventive approach provides for distributed continuous collection of topological data from multiple servers, and provides this data in a form that facilitates the analysis of network topology dynamics. 
         [0025]    Several advantages flow from such an inventive approach. For example, the methodology only uses minimal services that are available on all nodes. The methodology does not require any additional services to be enabled on a node that are not controlled by the methodology. For example, the inventive methodology does not require that each node from which information is to be obtained be SNMP-enabled. Further, the closure methodology discovers a more complete set of nodes and edges than previously proposed approaches based on a traceroute utility. 
         [0026]    As used herein, a “node” refers to a device (e.g., a router) in the network to/from which a packet may be routed. The term “edge” refers to a communication path or link between two nodes. 
         [0027]    Principles of the invention provide a methodology to discover network maps in an IP-level using a trace-based tool, which we call the closure algorithm. The algorithm starts from a given source node (source), and a relatively small set of target nodes (targets). The targets are identified on a target list. The algorithm obtains the path information from the given source to targets by running traceroutes. The actual process for running traceroutes is well known and, for the sake of clarity, is not further described in detail herein. 
         [0028]    Then, the routers (nodes) discovered on these source-destination paths are added to the target list, and the traceroutes are sent to the new targets, and so on. The process stops when there are no new targets found. The nodes in the target list form a node closure set. Next, the process can move to the next source and use the closure set from the previous source as a target list for the next source. The iterative process eventually terminates when the closure set for the current source is equal to the closure set for the next source, which is actually an overall closure set. 
         [0029]    The concept of closure as provided herein is, at least in part, motivated by the observation that sometimes a traceroute to an intermediate node X on a previously discovered path P to a target Y does not always follow a subpath of P, and can in fact go through some other nodes not discovered before. Therefore, the algorithm keeps tracing down all the intermediate nodes in order to generate more new paths and new nodes, until the process converges. The nodes are all related directly/indirectly to the initial destinations. 
         [0030]    Meanwhile, we also find that if we use the closure set (the closure) obtained from the previous source as a target list for the next source, the closure is often expanded as well. All of these features indicate that using the closure can help to find more nodes and edges within limited resources. 
         [0031]    Furthermore, we observed that even with the same target list, using a different source at different times may yield different topology maps. This suggests that it would be advantageous to merge all the traceroute data, obtained by the iterative closure algorithm of the invention, from all available sources obtained at different times. 
         [0032]    Our analysis shows that our approach to network discovery introduces significantly less bias than existing approaches based on simply combining routing trees from multiple nodes. In particular, existing approaches severely underestimate edges in the discovered subnetwork. The bias introduced by such approaches may have a dramatic effect on the efficiency of, for example, diagnostic algorithms on the discovered network. We show that our algorithm alleviates such problems. 
         [0033]    An illustration depicting how the closure algorithm works is shown in  FIG. 1A . The algorithm starts with an initial target (or destination) list and uses a traceroute utility to find router adjacencies (connection paths through intermediate nodes) from the source node to each target in the list. The traceroute utility may be any existing traceroute tool, e.g., the traceroute command available in the Windows operating system or in the Linux operating system. Then, the newly discovered nodes on the adjacencies will be added to the target list again until all nodes in the target list are processed. This set of nodes in the target list form a node closure (in a saturation state). 
         [0034]    Here we formally define Cn=C(T, Sn) as the closure for Sn and T, where Sn is the source node and T is the target set. The closure for the previous source in turn will be a target list for the next source. Thus, as depicted in  FIG. 1A , the closure for S 1  is used as part of the target list for S 2 . The closure, C 2 , according to the definition, becomes C(C(T,S 1 ),S 2 )=C(C 1 , S 2 ). C is monotonically increasing. Once the algorithm goes over all sources from S 1  to Sn (in this example, S 3 ), it may continue taking Cn as a target set to update C 1 . At this time, the algorithm only needs to trace for those nodes in the difference set (Cn−C 1 ). The iteratively updating process will eventually terminate when the current closure Ci is equal to the next closure Ci+1, which is actually an overall closure. The resulting map is depicted graphically based on the overall closure and its adjacencies. 
         [0035]      FIGS. 1B and 1C  depict a code implementation of the closure algorithm described above.  FIG. 1B  depicts the overall algorithm, while  FIG. 1C  depicts the getClosure subroutine. 
         [0036]    One reason for using the closure concept is that we find that if we trace the intermediate node, which appears on the path of the tracing for a destination, the path may not be the partial path of the previous one. Therefore, we keep tracing down all the intermediate nodes with the purpose of generating more new paths and new nodes, then do the same to these new nodes, until no more new nodes are generated. The nodes are all related directly/indirectly to the initial destinations. Meanwhile, we also find that when using C(T, S 1 ) as a target list for S 2  instead of just T, the closure of S 2  is expanded. All of these realizations indicate using the closure concept will help to find more possible nodes and edges within limited resources. The other interesting thing we observed that even with the same target list, using different source at the different time will obtain very different topology map. This implies combining or merging all the trace route data from all available sources at all times will give a more complete map. 
         [0037]    To capture more details of the network structure, we have developed some utilities and define an extended adjacency list to record while tracing the nodes. It is to be understood that an adjacency list specifies all links (direct node-to-node connections) in a network, while the target list only specifies the final destinations of requested traceroutes. The extended adjacency list contains sources and time stamps for each edge. The algorithm will run for a particular period of time (e.g., 24 hours) and monitor the network dynamic changes from multiple sources. Once the algorithm finds new edges, it adds the edges with the source and the time to the adjacency list. When the algorithm finishes tracing, these adjacency lists will be merged to an overall list and the statistics data are ready for an analysis process. With the overall list, the analysis process can easily retrieve the data so as to know the characteristics of the network, get to know all edges discovered so far, which edges are shared by which sources, which path the trace route might take at the particular time, etc. 
         [0038]    Such an extended list with sample data is formatted as follows: 
         [0000]    
       
         
           
             
               
                 
                   
                     9.2 
                      
                     .2 
                      
                     .6 
                      
                     
                         
                     
                      
                     9.2 
                      
                     .1 
                      
                     .14 
                      
                     
                       { 
                       
                         9.2 
                          
                         .122 
                          
                         
                           .24 
                           / 
                           11 
                         
                          
                         
                           : 
                         
                          
                         03 
                          
                         
                           : 
                         
                          
                         23 
                          
                         
                             
                         
                          
                         9.2 
                          
                         .24 
                          
                         
                           .226 
                           / 
                           12 
                         
                          
                         
                           : 
                         
                          
                         03 
                          
                         
                           : 
                         
                          
                         02 
                       
                       } 
                     
                   
                    
                   
                       
                   
                 
               
             
             
               
                 
                   9.2 
                    
                   .1 
                    
                   .6 
                    
                   
                     { 
                     
                       9.2 
                        
                       .122 
                        
                       
                         .24 
                         / 
                         12 
                       
                        
                       
                         : 
                       
                        
                       03 
                        
                       
                         : 
                       
                        
                       05 
                     
                     } 
                   
                    
                   
                       
                   
                    
                   9.2 
                    
                   .4 
                    
                   .17 
                    
                   
                       
                   
                    
                   
                     { 
                     
                       9.2 
                        
                       .24 
                        
                       
                         .226 
                         / 
                         02 
                       
                        
                       
                         : 
                       
                        
                       03 
                        
                       
                         : 
                       
                        
                       02 
                     
                     } 
                   
                 
               
             
           
         
       
     
         [0039]    The format above can be interpreted as: u1 v1 {s1/t1 s2/t2} v2{s1/t3} v3{s2/t4}. 
         [0040]    Here, edge u1-&gt;v1 is found at t1 from source s1, also found at t2 from source s2, edge u1-&gt;v2 is found at t3 from source s1 and u1-&gt;v3 is found at t4 from source s2. 
         [0041]    To collect the trace route information to the targets from the designated sources, we developed a utility for the source node (machine). Running this utility sets up the source machine as a socket server first, then the source listens on the port. Once receiving the requests from a remote analysis center, the source runs the algorithm to generate adjacencies and send adjacencies back to the center via socket. The analysis center receives the results from one source and issues a request to the next source. 
         [0042]    The analysis center gradually builds up a topology map that is displayable via a graphical user interface, which is shown in  FIG. 2A . The nodes with asterisks are the source nodes.  FIGS. 2B and 2C  show an example of how different the map is from one source to another even with the same target list. The target list contains two nodes, 9.2.112.69 and 9.2.4.6. The traceroute tool collects the paths from the source to the targets and intermediate nodes generated.  FIG. 2B  displays the node closure and the edges with source 9.2.24.226 in the shaded area.  FIG. 2C  shows the node closure but with another source 9.2.122.24 in the shaded area. From the figures, it is clear that these sources have not much overlapping except for the target nodes and 9.2.1.6.  FIGS. 2D through 2G  show a series of closures. The merged map from two closures originated from both source 9.2.176.214 and 9.2.24.226 respectively is shown in  FIG. 2H . 
         [0043]      FIG. 3  illustrates a system  300  for discovering a topology of a network using the closure algorithm of the invention. By way of example,  FIG. 3  depicts a network  302 , for which a network topology is to be discovered, sources  304 -A,  304 -B and  304 -C (sources A, B and C, respectively), and analysis center  306 . It is to be understood that the analysis center operates as an automated controller of the closure-based discovery methodology. The system operates as follows. 
         [0044]    We start with source A. Analysis center  306  sends the initial target set T to source A. Source A runs the closure algorithm and collects the data from the nodes in the network  302 , then sends its closure target set T* and adjacency list back to the analysis center. Again, it is to be understood that an adjacency list is a way to describe the discovered topology as a list of all network links as the corresponding pairs of adjacent nodes, thus the adjacency list is different from the target list, i.e., adjacency list (for node A) specifies the discovered topology from node A. 
         [0045]    This expanded target set in turn is sent, as the initial target set T, by the analysis center to source B. This process continues (to source C and so on) until the target list stops changing. Each time the analysis center receives the target set and adjacency list from one source, the analysis center updates them in the repository, does analysis and reporting. 
         [0046]    As shown, the collected information is stored in repository  308 . As further shown, the analysis center  306  utilizes services  310  to implement the topology discovery methodology. For instance, the traceroute data collector service obtains the information generated by each source after running the closure algorithm. The source coordinator service determines the sequence of sources that will run the closure algorithm. The analysis engine service provides analysis of the collected data, while the topology view plotter service generates the map (e.g.,  FIG. 2A ) to be viewed via the graphical user interface  312 . 
         [0047]    In one embodiment, we implemented the closure algorithm and developed a tool for building the topology map. The tool includes a utility for the source machines. Running this utility first sets up the source as a socket server (or traceroute server), then allows the source to listen on the port. Once the source receives the initial set of targets from the remote analysis center, the source runs the algorithm to expand the target set until the target set is saturated (i.e., reached closure). The target set and adjacencies generated as the results are then sent back to the center via socket. The analysis center receives the results from one source and issues a request to the next source, and gradually builds the topology map and displays it as a graph in GUI. The multiple traceroute servers collaborate through the closure algorithm to provide a more complete map view. 
         [0048]      FIG. 4  is a block diagram illustrating an illustrative hardware implementation of a computer system in accordance with which one or more components/steps of a network topology discovery system (e.g., components/steps described in the context of  FIGS. 1 through 3 ) may be implemented, according to an embodiment of the present invention. For example, the illustrative architecture of  FIG. 4  may be used in implementing any network nodes (source, intermediate, destination, target, etc.) and components of the analysis center. 
         [0049]    Further, it is to be understood that the individual components/steps may be implemented on one such computer system, or more preferably, on more than one such computer system. In the case of an implementation on a distributed system, the individual computer systems and/or devices may be connected via a suitable network, e.g., the Internet or World Wide Web. However, the system may be realized via private or local networks. The invention is not limited to any particular network. 
         [0050]    As shown, the computer system  400  may be implemented in accordance with a processor  402 , a memory  404 , I/O devices  406 , and a network interface  408 , coupled via a computer bus  410  or alternate connection arrangement. 
         [0051]    It is to be appreciated that the term “processor” as used herein is intended to include any processing device, such as, for example, one that includes a CPU (central processing unit) and/or other processing circuitry. It is also to be understood that the term “processor” may refer to more than one processing device and that various elements associated with a processing device may be shared by other processing devices. 
         [0052]    The term “memory” as used herein is intended to include memory associated with a processor or CPU, such as, for example, RAM, ROM, a fixed memory device (e.g., hard drive), a removable memory device (e.g., diskette), flash memory, etc. 
         [0053]    In addition, the phrase “input/output devices” or “I/O devices” as used herein is intended to include, for example, one or more input devices (e.g., keyboard, mouse, etc.) for entering data to the processing unit, and/or one or more output devices (e.g., speaker, display, etc.) for presenting results associated with the processing unit. 
         [0054]    Still further, the phrase “network interface” as used herein is intended to include, for example, one or more transceivers to permit the computer system to communicate with another computer system via an appropriate communications protocol. 
         [0055]    Accordingly, software components including instructions or code for performing the methodologies described herein may be stored in one or more of the associated memory devices (e.g., ROM, fixed or removable memory) and, when ready to be utilized, loaded in part or in whole (e.g., into RAM) and executed by a CPU. 
         [0056]    Although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be made by one skilled in the art without departing from the scope or spirit of the invention.