前言
较高版本的Linux内核中,有多个高级拥塞控制算法,一些对TCP拥塞控制算法的研究需要进行实验,因此需要在Linux内核中实现多种拥塞控制算法的TCP数据传输。默认情况下,TCP拥塞控制算法为cubic和reno,本文将配置其他多种拥塞控制算法到内核。
一、问题描述
默认情况下,较高版本的Linux内核包含多种拥塞控制算法,但是只有reno和cubic是内核默认拥塞控制算法。
使用如下命令可以查看可以使用的拥塞控制算法:
$ sysctl net.ipv4.tcp_available_congestion_control
我们的目的是添加其他拥塞控制算法选项到内核可选参数中来,系统内核可以在多个拥塞控制算法之间切换。
二、解决方案
1.查看系统中安装的拥塞控制算法模块
$ ls -la /lib/modules/$(uname -r)/kernel/net/ipv4
显示如下:
2.安装指定模块
每条指令都是对一个拥塞控制算法进行安装
$ modprobe -a tcp_westwood
$ modprobe -a tcp_vegas
$ modprobe -a tcp_bic
$ modprobe -a tcp_htcp
$ modprobe -a tcp_bbr
查看拥塞控制算法:
$ sysctl net.ipv4.tcp_available_congestion_control
可以查看到添加拥塞控制算法成功。
之后将探讨对于TCP数据传输中,不同拥塞控制算法的对比。