3. Running abget
3.1. Starting a measurement
For available bandwidth estimation in the downstream path run
# abget -d -f filename hostname
where hostname is the name (or the IP address) of a web server and filename
a sufficiently large file in that web server.
For estimation of the available bandwidth in the upstream path just run
# abget -u hostname
where hostname is the name (or the IP address) of the web server that you want.
For instance, if we know that the file http://www.ics.forth.gr/~papadog/abget/abget-1.0.tar.gz
is large enough for the stream length that we want, we would run abget
for the downstream as follows:
# abget -d -f /~papadog/abget/abget-1.0.tar.gz www.ics.forth.gr
For the upstream path:
# abget -u www.ics.forth.gr
Remember that you have to run abget as root.
3.2. abget parameters
This was the simplest way to run abget. However, the are some important
properties that you are able to configure before running the tool.
Usage:
abget [-d | --downstream]
[-u | --upstream]
[-b | --binary]
[-l | --linear]
[-p <target-port>]
[-w <source-port>]
[-s <source-ip>]
[-i <network-interface>]
[-r <estimation-range>] (Mbps)
[-x <variation-range>] (Mbps)
[-t <max-time>] (seconds)
[-L <Rmin>] (Mbps)
[-H <Rmax>] (Mbps)
[-P <stream-length>] (packets)
[-N <number-of-streams>]
[-I <idle time>] (microseconds)
[-D <writefile>]
[-c <configuration file>]
[-v | --verbose]
[-h | --help]
[-f <filepath>]
<host>
You can determine if you want to measure the available bandwidth in the
downstream path (default) or in the upstream path (-d or --downstream and
-u or --upstream respectively).
Also, you may want to define if you prefer a linear probing algorithm (default) or
a binary search probing algorithm (-l or --linear and -b or --binary respectively).
In the linear probling algorithm we start probing at the rate Rmin and we increase it
using as step the estimation resolution, till the rate Rmax is reached.
In the binary search probing algorithm we always probe at the rate (Rmin+Rmax)/2, and
if the rate is found higher that the actual available bandwidth we continue in the
first half of that range, else we do the same process in the second half.
We stop when we have reached the given estimation resolution or when the variation
range of the available bandwidth is found larger than the given estimation resolution.
You can also set properly some important tool's parameters for the estimation process:
- Rmin and Rmax (-L and -H), which define the probing range in Mbits/sec.
- The estimation resolution (-r), which is the minimum variation range that we
are interested for the available bandwidth estimation.
In the linear probing algorithm, the estimation resolution defines the step for
increasing the probing rates. For the binary search probing, it specifies one of
the termination conditions of the algorithm, when the current estimation range becomes
equal or lower than this resolution (higher rate - lower rate <= estimation resolution).
- The variation resolution, that is used only in binary search probing algorithm,
and defines how much we should approximate the "grey" region, when this "grey" region of
the available bandwidth is larger than the estimation resolution specified.
- The stream length (-P), that is the number of packets per stream.
- The number of streams per every probing rate (-N).
- The idle time between successive iterations (-I) in microseconds.
If you need so, you can define the source port (by default a random one free port
is chosen) and the target port (port 80 by default).
3.3. abget output
While running abget, you can see the probing rates and whether each iteration is
characterized as Increasing (probing rate higher than the available bandwidth),
Non-increasing (less than the available bandwidth) or Grey.
The trend of every stream is decided from the majority of these iterations.
Finally, the tool reports the variation range of the available bandwidth in that time period.
In case that the available bandwidth follows a non-stationary process, which happens if
the path's utilization varies significantly in very small timescales, the abget will report
this state.
A typical output of abget is shown below (while running the linear probing algorithm
for a downstream path with probing range 0 to 100 Mbps, estimation resolution 10 Mbps
and 5 streams per every probing rate):
pinokio:/home/papadog/abget# ./abget -f /packages/pdf/business/26walmart.pdf www.nytimes.com
Configuration file /usr/local/etc/abget/abget.conf loaded
=============== a b g e t ===============
source = 139.91.70.47 [139.91.70.47]
target = www.nytimes.com [199.239.137.200]
target port = 80
source port = 11070
--- Downstream path ---
--- Linear probing ---
Probing from 0.000000 to 100.000000 Mbps with resolution of 10.000000 Mbps
Rate=10.000000 Mbps: NNNNN
Rate=20.000000 Mbps: NNNNN
Rate=30.000000 Mbps: NGNNN
Rate=40.000000 Mbps: NNGNG
Rate=50.000000 Mbps: GGING
Rate=60.000000 Mbps: IGIII
Rate=70.000000 Mbps: IIIII
Rate=80.000000 Mbps: IIIII
Available bandwidth estimated: 40.000000 - 60.000000 Mbps
Execution Time 124.956318
=========================================
A more detailed output can be choosen using the verbose output (-v or --verbose).
Also, the output can be written to a file (-D filename).