Как включить TCP BBR на Linux VPS (Debian, Ubuntu, CentOS, Rocky Linux)
TCP BBR — алгоритм управления перегрузкой от Google, который входит в ядро Linux начиная с версии 4.9. На маршрутах с большой задержкой, например при передаче данных с VPS JUSTG в Йоханнесбурге или Москве пользователям в Азии, стандартный CUBIC резко снижает скорость даже при небольших потерях пакетов. BBR оценивает реальную пропускную способность и время прохождения сигнала, поэтому скорость TCP для сайтов, загрузок, API и передачи файлов обычно заметно растёт. В этой статье показано, как включить TCP BBR штатными средствами через sysctl в Debian, Ubuntu, CentOS, Rocky Linux и AlmaLinux и как проверить результат.
Почему TCP BBR помогает на дальних маршрутах
Алгоритмы на основе потерь, такие как CUBIC, считают каждую потерю пакета признаком перегрузки и уменьшают скорость отправки. На межконтинентальном канале с задержкой 150-300 мс восстановление после каждого снижения занимает много времени, и одно соединение редко использует всю полосу сервера. BBR строит модель узкого места и минимального RTT и дозирует отправку пакетов. Меняется только поведение сервера при отправке, посетителям ничего устанавливать не нужно.
Шаг 1: Проверьте версию ядра и тип виртуализации
Войдите на VPS как root (или пользователь с sudo) и проверьте ядро. Для BBR нужно ядро 4.9 или новее. Актуальные выпуски — Debian 11/12, Ubuntu 20.04/22.04/24.04, Rocky Linux 8/9, AlmaLinux 8/9 — подходят.
uname -r
systemd-detect-virt
Если systemd-detect-virt возвращает kvm, xen или vmware, ядро находится под вашим управлением и можно продолжать. В контейнерах OpenVZ или LXC используется ядро хост-узла, поэтому включить BBR изнутри контейнера нельзя.
Шаг 2: Убедитесь, что модуль BBR доступен
Выведите список доступных алгоритмов и загрузите модуль, если bbr в нём нет:
sysctl net.ipv4.tcp_available_congestion_control
modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control
Обычно вывод выглядит так: net.ipv4.tcp_available_congestion_control = reno cubic bbr. Если modprobe сообщает, что модуль не найден, ядро слишком старое — см. шаг 6.
Шаг 3: Включите TCP BBR через sysctl
BBR лучше всего работает вместе с планировщиком очереди fq (Fair Queue). Создайте отдельный файл настроек — так параметры сохранятся после перезагрузки и их легко отменить. Команды одинаковы для Debian/Ubuntu и CentOS/Rocky/AlmaLinux:
printf 'net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr\n' | sudo tee /etc/sysctl.d/99-bbr.conf
sudo sysctl --system
Изменения сразу применяются к новым соединениям, перезагрузка не требуется. Уже открытые соединения используют прежний алгоритм до переподключения.
Шаг 4: Проверьте, что BBR работает
Выполните проверки:
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
lsmod | grep bbr
Должно отображаться net.ipv4.tcp_congestion_control = bbr и net.core.default_qdisc = fq. Команда lsmod обычно выводит строку с tcp_bbr. В некоторых ядрах BBR встроен, а не загружается модулем, поэтому пустой вывод lsmod — это нормально, если sysctl показывает bbr. Чтобы увидеть BBR на реальных соединениях, выполните ss -ti и найдите в выводе bbr.
Шаг 5: Измерьте результат
Сравните скорость до и после изменения с клиента, удалённого от сервера, — например, с машины в Азии при тесте VPS в Йоханнесбурге. Проще всего использовать iperf3:
# Debian / Ubuntu
apt install -y iperf3
# CentOS / Rocky / AlmaLinux
dnf install -y iperf3
# На сервере
iperf3 -s
# На клиенте (подставьте IP своего сервера)
iperf3 -c 203.0.113.10 -t 30 -R
Открывайте TCP-порт 5201 в брандмауэре только на время теста. Результаты зависят от времени суток и сети клиента, поэтому проведите несколько замеров.
/etc/sysctl.d/99-bbr.conf, затем выполните sysctl -w net.ipv4.tcp_congestion_control=cubic и sysctl --system.Шаг 6: Очень старые ядра (устаревший способ)
В старых системах, таких как CentOS 6/7 (ядро 2.6/3.10) или Debian 8, BBR отсутствует. Раньше для них был популярен скрипт «в один клик» от Teddysun: он устанавливал новое mainline-ядро и сразу включал BBR, причём OpenVZ никогда не поддерживался. Сегодня мы считаем этот способ устаревшим. Замена ядра в дистрибутиве с истёкшей поддержкой может привести к тому, что VPS перестанет загружаться, а обновлений безопасности не будет. Надёжнее сделать резервную копию, переустановить VPS на актуальную версию ОС из личного кабинета и выполнить шаги 1-4.
Частые вопросы
Работает ли TCP BBR на OpenVZ?
Нет. OpenVZ и другие контейнерные платформы используют общее ядро хоста, поэтому изменить алгоритм внутри гостевой системы нельзя. Облачные серверы JUSTG используют полную виртуализацию, и шаги 1-4 работают в обычном режиме.
Ускоряет ли BBR трафик UDP?
Нет. BBR влияет только на TCP-соединения, в которых сервер отправляет данные. UDP-сервисы и входящий трафик не меняются.
Нужно ли включать BBR на стороне клиента?
Нет. Достаточно включить его на отправляющей стороне; для веб-сервера или сервера загрузок это ваш VPS.
Если проблема не решена, создайте тикет, и техническая поддержка JUSTG поможет вам.