Jasleen Kaur

This page has been translated to Romanian courtesy of azoft.

Analysis of Available Bandwidth Measurement Techniques

Research | Past Research Projects | Prototypes



            As the internet evolves, link speeds are getting faster and large amounts of data is being transferred over it. As a result the need to know the spare or unused capacity of a path has become critical for the proper  utilization of network resources.  In this scenario it is conjectured that several applications can benefit from the knowledge of the Available Bandwidth (AB).  For instance:

Many tools have been designed to measure the AB.  Some of them are Pathload, Pathchirp, Abing, Spruce, IGI/PTR, Cprobe, netest and Iperf. All these tools work by injecting a " probe stream " into the end-to-end path.  As the " probe stream " interacts with the cross-traffic on the path, it gets perturbed.  The receiver then analyses these perturbations to infer the AB of the path. This part of the tool is referred to as the "inference logic". A few applications which  use the knowledge of the AB have also been designed, for instance SOBAS.   

However the area of the AB estimation has many shortcomings which we have classified into three areas.

Our goal in evaluating the tools in two fold. First evaluate the tools as black boxes under identical test conditions and explain the differences between the performance of the tools.  Second we evaluate the tool algorithms, independent of any systemic effects or biases, to evaluate the methodology that can best estimate the AB.  This is because some tools are limited in their implementations because of systemic limitations.







Margaret Murray (TACC)

KC Claffy (CAIDA)

Marina Fomenkov (CAIDA)

Andre Broido (CAIDA currently at GOOGLE)


Other links

Schooner Lab Environment
Emulab Experimental Environment











SOBAS : Socket Buffer Auto-Sizing

AB in Overlay Networks

Large Scale AB estimation



This is the code that we used in the INFOCOM 2007 study. ( .tar.gz )

A couple of points regarding this code:

1) You need to unzip the code in the ns-<version  number> ( use the command "tar -zxvf <filename>") of your ns installation.  It should put all the files in the right places.
A word of caution, this unzip will overwrite file ./tcl/lib/ns-default.tcl , ./tcl/lib/ns-packet.tcl and ./common/packet.h and makefile.in.  Either back those files up if you have changes that you do not want to loose or you can add in the things by hand by looking at the contents of the file../* Look for the string Alok to find out what I changed*/

2) the tool code is present in the directory . / bwtools /

3) the NS-Basic scripts are some basic .tcl scripts to help you figure out how to invoke the tools.

4) Finally I have built this code on ns-2.29, and I am not sure how well these changes will hold up in successive versions or releases of ns.

If you have any other questions, please let me know and I will do what I can to help.

Other resources: