跳轉到內容

Linux BBR 擁塞控制算法開啟教程 | VPS 網絡加速完全指南

Linux BBR Network Optimization

當我們買了一臺國外的 VPS,特別是搭建了 Web 服務或者科學上網代理節點時,往往會發現網絡速度跑不滿,甚至在晚高峰時會有卡頓或丟包現象。

這個時候,開啟 BBR 是最基礎、也是最立竿見影的優化手段。

什麼是 BBR?

TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) 是一種由 Google 開發的 TCP 擁塞控制算法。

傳統的擁塞控制算法(比如 Reno 或 CUBIC)是基於系統發生“丟包”事件後,才認為網絡擁堵並開始減速的。而這在跨境長距離傳輸時(往往存在正常的物理遠距離丟包)會極大地限制傳輸速度。 BBR 則通過實時計算帶寬和延遲,主動預測並控制發送速率,可以大幅度提升網絡吞吐量,極大程度降低延遲。

一句話:它能讓你的 VPS 跑得更快、更穩!

BBR vs 傳統算法對比

特性傳統算法 (CUBIC/Reno)BBR
檢測方式基於丟包判斷擁堵基於帶寬和延遲預測
響應速度被動響應(丟包後減速)主動預測(提前調整)
長距離傳輸性能下降明顯保持穩定高速
緩衝區佔用容易填滿緩衝區最小化緩衝區佔用
適用場景局域網、短距離跨洋、長距離傳輸

前置條件檢測

現在的 Linux 系統其實都極其先進了。Linux 內核在版本 4.9 及以上就已經內置了原生的 BBR 模塊。 (最新的 Debian 11/12 或 Ubuntu 20.04/22.04 更是遠超這個版本號)。

我們在動手之前,可以先通過以下命令看看當前內核版本:

bash
uname -r

如果輸出的是 4.9.xxx 或者是 5.x/6.x 這樣大於 4.9 的版本號,你就可以直接免安裝一鍵開啟了。

檢查系統是否支持 BBR

bash
# 檢查內核模塊是否存在
modprobe tcp_bbr

# 檢查可用的擁塞控制算法
sysctl net.ipv4.tcp_available_congestion_control

預期輸出應包含:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

原生一鍵開啟 BBR 指南

由於我們使用的是最新的發行版(如 Debian 或 Ubuntu),完全不需要藉助任何第三方複雜的“一鍵腳本”來更換內核。這隻需要修改兩行系統變量即可。

這裡提供三種方法,推薦使用方法 3。

方法 1:手動修改配置文件

  1. 登錄 VPS 終端執行以下命令,直接將兩行配置項追加到系統的 sysctl.conf 文件中:
    bash
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
  2. 然後讓系統重新加載剛才的配置,使 BBR 立即生效:
    bash
    sysctl -p

方法 2:使用一行自動化命令

直接複製下面這行“萬能命令”並在終端回車,它會自動完成驗證、修改並生效的全部動作,適合純小白操作:

bash
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf && echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && sysctl -p

方法 3:使用專用配置文件(推薦)

創建獨立的 BBR 配置文件,便於管理和維護:

bash
# 創建 BBR 專用配置文件
cat > /etc/sysctl.d/99-bbr.conf <<EOF
# Enable BBR congestion control
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF

# 應用配置
sysctl --system

優勢:

  • ✅ 配置獨立,不與其他設置衝突
  • ✅ 優先級高(99 開頭)
  • ✅ 易於備份和遷移

如何驗證 BBR 是否成功開啟?

執行完上面簡單的配置動作後,咱們來確認一下它到底生效了沒有。

驗證方法 1:檢查內核模塊

bash
lsmod | grep bbr

如果終端輸出了類似下面的內容(重點是包含了 tcp_bbr 即可,後面的數字不用在意),說明 BBR 已經成功開啟並在運行中啦!

text
tcp_bbr                20480  10

驗證方法 2:檢查當前擁塞控制算法

bash
# 查看當前使用的擁塞控制算法
sysctl net.ipv4.tcp_congestion_control

# 應該輸出:
# net.ipv4.tcp_congestion_control = bbr

驗證方法 3:檢查隊列規則

bash
# 查看默認的隊列規則
sysctl net.core.default_qdisc

# 應該輸出:
# net.core.default_qdisc = fq

驗證方法 4:綜合檢查腳本

創建一個快速檢查腳本:

bash
#!/bin/bash
echo "=== BBR 狀態檢查 ==="
echo ""

echo "1. 內核版本:"
uname -r

echo ""
echo "2. 當前擁塞控制算法:"
sysctl net.ipv4.tcp_congestion_control

echo ""
echo "3. 默認隊列規則:"
sysctl net.core.default_qdisc

echo ""
echo "4. BBR 模塊加載狀態:"
if lsmod | grep -q tcp_bbr; then
    echo "✅ BBR 已加載"
    lsmod | grep tcp_bbr
else
    echo "❌ BBR 未加載"
fi

echo ""
echo "5. 可用擁塞控制算法:"
sysctl net.ipv4.tcp_available_congestion_control

保存為 check_bbr.sh,賦予執行權限後運行:

bash
chmod +x check_bbr.sh
./check_bbr.sh

恭喜你,這臺 VPS 的網絡性能已經被榨出很大潛力了!


BBR 性能測試與對比

測試工具準備

安裝 speedtest-cli:

bash
# Debian/Ubuntu
apt install -y speedtest-cli

# 或使用 pip 安裝
pip install speedtest-cli

測試步驟

1. 關閉 BBR 進行基準測試

bash
# 臨時切換到 CUBIC
sysctl -w net.ipv4.tcp_congestion_control=cubic

# 運行速度測試
speedtest-cli

2. 開啟 BBR 再次測試

bash
# 切換到 BBR
sysctl -w net.ipv4.tcp_congestion_control=bbr

# 再次運行速度測試
speedtest-cli

3. 對比結果

記錄以下指標:

  • 下載速度(Download)
  • 上傳速度(Upload)
  • 延遲(Latency)
  • 抖動(Jitter)

實際測試案例

在某美國西海岸 VPS(1Gbps 端口)上的測試結果:

指標CUBIC(關閉 BBR)BBR(開啟)提升幅度
下載速度45 Mbps78 Mbps+73%
上傳速度38 Mbps65 Mbps+71%
延遲185 ms162 ms-12%
晚高峰穩定性波動大穩定顯著改善

BBR 進階優化

1. 調整 BBR 參數

BBR 有一些可調參數,可以根據實際情況優化:

bash
# 編輯 sysctl 配置
nano /etc/sysctl.d/99-bbr.conf

# 添加以下優化參數
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq

# BBR 優化參數
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_slow_start_after_idle = 0

參數說明:

  • tcp_rmem: TCP 接收緩衝區大小(最小/默認/最大)
  • tcp_wmem: TCP 發送緩衝區大小(最小/默認/最大)
  • tcp_max_syn_backlog: SYN 隊列長度
  • tcp_slow_start_after_idle: 禁用空閒後的慢啟動

應用配置:

bash
sysctl --system

2. BBRv2 與 BBRv3

Google 持續改進 BBR 算法:

  • BBR v1: 基礎版本,已足夠優秀
  • BBR v2: 改進了公平性和 RTT 估計
  • BBR v3: 最新實驗版本,進一步優化

檢查是否可用:

bash
# 查看可用的 BBR 版本
sysctl net.ipv4.tcp_available_congestion_control | grep bbr

目前大多數發行版默認提供 BBR v1,如需使用 v2/v3,可能需要編譯新內核。

3. 針對特定場景優化

科學上網節點優化

bash
# 針對代理流量優化
cat > /etc/sysctl.d/99-proxy.conf <<EOF
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_fastopen_blackhole_timeout_sec = 0
EOF

sysctl --system

Web 服務器優化

bash
# 針對 HTTP/HTTPS 流量優化
cat > /etc/sysctl.d/99-web.conf <<EOF
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
net.core.somaxconn = 65535
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1
EOF

sysctl --system

常見問題排查

Q1: 開啟 BBR 後網速反而變慢?

可能原因:

  1. 網絡本身質量差,BBR 無法發揮作用
  2. 其他網絡瓶頸(如帶寬限制、防火牆)
  3. BBR 參數不適合當前網絡環境

解決方案:

bash
# 1. 檢查網絡質量
ping -c 10 google.com

# 2. 臨時切換回 CUBIC 測試
sysctl -w net.ipv4.tcp_congestion_control=cubic

# 3. 對比兩種算法的表現
# 如果 CUBIC 更好,保持使用 CUBIC

Q2: BBR 模塊加載失敗?

錯誤信息:

modprobe: FATAL: Module tcp_bbr not found

原因: 內核版本過低(< 4.9)

解決方案:

bash
# 檢查內核版本
uname -r

# 如果版本低於 4.9,需要升級內核
# Debian/Ubuntu
apt update
apt install linux-image-amd64

# 重啟系統
reboot

Q3: 重啟後 BBR 失效?

原因: 配置未正確保存到 /etc/sysctl.conf

解決方案:

bash
# 檢查配置文件
cat /etc/sysctl.conf | grep bbr

# 如果沒有,重新添加
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

# 或者使用專用配置文件(推薦)
cat > /etc/sysctl.d/99-bbr.conf <<EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF

# 應用配置
sysctl --system

Q4: 如何完全禁用 BBR?

bash
# 切換回 CUBIC
sysctl -w net.ipv4.tcp_congestion_control=cubic

# 從配置文件中刪除 BBR 相關行
nano /etc/sysctl.conf
# 刪除或註釋掉包含 bbr 的行

# 或刪除專用配置文件
rm /etc/sysctl.d/99-bbr.conf

# 重新加載配置
sysctl --system

BBR 與其他優化工具配合

1. BBR + FinalSpeed/KCP

對於科學上網場景,BBR 可以與 KCP 協議配合使用:

bash
# 確保 BBR 開啟
sysctl net.ipv4.tcp_congestion_control

# 在 Shadowsocks/V2Ray 中啟用 KCP 模式
# KCP 負責應用層優化,BBR 負責傳輸層優化

2. BBR + CDN

如果使用了 CDN(如 Cloudflare):

  • BBR 優化源站到 CDN 的連接
  • CDN 優化用戶到邊緣節點的連接
  • 兩者互補,效果更佳

3. BBR + 多線路負載均衡

對於多線 VPS:

bash
# 可以為不同網卡設置不同的擁塞控制
# 但通常全局設置已足夠
sysctl net.ipv4.tcp_congestion_control=bbr

總結

開啟 BBR 是 VPS 網絡優化的第一步,也是最重要的一步

關鍵要點回顧:

  1. ✅ 確認內核版本 ≥ 4.9
  2. ✅ 使用 sysctl 配置 BBR
  3. ✅ 驗證 lsmod | grep bbr 輸出
  4. ✅ 根據場景調整優化參數
  5. ✅ 定期測試網絡性能

下一步學習:

享受更快的網絡體驗吧!🚀✨


延伸阅读

免责声明

本文仅供技术交流和学习参考。涉及第三方服务的链接可能包含 sponsored 标记,请自行核实服务条款、价格和可用性,并遵守当地法律法规。

最後更新於: