BBR TCP: Улучшение производительности сети

BBR (Bottleneck Bandwidth and Round-trip propagation time) – это алгоритм управления перегрузкой в TCP, разработанный Google. В отличие от классических алгоритмов (например, Reno или CUBIC), BBR не реагирует на потерю пакетов как на индикатор перегрузки. Вместо этого он оценивает пропускную способность канала (bandwidth) и задержку (RTT), чтобы оптимизировать скорость передачи данных.

Как работает BBR?

BBR состоит из двух ключевых метрик:

  1. BtlBw (Bottleneck Bandwidth) – максимальная пропускная способность на пути.
  2. 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 и спутниковый интернет.