Еще в 2016 году Google выложила патчи ядра Linux для подсистемы сети. Эти патчи реализуют новый алгоритм контроля перегрузки TCP congestion control — BBR. Новый алгоритм позволяет значительно увеличить пропускную способность и уменьшить задержку при передачи данных по сети иногда на порядок. Google уже давно использует данный алгоритм в своей внутренней сети, а так же на таких сервисах как Youtube, что доказывает его высокую эффективность.
Для использования преимуществ BBR достаточно включить его на сервере отправителя, а сетевая инфраструктура и принимающая сторона остаются без изменений. Подробнее о том как именно BBR ускоряет передачу данных вы можете найти в интернете, например есть подробная статья на хабре.
Проверка совместимости с TCP BBR
Чтобы включит BBR в вашей системе необходимо, чтобы ядро было версии не ниже 4.9. Проверить это можно командой uname -a.
uname -r
Linux server1 4.15.0-50-generic #54~16.04.1-Ubuntu SMP Wed May 8 15:55:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Если вы используете дистрибутив Ubuntu 18.04 LTS то ядро уже поддерживает данный алгоритм. В Ubuntu 16.04 LTS необходимо установить актуальное ядро вручную.
Установка актуального ядра в Ubuntu 16.04
Чтобы это сделать введите команду.
sudo apt install --install-recommends linux-generic-hwe-16.04
После завершения установки нового ядра перезагрузите сервер.
Включение BBR в Ubuntu
Включение производится добавлением двух параметров ядра в файл /etc/sysctl.conf
sudo nano /etc/sysctl.conf
Необходимо добавить эти два параметра в самый конец файла.
net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
После чего включить добавленные параметры ядра командой:
sysctl -p
Проверить, какой именно алгоритм управления перегрузкой включен можно командой:
sysctl -a | grep congestion
В результате вы увидите примерно следующий вывод:
net.ipv4.tcp_allowed_congestion_control = reno cubic bbr
net.ipv4.tcp_available_congestion_control = reno cubic bbr
net.ipv4.tcp_congestion_control = bbr
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens160.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
Строка net.ipv4.tcp_congestion_control = bbr свидетельствует о том, что в текущий момент используется алгоритм bbr. Так же обратите внимание, что строка net.ipv4.tcp_available_congestion_control = reno cubic bbr показывает какие еще доступны алгоритмы управления перегрузкой.
Внимание! Нажимая кнопку "Отправить комментарий" вы соглашаетесь с политикой конфиденциальности сайта.