啊,还有公告啊,太高端啦!!

[转]Linode编译hybla htcp拥塞控制算法模块

随心发 kukugt 2187℃ 0评论

由于某些原因,中美线路有时掉包率会很高,想要尝试尝试优化vps网速,查找资料发现linux内核中存在拥塞控制算法模块(hybla htcp)据说在掉包率高时可以大幅提高访问速度,如果linux默认拥塞控制算法cubic只能流畅观看480p的视频,改为hybla或者htcp则可以流畅观看720p的视频,本人使用的Linode但是Linode提供的内核中并不包含此种算法(只有cubic Reno),无奈只能选择自己编译,编译流程为下:

1. 查看vps内核版本:

uname -r
3.11.6-x86_64-linode35

Linode的内核为3.11.6-x86_64-linode35,下面的教程也以3.11.6内核为例,涉及到内核路径的自己修改替换即可。

2. 下载相同版本的内核源码

可以去https://www.kernel.org/pub/linux/kernel/v3.0/查找内核源码,找到后下载后缀为tar.gz的文件。

rm -rf linux-3.11.6.tar.gz 
mkdir kernel
cd kernel
wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.11.6.tar.gz 
tar xzvf linux-3.11.6.tar.gz

3、安装内核编译工具

编译内核需要下面这些编译工具,不然会编译失败。

CentOS and Fedora
yum update && yum install -y ncurses-devel make gcc

Ubuntu and Debian
apt-get update && apt-get install -y build-essential libncurses5-dev

4、配置内核编译文件

由于我们只是要为内核增加hybla htcp模块,不需要更改其他功能,直接导出官方的配置文件再修改即可。

cd linux-3.11.6
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分钟

在编译时发生如下错

/bin/sh: bc: command not found
make[2]: *** [kernel/time/timeconst.h] Error 127
make[1]: *** [kernel/time] Error 2
make: *** [kernel] Error 2

那么请安装bc

yum -y install bc

5、准备编译模块

cd net/ipv4/
mv Makefile Makefile.old
vi Makefile

有的人可能不同时需要两个模块,这里分开写,不同时编译,自己需要哪个编译那个。

5.1、以下是hybla模块的Makefle内容,注意要把KDIR修改为你自己的源码路径,其他则照抄就可以了。

# Makefile for tcp_hybla.ko
obj-m := tcp_hybla.o
KDIR := /root/kernel/linux-3.11.6
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

5.2、以下是htcp模块的Makefle内容,注意要把KDIR修改为你自己的源码路径,其他则照抄就可以了。

# Makefile for tcp_htcp.ko
obj-m := tcp_htcp.o
KDIR := /root/kernel/linux-3.11.6
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

6、开始编译模块

进入源码根目录,编译模块

cd /root/kernel/linux-3.11.6/
make modules

7、测试模块

这里以hybla模块为例,htcp模块的话自己替换一下名称即可。

cd /root/kernel/linux-3.11.6/net/ipv4
insmod ./tcp_hybla.ko
sysctl net.ipv4.tcp_available_congestion_control

如果成功加载的话会显示下面

net.ipv4.tcp_available_congestion_control = cubic reno hybla

自此为止可以说已经成功了。

8、设置开机自动加载模块

这里以hybla模块为例,htcp模块的话自己替换一下名称即可。

如果需要开机自动加载我们需要把模块复制到/lib/modules/3.11.6-x86_64-linode35/kernel/net/ipv4

mkdir -p /lib/modules/3.11.6-x86_64-linode35/kernel/net/ipv4
cd /lib/modules/3.11.6-x86_64-linode35/kernel/net/ipv4
cp -/root/kernel/linux-3.11.6/net/ipv4/tcp_hybla.ko /lib/modules/3.11.6-x86_64-linode35/kernel/net/ipv4/
cd /lib/modules/3.11.6-x86_64-linode35
depmod -a

9、设置hybal为优先加载

这里以hybla模块为例,htcp模块的话自己替换一下名称即可。

编辑/etc/sysctl.conf在最后添加下面这行即可

net.ipv4.tcp_congestion_control = hybla

自此大功告成收工,实现了动态加载hybla htcp模块,并且实现了开机自动加载。

 

本文转自:http://www.777s.me/linode-hybla-htcp.html – 777’s Blog

转载请注明:╮(╯▽╰)╭GT的个人博客 » [转]Linode编译hybla htcp拥塞控制算法模块

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址