BBR (Bottleneck Bandwidth and Round-trip propagation time) – это алгоритм управления перегрузкой в TCP, разработанный Google. В отличие от классических алгоритмов (например, Reno или CUBIC), BBR не реагирует на потерю пакетов как на индикатор перегрузки. Вместо этого он оценивает пропускную способность канала (bandwidth) и задержку (RTT), чтобы оптимизировать скорость передачи данных.
Как работает BBR?
BBR состоит из двух ключевых метрик:
- BtlBw (Bottleneck Bandwidth) – максимальная пропускная способность на пути.
- RTprop (Round-trip Propagation time) – минимальная задержка передачи данных.
Алгоритм динамически регулирует размер окна передачи, чтобы избежать перегрузки, не дожидаясь потерь пакетов.
Примеры использования BBR
1. Ускорение загрузки веб-страниц
BBR уменьшает задержки при высокоскоростных соединениях. Например, при загрузке тяжелого сайта (например, YouTube) BBR может быстрее адаптироваться к изменениям в сети, чем CUBIC.
2. Видеостриминг (Netflix, Twitch)
BBR обеспечивает более плавную потоковую передачу, так как избегает резких падений скорости из-за ложных срабатываний перегрузки.
3. Облачные сервисы (Google Cloud, AWS)
BBR улучшает пропускную способность в облачных средах, где традиционные алгоритмы могут страдать от высокой потери пакетов.
Как проверить?
BBR доступен в ядре Linux версии 4.9 и выше, проверить что в ядре необходимые модули скомпилированы можно командой:
$ grep -E "CONFIG_TCP_CONG_BBR|CONFIG_NET_SCH_FQ" /boot/config-$(uname -r) CONFIG_TCP_CONG_BBR=m CONFIG_NET_SCH_FQ_CODEL=y CONFIG_NET_SCH_FQ=m # Проверить текущий алгоритм: $ sysctl net.ipv4.tcp_congestion_control
Как включить BBR в Linux?
cat << EOF >> /etc/sysctl.d/50-bbr.conf net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr EOF sudo sysctl -p /etc/sysctl.d/50-bbr.conf
BBR особенно эффективен в сетях с высокой пропускной способностью и переменной задержкой, таких как 4G/5G и спутниковый интернет.