标签 BBR 下的文章

from http://www.hostloc.com/thread-372361-1-1.html

简介

在Debian 8 和Ubuntu16 + 系统上一键部署魔改版BBR,自动换内核成 4.10.15 ,自动安装Headers。
用户只需要将系统安装成 Debian 8 或者 Ubuntu 16 即可,剩下的交给脚本来吧。
1
参考资料
魔改BBR原帖:http://www.hostloc.com/thread-372277-1-2.html
萌新教程: http://www.hostloc.com/thread-372335-1-1.html
脚本技术: https://doub.io/wlzy-16/

安装使用(一键代码)

wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/YankeeBBR/master/bbr.sh && bash bbr.sh install

安装过程中如果出现这张图片,请选择NO 来删除其他内核:
2
然后根据提示重启系统。
重启完成后,运行

bash bbr.sh start

即可启动魔改版BBR。

特殊情况
部分商家的VPS可能会遇到换内核之后无法启动系统的情况,所以请运行脚本前一定要备份好重要数据!!

查看魔改BBR状态

运行命令

sysctl net.ipv4.tcp_available_congestion_control

如果看到有 tsunami 就表示开启成功!
3


来自 https://www.v2ex.com/t/353778
首先感谢 91yun 的 linhua :
https://www.91yunbbs.com/discussion/comment/1382/#Comment_1382

2 个相关链接:
https://www.netdevconf.org/2.1/session.html?tazaki
https://github.com/lkl/linux

教程从这里开始

先去 VPS 的 Panel 里打开 TUN/TAP 功能

创建一个 tap0

ip tuntap add tap0 mode tap
ip addr add 10.0.0.1/24 dev tap0
ip link set tap0 up

打通 tap0 和 host 之间的网络

iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE

假设我们准备在 443 端口开启 BBR

iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2

安装 haproxy ,并禁止开机自启

apt-get install haproxy
update-rc.d haproxy disable

新建一个 /root/haproxy/haproxy.cfg

假设你原来的 server 监听的是 12580 端口, BBR 的端口开在 443 。

defaults
mode tcp
timeout connect 5s
timeout client 60s
timeout server 60s

listen shadowsocks
bind 10.0.0.2:443
server server1 10.0.0.1:12580

下载 Linux Kernel Library ,解压到 /root/haproxy

https://drive.google.com/file/d/0ByqeeKN198fcdDVLMmVKakl5VE0/view?usp=sharing

tar -xzvf liblkl-hijack.so.tgz

是时候开启 haproxy 为 BBR 过桥了,以下命令必须一行打完

LD_PRELOAD=/root/haproxy/liblkl-hijack.so LKL_HIJACK_NET_QDISC="root|fq" LKL_HIJACK_SYSCTL='net.ipv4.tcp_congestion_control="bbr";net.ipv4.tcp_wmem="4096 65536 67108864"' LKL_HIJACK_NET_IFTYPE=tap LKL_HIJACK_NET_IFPARAMS=tap0 LKL_HIJACK_NET_IP=10.0.0.2 LKL_HIJACK_NET_NETMASK_LEN=24 LKL_HIJACK_NET_GATEWAY=10.0.0.1 LKL_HIJACK_OFFLOAD="0x8883" haproxy -f /root/haproxy/haproxy.cfg

大功告成!

现在可以用客户端连上试试看了
12580 是原来 server 的端口
443 是开启 BBR 以后的端口

后记

如果需要把原来 12580 端口的 UDP 协议也转发到 443 端口,可以添加以下命令

iptables -t nat -A PREROUTING -i venet0 -p udp --dport 443 -j REDIRECT --to-port 12580

补充一个安全性的更新,感谢 @BOYPT ,原来的 haproxy 是以 root 用户启动,建议在 haproxy.cfg 文件顶部增加如下内容。
global
user haproxy
group haproxy

顺便再推荐一个个人认为不错的应用场合。
将 nginx 的 80 和 443 端口改为 10080 和 10443 ,让开了 BBR 的 haproxy 监听 80 和 443 端口,配置文件里将这 2 个端口指向 10080 和 10443 。就能让你的网站享受 BBR 带来的加成了。

教程中最后一大行参数中有一个参数格式写错了,正确的格式如下,感谢 @weyou 指出。

LKL_HIJACK_SYSCTL="net.ipv4.tcp_congestion_control=bbr;net.ipv4.tcp_wmem=4096 65536 67108864"

既然你们都喜欢快餐,那我提供一个脚本吧。

手动调试成功后,就可用下面脚本设置开机自启。

安装 supervisor ,添加配置文件,用于开机自启

/etc/supervisor/conf.dhaproxy-lkl.conf

[program:haproxy-lkl]
command=/root/haproxy/haproxy-lkl-start
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/root/haproxy/haproxy-lkl_stdout.log
stdout_logfile_maxbytes=1MB
stderr_logfile=/root/haproxy/haproxy-lkl_stderr.log
stderr_logfile_maxbytes=1MB

haproxy 配 Linux Kernel Library 的启动脚本。

原来的服务监听 12580 端口。开启 BRR 后,新的监听端口在 443 。

/root/haproxy/haproxy-lkl-start

!/bin/sh

ip tuntap add tap0 mode tap
ip addr add 10.0.0.1/24 dev tap0
ip link set tap0 up

iptables -P FORWARD ACCEPT

iptables -t nat -D PREROUTING -i venet0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2

iptables -t nat -D PREROUTING -i venet0 -p udp --dport 443 -j REDIRECT --to-port 12580
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 443 -j REDIRECT --to-port 12580

export LD_PRELOAD=/root/haproxy/liblkl-hijack.so
export LKL_HIJACK_NET_QDISC="root|fq"
export LKL_HIJACK_SYSCTL="net.ipv4.tcp_congestion_control=bbr;net.ipv4.tcp_wmem=4096 65536 67108864"
export LKL_HIJACK_NET_IFTYPE=tap
export LKL_HIJACK_NET_IFPARAMS=tap0
export LKL_HIJACK_NET_IP=10.0.0.2
export LKL_HIJACK_NET_NETMASK_LEN=24
export LKL_HIJACK_NET_GATEWAY=10.0.0.1
export LKL_HIJACK_OFFLOAD="0x8883"
export LKL_HIJACK_DEBUG=1

haproxy -f /root/haproxy/haproxy.cfg

一键脚本

OpenVZ的UML+BBR+SSR加速一键包


魔改 BBR 一键脚本 for Debian | CentOS && github
【最后的更新】如何维护一个属于自己的 bbr 魔改?
维护一个自己的 bbr 魔改

一、ubuntu/debian系统
下载新内核:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9-rc8/linux-image-4.9.0-040900rc8\
-generic_4.9.0-040900rc8.201612051443_amd64.deb

安装内核:

dpkg -i linux-image-4.9.0*.deb

删除其他内核:

dpkg -l|grep linux-image 
sudo apt-get remove linux-image-[Tab补全] #删4.9.0以外的旧内核

更新 grub 系统引导文件并重启

update-grub
reboot

开启BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control

查看下是否有BBR:lsmod | grep bbr

二、centos7:

    wget http://mirrors.kernel.org/debian/pool/main/l/linux/linux-image-4.9.0-rc8-amd64-un
signed_4.9~rc8-1~exp1_amd64.deb
    ar x linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb
    tar -Jxf data.tar.xz
    install -m644 boot/vmlinuz-4.9.0-rc8-amd64 /boot/vmlinuz-4.9.0-rc8-amd64
    cp -Rav lib/modules/4.9.0-rc8-amd64 /lib/modules/
    depmod -a 4.9.0-rc8-amd64
    #centos >= 6
    dracut -f -v --hostonly -k '/lib/modules/4.9.0-rc8-amd64'  /boot/initramfs-4.9.0-rc8-a
md64.img 4.9.0-rc8-amd64
    grub2-mkconfig -o /boot/grub2/grub.cfg

修改/boot/grub2/grub.cfg 把4.9.0的内核启动 放到第一位。
然后reboot
开启BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control

查看下是否有BBR:lsmod | grep bbr

CentOS7安装bbr的正确姿势:更新到7.3,安装elrepo官方4.9正式版

1:首先yum update -y更新到最新CentOS 7.3 1611
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

2: 安装elrepo内核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
修改让elrepo yum update时可用
vim /etc/yum.repos.d/elrepo.repo
[elrepo-kernel]
name=ELRepo.org Community Enterprise Linux Kernel Repository - el7
baseurl=http://elrepo.org/linux/kernel/el7/$basearch/

    http://mirrors.coreix.net/elrepo/kernel/el7/$basearch/
    http://jur-linux.org/download/elrepo/kernel/el7/$basearch/
    http://repos.lax-noc.com/elrepo/kernel/el7/$basearch/
    http://mirror.ventraip.net.au/elrepo/kernel/el7/$basearch/

mirrorlist=http://mirrors.elrepo.org/mirrors-elrepo-kernel.el7
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org

把enabled=0改成enabled=1
然后保存之后yum update -y,就会更新到elrepo正式版4.9内核

3:跟着vim /etc/sysctl.conf
加两行:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

sysctl -p生效,就ok了。

这样是肯定不会挂的。

CentOS6一键BBR脚本----更新4.9正式版内核

原帖:http://www.hostloc.com/thread-342622-1-1.html
更新支持4.9正式版内核

wget --no-check-certificate https://github.com/52fancy/GooGle-BBR/raw/master/BBR.sh && sh BBR.sh

暂时只支持centos6 32位和64位
详细说明请移步
https://github.com/52fancy/GooGle-BBR

比锐速还强的 TCP拥塞控制技术 —— TCP-BBR 测试及开启教程
Linode CentOS7开启Google TCP-BBR优化算法 && 评论区

一键安装脚本

一键安装最新内核并开启 BBR 脚本
TCP-BBR 一键安装脚本