[e2e] a patch that runs Linux congestion control algorithms in NS2

Xiaoliang (David) Wei weixl at caltech.edu
Mon May 15 12:34:01 PDT 2006

    I guess this may help some colleagues in e2e who are evaluating the
performance of different TCP congestion control algorithms with NS2.

    The patch incorporates 9 modulized congestion control algorithms in 
Linux 2.6.16-3. The simulation speed and memory usage are very similar
to other standard NS TCPs that we are currently using (such as Sack1)
and the usage is almost the same as the current NS TCPs (except adding
one command to select congestion control module).

    The patch can be downloaded from
http://www.cs.caltech.edu/~weixl/technical/ns2linux/index.html and the
page has more details on the usage, results comparing to Linux+Dummynet 
experiments, and the designs of the code.
    If you find any problem, please let me know.:)

A little bit more details (See the link above for more details):

1. In the patch, I added a new TCP class which is called LinuxTCPAgent.
The class loosely follows the ack processing path in Linux TCP with many 
simplifications. It calls congestion control modules to change the cwnd
and ssthreshold, as Linux does. You can always add your own congestion
control algorithms with minor modifications, as long as you get the
source codes of their Linux congestion control modules.

2. I also added a new Scoreboard design which can process SACK in a
similar way as Linux does, while maintaining the similar simulation
speed as scoreboard-rq.

3. Some Limitations: D-SACK, F-RTO and ECN process is yet to be
implemented. Also, since the TCPSink in NS2 has some difference from
Linux receiver process, the cwnd trajectory from simulation results are
not exactly the same as Linux experiments.


Xiaoliang (David) Wei      Graduate Student, CS at Caltech

More information about the end2end-interest mailing list