Как проверить тип алгоритма управления перегрузками TCP в Ubuntu

Вопрос или проблема

Я использую Ubuntu 14.04 LTS с версией ядра Linux 3.13.0-34.

Как я могу узнать, какой алгоритм управления перегрузкой TCP используется по умолчанию или в настоящее время?

Спасибо.

Есть не варианты TCP; есть алгоритмы управления перегрузкой TCP:

sysctl net.ipv4.tcp_congestion_control

cat /proc/sys/net/ipv4/tcp_congestion_control

По умолчанию обычно используется cubic или reno, хотя доступно много других, и программы могут устанавливать предпочтительный алгоритм для отдельных соединений (например, Transmission активирует lp, если он доступен).

(Этот параметр влияет как на IPv4, так и на IPv6, несмотря на свое название.)

В дополнение к @grawity ответу, вы можете проверить все доступные алгоритмы управления перегрузкой TCP с помощью следующей команды:

sysctl net.ipv4.tcp_available_congestion_control

Список некоторых возможных значений (т.е. доступных вариантов) выглядит следующим образом:

  • reno: традиционный TCP, используемый почти всеми другими ОС (по умолчанию)
  • cubic: CUBIC-TCP
  • bic: BIC-TCP
  • htcp: Hamilton TCP
  • vegas: TCP Vegas
  • westwood: оптимизирован для сотовых сетей
  • YeAH: осознание задержки/состояния для поддержания потока на или ниже порога

ПРИМЕЧАНИЕ: Если, например, cubic или htcp не указаны, попробуйте выполнить следующее, так как большинство дистрибутивов включают их как загружаемые модули ядра:

modprobe tcp_htcp
modprobe tcp_cubic

Для получения дополнительной информации вы можете прочитать подробности настройки TCP (архивная версия).

Если вы хотите узнать, какой текущий алгоритм управления перегрузкой используется на каждом соединении, вы можете использовать команду ss (часть пакета/инструментов iproute2):

ss -ti

Вот пример вывода: под деталями соединения первый элемент в параметрах вывода – это алгоритм управления перегрузкой – в данном случае cubic – за которым следуют различные параметры, относящиеся к TCP-соединению.

ESTAB      0      0      192.168.56.102:ssh           192.168.56.1:61795
 cubic wscale:6,7 rto:201 rtt:0.218/0.038 ato:40 mss:1448 rcvmss:1392
 advmss:1448 cwnd:10 bytes_acked:8753 bytes_received:3945 segs_out:40
 segs_in:63 send 531.4Mbps lastsnd:1 lastrcv:2 lastack:1
 pacing_rate 1059.1Mbps rcv_rtt:2 rcv_space:28960

Примечание: Приложения могут выбрать алгоритм управления перегрузкой, который они хотят использовать, установив опцию TCP_CONGESTION с помощью функции setsockopt.

Чтобы узнать, какой текущий алгоритм управления перегрузкой TCP используется в Ubuntu 14.04 LTS с версией ядра Linux 3.13.0-34, вы можете использовать следующую команду в терминале:

sysctl net.ipv4.tcp_congestion_control

Эта команда вернет название текущего алгоритма управления перегрузкой TCP.

Если вы хотите увидеть список всех доступных алгоритмов управления перегрузкой TCP, вы можете выполнить:

sysctl net.ipv4.tcp_available_congestion_control

Это предоставит вам список всех алгоритмов, которые могут быть использованы с вашим ядром.

Если вы хотите изменить текущий алгоритм, вы можете использовать:

sudo sysctl -w net.ipv4.tcp_congestion_control=<algorithm_name>

Замените <algorithm_name> на желаемый алгоритм управления перегрузкой из списка, который вы получили ранее.

Ответ или решение

Чтобы определить, какой алгоритм управления перегрузкой TCP используется по умолчанию или в данный момент на Ubuntu 14.04 LTS с версией ядра Linux 3.13.0-34, выполните следующие шаги:

  1. Проверка текущего алгоритма:
    Откройте терминал и выполните следующую команду:

    sysctl net.ipv4.tcp_congestion_control

    Эта команда вернет название текущего алгоритма управления перегрузкой TCP, который используется системой.

  2. Просмотр всех доступных алгоритмов:
    Для получения списка всех доступных алгоритмов управления перегрузкой TCP в вашей системе выполните:

    sysctl net.ipv4.tcp_available_congestion_control

    Эта команда предоставит список всех алгоритмов, которые могут быть использованы с вашим ядром.

  3. Изменение текущего алгоритма:
    Если вы хотите изменить текущий алгоритм управления перегрузкой, используйте следующую команду:

    sudo sysctl -w net.ipv4.tcp_congestion_control=<имя_алгоритма>

    Замените <имя_алгоритма> на один из алгоритмов из списка, который вы получили ранее. Например, вы можете установить cubic или reno, если они доступны.

  4. Проверка настроек на уровне соединений:
    Если вы хотите узнать, какой алгоритм управления перегрузкой используется для каждого соединения, вы можете воспользоваться командой ss, которая является частью пакета iproute2:

    ss -ti

    В выводе команды под деталями соединения вы увидите используемый алгоритм. Это может быть, например, cubic, за которым следуют параметры, относящиеся к TCP-соединению.

  5. Загрузка дополнительных алгоритмов (при необходимости):
    Если в списке доступных алгоритмов отсутствуют cubic или htcp, вы можете попытаться загрузить их как модули ядра:

    modprobe tcp_htcp
    modprobe tcp_cubic
  6. Дополнительные ресурсы:
    Для более подробной информации о настройке и оптимизации TCP на Linux вы можете ознакомиться с документацией по настройке TCP.

Эти шаги помогут вам выявить и управлять алгоритмами контроля перегрузки TCP в вашей системе Ubuntu.

Оцените материал
Добавить комментарий

Капча загружается...