如何配置 BBR 加速以提升香港 CN2 伺服器吞吐量

如果你想提升 香港 CN2 伺服器的網路吞吐量,BBR 加速是一種現代化的解決方案,可以幫助你獲得更高速度和更低延遲。在 Linux 伺服器上,BBR 擁塞控制依靠頻寬和延遲估算,而不是丟包訊號,這對大頻寬–時延積路由尤為有利。許多亞太機房的使用者回報了以下好處:
與 Cubic 等傳統演算法相比,有明顯的有效吞吐(goodput)提升
在高延遲和高頻寬場景下,有時可提升高達 115% 的有效吞吐
在高負載場景下仍能保持穩定表現
只要在配置過程中遵循最佳實務,你就能獲得平滑且持久的加速效果。
關鍵要點
BBR 加速透過估算頻寬和往返時間(RTT),而不是依賴丟包訊號,從而提升網路吞吐並降低延遲。
啟用 BBR 前需確保 Linux 核心版本不低於 4.9。如有需要,可在 CentOS 中使用 ELRepo 等工具進行核心升級。
透過 sysctl 指令將預設佇列演算法設定為「fq」,並將 TCP 擁塞控制設定為「bbr」,可獲得更佳效能。
將 BBR 相關配置儲存到
/etc/sysctl.d/99-bbr.conf中,並確保 BBR 模組開機自動載入,以實現持久生效。在啟用 BBR 前後使用 iperf3 和 ping 等工具測試網路效能,以比較吞吐量和延遲的改善情況。
BBR 擁塞控制概覽
什麼是 BBR 擁塞控制
你可以使用 BBR 來提升伺服器的網路效能。與 CUBIC 或 Reno 等傳統方法不同,這種擁塞控制演算法並不依賴丟包來判斷擁塞情況。BBR 擁塞控制會估算瓶頸頻寬和往返傳播時間,透過量測可用頻寬和最小往返時間(RTT),建立一個網路模型。你會受益於這種作法,因為 BBR 會根據量測結果動態調整發送節奏(pacing rate)和擁塞視窗,從而幫助你在保持較低延遲的同時獲得更優的吞吐量。
注意:BBR 加速主要依賴兩個關鍵參數——發送節奏(pacing rate)和擁塞視窗(CWND)——來控制伺服器發送資料的速度。這種方式可以降低擁塞,並保持較小的佇列長度。
在 TCP BBR 中,你可以看到多項有助於提升吞吐量的關鍵特性:
頻寬估算:透過分析封包的傳輸速率來量測可用頻寬。
RTT 估算:維護最小與基準 RTT,並據此調整發送節奏,從而降低延遲。
瓶頸路由偵測:利用探測與 RTT 回饋識別真正的瓶頸鏈路。
擁塞視窗管理:根據 pacing 增益與探測結果調整轉發速率。
低延遲運作:保持佇列長度儘可能小,從而進一步降低延遲。
為什麼在香港 CN2 伺服器上使用 BBR 加速
香港 CN2 伺服器面臨一些獨特的網路環境挑戰。本地存取速度往往可以達到 1Gbps,但國際頻寬卻可能被限制在 20Mbps 左右。路由繞行相當常見,並且只有中國移動提供直連回程路由。這些問題會導致更高的延遲並限制吞吐量。
透過部署 BBR 加速,你可以正面應對這些挑戰。藉由這套擁塞控制演算法,你可以針對本地與國際使用者來優化伺服器效能。BBR 有助於你突破鏈路瓶頸、減少延遲。同時,你也可以優化 qdisc(佇列排程)設定,以進一步提升網路效率。當你啟用 BBR 時,你的香港 CN2 伺服器會變得更加穩定、回應更快。
Linux 環境下啟用 BBR 加速的前置條件
核心版本要求
在啟用 BBR 之前,你必須先檢查 Linux 核心版本。該擁塞控制演算法要求核心版本不低於 4.9。多數現代發行版(如 CentOS 7、CentOS 8、CentOS Stream、AlmaLinux 和 Rocky Linux)都已滿足這一要求。你可以使用以下指令查看目前核心版本:
uname -r
如果目前核心版本低於 4.9,就需要進行升級。CentOS 使用者通常會借助 ELRepo 軟體庫來更新核心;AlmaLinux 和 Rocky Linux 通常預設提供較新的核心。在升級核心之前,你應當先備份好重要資料。Linux 核心版本決定了你是否可以使用 BBR 作為擁塞控制演算法。
提示:你可以透過閱讀發行版官方文件來確認相容性。CentOS、AlmaLinux 和 Rocky Linux 都提供核心升級的相關指南。
準備 Linux 伺服器環境
在啟用 BBR 加速之前,你需要先對 Linux 伺服器進行一些準備工作。首先更新系統套件。在 CentOS 上可以使用如下指令:
sudo yum update -y
接著,確認目前核心是否支援公平佇列(fair queueing)封包排程器。該排程器能夠優化封包處理,並與 BBR 搭配良好。你可以使用以下指令查看目前預設佇列排程器:
sysctl net.core.default_qdisc
為了獲得最佳效果,你應該將預設佇列排程器設定為 fq。可使用 sysctl 指令進行設定:
sysctl -w net.core.default_qdisc=fq
你還需要透過 sysctl 指定 BBR 作為 TCP 擁塞控制演算法。將 TCP 擁塞控制設定為 bbr:
sysctl -w net.ipv4.tcp_congestion_control=bbr
隨後,你應將上述 sysctl 設定寫入 /etc/sysctl.conf 或專用設定檔中,以確保伺服器重新啟動後 BBR 仍然生效。你還需要檢查封包處理行為,確認伺服器已經使用正確的佇列排程器與擁塞控制演算法。
注意:修改 sysctl 設定後一定要對網路進行測試。你可以使用 ping 或 iperf3 檢查丟包率與延遲。
分步配置 BBR 加速
檢查 Linux 核心版本
在開始配置 BBR 加速前,你必須先檢查核心版本。核心版本決定伺服器是否支援該擁塞控制演算法。可以透過以下簡單指令取得目前核心版本:
執行
uname -r顯示目前核心版本。在系統重新啟動後,再次執行
uname -r,確認最新核心已生效。
如果核心版本高於 4.9,就可以繼續下一步;否則需要先進行升級。在 CentOS 上,你可以按如下步驟操作:
匯入 ELRepo GPG 金鑰並安裝軟體庫:
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org sudo rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm安裝最新主線核心:
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y將新核心設定為預設開機項目:
sudo grub2-set-default 0重新產生 GRUB 設定:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg重新啟動伺服器:
sudo reboot重新啟動後再次驗證核心版本:
uname -r
你應當看到一個高於 4.9 的版本號,這表示伺服器已為 BBR 加速做好準備。
啟用 BBR 加速
要啟用 BBR 加速,需要設定正確的 sysctl 參數。這些參數控制伺服器如何處理網路流量。你需要編輯 sysctl 設定檔:開啟 /etc/sysctl.conf,或在 /etc/sysctl.d/99-bbr.conf 建立一個新檔案,並寫入如下內容:
參數 | 取值 |
|---|---|
net.core.default_qdisc | fq |
net.ipv4.tcp_congestion_control | bbr |
儲存檔案後,套用設定:
sudo sysctl --system
你也可以使用 sudo sysctl -p 來重新載入設定。這些變更會啟用 BBR,並將網路佇列排程器設定為公平佇列(fq),幫助你優化伺服器的吞吐量和延遲表現。
提示:你可以透過
sudo modprobe tcp_bbr手動載入 BBR 模組,並使用lsmod | grep bbr檢查模組是否已成功載入。
讓 BBR 設定持久生效
你需要確保 BBR 設定能夠在重新啟動後自動生效。這一步可以讓 BBR 加速在每次系統啟動時都自動啟用。建議在 /etc/sysctl.d/ 下建立獨立的設定檔,而不是直接附加到 /etc/sysctl.conf,這樣較便於管理和排查重複條目。
建立
/etc/sysctl.d/99-bbr.conf,內容如下:net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr確保 BBR 模組在啟動時自動載入,可建立
/etc/modules-load.d/bbr.conf檔案:tcp_bbr如果該模組載入檔案不存在,可執行:
echo 'tcp_bbr' | sudo tee /etc/modules-load.d/bbr.conf
然後套用新的 sysctl 設定:
sudo sysctl --system
注意:使用獨立的 sysctl 設定檔,便於你在不同 Linux 發行版中快速稽核、重用或移除 BBR 加速設定。
驗證 BBR 是否已啟用
接下來,你需要確認伺服器是否已經成功啟用 BBR。可以使用多條指令檢查目前的擁塞控制演算法和佇列排程方式,並確認 BBR 是否正在管理網路連線。
指令 | 用途 |
|---|---|
| 檢查目前使用的擁塞控制演算法 |
| 確認預設佇列排程器是否為 Fair Queue |
|
|
|
|
你預期會看到類似如下的結果:
指令 | 預期輸出 |
|---|---|
sysctl net.ipv4.tcp_congestion_control | net.ipv4.tcp_congestion_control = bbr |
lsmod | grep bbr |
ss -tin | 在擁塞控制欄位中查看是否包含 |
說明:如果在擁塞控制輸出中看到
bbr,並確認模組已載入,就表示伺服器已經在使用 BBR 加速。此時你便可以享受更高的網路吞吐和更低的延遲。
透過以上步驟,你就完成了在香港 CN2 伺服器上配置 BBR 加速。只要遵循這些最佳實務,就能獲得持久而可靠的網路效能。
基準測試與吞吐量優化
使用 iperf3、ping、curl 測試效能
你需要量化 BBR 對伺服器效能帶來的影響。可以從 iperf3、ping 和 curl 等工具入手,在啟用 BBR 前後分別測試網路吞吐、延遲和丟包情況。
使用
iperf3測試香港 CN2 伺服器與遠端客戶端之間的吞吐率:在伺服器上執行iperf3 -s,在客戶端執行iperf3 -c <server_ip>。使用
ping量測往返時間與丟包率:執行ping <destination_ip>,觀察平均延遲和丟包情況。使用
curl -o /dev/null -s -w "%{time_total}\n" <url>測試下載速度和總傳輸時間。
提示:建議多次重複測試以獲得更穩定的數據。將啟用 BBR 之前與啟用後得到的結果進行比較,可以直觀看到網路速度和延遲改善情況。
調整網路參數以獲取最佳效果
你還可以透過進一步調整網路參數,來在高延遲的國際路由上榨出 BBR 的最大效能潛力。參考下面這些步驟,可以實現更高的吞吐量:
計算頻寬–時延積(BDP)。首先使用
ping量測 RTT,然後乘以頻寬。例如,在 100 Mbps 連線、80ms RTT 的情況下,BDP 約為 1 MB。建議將緩衝區大小設定為 BDP 的兩倍以上,以預留空間。套用適合廣域網路的 TCP 設定。透過調整
net.core.rmem_max和net.core.wmem_max提高 Socket 緩衝區上限,並透過net.ipv4.tcp_window_scaling = 1啟用視窗擴展。透過設定
net.ipv4.tcp_slow_start_after_idle = 0關閉「閒置後慢啟動」,避免連線在閒置一段時間之後效能驟降。優化 Keepalive 設定,用於更快偵測失效連線。可設定
net.ipv4.tcp_keepalive_time = 300、net.ipv4.tcp_keepalive_intvl = 30和net.ipv4.tcp_keepalive_probes = 10。使用
tc qdisc模擬延遲並測試廣域網效能,然後透過iperf3比較 CUBIC 與 BBR 的吞吐表現。
在丟包較為明顯的廣域連線上,你通常會看到 BBR 相比 CUBIC 能帶來 2–5 倍的吞吐提升,這是因為 BBR 即使在存在丟包和高延遲的環境下仍能維持高效能。這些設定可以幫助你在降低丟包率的同時提升網路吞吐,使伺服器更適合面向國際使用者的業務。
注意:放大 TCP 視窗大小,並為 HTTP/2 等關鍵流量設定更高優先權,也有助於進一步提升 Web 應用的整體吞吐與體驗。
故障排查與自動化
Linux 上使用 BBR 常見問題
在啟用 BBR 的過程中,你可能會遇到一些常見問題。事先了解這些問題及其解決方案,可以幫助你快速回復並維持最佳效能。下面是最常見的幾類問題及對應解決思路:
佇列排程器(qdisc)設定錯誤
你必須將佇列排程器設定為fq,BBR 才能完全發揮作用。如果使用了其他排程模式,BBR 的吞吐提升可能會大打折扣。可以透過以下指令設定預設佇列排程器:sudo sysctl -w net.core.default_qdisc=fq提示:每次修改完設定後都建議檢查目前佇列排程器,可使用
sysctl net.core.default_qdisc核實。緩衝區上限過低
如果你希望獲得更高的吞吐量,就需要放大 TCP 緩衝區上限。緩衝區過小會限制 BBR 對資料流進行最佳化的能力。可以透過如下 sysctl 指令調整緩衝區大小:sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.wmem_max=16777216說明:更大的緩衝區有助於 BBR 處理更多資料,從而降低丟包率。
網路瓶頸存在於其他鏈路或硬體
你還需要檢查實體網路是否存在瓶頸。BBR 主要優化 TCP 層面的傳輸,並不能修復硬體或基礎建設上的限制。請檢查網路線、交換器以及上游頻寬,確保不會對伺服器的流量形成硬性阻塞。
問題 | 解決方案 |
|---|---|
佇列排程器設定錯誤 | 使用 sysctl 將預設 qdisc 設定為 |
緩衝區上限過低 | 放大 TCP 緩衝區上限 |
其他鏈路或硬體出現瓶頸 | 檢查實體網路與基礎建設 |
自動化 BBR 配置
你可以透過自動化腳本的方式配置 BBR,從而節省時間並降低人為設定錯誤的風險。自動化還能確保在系統重新啟動或更新之後,相關設定依然保持一致。可以建立一個腳本,將所有必需的 sysctl 參數與模組載入步驟統一執行。
下面是一個簡單的 Bash 範例腳本:
#!/bin/bash
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo modprobe tcp_bbr
注意:你可以將此腳本放在
/usr/local/bin/,並透過cron排程執行,或直接將相關設定寫入/etc/sysctl.d/99-bbr.conf以實現持久化設定。
你也可以使用 Ansible 或 Puppet 等設定管理工具,在多台伺服器上集中下發 BBR 設定。自動化不僅能維持網路設定的一致性,還能顯著減少手動維護工作量。
當你在香港 CN2 伺服器上啟用 BBR 加速後,將會獲得更快、更可靠的網路表現。為了持續保持最佳狀態,建議你遵循以下作法:
適度放大網路緩衝區,並啟用 TCP 視窗擴展功能。
使用
sudo sysctl -p或sudo sysctl --system讓設定即時生效。用真實業務流量與測試工具對 BBR 效果進行驗證與監控。
定期更新 Linux 系統與核心,以保持相容性與安全性。
只要持續監控網路表現並及時排查問題,你就能長期保持 BBR 帶來的效能優勢。
常見問題(FAQ)
是否可以在任意 Linux 發行版上啟用 BBR?
只要核心版本不低於 4.9,你就可以在多數現代 Linux 發行版上啟用 BBR。你可以透過 uname -r 檢查相容性,如有需要則先升級核心。
BBR 是否能提升所有類型網路的效能?
BBR 在高時延、高頻寬連線上效果最為顯著;在本地、低延遲網路中,效能提升可能並不十分明顯。
提示:建議在啟用 BBR 前後分別測試網路,以定量評估效能差異。
如何檢查 BBR 是否已經啟用?
你可以執行如下指令進行驗證:
sysctl net.ipv4.tcp_congestion_control
如果輸出中顯示 bbr,則表示 BBR 已成功啟用。
BBR 設定是否會在重新啟動後保持有效?
如果你已將 BBR 相關設定寫入 /etc/sysctl.d/99-bbr.conf,那麼這些設定會在每次系統啟動後自動載入並生效。
設定項 | 設定檔位置 |
|---|---|
BBR 設定 |
|
是否可以在多台伺服器上自動化部署 BBR?
你可以使用腳本或 Ansible 等工具在多台伺服器上自動化部署 BBR 設定,這樣可以節省大量時間並確保設定一致。
注意:自動化部署不僅能減少手動操作失誤,還能顯著加快上線和擴容速度。

