一、先提供原版bbr代码和魔改版bbr代码参考,有兴趣的可以自己对比区别,反正我是看不懂了:
原版BBR(仅供参考,此例不会用到):
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/plain/net/ipv4/tcp_bbr.c
魔改版BBR(下面的步骤会下载该文件):
https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c
注意事项:安装原版BBR只需要安装内核的image即可,对header没有要求,而安装魔改版BBR,编译时系统必须安装4.10以上版本的kernel及对应的linux-header,gcc版本应在4.9以上,以下步骤在ubuntu 14.04及debian 7上测试通过:
二、下载和安装kernel及对应的linux-header
1 2 3 4 5 6 7 8 | wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/linux-headers-4.10.9-041009_4.10.9-041009.201704080516_all.deb dpkg -i linux-headers-4.10.9*.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/linux-headers-4.10.9-041009-generic_4.10.9-041009.201704080516_amd64.deb dpkg -i linux-headers-4.10.9-041009-generic_4.10.9-041009.201704080516_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/linux-image-4.10.9-041009-generic_4.10.9-041009.201704080516_amd64.deb dpkg -i linux-image-4.10.9*.deb |
三、通过以下循环命令删除老的kernel,期间会用到apt-get autoremove等命令,自行按提示操作。
1 2 | dpkg -l|grep linux-image apt-get purge linux-image-3.13.0-83-generic #旧内核linux-image-3.13.0-83-generic |
四、更新grub
update-grub
五、重启系统
reboot
六、检查当前gcc版本,若不是9.4以上则按以下步骤操作:
1 2 3 4 5 6 7 8 9 10 | gcc -v apt-get update apt-get install build-essential apt-get install software-properties-common add-apt-repository ppa:ubuntu-toolchain-r/test apt-get update apt-get install gcc-4.9 g++-4.9 make updatedb ldconfig locate gcc |
这些步骤好了之后gcc -v ,如果你发觉他显示的 gcc版本还是4.8x的话,继续如下步骤,注意一行一行的复制,回车进行下一行,当最后一行输入完毕之后会提示你 gcc安装位置更新成功。
1 2 3 4 5 | update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 49 \ --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 \ --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.9 \ --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.9 \ --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.9 |
以上命令执行完之后再运行一次gcc -v命令,显示是4.9x之后你就可以继续进行下面的安装步骤了。
七、下载魔改版BBR源文件编译安装
1 2 3 4 5 6 7 | wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c echo "obj-m:=tcp_tsunami.o" > Makefile make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-4.9 install tcp_tsunami.ko /lib/modules/$(uname -r)/kernel cp -rf ./tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/net/ipv4 depmod -a insmod tcp_tsunami.ko |
八、 执行以下两条命令添加相关参数到sysctl.conf文件:
1 2 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=tsunami" >> /etc/sysctl.conf |
九、让sysctl.conf文件的修改生效:
sysctl -p
十、恭喜你完工了!