BBRはGoogleが開発したTCP輻輳制御アルゴリズムで、海外向けや長距離、わずかなパケットロスがある回線で速度と安定性を大きく改善できます。本記事ではLinuxでBBRを有効化する方法を、Debian、Ubuntu、CentOS Stream、Rocky Linux、AlmaLinuxが動作するKVM VPS・専用サーバー向けに解説します。出所不明の「ワンクリックスクリプト」は推奨せず、透明な手動手順のみを紹介します。
BBRにはLinuxカーネル4.9以上が必要です。カーネルとOSのバージョンを確認します。
uname -r
cat /etc/os-release
Debian 10以降、Ubuntu 18.04以降、Rocky/AlmaLinux 8以降の標準カーネルはBBRに対応済みです。CentOS 7(カーネル3.10)はサポート終了のため、無理にカーネルを更新するよりクライアントエリアから新しいOSへ再インストールすることをおすすめします。
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
一覧にbbrがない場合はモジュールを手動で読み込みます。
modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control
/etc/sysctl.d/ に専用ファイルを作成すると管理や元に戻す作業が簡単です。default_qdiscをfq、輻輳制御をbbrに設定します。
echo "net.core.default_qdisc=fq" | tee /etc/sysctl.d/99-bbr.conf
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.d/99-bbr.conf
sysctl --system
再起動後も設定は維持されます。コマンドはDebian/UbuntuとCentOS/Rocky/AlmaLinuxで共通です。
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
lsmod | grep bbr
1行目がbbr、2行目がfqと表示されれば成功です。lsmodにtcp_bbrが出ればモジュールが読み込まれています。BBRがカーネルに組み込まれている場合はlsmodに表示されませんが、sysctlでbbrと出ていれば問題ありません。
有効化の前後で同じ大容量ファイルをダウンロードしたり、iperf3で比較したりできます。標準のcubicへ戻す場合:
rm -f /etc/sysctl.d/99-bbr.conf
sysctl -w net.ipv4.tcp_congestion_control=cubic
sysctl -w net.core.default_qdisc=fq_codel
コンテナはホストとカーネルを共有するため、モジュールの読み込みや輻輳制御の変更はできません。KVM VPSや専用サーバーなら設定可能です。
BBRは高遅延でわずかにロスがある経路で最も効果を発揮します。ボトルネックが自宅回線やクライアント、帯域上限にある場合は改善が小さくなります。mtrでロスを確認してください。
非公式版はカスタムカーネルが必要で安定性の保証がありません。本番環境ではディストリビューション標準のBBRを使いましょう。
解決しない場合はチケットを送信して、IMIDCの24時間365日テクニカルサポートへご連絡ください。uname -r と sysctl の出力を添えてください。