前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编译 Linux 内核启用 TCP BBR3

编译 Linux 内核启用 TCP BBR3

作者头像
reizhi
发布2023-10-18 16:37:18
1.3K0
发布2023-10-18 16:37:18
举报
文章被收录于专栏:reizhireizhi

TCP BBR 是 Google 于2016年所发布网络拥塞控制算法,用于尽可能提高带宽利用率。随着时间的推移 TCP BBR 已经来到了 v3 版本,但因为尚处于测试阶段所以目前相关代码并没有汇入主线内核中。现阶段如果需要提前体验 BBR v3 的话手动编译内核是免不了的。不过好在编译并不复杂,在此便做个记录以供参考。

本文所使用的编译环境为 Debian 11,编译时应确保磁盘空间剩余 30G 及以上。请注意当前 BBRv3 仍处于测试阶段,可能存在 BUG 。

1.安装依赖

首先安装一些编译必须用到的软件包,一路确认即可。

代码语言:javascript
复制
sudo apt-get update
sudo apt-get build-dep linux
sudo apt install git screen
sudo apt-get upgrade

2.拉取源码

从 Google 拉取完整的包含 TCP BBR v3 的内核源码,视网络情况这一步可能需要较长时间。

代码语言:javascript
复制
git clone -o google-bbr -b v3  https://github.com/google/bbr.git
cd bbr/

最终显示 100% done 且无报错即可。

3.拷贝配置

我们的最终目的是编译开启 TCP BBR v3,并不是内核参数调优,所以直接拷贝 Debian 的内核参数即可。下载 Debian 6.5 内核到本机并使用 7z 打开。

代码语言:javascript
复制
https://mirrors.edge.kernel.org/debian/pool/main/l/linux/linux-image-6.5.0-1-amd64-unsigned_6.5.3-1_amd64.deb

按照图示路径,将 config-6.5.0-1-amd64 解压至本机后上传至编译机的 BBR 目录中,最后重命名为 .config 。此处如有需要也可以自行替换为 cloud 内核对应的配置文件。

4.编译设置

为避免网络断开或其他意外情况导致编译中断,我们新创建一个 Screen 用于编译内核:

代码语言:javascript
复制
screen -S bbr
cd bbr/
make menuconfig

依序进入:Networking support - Networking options - TCP: advanced congestion control ,确保 BBR TCP 被标记为 <M> 。由于之前已经拷贝过默认配置,正常情况此处无需再额外修改。如确需修改可选中对应行后按空格切换编译选项即可。

另外此处不可再选择 BBRv1 TCP ,因 v3 为 v1 的替代方案,同时选择编译时会出错。

确认完毕后按 Tab 切换到底部菜单,一路选择 Exit 并保存即可,最终退出到终端界面。

由于我们不需要对内核进行任何调试或测试,执行以下命令关闭内核调试

代码语言:javascript
复制
scripts/config --disable MODULE_SIG
scripts/config --disable DEBUG_INFO

5.编译内核

准备工作做完后编译内核反而是最简单的一步,执行以下命令并耐心等待即可。

代码语言:javascript
复制
make -j4 deb-pkg
#可按照编译机 CPU 线程数设置编译线程

编译完成后在上层文件夹中会生成我们所需要的包含 BBRv3 模块的内核文件:linux-image-6.4.0-xxxx.deb 。在任意机器上安装此内核即可启用 BBRv3 :

代码语言:javascript
复制
dpkg -i linux-image-6.4.0-xxxx.deb
# 文件名以实际为准

如何确认当前已启用的 BBR 版本:

代码语言:javascript
复制
modinfo tcp_bbr
#以下为回显
filename:       /lib/modules/6.4.0+/kernel/net/ipv4/tcp_bbr.ko
version:        3
description:    TCP BBR (Bottleneck Bandwidth and RTT)

6.后记

按照 Google 自己的测试结果,BBRv3 相较于 v1 在带宽吞吐量上几乎相同但重传率和传输延迟均有所降低,且改善了 BBRv2 中部分情况下的带宽公平性问题。当前 BBRv3 已经设置为 google.com 上所有 TCP 流量的拥塞控制算法,并且在 youtube.com 上进行 A/B 测试。

此外 Google 还带来了 BBR.Swift ,设计用途为数据中心内部流量的传输拥塞控制算法,这个一般人应该用不上。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.安装依赖
  • 2.拉取源码
  • 3.拷贝配置
  • 4.编译设置
  • 5.编译内核
  • 6.后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档