$Header: /net/cvs/bwtest/pathload/README,v 1.32 2006/05/19 22:34:59 jain Exp $ Pathload Release : Ver 1.3.2 Contents -------- Overview of Pathload Building Pathload Running Pathload Examples Interpreting Pathload output Contact and other info Overview of Pathload -------------------- Pathload is a tool for estimating the available bandwidth of an end-to-end path from a host S (sender) to a host R (receiver). The available bandwidth is the maximum IP-layer throughput that a flow can get in the path from S to R, without reducing the rate of the rest of the traffic in the path. The estimation algorithm of Pathload is based on the SLoPS methodology, which is described in: "Pathload : A measurement tool for end-to-end available bandwidth", by Manish Jain and Constantinos Dovrolis, published at PAM 2002. That paper is available at: http://www.cc.gatech.edu/~dovrolis/Papers/pam02.ps A more extensive study of available bandwidth is given in: "End-to-End Available Bandwidth: Measurement methodology, Dynamics, and Relation with TCP Throughput", in Proceedings of ACM SIGCOMM in August 2002. That paper is available at: http://www.cc.gatech.edu/~dovrolis/Papers/sigcomm02.ps.gz Briefly, Pathload is based on the following key idea: When a process at S sends a periodic stream of UDP packet at a rate higher than the available bandwidth in the path, the relative one-way packet delays show an increasing trend. When the stream rate is lower than the available bandwidth, the relative one-way packet delays show no consistent trend. Pathload consists of a process running at S and a process running at R. S sends periodic streams of UDP packets from S to R at a certain rate. Pathload does not determine whether a particular rate (Tr) is greater than available bandwidth (A) based on just one stream. Instead, it sends "a fleet of N streams", so that it has N samples to decide whether Tr > A, or not. Upon the receipt of a complete fleet, R checks if there is an increasing trend in the relative one-way packet delays in each stream. If a large fraction f of the N streams in a fleet show increasing trend, then the entire fleet is said to have increasing trend and the next fleet rate is lower than Tr. If a large fraction f of streams in a fleet show no trend, then the entire fleet is said to have no trend and the next fleet rate is higher than Tr. A certain fleet rate falls into the `grey region' when less than f x N streams of the fleet show increasing trend, and less than f x N streams show no trend. This can happen when the available bandwidth was more than fleet rate for some streams and less than the fleet rate for some other streams. In other words, the available bandwidth during the fleet duration varied above and below the fleet rate, causing some streams to show increasing trend and others to show no trend. The iterative estimation algorithm of Pathload terminates when: - the rate of two successive fleet is less than a user-specified resolution, - or, the available bandwidth varies in a `grey-region', which is larger than the user-specified resolution. Building Pathload ----------------- Pathload uses the standard configure/make approach. $> ./configure $> make After you have extracted the Pathload code in a directory, run configure in that directory. Then run make. You should then have two executables in the Pathload directory. 1. pathload_snd (to be run at the sender) 2. pathload_rcv (to be run at the receiver) Running Pathload ---------------- sender To do available bandwidth estimation, first run pathload_snd at the sender S: $> pathload_snd [-i] [-h|-H] [-q] [-i] By default, pathload_snd will exit after 1 measurement. Use switch -i to run sender in iterative (persistent) mode. [-q] By default, sender sends minimal output (fleet rate) to terminal (stdout). To completely disable any message on stdout, use -q (quite mode). receiver Then, run pathload_rcv at the receiver R: $> pathload_rcv [-q|-v] [-o|-O ] [-N ][-w ] [-h|-H] [-t ] -s -s : hostname/ipaddress of sender -q : quite mode -v : verbose mode -w : user specified bandwidth resolution -o : write log to user specified file [default is pathload.log] -O : append log to user specified file [default is pathload.log] -N : append output in netlogger format to -t