启用BBR拥塞控制算法

简介: BBR是谷歌开发的TCP拥塞控制算法,能显著提升高延迟、轻微丢包网络下的传输性能。本文介绍在Linux系统上启用和验证BBR的步骤,包括检查内核版本、修改sysctl配置、应用并验证设置,帮助用户优化网络传输速度。

BBR(Bottleneck Bandwidth and Round-trip time)是谷歌开发的一种TCP拥塞控制算法,它能有效提升网络传输速度和性能,尤其在高延迟、有轻微丢包的场景下效果显著。下面是如何在现代Linux系统上启用和验证BBR的步骤。

📋 先决条件

首先,确保你的Linux内核版本是4.9或更高。BBR算法在该版本开始被引入。
你可以通过以下命令检查当前内核版本:

uname -r

🔧 启用步骤

以下是启用BBR的主要步骤概览:

步骤

操作

命令/配置

1. 检查当前算法

查看当前使用的拥塞控制算法

sysctl net.ipv4.tcp_congestion_control

2. 修改sysctl配置

编辑配置文件启用BBR

/etc/sysctl.conf 添加指定行

3. 应用配置

使新的配置立即生效

sudo sysctl -p

4. 验证启用

确认BBR已成功启用

sysctl net.ipv4.tcp_congestion_control

检查当前的拥塞控制算法:在启用之前,你可以先查看系统当前使用的算法,通常默认是cubic

sysctl net.ipv4.tcp_congestion_control

修改sysctl配置文件:使用你喜欢的文本编辑器(如nanovi)打开 /etc/sysctl.conf 文件。

sudo nano /etc/sysctl.conf

将以下两行配置添加到文件末尾:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

这里,net.core.default_qdisc=fq 表示设置公平队列(Fair Queueing)作为默认的队列规则,net.ipv4.tcp_congestion_control=bbr 则是设置TCP拥塞控制算法为BBR。

保存并应用配置:保存对 /etc/sysctl.conf 文件的修改后,运行以下命令使更改立即生效:

sudo sysctl -p

验证BBR是否成功启用:执行以下命令来检查BBR是否已经成为当前的拥塞控制算法。

sysctl net.ipv4.tcp_congestion_control

如果输出结果为 net.ipv4.tcp_congestion_control = bbr,则说明BBR已经成功启用。

📝 额外检查与说明

你也可以使用以下命令查看系统支持的所有拥塞控制算法,确认bbr在其中。

sysctl net.ipv4.tcp_available_congestion_control

在某些系统(如Ubuntu)上,你可能需要显式加载tcp_bbr模块(尽管现代内核通常已将其编译在内)。可以使用 lsmod | grep bbr 来检查。

根据一些资料,BBR对上行流量的加速效果更为显著。这意味着它可能更有利于作为服务器或需要大量上传带宽的场景。

如果以后需要关闭BBR,只需注释掉(或删除)之前在 /etc/sysctl.conf 中添加的两行配置,然后再次运行 sudo sysctl -p 即可。

⚠️ 注意事项

内核版本:确保你的Linux内核版本高于4.9。如果版本过低,你需要先升级内核。

队列规则 (qdisc):建议将默认队列规则设置为 fq (Fair Queueing) 以获得BBR的最佳性能。部分系统也可能使用 fq_codel

网络环境:BBR在存在一定延迟和轻微丢包的网络环境中(如跨国链路)改善效果尤为明显。在网络条件非常好的局域网内,性能提升可能感知不强。

无需重启:通过 sysctl -p 应用配置后通常立即生效,无需重启系统。

目录
相关文章
|
网络协议 算法 测试技术
TCP 拥塞控制详解 | 5. 回避算法
TCP 拥塞控制详解 | 5. 回避算法
570 1
TCP 拥塞控制详解 | 5. 回避算法
|
算法 网络协议 中间件
TCP 拥塞控制算法
最近花了些时间在学习TCP/IP协议上,首要原因是由于本人长期以来对TCP/IP的认识就只限于三次握手四次分手上,所以希望深入了解一下。再者,TCP/IP和Linux系统层级的很多设计都可以用于中间件系统架构上,比如说TCP 拥塞控制算法也可以用于以响应时间来限流的中间件。更深一层,像TCP/IP协议这种基础知识和原理性的技术,都是经过长时间的考验的,都是前人智慧的结晶,可以给大家很多启示和帮助。
TCP 拥塞控制算法
|
机器学习/深度学习 传感器 算法
【控制】基于Matlab实现5GNR—V2X拥塞控制算法
【控制】基于Matlab实现5GNR—V2X拥塞控制算法
|
存储 网络协议 算法
TCP 拥塞控制详解 | 4. 控制算法(下)
TCP 拥塞控制详解 | 4. 控制算法(下)
536 0
TCP 拥塞控制详解 | 4. 控制算法(下)
|
存储 网络协议 算法
TCP 拥塞控制详解 | 4. 控制算法(上)
TCP 拥塞控制详解 | 4. 控制算法(上)
613 0
TCP 拥塞控制详解 | 4. 控制算法(上)
|
网络协议 算法 Linux
TCP 拥塞控制算法简介
最近花了些时间在学习TCP/IP协议上,首要原因是由于本人长期以来对TCP/IP的认识就只限于三次握手四次分手上,所以希望深入了解一下。再者,TCP/IP和Linux系统层级的很多设计都可以用于中间件系统架构上,比如说TCP 拥塞控制算法也可以用于以响应时间来限流的中间件。
|
算法 网络协议 网络性能优化
KBase #11: TCP 拥塞控制算法对网络性能的影响
问题解决状态:[ 已解决 ] 1. 问题所处环境 / Environment 镜像: aliyun-2.1903-x64-20G-alibase-20190327.vhd 及以后所有版本; 内核: kernel-4.19.24-14.al7 及以前所有版本。
1958 0
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
423 0
|
4月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
298 2
|
5月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
285 3