Народный

Сеть

BBR — Bottleneck Bandwidth and RTT congestion control

Алгоритм управления загруженностью TCP/QUIC, разработанный Google в 2016 году: вместо реакции на потери пакетов моделирует bandwidth × RTT и поддерживает оптимальный fill-level; даёт 2-10× speedup на lossy-сетях типа VPN-трафика.

Определение

BBR (Bottleneck Bandwidth and Round-trip propagation time) — это алгоритм управления загруженностью (congestion control), разработанный командой Google и впервые опубликованный в 2016 году, который вместо классической реакции на packet loss моделирует фактическую bandwidth и RTT соединения и оптимально заполняет буфер до bottleneck-пропускной способности. Включён в Linux mainline kernel с 4.9, в QUIC implementations Google (gQUIC, потом IETF QUIC).

В контексте VPN BBR — это game-changer. Классические TCP-алгоритмы (CUBIC, Reno) считают каждый пакет-loss признаком congestion и резко урезают окно. На VPN-трафике, где packet loss часто вызван не congestion (а ТСПУ-injection, mobile-network jitter, WiFi-interference), классические алгоритмы выдают 10–30% реальной bandwidth. BBR — 80–95%.

Как работает

BBR постоянно измеряет два параметра: bottleneck bandwidth (BtlBw) и propagation RTT (RTprop), и регулирует pacing-rate так, чтобы данные ровно заполняли pipe (BDP = BtlBw × RTprop) без переполнения. Алгоритм:

  1. STARTUP. Аналог slow start: окно удваивается каждый RTT, пока обнаружена ли заполнение pipe (BtlBw перестал расти 3 RTT подряд).
  2. DRAIN. Резкое снижение pacing-rate, чтобы очистить queues, которые скопились во время startup.
  3. PROBE_BW. Основное состояние. Pacing идёт на 1.0× BtlBw, но каждые 8 RTT поднимается на 1.25× (probe-up), потом снижается на 0.75× (probe-down). Так BBR постоянно проверяет, не выросла ли bandwidth.
  4. PROBE_RTT. Раз в 10 секунд BBR резко снижает inflight до 4 пакетов на 200 мс — чтобы измерить «true» RTT без накопившихся очередей. Без этого RTprop постепенно увеличивается из-за самого BBR.

Ключевая разница vs CUBIC. CUBIC видит lost packet → cuts cwnd на 30% → ждёт ACKов чтобы наростить. На сети с 1% loss это означает постоянное колебание окна около ~30% от оптимума. BBR ignore’ит loss как сигнал congestion (только меряет bandwidth) — окно поддерживается на оптимальном уровне даже при loss.

Versions:

  • BBRv1 (2016). Стандартная инсталляция. На некоторых сценариях агрессивен к CUBIC-co-flows (вытесняет их).
  • BBRv2 (2019). Fairness improvements, использует loss как дополнительный сигнал. Менее агрессивен.
  • BBRv3 (2023). Internal Google deployment. Open source с 2024 в Linux 6.4+. Дальнейшие fairness и stability improvements.

Применение в России 2026

Для российских VPN BBR — критичный компонент:

  • На UDP-протоколах (WireGuard, Hysteria, TUIC). Hysteria-2 и TUIC используют BBR из коробки — это и есть их главное преимущество над WireGuard на нестабильных каналах.
  • На TCP-протоколах (VLESS, Trojan-GFW). Можно включить BBR на VPS на уровне kernel: sysctl net.ipv4.tcp_congestion_control=bbr. Это даёт 30–80% speedup на VPN-сессиях у российских юзеров.
  • На QUIC-протоколах (VLESS over QUIC). QUIC использует BBR в congestion control layer’е — это включено по умолчанию в xray-core / sing-box.

Настройка на VPS (Ubuntu 22.04+, Linux 4.9+):

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Проверка: sysctl net.ipv4.tcp_congestion_control должен вернуть bbr. И ss -ti покажет bbr для активных VPN-соединений.

Когда не помогает:

  • Bottleneck не у VPN, а у клиента. Если клиент на 4G/LTE с реальным 5 Mbps — BBR не сделает 50 Mbps.
  • Сильный shaping ТСПУ. Если ТСПУ shape’ит вашу сессию до 100 Kbps — BBR не помогает.
  • Очень короткие connections. BBR требует ~10 RTT на startup. Для коротких HTTP-запросов (1-2 пакета) выигрыш минимален.

Юзеру: спросите у VPN-провайдера, включён ли BBR на серверах. Если нет — спросите почему. Это бесплатное улучшение, доступное любому VPS на Linux.

Связанные термины

QUIC, Hysteria-2, TUIC — протоколы с native BBR. MTU/PMTU — соседний параметр network tuning. WireGuard — не использует BBR (это UDP без congestion control на уровне протокола).

Источники