Files
Knowledge/sunyard/7 信安/BBR是什么?为什么你需要它? (一键开启BBR脚本教程).md
T

131 lines
5.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![BBR是什么?为什么你需要它? (一键开启BBR脚本教程)](https://pic1.zhimg.com/v2-3403eaaf7726a421737e12f4ccfa7bf9_720w.jpg?source=7e7ef6e2&needBackground=1)
在玩 VPS 的圈子里,流传着这样一句话:”买完 VPS 的第一件事,就是开启 BBR。”
如果你发现你的服务器带宽明明很大,本地延迟也不算高,但下载速度就是上不去,看视频总是转圈圈,那么 90% 的概率是因为你没有开启 **TCP BBR**。
今天,我们就来深度聊聊这个能让服务器速度倍增的神器。
---
## 一、 为什么你的带宽被”浪费”了?
在进入正题前,我们要先理解一个概念:**拥塞控制算法**。
互联网传输数据就像公路运输。当路面出现拥塞时,如果司机还在拼命往里塞车,整条路就会瘫痪。TCP 协议为了防止这种情况,设计了”拥塞控制算法”。
### 传统算法的弊端:
传统算法(如 Cubic)采用**基于丢包的被动式拥塞控制**:一旦检测到丢包,就会大幅降低发送速率,然后缓慢恢复。但在跨境网络(如访问海外 VPS)中,丢包往往不是因为拥堵,而是因为线路质量本身的波动(信号干扰或过滤)。
**这就导致了一个尴尬的局面:** 管道其实还没满,但因为偶尔的丢包,传统算法吓得不敢发货,你的带宽自然跑不满。
---
## 二、 BBR 是什么?它是如何”起死回生”的?
**BBR** (Bottleneck Bandwidth and Round-trip propagation time) 是 Google 在 2016 年开源的拥塞控制算法。它通过实时测量**瓶颈带宽 (BtlBw)** 和**最小往返传播时延 (RTprop)** 来优化传输速度。
如果说传统算法是”看到丢包就刹车”的胆小司机,那么 **BBR 就是一位”经验丰富的老司机”**:
1. **它不以丢包为唯一判据:** 通过主动探测带宽和时延,而非被动等待丢包信号。
2. **高效利用带宽:** 即使线路存在一定程度的丢包(比如 5%-10%),BBR 依然能保持极高的吞吐量。
3. **更低的延迟:** 它能有效减少路由器缓存区的堆积,从而降低网络抖动。
**一句话总结:BBR 能够在恶劣的网络环境下,更高效地利用你的带宽资源。**
**典型提升场景:**
- 高延迟环境(>100ms RTT):提升 2-5 倍
- 丢包率 5%-10% 的线路:提升 3-10 倍
- 低延迟、低丢包环境:提升有限(<20%)
---
## 三、 开启前准备:你的 VPS 支持吗?
在动手之前,请先确认你的 VPS 架构:
- **KVM / Xen / VMware:** 完美支持,你可以自由更换系统内核。
- **OpenVZ / LXC:** 通常不支持(除非服务商在母机开启了 BBR)。
目前主流的 Linux 发行版(如 Debian 9+、Ubuntu 18.04+、CentOS 8+)都已经内置了较新版本的内核。**BBR 需要 Linux 4.9+ 内核**,你可以用 `uname -r` 命令查看当前内核版本。
---
## 四、 实战教程:如何开启 BBR?
### 方法 1:官方原生开启法(最稳妥,推荐)
如果你的系统是 **Debian 10/11/12** 或 **Ubuntu 20.04/22.04** 等较新版本,内核通常已经在 4.9 以上,无需安装任何脚本,直接执行以下三行命令即可:
```text
# 1. 将 BBR 配置写入系统变量
echo "net.core.default_qdisc=fq" | sudo tee /etc/sysctl.d/99-bbr.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.d/99-bbr.conf
# 2. 重启使配置生效
sudo sysctl --system
sudo reboot
```
### 方法 2:一键脚本开启法(适用于旧系统或追求极致)
如果你的系统内核较旧(如 CentOS 7),或者你想安装更加激进的 **BBRplus**(魔改版),可以使用社区开发的”四合一”脚本。
**在 SSH 终端输入:**
```text
wget -N --no-check-certificate "https://github.com/chiakge/Linux-NetSpeed/raw/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
```
**注意:** 这是第三方维护的脚本,虽然在社区中广泛使用,但使用前建议查看脚本源码(`cat tcp.sh`)或优先使用官方方法。
**操作提示:**
1. 运行后根据菜单选择”安装内核”(通常建议选择 BBRplus)。
2. 安装完成后,脚本会提示你**重启服务器**。
3. 重启后重新运行 `./tcp.sh`,选择”开启加速”即可。
---
## 五、 如何验证 BBR 是否生效?
开启成功后,输入以下命令进行验证:
```text
# 查看当前正在使用的拥塞控制算法
sudo cat /proc/sys/net/ipv4/tcp_available_congestion_control
```
如果输出结果包含 `bbr` 字样,说明你已经成功起飞!
此外,你还可以通过以下命令查看更多信息:
```text
# 查看当前可用的拥塞控制算法
sudo sysctl net.ipv4.tcp_available_congestion_control
# 查看 BBR 模块是否在运行
sudo lsmod | grep bbr
```
---
## 六、 BBRplus 和 BBRv3 有什么区别?
有些小伙伴会问,脚本里那么多版本怎么选?
- **BBR (官方版):** 最稳定,兼容性最好。适合大部分生产环境。
- **BBRplus:** 网友修改的激进版本,在丢包严重的线路上抢包能力更强。但它可能会占用过多带宽资源,在共享带宽环境下可能影响同机房其他用户,部分服务商可能禁止使用。
- **BBRv3:** Google 最新的优化版本,进一步平衡了吞吐量和公平性。
**站长建议:** 如果是个人爬墙或看视频,**BBRplus** 的体感提升往往最明显;如果是运行重要的网站业务,**原生 BBR** 是首选。
---
## 七、 结语与注意事项
开启 BBR 能让你的 VPS 更高效地利用带宽资源。对于跨境链路来说,它能带来的提升往往是**几倍甚至十几倍**的。
**⚠️ 最后的温馨提示:** 更换内核(尤其是使用一键脚本)属于高风险操作。虽然现在的脚本已经非常成熟,但依然有极小概率导致服务器无法启动。在操作前,请务必执行**快照备份**或者确保重要数据已同步。