ns2_bbr
ns2_bbr copied to clipboard
Google's TCP BBR implementation for ns2 network simulator
Google BBR implementation for ns-2
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.
TL;DR
This folder has to be next to (at the same level as ) ns-allinone-2.35.
make patch
make all
make plot
How to install & use it
- 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.
Python script
There is a python script which plots some debug data printed by the tcp-bbr code. Take a look at it.
Acknowledgements
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
Bibliography about BBR TCP
Google proposed patch for linux Kernel
Webpage with info about BBR TCP
BBR TCP Commito to Linux Kernel
Bibliography about NS-2 TCP Implementations
ns2 Timers A mini-tutorial for TCP-Linux in NS-2