Abstract:
A computer network has links for carrying data among computers, including one or more client computers. Packet loss rates are determined for the client computers and, a system of equations is set up expressing the relationship between the loss rates at the client computers and the loss rates at the links. The system of equations is then solved using one or more linear programming techniques, and optimized by making an effort to find the most parsimonious solution.

Description:
RELATED ART 
   This application is based on provisional application No. 60/407,425, filed Aug. 30, 2002, entitled “Method and System for Identifying Lossy Links in a Computer Network.” 

   TECHNICAL FIELD 
   The invention relates generally to network communications and, more particularly, to methods and systems for identifying links in a computer network that are experiencing excessive data loss. 
   BACKGROUND 
   Computer networks, both public and private, have grown rapidly in recent years. A good example of a rapidly growing public network is the Internet. The Internet is made of a huge variety of hosts, links and networks. The diversity of large networks like the Internet presents challenges to servers operating in such networks. For example, a web server whose goal is to provide the best possible service to clients must contend with performance problems that vary in their nature and that vary over time. For example performance problems include, but are not limited to, high network delays, poor throughput and high incidents of packet losses. These problems are measurable at either the client or the server, but it is difficult to pinpoint the portion of a large network that is responsible for the problems based on the observations at either the client or the server. 
   Many techniques currently exist for measuring network performance. Some of the techniques are active, in that they involve injecting data traffic into the network in the form of pings, traceroutes, and TCP connections. Other techniques are passive in that they involve analyzing existing traffic by using server logs, packet sniffers and the like. Most of these techniques measure end-to-end performance. That is, they measure the aggregate performance of the network from a server to a client, including all of the intermediate, individual network links, and make no effort to distinguish among the performance of individual links. The few techniques that attempt to infer the performance of portions of the network (e.g., links between nodes) typically employ “active” probing (i.e., inject additional traffic into the network), which places an additional burden on the network. 
   SUMMARY 
   In accordance with the foregoing, a method and system for identifying lossy links in a computer network is provided. According to various embodiments of the invention, the computer network has links for carrying data among computers, including one or more client computers. Packet loss rates are determined for the client computers and a system of equations express the relationship between the loss rates at the client computers and the loss rates at the links. An objective function is defined by the system of equations and one or more linear programming techniques are applied to the function in order to find a solution to the equations in which as few links as possible have high loss rates. From the solution, lossy links are identified as those links whose loss rates, as inferred from the solution, exceed a predetermined threshold. 
   Additional aspects of the invention will be made apparent from the following detailed description of illustrative embodiments that proceeds with reference to the accompanying figures. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     While the appended claims set forth the features of the present invention with particularity, the invention may be best understood from the following detailed description taken in conjunction with the accompanying drawings of which: 
       FIG. 1  illustrates an example of a computer network in which the invention may be practiced; 
       FIG. 2  illustrates an example of a computer on which at least some parts of the invention may be implemented; 
       FIG. 3  illustrates a computer network in which an embodiment of the invention is used; and 
       FIG. 4  illustrates programs executed by a server in an embodiment of the invention. 
   

   DETAILED DESCRIPTION 
   Prior to proceeding with a description of the various embodiments of the invention, a description of the computer and networking environment in which the various embodiments of the invention may be practiced will now be, provided. Although it is not required, the present invention may be embodied by programs executed in a computer. Generally, programs include routines, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. The term “program” as used herein may connote a single program module or multiple program modules acting in concert. The term “computer” as used herein includes any device that electronically executes one or more programs, such as personal computers (PCs), hand-held devices, multi-processor systems, microprocessor-based programmable consumer electronics, network PCs, minicomputers, mainframe computers, consumer appliances having a microprocessor or microcontroller, routers, gateways, hubs and the like. The invention may also be employed in distributed computing environments, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, programs may be located in both local and remote memory storage devices. 
   An example of a networked environment in which the invention may be used will now be described with reference to  FIG. 1 . The example network includes several computers  10  communicating with one another over a network  11 , represented by a cloud. Network  11  may include many well-known components, such as routers, gateways, hubs, etc. and allows the computers  10  to communicate via wired and/or wireless media. When interacting with one another over the network  11 , one or more of the computers may act as clients, servers or peers with respect to other computers. Accordingly, the various embodiments of the invention may be practiced on clients, servers, peers or combinations thereof, even though specific examples contained herein don&#39;t refer to all of these types of computers. 
   Referring to  FIG. 2 , an example of a basic configuration for a computer on which all or parts of the invention described herein may be implemented is shown. In its most basic configuration, the computer  10  typically includes at least one processing unit  14  and memory  16 . The processing unit  14  executes instructions to carry out tasks in accordance with various embodiments of the invention. In carrying out such tasks, the processing unit  14  transmits electronic signals to other parts of the computer  10  and to devices outside of the computer  10  to cause some result. Depending on the exact configuration and type of the computer  10 , the memory  16  is volatile (such as RAM), non-volatile (such as ROM or flash memory) or some combination of the two. This most basic configuration is illustrated in  FIG. 2  by dashed line  18 . Additionally, the computer may also have additional features/functionality. For example, computer  10  may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. In general, the storage media of the computer  10  includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storing information, including computer-executable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to stored the desired information and which can be accessed by the computer  10 . Any such computer storage media may be part of computer  10 . 
   Computer  10  may also contain communications connections that allow the device to communicate with other devices. A communication connection is an example of a communication medium. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term “computer-readable medium” as used herein includes both computer storage media and communication media. 
   Computer  10  may also have input devices such as a keyboard, mouse, pen, voice input device, touch input device, etc. Output devices such as a display  20 , speakers, a printer, etc. may also be included. All these devices are well known in the art and need not be discussed at length here. 
   The invention is generally directed to identifying lossy links on a computer network. Identifying lossy links is challenging for a variety of reasons. First, characteristics of a computer network may change over time. Second, even when the loss rate of each link is constant, it may not be possible to definitively identify the loss rate of each link due to the large number of constraints. For example, given M clients and N links, there are M constraints (corresponding to each server—end node path) defined over N variables (corresponding to the loss rate of the individual links). For each client C j , there is a constraint of the form 1−Π iεT     j   (1−l i )=p j , where T j  is the set of links on the path from the server to the client C j , l i  is the loss rate of link i, and p j  is the end-to-end loss rate between the server and the client C j . If M&lt;N, as is often the case, there is not a unique solution to this set of constraints. 
   The system and method described herein is intended for use on computer networks, and may be employed on a variety of topologies. The various embodiments of the invention and example scenarios contained herein are described in the context of a tree topology. However, the invention does not depend on the network topology being a tree. 
   Referring to  FIG. 3 , a computer network  30 , having a tree topology, is shown. The computer network  30  includes a server  32  and client computers  34 ,  36 ,  38 ,  40 ,  42 ,  44 ,  46  and  48 . The client computers include a first client computer  34 , a second client computer  36  and a third client computer  38 . The client computers of the network  30  also include a first end node C 1 , a second end node C 2 , and third end node C 3 , a fourth end node C 4  and a fifth end node C 5 . Each end node has a loss rate associated with it. The loss rate represents the rate at which data packets are lost when traveling end-to-end between the server  32  and the end node. This loss rate is measured by a well-known method, such as by observing transport control protocol (TCP) packets at the server and counting their corresponding ACKs. 
   The network  30  also includes network links  33 ,  35 ,  37 ,  39 ,  41 ,  43 ,  45  and  47 . Each network link has a packet loss rate associated with it. The packet loss rate of a link is the fraction of packets arriving at the link that don&#39;t make it across the link. 
   
     
       
             
           
             
             
           
         
             
               TABLE 1 
             
           
           
             
                 
             
             
               Table 1 shows the meaning of the variables used in FIG. 3. 
             
           
        
         
             
               Variable 
               Meaning 
             
             
                 
             
             
               l 1   
               loss rate of the link 33 between the server 32 and 
             
             
                 
               the first client computer 34 
             
             
               l 2   
               loss rate of the link 35 between the first client 
             
             
                 
               computer 34 and the second client computer 36 
             
             
               l 3   
               loss rate of the link 37 between the first client 
             
             
                 
               computer 34 and the third client computer 38 
             
             
               l 4   
               loss rate of the link 39 between the second client 
             
             
                 
               computer 36 and the first end node 40 
             
             
               l 5   
               loss rate of the link 41 between the second client 
             
             
                 
               computer 36 and the second end node 42 
             
             
               l 6   
               loss rate of the link 43 between the second client 
             
             
                 
               computer 36 and the third end node 44 
             
             
               l 7   
               loss rate of the link 45 between the third client 
             
             
                 
               computer 38 and the fifth end node 48 
             
             
               P 1   
               end-to-end loss rate between the server 32 and 
             
             
                 
               the first end node 40 
             
             
               P 2   
               end-to-end loss rate between the server 32 and 
             
             
                 
               the second end node 42 
             
             
               P 3   
               end-to-end loss rate between the server 32 and 
             
             
                 
               the third end node 44 
             
             
               P 4   
               end-to-end loss rate between the server 32 and 
             
             
                 
               the fourth end node 46 
             
             
               P 5   
               end-to-end loss rate between the server 32 and 
             
             
                 
               the fifth end node 48 
             
             
                 
             
           
        
       
     
   
   For any given path between the server  32  and an end node, the rate at which packets reach the end node is equal to the product of the rates at which packets pass through the individual links along the path. Thus, the loss rates in the network  30  can be expressed with the equations shown in Table 2. 
                           TABLE 2                           (1 − l 1 )*(1 − l 2 )*(1 − l 4 ) = (1 − p 1 )           (1 − l 1 )*(1 − l 2 )*(1 − l 5 ) = (1 − p 2 )           (1 − l 1 )*(1 − l 2 )*(1 − l 6 ) = (1 − p 3 )           (1 − l 1 )*(1 − l 3 )*(1 − l 7 ) = (1 − p 4 )           (1 − l 1 )*(1 − l 3 )*(1 − l 8 ) = (1 − p 5 )                        
Solving the equations shown in Table 2 presents several challenges. One challenge is that there are many more unknown values than there are equations.
 
   Referring to  FIG. 4 , a block diagram shows the programs that execute on the server  32  (from  FIG. 3 ) according to an embodiment of the invention. The server  32  is shown executing a communication program  50  that sends and receives data packets to and from other computers in the network  30  ( FIG. 3 ). The communication program  50  serves a variety of application programs (not shown) that also execute on the server  32 . An analysis program  52  also executes on the server  32 . The analysis program  52  receives data from the communication program  50 . The analysis program  52  may carry out some or all of the steps of the invention, depending on the particular embodiment being used. 
   The communication program  50  keeps track of how many data packets it sends to the each of the end nodes  40 ,  42 ,  44 ,  46  and  48  ( FIG. 3 ). It also determines how many of those packets were lost en route based on the feedback it receives from the end nodes. The feedback may take a variety of forms, including Transport Control Protocol (TCP) ACKs and Real-Time Control Protocol (RTCP) receiver reports. The communication program  50  is also capable of determining the paths that packets take through the network  30  by using a tool such as trace route. Although the trace route tool does involve active measurement, it need not be run very frequently or in real time. Besides trace route, there are other ways to determine the paths that packets take, such as invoking the record route option (Ipv4) or extension header (Ipv6) on a small subset of packets. Thus, the communication program  50  gathers its data in a largely passive fashion. 
   The analysis program  52  identifies which link of the network  30  is excessively lossy by performing a statistical analysis on the data it receives from the communication program  50 . In performing the statistical analysis, the goal of the analysis program  52  is not necessarily to infer a specific loss rate for each individual link of the network  30 , but to identify those links that are likely to be excessively lossy. To accomplish this goal, the analysis program takes one or more steps to simplify the analysis. According to one step, for those links of a network path that have no branches, the analysis program  52  collapses the links into a single “virtual link.” Thus, for example, the link  33  between the server  32  and the first client computer  34  ( FIG. 3 ), may be a virtual link that actually comprises several different physical links, but without any additional branches that carry data packets down to any of the end nodes  40 ,  42 ,  44 ,  46  and  48 . 
   Another step taken by the analysis program  52  to simplify its analysis is to assume that the loss rate of each link in the network  30  is constant. Although this is not necessarily a realistic assumption, it has been shown that, in many networks, some links consistently have high loss rates while others consistently have low loss rates. Since the goal of the analysis program  52  is to determine which links are likely to be excessively lossy, and not to determine exact loss rates, this assumption is reasonable. 
   As previously discussed, for each client C j  of the network of  FIG. 3 , there is a constraint of the form 1−Π iεT     j   (1−l i )=p j . This constraint can be converted to a linear constraint of the form as follows:
 
Π iεT     j   (1 −l   i )=1 −p   j  
 
log(Π iεT     j   (1 −l   i ))=log(1 −p   j )
 
Σ iεT     l   log(1 −l   i )=log(1 −p   j )
 
−Σ iεT     l   log(1 −l   i )=−log(1 −p   j )
 
Σ iεT     l   log(1/(1 −l   i ))=log(1/(1 −p   j ))
 
   Therefore we have Σ iεT     j   L i =P j , where L i =log (1/(1−l i )) and P j =log(1/(1−p j )). Additionally, a constraint on L i  is that L i ≧0. The transformed variables L i  and P j  are monotonic functions of l i  and p j , respectively. According to an embodiment of the invention, the analysis program  52 , introduces a slack variable, referred to herein as S j , in the constraint for the client C j , yielding a modified overall constraint of Σ iεT     j   L i +S j =P j . The slack variable S j  permits the analysis program  52  to violate, to a limited extent, the constraint Σ iεT     j   L i =P j . The analysis program  52  uses the slack variable S j  to account for the possibility of errors in the computation of p 1 -p 5 . Such errors may result from anomalous measurements of packet loss rates made by the communication program  50 , or temporal fluctuation in link loss rates and the like. 
   To determine the loss rates of the individual links l 1 -l 8  ( FIG. 3 ), the analysis program  52  attempts to minimize the following function:
 
wΣ i L i +Σ j |S j |
 
   Minimizing the tern Σ i L i  represents an attempt to obtain a parsimonious solution for the system of equations shown in Table 2. In other words, it represents an attempt to find a solution in which as few links as possible have high loss rates. Minimizing the tern Σ i |S j | represents an attempt to minimize the extent to which the constraint Σ iεT     j   L i =P j  is violated. The constant w is a weight factor that the analysis program  52  uses to control the relative importance of finding a parsimonious solution versus the importance of minimizing the extent to which the constraint Σ iεT     j   L i =P j  is violated. By default, the analysis program  52  sets w equal to one. 
   To simplify the actual computations required to minimize the objective function wΣ i L i +Σ j |S j |, the term |S j | is converted to S′ j , in which S′ j ≧S j  and S′ j ≧−S j . Thus, the function to be minimized becomes wΣ i L i +Σ j S′ j , which is a linear objective function. Thus, the analysis program  52  solves the system of equations of Table 2 while minimizing the function wΣ i L i +Σ j S′ j . This can be accomplished in a variety of ways. For example, the analysis program  52  may use any of a number of linear programming techniques. An example of a suitable linear programming technique is that used by the “linprog” function of the MATLAB® software package. 
   For the example shown in  FIG. 3 , we have the following linear program, where p 1 =0.12, p 2 =0.15, p 3 =0.1, p 4 =0.02, p 5 =0.05. For w equals one (1), the problem is expressed as follows: 
   minimize (L 1 +L 2 +L 3 +L 4 +L 5 +L 6 +L 7 +L 8 +S 1 ′+S 2 ′+S 3 ′+S 4 ′+S 5 ′), subject to (L 1 +L 2 +L 4 +S 1 = 
                                                                                       L 1  + L 2  + L 5  + S 2  = P 2         L 1  + L 2  + L 6  + S 3  = P 3         L 1  + L 3  + L 7  + S 4  = P 4         L 1  + L 3  + L 8  + S 5  = P 5              S 1 ′ + S 1  &lt;=   −S 2 ′ + S 2  &lt;=   −S 3 ′ + S 3  &lt;=   −S 4 ′ + S 4  &lt;=   −S 5 ′ + S 5  &lt;=       0   0   0   0   0       −S 1 ′ −S 1  &lt;=   −S 2 ′ − S 2  &lt;=   −S 3 ′ − S 3  &lt;=   −S 4 ′ − S 4  &lt;=   −S 5 ′ − S 5  &lt;=       0   0   0   0   0            L 1  &gt;=   L 2  &gt;= 0   L 3  &gt;= 0   L 4  &gt;= 0   L 5  &gt;= 0   L 6  &gt;= 0   L 7  &gt;= 0   L 8  &gt;= 0       0                    
The above linear program can be solved using Mat lab (or another linear programming solver), which gave the following output:
 
                                                           L 1  = 0.0233   L 2  = 0.0866   L 3  = 0   L 4  = 0.0075   L 5  = 0.0215   L 6  = 0   L 7  = 0   L 8  = 0.0121                    
Based on L i =log(1/(1−l i )), the link loss rate is inferred to be as follows:
 
                                                           L 1  = 0.023   L 2  = 0.083   L 3  = 0   L 4  = 0.0075   L 5  = 0.0213   L 6  = 0   L 7  = 0   L 8  = 0.0121                    
Based on the inferred link loss rate, a link is lossy if its loss rate exceeds a threshold. The level at which the threshold is set depends on a variety of factors, such as how high of a loss rate is serious enough to adversely impact the application that a network user wishes to run. In this example, if the threshold is set to be a five percent loss rate, then link L 2  is lossy with an inferred loss rate of 8.3 percent.
 
   In view of the many possible embodiments to which the principles of this invention may be applied, the embodiments described herein with respect to the drawing figure are meant to be illustrative only and are not intended as limiting the scope of invention. For example, those of skill in the art will recognize that the elements of the illustrated embodiments shown in software may be implemented in hardware and vice versa or that the illustrated embodiments can be modified in arrangement and detail without departing from the spirit of the invention. Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof.