TCP/UDPの仕組み

TCP BBR てぃーしーぴーびーびーあーる

BBRBottleneck Bandwidth and Round-trip propagation time輻輳制御Googleスループット
TCP BBRについて教えて

簡単に言うとこんな感じ!

Googleが開発した次世代の輻輳制御アルゴリズムだよ。従来の「パケットが落ちたら混んでる」という方法ではなく、「帯域幅と遅延を測って最適な速度を探る」というスマートな方法で、特に長距離・衛星通信で大幅に速くなるんだ!


TCP BBRとは

BBR(Bottleneck Bandwidth and Round-trip propagation time)は、2016年にGoogleが発表した次世代の輻輳制御アルゴリズムです。Linux 4.9以降に組み込まれ、Google・Cloudflare・AkamaiなどのCDNや大規模サービスで採用されています。

従来の輻輳制御(Reno・CUBIC等)はパケットロスを輻輳のシグナルとして使います。しかしこの方法には問題があります。深いバッファを持つ機器(バッファブロート)ではパケットを溜め込んでからロスが起きるため、遅延が増大してから初めて反応します。

BBRは発想を根本的に変え、ネットワークの実際の「ボトルネック帯域幅」と「最小遅延(伝搬遅延)」を継続的に計測し、バッファを埋めすぎない最適な送信レートを決定します。これにより、バッファブロートに強く、衛星回線・長距離回線でも高いスループットを達成できます。


CUBICとBBRの比較

項目CUBIC(従来)BBR(新世代)
輻輳検知パケットロス帯域・遅延の変化
バッファブロート影響を受けやすい影響を受けにくい
高遅延回線性能が出にくい高い性能を維持
パケットロス耐性高ロス環境では遅くなる高ロス環境でも比較的安定
LAN環境十分な性能ほぼ同等
実装の複雑さシンプルやや複雑

歴史と背景

  • 2016年:GoogleのNeal Cardwell等がBBRを発表し、Google B4 WANに導入。スループットが最大2700倍改善されたケースも報告
  • 2016年:Linux 4.9に組み込まれ一般公開
  • 2018年:BBRv2の研究が始まる
  • 2019年:Google検索・YouTube・GCPのデフォルト輻輳制御アルゴリズムに
  • 2022年:BBRv3の研究が進み公平性(CUBICとの共存)が改善される

BBRの2つのフェーズ計測

BBRが計測する2つの要素 BtlBw ボトルネック帯域幅 「どのくらいのペースで データが届いているか」 RTprop 最小往復遅延(伝搬遅延) 「バッファがない場合の 純粋な往復時間」 BtlBw × RTprop = BDP(帯域幅遅延積)→ 最適な送信量を算出

BBRの有効化(Linux)

# 現在の輻輳制御アルゴリズムを確認
sysctl net.ipv4.tcp_congestion_control

# BBRを有効化
sysctl -w net.ipv4.tcp_congestion_control=bbr

# 永続化(/etc/sysctl.conf に追記)
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq

関連する規格・RFC

規格・RFC番号内容
RFC 9002QUICの輻輳制御(BBRが参考にされた)
(論文)Cardwell et al. 2016「BBR: Congestion-Based Congestion Control」

関連用語