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_control→bbr - [ ] Планировщик fq:
sysctl net.core.default_qdisc→fq - [ ] Автозагрузка модуля:
cat /etc/modules-load.d/bbr.conf→tcp_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-соединения будут лучше использовать доступную пропускную способность, особенно на больших расстояниях и при высоких задержках.
Что дальше?