Оптимизация сетевого стека Linux: Включение TCP BBR для ускорения VPN и прокси.
Если вы настроили VPN (O******, W***** Op****) или прокси-сервер, но сталкиваетесь с низкой скоростью передачи данных при хорошем канале, причина часто кроется не в ширине канала, а в устаревших алгоритмах управления перегрузкой TCP.
В этой инструкции мы разберем, как включить алгоритм TCP BBR от Google, который де-факто стал стандартом для оптимизации высоконагруженных и удаленных серверов.
Что такое TCP BBR и зачем он нужен?
По умолчанию в большинстве дистрибутивов Linux используется алгоритм TCP CUBIC. Он был создан в эпоху проводных сетей и работает по принципу "loss-based" (основан на потере пакетов):
Сервер наращивает скорость передачи.
Как только теряется хотя бы один пакет, CUBIC считает, что канал забит, и резко сбрасывает скорость (обычно в 2 раза).
Затем начинается медленный набор скорости заново.
Проблема: В современных сетях (особенно мобильных и международных) потеря пакетов часто носит случайный характер и не означает, что канал перегружен. В результате CUBIC «тормозит» там, где можно работать на полную мощность.
Решение (TCP BBR): Algorithm BBR (Bottleneck Bandwidth and Round-trip propagation time), разработанный Google, использует другой подход. Он моделирует сеть, постоянно измеряя два параметра:
Максимальную пропускную способность (Bandwidth).
Минимальное время отклика (RTT).
BBR игнорирует случайные потери пакетов и поддерживает скорость передачи на уровне реальной пропускной способности канала. Это дает прирост скорости от 30% до 1000% на нестабильных соединениях.
Инструкция по включению
Шаг 0: Проверка версии ядра
Для работы BBR требуется ядро Linux версии 4.9 или выше. Абсолютное большинство современных систем (Ubuntu 18.04+, Debian 10+, CentOS 8+) уже соответствуют этому требованию.
Проверьте версию ядра командой:
uname -rЕсли версия ниже 4.9, вам необходимо сначала обновить ядро ОС.
Шаг 1: Включение BBR
Нам нужно изменить два параметра ядра через sysctl.
Изменить планировщик пакетов (Queue Discipline) на
fq(Fair Queueing), так как BBR требует его для корректной работы.Включить сам алгоритм
bbr.
# Добавляем настройки в конфигурационный файл
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
# Применяем изменения без перезагрузки
sudo sysctl -pШаг 2: Проверка результата
Убедитесь, что настройки применились корректно.
Проверяем, какой алгоритм управления перегрузкой используется сейчас:
sysctl net.ipv4.tcp_congestion_controlПроверяем, запущен ли модуль BBR:
lsmod | grep bbr
Ожидаемый вывод (пример):
tcp_bbr 20480 14
Результаты
После включения BBR перезагрузка сервера не требуется, изменения вступают в силу мгновенно для новых соединений.
Что вы заметите:
Стабильность: YouTube и потоковое видео перестанут буферизироваться.
Скорость: Speedtest покажет результаты, близкие к заявленным хостером, даже если клиент находится на другом континенте.
Плавность: Исчезнут резкие провалы скорости при использовании мобильного интернета.
Техническое примечание (для администраторов)
Почему
fq, а неfq_codel? Хотяfq_codelчасто является дефолтным в современных дистрибутивах, для работы BBR необходим именно планировщикfq, так как он обеспечивает pacing (равномерную подачу пакетов), на который опирается модель BBR.Совместимость: BBR работает только на стороне отправителя (в данном случае — вашего VPN-сервера). Клиентам (телефонам, ноутбукам) ничего настраивать не нужно.