Как принудительно включить масштабирование окна TCP с помощью SSH?

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

Скорость передачи данных между континентами максимальна 2 МБ/с.

Я проверил, и SSH-сервер моего сервера даже не использует масштабирование окна, а само окно очень маленькое, около 22 КБ…

Флаги [S], seq 1433200120, win 29200, опции [mss 1420,sackOK,TS val 1451891061 ecr 0,nop,wscale 7], длина 0
Флаги [S.], seq 3549718494, ack 1433200121, win 65535, опции [mss 1460,sackOK,TS val 4214039974 ecr 1451891061,nop,wscale 9], длина 0

Сервер имеет 65535*9=590 КБ

Масштабирование окна включено.

$ cat /proc/sys/net/ipv4/tcp_window_scaling 
1

И я уже увеличил все параметры до 25 МБ и 16 МБ минимально по умолчанию в /etc/sysctl.conf:

net.core.wmem_max=25165824
net.core.rmem_max=25165824
net.ipv4.tcp_rmem = 16777216 16777216 25165824
net.ipv4.tcp_wmem = 16777216 16777216 25165824

Я использую Fedora 39 и RHEL 8, что я могу сделать, чтобы заставить SSH-сервер обрабатывать гораздо больше данных в полете?

Так что суть в задержке между конечными точками, которая сильно влияет на TCP в плане потребления полосы пропускания, и поэтому вы пытаетесь воспользоваться масштабированием окна TCP.

Около 10 лет назад у меня также были проблемы с передачей терабайтов данных по всему миру, и если вы не можете использовать блоковую репликацию и застряли с обзором структуры файловой системы и копированием, вы можете попробовать bbcp.

http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
(отказ от ответственности: я не несу ответственность за содержание ссылки)

В конце концов, это также была причина, почему я прекратил это, так как на арендованных линиях вы не одни, вам все равно придется согласовывать с центром сетевых операций, либо по ограничениям пропускной способности, либо по определениям качества услуг вашего трафика, в конце концов – технически осуществимо – но неустойчиво.

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

Чтобы заставить сервер SSH использовать больший размер окна TCP и включить масштабирование окна, вам нужно будет внести несколько изменений в настройки сети и конфигурации SSH. Разберем шаги, которые могут помочь улучшить производительность передачи данных через SSH в условиях высокой задержки.

1. Проверка текущих настроек TCP

Убедитесь, что масштабирование окна TCP действительно включено. Вы уже сделали это, проверив файл /proc/sys/net/ipv4/tcp_window_scaling, который должен содержать значение 1. Также убедитесь в правильности следующих параметров:

cat /proc/sys/net/ipv4/tcp_rmem
cat /proc/sys/net/ipv4/tcp_wmem

Они должны показывать значения с достаточным максимальным размером (например, 16777216 16777216 25165824).

2. Настройка максимального размера окна TCP

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

sysctl -p

Это применит ваши изменения.

3. Конфигурация SSH

SSH использует подъем на линии TCP для оптимизации производительности. Это происходит за счет динамического контроля потока. Убедитесь, что параметры SSH не ограничивают максимальное окно TCP, проверьте настройки в файле конфигурации SSH (обычно в /etc/ssh/sshd_config).

Обратите внимание на параметры:

  • MaxStartups: этот параметр может ограничивать количество одновременных подключений, но чаще влияет на соединения, а не на размер окна.

4. Использование альтернативных инструментов

Если передача данных по SSH по-прежнему не достигает желаемой скорости, возможно, стоит рассмотреть альтернативные способы передачи файлов. Например, вы можете использовать bbcp, который, как упоминается в обсуждении, позволяет использовать параллельные потоки и может лучше использовать полосу WAN. Инструкции по установке и запуску можно найти здесь.

5. Мониторинг сетевого трафика

Отслеживайте сетевой трафик для проверки того, как используется TCP. Используйте такие инструменты, как iftop или nload, чтобы иметь представление о текущих значениях window и тем, как они изменяются.

6. Работа с провайдером

Если после всех изменений вы все равно ограничены по скорости, возможно, нужно обсудить качество обслуживания (QoS) и предельные ограничения с вашим сетевым провайдером. Они могут помочь оптимизировать маршрутизацию трафика для улучшения производительности.

Заключение

Эти действия могут помочь вам улучшить скорость передачи данных через SSH благодаря более эффективному использованию масштабирования окна TCP. Помните, что задержка между узлами всегда будет влиять на пропускную способность; однако правильные настройки могут помочь минимизировать влияние этих задержек.

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

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