相信小伙伴們對 Google 的 TCP BBR 擁塞控制算法都不陌生。dog250大佬曾經提出過TCP BBR存在的一些問題並提供了修正后的代碼,於是有了BBRplus。Google也並非不知道初代BBR存在的問題,如今BBR v2 Alpha/Preview 已經發布了。
如果想體驗BBR v2,可以直接下已經載編譯完成的內核或者用一鍵腳本進行更換。雖然萌櫻不能明確告訴小伙伴們 BBRplus 跟 BBR v2 哪個加速效果更好,但筆者推薦用 Google 官方的 BBR v2 。小伙伴們可以自行體驗,畢竟同一套算法在不同的網絡環境中也會存在很大差異。
GitHub:https://github.com/google/bbr/tree/v2alpha
TCP BBR v2 alpha 源碼:tcp_bbr2.c
安裝編譯環境
1 apt install -y build-essential libncurses5-dev git screen
2 apt -y build-dep linux
編譯內核
1 git clone -o google-bbr -b v2alpha https://github.com/google/bbr.git
2 cd bbr
3 make menuconfig
4
5 # 禁用簽名調試
6 scripts/config --disable MODULE_SIG
7 scripts/config --disable DEBUG_INFO
進入Networking support ---> Networking options ---> TCP: advanced congestion control --->
,選中BBR2 TCP
按空格標上M
,其他默認,然后保存退出。
開始編譯
1 screen -S kernel
2 make -jN deb-pkg # N 為線程數
按Ctrl + A
再按D
后台編譯
編譯需要很長的時間,編譯完成后/root
下生成以下文件
1 linux-headers-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
2 linux-image-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
更換內核
1 cd /root
2
3 # 安裝 BBR v2alpha 內核
4 dpkg -i linux-headers-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
5 dpkg -i linux-image-5.2.0-rc3+_5.2.0-rc3+-1_amd64.deb
6 dpkg -l|grep linux-headers | awk '{print $2}'
7 dpkg -l|grep linux-image | awk '{print $2}'
8
9 # 刪除原版內核
10 apt purge -y "linux-image-4.9.0-9-amd64"
11 update-grub
12 reboot
開啟 BBR v2
輸入以下命令開啟 BBR v2
1 echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
2 echo "net.ipv4.tcp_congestion_control = bbr2" >> /etc/sysctl.conf
3 sysctl -p
輸入以下命令開啟 ECN
1 echo "net.ipv4.tcp_ecn = 1" >> /etc/sysctl.conf
2 echo "net.ipv4.tcp_ecn_fallback = 1" >> /etc/sysctl.conf
3 sysctl -p
查看是否開啟 BBR v2
1 sysctl net.ipv4.tcp_available_congestion_control
顯示以下即已開啟 BBR v2
1 # sysctl net.ipv4.tcp_available_congestion_control
2 net.ipv4.tcp_available_congestion_control = reno cubic bbr2
查看 BBR v2 是否生效
1 lsmod | grep bbr
顯示以下即 BBR v2 已生效
1 # lsmod | grep bbr
2 tcp_bbr2 40960 1