TCPTuner is TCP congestion control kernel module and GUI packaged together. By loading our kernel module (which is essentially a clone of CUBIC), and running the GUI, users can adjust several parameters of the CUBIC congestion control algorithm.
See the TCPTuner Paper (PDF) for more information about the background, implementation, and contributions of TCPTuner.
cd module/ make sudo rmmod tcp_tuner.ko sudo insmod tcp_tuner.ko sudo sysctl -w net.ipv4.tcp_congestion_control=tuner
sudo apt-get install qt5-qmake qt5-default
cd gui/TCPTuner/ qmake make sudo ./TCPTuner
|alpha||Scales W_max, which adjusts the rate at which cwnd grows after a loss event||512|
|beta||beta for multiplicative decrease||717|
|fast_convergence||turn on/off fast convergence||1|
|tcp_friendliness||turn on/off tcp friendliness||1|
ip routeparameters. The GUI will apply these
ip routeparameters to all of the routes in the routing table.
|rto_min||the minimum TCP retransmission timeout to use when communicating with this destination.||None|
|initcwnd||the initial congestion window size for connections to this destination. Actual window size is this value multiplied by MSS.||0|
Before you can run MahiMahi, you must set ip_forward=1
sudo add-apt-repository ppa:keithw/mahimahi sudo apt-get update sudo apt-get install mahimahi
Now, tcp_tuner should be set as the congestion control algorithm.
sudo sysctl -w net.ipv4.ip_forward=1
cd mahimahi/ ./start_all
Now that the bottleneck link is created, we can run multiple clients within that shell.
cd mahimahi/ ./start_shell
To close these
./start_client 5050 1 & <-- creates an tuner client in a new process ./start_client 5050 0 & <-- creates a cubic client in a new process
fg <--to bring one of the kid process to the foreground Ctrl+C (repeat for each client) exit <-- to exit the shell