This is an implementation of Google's BBR TCP Congestion Control Algorithm for the ns-2 network simulator to be used on the ICCRG TCP Evaluation Suite
This is an unfinished implementation Contributions are welcome.
This folder has to be next to (at the same level as ) ns-allinone-2.35.
make patch
make all
make plot
- We assume your working ns-allinone-2.35 folder is next to the folder containing this repository, that is:
|- bbr
| |-Makefile
| |-tcp.h
| |- (...)
|
|- ns-allinone-2.35
|- ns-2.35
|- include
|- bin
|- (...)
- If it is the first time you install this, yo have to patch three important files:
Makefile.in
tcp/tcp.h
lib/tcl/ns-defaults.tcl
You can apply these patches by doing:
make patch
-
After doing this, you need to call
make all
to copy the code and the.tcl
script into ns2.35. This copy is separated from the patch rule becausetcp-bbr.cc
is completely original, so you can replace it without breaking anything (but bbr). So, from now on and after performing these steps, if you want to play with the code and change it, the only thing you need to do to test it is to perform again:make all
. -
In order to plot the wonderful graphs you see above, you can call
make plot
.
Don't hesitate to take a look at the Makefile, it is very simple.
There is a python script which plots some debug data printed by the tcp-bbr code. Take a look at it.
This code is based on Google's proposed patch for the linux kernel. It's specific ns-2 implementation is heavily influenced on the Ledbat implementation for ns-2 simulator
Google proposed patch for linux Kernel
Webpage with info about BBR TCP
BBR TCP Commito to Linux Kernel
ns2 Timers A mini-tutorial for TCP-Linux in NS-2