转自:Linode 自己编译 hybla 与 htcp 内核模块 Linode 自己编译 hybla 与 htcp 内核模块 – 烂记性 赖笔头
1.查看vps内核版本
uname -r 3.19.1-x86_64-linode53
我们可以看到我的Linode的内核版本是3.19.1-x86_64-linode53
, 所以这里我们以3.19.1
内核为例来讲解.
2.下载相同版本的内核源代码
我们去Kernel.org上去下载对应版本的源码, 找到后下载后缀为 tar.gz
文件
cd /usr/src wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.19.1.tar.gz tar xvf linux-3.19.1.tar.gz
3.安装内核编译所需要的工具包
Ubuntu
apt-get update apt-get install -y build-esstential libncurses5-dev
CentOS && Fedora
yum update yum install ncurses-devel gcc make bc
4.配置内核编译文件
因为我们只是为内核添加模块 hybla htcp
, 不需要更改其他的功能, 所以我们只需在现有配置的基础上修改配置文件即可.
cd linux-3.19.1 zcat /proc/config.gz > .config
修改配置文件 .config
置参数 CONFIG_TCP_CONG_CUBIC=y
增加 hybla
模块 添加行 CONFIG_TCP_CONG_HYBLA=y
增加 htcp
模块 添加行 CONFIG_TCP_CONG_HTCP=y
现在我们执行编译命令
make
现在请大家耐心等待内核编译完成, 单核编译约需15分钟
5.编译模块
cd net/ipv4 cp Makefile Makefile.old //把原文件备份,
- 以下是
hybla
模块的Makefile
内容, 请把其中KDIR
替换为你自己的源码路径
vim Makefile # Makefile for tcp_hybla.co obj-m := tcp_hybla.o KDIR := /usr/src/linux-3.19.1 PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
- 以下是
htcp
模块的Makefile
内容, 请把其中KDIR
替换为你自己的源代码路径
# Makefiel for tcp_htcp.co obj-m := tcp_htcp.o KDIR := /usr/src/linux-3.19.1 PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
6.开始编译模块
cd /usr/src/linux-3.19.1 make modules
7.测试模块
这里以 hybla
模块为例来讲解
cd ./net/ipv4 insmod ./tcp_hybla.ko sysctl net.ipv4.tcp_available_congestion_control
如果成功加载的话, 会显示如下信息:
net.ipv4.tcp_available_congestion_control = cubic reno hybla
8.设置开机自动加载该模块
我们仍以 hybla
模块为例
首先我们将模块复制到 /libs/modules/3.19.1-x86_64-linode53
mkdir -p /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4 cd /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4 cp -a /usr/src/linux-3.19.1/net/ipv4/tcp_hybla.ko /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4/ cd /lib/modules/3.19.1-x86_64-linode53 depmod -a
9.设置hybla为优先加载
编辑 /etc/sysctl.conf
文件, 在文件的末尾添加如下行:
net.ipv4.tcp_congestion_control = hybla
至此, 我们完成了编译、加载模块 hybla
, 并且实现了开机自动加载。
10.编辑sysctl.conf优化TCP
vim /etc/sysctl.conf //添加下面规则
kernel.shmall = 4294967296
fs.file-max=65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_congestion_control = htcp
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
其他centos改变内核方法:
如果你的vps自带算法模块可以通过:
/sbin/modprobe tcp_hybla 然后通过在配置文件选择hybla算法实现开机自动优先加载!