BBR (Bottleneck Bandwidth and RTT) — алгоритма контроля перегрузки TCP, патчи с которым ещё в 2016 году были опубликованы компанией Google и приняты в основное ядро Linux. Применение этой технологии в некоторых случаях позволяет значительно увеличить пропускную способность канала передачи данных. Несколько тестов и информация по настройке 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
Для активации BBR, необходимо передать соответствующие параметры с помощью sysctl. Для этого открываем /etc/sysctl.conf и прописываем там:
net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
Сохраняем файл и перезагружаем машину, либо перечитываем системные параметры:
# sysctl --system ... * Applying /etc/sysctl.conf ... net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr ...
После этого можно приступать к тестам и вот что получилось у меня…
- Тестирование на VDS от Digitalocean не показало серьёзного прироста пропускной способности. Возможно, связано это с тем что на их виртуалках канал и так широкий.
- Тестирование в рамках виртуальной сети, построенной через OpenVPN приятно удивило:
До активации BBR:
После активации BBR:
В этом случае, прирост оказался очевиден.
Всем заинтересовавшимся рекомендую к изучению вот этот перевод, там алгоритм разобран подробно, с иллюстрациями, формулами, и пояснениями.
Гадал, какого чёрта у меня php’шный speedtest на VPS от Contabo выдавал не больше 10 мбит/сек, думал баг какой-то. После включения BBR тут же выросло до 80-90 мбит/сек (скорость моего wifi). Очень полезная опция, рекомендую.