Simulations for Equation-Based Congestion Control for Unicast Applications

This page has pointers to the simulation scripts for the following paper. These simulation scripts are also available from a tar file (plus getmean-full.tcl). The README file describes the procedures for running these simulations.

Sally Floyd, Mark Handley, Jitendra Padhye, and Joerg Widmer, Equation-Based Congestion Control for Unicast Applications (postscript, PDF), May 2000, to appear in SIGCOMM 2000.

These scripts are quick amalgams of shell scripts, awk, tcl, and whatever else was handy at the time, so they are not intended as an example of good programming style. They are run in a directory with a "graphs" subdirectory for saved output and *.mf files (gnuplot command files), and an "awk" subdirectory for awk files. Some of these scripts use supporting *.awk files that are available in the awk directory, but are not listed separately below. Some of the scripts (tfrm12.run) also use "bwcnt" C programs for processing output data; the C code for these is in the scripts directory. Possibly one day we will clean this all up to reduce the proliferation of scripts and languages involved.

The implementation of TFRC in the NS simulator is still occasionally being modified, so the precise results of simulations can change with different versions of NS.

Some of these simulations must be run with SBSIZE in scoreboard.h set to 10000 instead of to 1024, to allow larger TCP congestion windows.


The simulation for Figure 2 on "Illustration of the Average Loss Interval" (top, middle, and bottom) can be run with:
single.com, with supporting files single.run, single.tcl, and queueSize.tcl.

Generating the postscript file also uses the following files:
graphs/s0.interval.mf, s0.loss.mf, and s0.rate.mf.


Figure 3 on "Oscillations of a TFRC flow over Dummynet" and Figure 4 on "TFRC flow over Dummynet:".
The simulations for Figure 5 on "TCP flow sending rate" (top, bottom) can be run with tfrm-full.CA.DropTail.run, tfrm-full.CA.RED.run with supporting files tfrm-full.CA.tcl, queueSize.tcl, getmean-full.tcl.

These scripts will produce data files called

graphs/s-full-RED.CA.tcpmean
graphs/s-full-DropTail.CA.tcpmean
There are three values for each data point (from three runs) in these output files. To merge them, use merge2.tcl:
merge2.tcl graphs/graphs/s-full-RED.CA.tcpmean > graphs/s-full-RED.CA.tcp
merge2.tcl graphs/graphs/s-full-DropTail.CA.tcpmean > graphs/s-full-DropTail.CA.tcp
Unfortunately, we no longer have the *.mf gnuplot script for generating the postscript from "s-full-RED.CA.tcp" and "s-full-DropTail.CA.tcp".

On a 450MHz Xeon, each graph takes about 7 hours to generate


The simulations for Figure 6 on "TCP competing with TFRC" can be run with:
tfrm12.com, with supporting files tfrm12.run, tfrm12.tcl, awk/plotdrops.awk. and queueSize.tcl.
The supporting programs "bwcnt2" and "bwcnt2a" for processing the output data are compiled from bwcnt2.c and bwcnt2a.c.
On Sally's computer, this simulation set took 13 minutes.

The following supporting files were also required for generating the postscript file:
tfrm12.run1, graphs/getmean.tcl, graphs/s0.12.mf, graphs/s0.loss3.mf.


The simulations for Figure 7 on "Coefficient of variation of throughput between flows" can be run with tfrmvar.run with supporting files tfrmvar.tcl, queueSize.tcl, and graphs/getvar.tcl.

fixcov.tcl combines the many output files together, and gnuplot requires s3xxx.mf to generate the postscript.


When we have collected the scripts for Figure 8, we will put them on-line.
The simulations for Figures 9 and 10 can be run with the script long/doit. The supporting scripts are in the tar file. The simulation takes perhaps one hour.
The simulations for Figures 11-13 can be run with the script short/doit. The simulation takes up to three days.
The simulations for Figure 14 on 40 long-lived flows (TCP, TFRC) can be run with:
queue2.com, with supporting files queue.run, queue.tcl, queueSize.tcl, tracequeue.tcl, awk/plotaveq.awk, and awk/plotqueue.awk.

Generating the postscript file also uses the following files:
graphs/s0.queue.mf.


Figures 15-18 are from experiments.
The simulations for Figure 19 on "A TFRC flow with an end to congestion" can be run with:
increase.com, with supporting files increase.run, increase.tcl, queueSize.tcl, awk/increase.awk, and graphs/s0.packetrate.mf.
The simulations for Figure 20 on "A TFRC flow with persistent congestion" can be run with:
reduce.com, with supporting files reduce.run, reduce.tcl, queueSize.tcl, awk/reduce.awk, and awk/reduce1.awk.

Generating the postscript file also uses the following files:
graphs/s0.rate1.mf.


The simulations for Figure 21 on "Number of round-trip times to reduce the sending rate" can be run with: reduce1.com, with supporting files reduce1.run, reduce.tcl, queueSize.tcl, awk/reduce1.awk, and awk/reduce2.awk.

Generating the postscript file also uses the following files:
graphs/s0.half.mf.


Last modified: April 2001 by Sally.