Включение BBR на Debian 13, 12, 11: полное руководство

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

BBR особенно полезен для:

  • Веб-серверов с большим количеством удалённых клиентов
  • Скачивания/отправки больших файлов
  • VPN-соединений
  • Спутникового интернета и мобильных сетей

В этом руководстве я покажу, как включить BBR на Debian 13, 12 и 11.

⚠️ Требование: BBR требует ядро Linux версии 4.9 или новее. Debian 11 (ядро 5.10), Debian 12 (ядро 6.1) и Debian 13 (ядро 6.12) полностью совместимы.


Предварительные требования

Перед включением BBR убедитесь, что:

  • У вас есть доступ к интернету
  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Проверка текущего алгоритма

sysctl net.ipv4.tcp_congestion_control

Если BBR уже активен:

net.ipv4.tcp_congestion_control = bbr

Если нет (продолжаем установку):

net.ipv4.tcp_congestion_control = cubic

Загрузка модуля BBR

Шаг 1: Загрузите модуль ядра

sudo modprobe tcp_bbr

Что делает: Загружает модуль BBR в ядро. Отсутствие вывода означает успех.

Шаг 2: Проверьте, что модуль доступен

cat /proc/sys/net/ipv4/tcp_available_congestion_control

Ожидаемый вывод: reno cubic bbr


Настройка постоянного включения BBR

Шаг 1: Создайте файл настроек sysctl

cat <<EOF | sudo tee /etc/sysctl.d/99-bbr.conf
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Что делает:

  • net.core.default_qdisc=fq — устанавливает планировщик пакетов Fair Queue (требуется для BBR)
  • net.ipv4.tcp_congestion_control=bbr — устанавливает BBR как алгоритм по умолчанию

Шаг 2: Настройте автоматическую загрузку модуля при старте

echo 'tcp_bbr' | sudo tee /etc/modules-load.d/bbr.conf

Что делает: Обеспечивает загрузку модуля tcp_bbr при каждой загрузке системы.

Шаг 3: Примените настройки

sudo sysctl --system

Что делает: Перезагружает все настройки из /etc/sysctl.d/.

В выводе должны быть строки:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

Проверка включения BBR

Проверка основного алгоритма

sysctl net.ipv4.tcp_congestion_control

Ожидаемый вывод: net.ipv4.tcp_congestion_control = bbr

Проверка планировщика

sysctl net.core.default_qdisc

Ожидаемый вывод: net.core.default_qdisc = fq

Проверка активных соединений

ss -ti | grep -i bbr

Что делает: Показывает активные TCP-соединения, использующие BBR.

Ожидаемый вывод (пример): bbr wscale:8,7 rto:208 rtt:4.508/8.149 ato:40 ...

⚠️ Примечание: Новые соединения (например, свежая SSH-сессия) будут использовать BBR. Старые соединения могут продолжать использовать CUBIC, пока не будут переустановлены.


Решение типичных проблем

8.1 Ошибка: bash: sysctl: command not found

Симптом: Команда sysctl не найдена.

Причина: Утилита sysctl находится в /sbin/sysctl, а эта директория может отсутствовать в PATH у обычного пользователя.

Пошаговое решение:

Шаг 1: Используйте полный путь:

sudo /sbin/sysctl net.ipv4.tcp_congestion_control

Шаг 2: Или добавьте /sbin в PATH:

export PATH="$PATH:/sbin"

8.2 Ошибка: Module tcp_bbr not found

Симптом: sudo modprobe tcp_bbr выводит:

modprobe: FATAL: Module tcp_bbr not found in directory /lib/modules/...

Причина: Ваше ядро не поддерживает BBR (версия ниже 4.9).

Пошаговое решение:

Шаг 1: Проверьте версию ядра:

uname -r

Шаг 2: Если версия ниже 4.9 — обновите ядро:

sudo apt update && sudo apt upgrade -y

Шаг 3: Если после обновления всё ещё нет BBR — установите ядро XanMod или Liquorix, которые включают BBR по умолчанию.


8.3 Ошибка: BBR не активен после перезагрузки

Симптом: После перезагрузки sysctl net.ipv4.tcp_congestion_control показывает cubic.

Причина: Не настроена автоматическая загрузка модуля или файл /etc/sysctl.d/99-bbr.conf отсутствует.

Пошаговое решение:

Шаг 1: Проверьте, что файл модуля существует:

cat /etc/modules-load.d/bbr.conf

Ожидаемый вывод: tcp_bbr

Шаг 2: Проверьте файл sysctl:

cat /etc/sysctl.d/99-bbr.conf

Ожидаемый вывод:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Шаг 3: Если какого-то файла нет — создайте заново (см. раздел «Настройка постоянного включения BBR»).

Шаг 4: Перезагрузитесь и проверьте снова.


8.4 Ошибка: BBR не отображается в ss -ti

Симптом: ss -ti | grep -i bbr не показывает ничего.

Причина: Нет активных соединений, установленных после включения BBR.

Пошаговое решение:

Шаг 1: Установите новое соединение — например, откройте новую SSH-сессию.

Шаг 2: Проверьте снова:

ss -ti | grep -i bbr

Шаг 3: Если всё ещё ничего нет, убедитесь, что BBR активен:

sysctl net.ipv4.tcp_congestion_control

8.5 BBR работает, но скорость не увеличилась

Симптом: BBR включён, но заметного прироста скорости нет.

Причина: BBR даёт наибольший эффект на соединениях с высокой задержкой (большое RTT) или с потерями пакетов. На локальных сетях с низкой задержкой и без потерь разница может быть незаметна.

Пошаговое решение:

Шаг 1: Убедитесь, что вы тестируете на соединении с характеристиками, где BBR действительно полезен (межконтинентальные соединения, спутниковый интернет, мобильные сети).

Шаг 2: Проверьте, что используется планировщик fq:

sysctl net.core.default_qdisc

Шаг 3: Для точного измерения используйте iperf3 между двумя серверами.


Отключение BBR (возврат к CUBIC)

Если вы хотите вернуться к стандартному алгоритму CUBIC:

Шаг 1: Удалите файлы конфигурации

sudo rm /etc/sysctl.d/99-bbr.conf
sudo rm /etc/modules-load.d/bbr.conf

Шаг 2: Примените настройки по умолчанию

sudo sysctl -w net.ipv4.tcp_congestion_control=cubic
sudo sysctl -w net.core.default_qdisc=fq_codel

Шаг 3: Проверьте

sysctl net.ipv4.tcp_congestion_control

Ожидаемый вывод: net.ipv4.tcp_congestion_control = cubic


Чек-лист: что проверить после включения BBR

  • [ ] Модуль загружен: lsmod | grep tcp_bbr показывает модуль
  • [ ] BBR доступен: cat /proc/sys/net/ipv4/tcp_available_congestion_control содержит bbr
  • [ ] BBR активен: sysctl net.ipv4.tcp_congestion_controlbbr
  • [ ] Планировщик fq: sysctl net.core.default_qdiscfq
  • [ ] Автозагрузка модуля: cat /etc/modules-load.d/bbr.conftcp_bbr
  • [ ] Активные соединения используют BBR: ss -ti | grep -i bbr → есть вывод

Часто задаваемые вопросы (FAQ)

Вопрос: Какая версия BBR включается этой инструкцией?
Ответ: BBR v1. Debian использует эту версию по умолчанию. Для BBRv3 нужно устанавливать ядро XanMod.

Вопрос: Влияет ли BBR на IPv6?
Ответ: Да, настройка net.ipv4.tcp_congestion_control применяется и к IPv6-соединениям.

Вопрос: Нужно ли перезагружать сервер после включения BBR?
Ответ: Нет, достаточно выполнить sudo sysctl --system. Но для проверки автозагрузки после перезагрузки можно перезагрузиться один раз.

Вопрос: BBR совместим с любым приложением?
Ответ: Да, BBR работает на уровне ядра и не требует изменений в приложениях.

Вопрос: Увеличит ли BBR скорость на домашнем интернете?
Ответ: Вероятно, нет. Домашние соединения обычно имеют низкую задержку и достаточную пропускную способность. BBR даёт максимальный эффект на высокоскоростных каналах с большой задержкой (межконтинентальные соединения, спутниковый интернет).


Заключение

Теперь BBR включён и активен на вашем Debian. Ваши TCP-соединения будут лучше использовать доступную пропускную способность, особенно на больших расстояниях и при высоких задержках.

Что дальше?

  • Установите и настройте Nginx для максимальной производительности
  • Настройте оптимизацию сети для высоких нагрузок
  • Установите ядро XanMod для поддержки BBRv3