
🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
| 专栏名称 | 专栏介绍 |
| 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 | |
| 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! | |
| 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 | |
| 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 | |
| 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 | |
| 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录

谷歌开发的 BBR(Bottleneck Bandwidth and Round-trip Time) 是一种创新的 TCP 拥塞控制算法。它通过主动探测网络路径的带宽和延迟来优化数据传输,而非传统算法依赖“丢包”作为拥塞信号,从而在复杂网络环境下(尤其是存在一定丢包或高延迟的链路)能更有效地提升吞吐量和降低延迟。
下表清晰展示了 BBR 与传统算法(如 CUBIC)的核心差异。
| 特性维度 | BBR 算法 | 传统算法(如 CUBIC) |
|---|---|---|
| 核心原理 | 主动探测路径的瓶颈带宽 与最小延迟,动态调整发送速率 | 依赖丢包作为网络拥塞的主要信号 |
| 目标 | 最大化吞吐量的同时保持低延迟,避免网络缓冲区膨胀 | 尽力填满网络管道,易导致缓冲区排队,增加延迟 |
| 高延迟/有损网络表现 | 优异,能有效利用可用带宽,对丢包不敏感 | 较差,误将传输错误丢包视为拥塞,不必要的降速 |
| 公平性 | 与 CUBIC 等共存时,BBRv2 公平性有改善 | 在深缓冲区环境下抢占能力强 |
| 部署要求 | 需 Linux 内核 4.9+,仅需发送端支持 | 内核广泛支持,为传统默认算法 |
🔧 配置 BBR 的操作步骤
为服务器启用 BBR 的过程主要涉及内核版本检查和参数配置。
-
检查当前内核版本与环境
BBR 需要 Linux 内核版本 4.9 或更高。首先通过以下命令验证:
uname -r如果输出版本低于 4.9,你需要先升级内核。同时请注意,BBR 需要特定的虚拟化环境支持(如 KVM、Xen),在 OpenVZ 等容器化环境下可能无法使用。
-
启用 BBR
若内核版本符合要求,通过修改系统配置来启用 BBR。
# 1. 将BBR和相关队列规则(qdisc)设置写入系统配置文件 echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf # 推荐与BBR配对的队列规则 echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf # 设置BBR为默认拥塞控制算法 # 2. 重新加载sysctl配置,使其立即生效 sysctl -p -
验证 BBR 是否成功启用
执行以下命令检查 BBR 状态:
# 检查当前可用的拥塞控制算法,输出应包含 'bbr' sysctl net.ipv4.tcp_available_congestion_control # 检查当前正在使用的拥塞控制算法,输出应为 'bbr' sysctl net.ipv4.tcp_congestion_control # 检查BBR内核模块是否已加载 lsmod | grep bbr成功启用后,你将看到类似以下的输出:
net.ipv4.tcp_available_congestion_control = bbr cubic reno net.ipv4.tcp_congestion_control = bbr tcp_bbr 20480 2 # 具体数字可能不同
⚡ BBR 的提升效果与适用场景
BBR 的提升效果因网络环境而异,通常在以下场景表现突出:
-
高延迟、高带宽的网络路径:例如跨洲际的数据传输、视频流媒体服务器,BBR 能更充分地利用物理带宽。
-
存在一定随机丢包率的网络:如无线网络、移动网络或拥堵的公共网络,BBR 不会因轻微丢包而大幅降低发送速率,从而保持更高的平均吞吐量。Google 在 YouTube 上的实践表明,部署 BBR 后,全球用户的中位数延迟降低了约 53%,在发展中国家的延迟降低幅度甚至达到 80%。
-
需要降低延迟的应用:在线游戏、视频会议、实时音视频等对延迟敏感的服务,BBR 通过避免数据包在缓冲区长时间排队,能有效降低传输延迟。
有测试案例显示,在特定的跨洋网络环境下,开启 BBR 后下载速度从 647 KB/s 提升至 22.1 MB/s。
💡 进阶了解:BBR 的工作原理简述
BBR 的核心思想是找到网络路径的两个关键参数并努力在其最佳操作点运行:
-
BtlBw:路径的瓶颈带宽,即数据传输路径上的最小带宽。
-
RTprop:往返传播延迟,即数据包在空载网络中的往返时间。
BBR 通过一个包含启动、排空、带宽探测、延迟探测的状态机,周期性地测量这两个参数,并据此计算合适的发送速率和窗口大小,力图使数据流以 BtlBw 的速率运行,同时在网络中保持的数据量恰好是 BtlBw * RTprop,从而既充分利用带宽,又避免在缓冲区中堆积数据包导致延迟增加。
⚠️ 注意事项
-
内核版本是关键:确保内核版本足够新是前提。
-
并非万能:在网络本身已经非常良好(无丢包、低延迟)且无深缓冲区的情况下,BBR 的提升效果可能不如在复杂网络环境下显著。
-
考虑 BBRv2:BBR 也在持续演进,BBRv2 算法在公平性、收敛速度等方面有进一步改进,适用于对性能有极致要求的场景。
-
测试的重要性:在生产环境大规模部署前,建议先在测试环境进行验证,观察其对具体应用的实际效果。
希望这份详细的指南能帮助您成功启用 BBR 并提升服务器网络性能!如果您在具体操作中遇到问题,欢迎随时提出。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙



被折叠的 条评论
为什么被折叠?



