Add TCP congestion control variant to Linux Ubuntu

9,073

Have a look here to see what modules you have installed...

ls -la /lib/modules/$(uname -r)/kernel/net/ipv4

You should get a list of modules, I got this.

tcp_bic.ko
tcp_diag.ko
tcp_highspeed.ko
tcp_htcp.ko
tcp_hybla.ko
tcp_illinois.ko
tcp_lp.ko
tcp_scalable.ko
tcp_vegas.ko
tcp_veno.ko
tcp_westwood.ko

You can see what your kernel has configured by greping your config file for TCP_CONG ie

grep TCP_CONG /boot/config-$(uname -r)
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_DEFAULT_TCP_CONG="cubic"

To try one of these you need to install it using modprobe -a tcp_westwood or whatever you want. You can then test it using this

echo "westwood" > /proc/sys/net/ipv4/tcp_congestion_control 
Share:
9,073

Related videos on Youtube

IoT
Author by

IoT

Updated on September 18, 2022

Comments

  • IoT
    IoT over 1 year

    I want to test different variants of TCP in Linux Ubuntu. I have Ubuntu 14.04 LTS with Kernel version 3.14. When I check the available congestion control algorithm using the following command sysctl net.ipv4.tcp_available_congestion_control I get only: cubic and reno. However, I want to test other variants like Hybla, HighSpeed. If I run the menuconfig I can select the variants which I want and compile the Kernel. But in my case, I already have the kernel compiled so is it possible to have some Linux package which contains TCP variants as loadable kernel modules?