Patent ID: 7782796

Claim:
A method of generating an annotated network topology, the method comprising steps of: A) receiving a set of network endpoint addresses for a network as an input, wherein said network comprises a plurality of network paths, each network path connecting a pair of endpoints and comprising edges that connect said endpoints; wherein said endpoints comprise machines that connect to the network and use said network to communicate with other machines; B) deriving a network topology by performing a route tracing utility between each pair of endpoints to determine a route taken by packets; C) initially annotating each edge in the network with an initial value indicating that an available bandwidth for the edge has not yet been determined; D) performing transfer control flows between each pair of endpoints in order to determine the available bandwidth of each edge, wherein the available bandwidth is defined as an amount of bandwidth that an application can get by opening one or more transmission control protocol flows, wherein said performing step comprises: beginning at an innermost loop of the network topology, and using end to end network measurements over all network paths, measuring at least one of: bandwidth, latency, and loss rate; probing the network path by saturating said network path with traffic such that received network traffic is less than transmitted network traffic when the transfer control protocol detects a packet loss; identifying a delay in the network path as said path is saturated with network traffic; monitoring the delay by performing a parallel route tracing utility on the network path together with the transfer control protocol flow as sais route tracing utility reports the delay, wherein the monitoring comprises: computing a maximum flow of traffic for the network path with the delay; determining a subset of the network paths that pass through the network path; initiating transfer control protocol flows between the network paths in the subset; determining a total throughput achieved by the transfer control protocol flows in the subset; and identifying a bottleneck as the network path with the total throughput that is less than the maximum flow; E) annotating all edges in the network by changing the initial value to an annotated value, said annotating comprising: annotating the network path identified as the bottleneck with an equality symbol; annotating the network paths for which the available bandwidth has been determined with at least one selected from a group consisting of: maximum available bandwidth, latency, and loss rate; annotating the network paths for which the available bandwidth has not been determined with an inequality symbol to indicate that said annotation can be further refined; F) repeating the performing and the annotating steps until an annotated network topology of the network is obtained, such that an iteration over all edges does not change the annotation of any edge; and G) presenting the annotated network topology as output.