サウス IDC
PRACTICAL FIELD SOP · TUTORIAL

LinuxカーネルにおけるTCP BBRv3アルゴリズム導入と長距離・高遅延回線(日米・日欧間)のスループット極大化調律

2026-11-05 | サウス IDC インフラ運用チーム
要旨:太平洋横断(RTT 120ms〜160ms)や日欧間(RTT 200ms超)の長距離大容量データ転送において、従来のTCP Cubicではわずか0.1%のパケットロスで転送速度が数十Mbpsへ激減する。本稿では、Googleが主導する最新の輻輳制御アルゴリズム「BBRv3」のカーネル組み込み手順と、帯域遅延積(BDP)に基づくカーネルバッファ(rmem/wmem)の精密計算、およびFQ(Fair Queueing)パケットスケジューラの調律実務を解説する。

1. 従来のCubicの課題とBBRv3の革新点

TCP Cubicなどのロスベース輻輳制御アルゴリズムは、パケット破棄を「ネットワーク輻輳」の唯一のシグナルと誤認し、パケットロス発生時に輻輳ウィンドウ(cwnd)を半減させる。しかし、国際海底ケーブル区間では微細なビットエラー等によるランダムロスが不可避であり、高帯域・広遅延(LFN: Long Fat Network)環境下で利用可能帯域を使い切ることが困難であった。

BBR(Bottleneck Bandwidth and RTT)は、パケットロスではなく「ボトルネック帯域幅」と「最小往復時間(min RTT)」を実測モデル化してパケット送出レートを制御する。最新のBBRv3では、従来のBBRv1で指摘されていたCubicとの公平性欠如(帯域の独占)や、一時的なキュー蓄積問題が劇的に改善されている。

2. 帯域遅延積(BDP)に基づくソケットバッファの最適設計

10Gbpsの国際回線でRTTが150ms(日米間)の場合、パイプライン中に常時飛行可能なデータ量(BDP)は以下の通り計算される。

BDP = 10 Gbps × 0.150 秒 = 1.5 Gbit = 187.5 MBytes

Linuxカーネルのデフォルト設定(通常数MB)ではバッファ不足によりウィンドウが頭打ちとなるため、sysctlにて送受信バッファをBDP以上(約256MB)に拡張する。

# /etc/sysctl.d/99-bbr-bdp.conf
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
net.ipv4.tcp_rmem = 4096 87380 268435456
net.ipv4.tcp_wmem = 4096 65536 268435456
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1

3. iperf3によるスループット検証結果

東京〜カリフォルニア間の実回線(RTT 135ms、ロス率0.2%)におけるiperf3検証において、Cubicの単一TCPストリームが約45Mbpsで頭打ちとなったのに対し、BBRv3では同一条件下で9.2Gbps(物理帯域の92%)を継続維持できることを確認した。

← 実践チュートリアル一覧に戻る