3

При использовании nc , scp , wget для передачи файлов между двумя компьютерами по выделенной ссылке 2 Мбит / с, я получаю скорости от 0,5 до 1 Мбит / с. Однако, когда я использую iperf -c 10.0.1.4 -t 20 -P 12 (например), я могу максимизировать скорость соединения (получая стабильные 2 Мбит / с).

Есть ли способ сделать однопотоковую передачу (например, сделанную scp), чтобы использовать всю / большую часть ссылки? Какие-то настройки tcp или iptables ...?

1 ответ1

2

Для начала давайте признаем, что вы сравниваете яблоки и апельсины.

nc , scp и wget обычно передаются через один сокет TCP. Однако, когда вы используете iperf -P 12 , вы используете двенадцать параллельных сокетов TCP. Это нетривиальное различие. Чем больше у вас параллельных соединений, тем больше будет потребление пропускной способности. Фактически, speedtest.net использует несколько параллельных потоков TCP для надежного измерения пропускной способности, даже если ваша ссылка имеет значительную потерю пакетов, которая может перехватить один сокет TCP; Я видел их насыщенные ссылки с потерей 1,5% (что снизило бы пропускную способность обычного TCP-сокета).

Основными причинами неоптимальных передач TCP с одним сокетом являются потеря пакетов и задержка / дрожание. Вам нужно определить и исправить, если у вас есть какие-либо текущие потери пакетов по вашей ссылке ... Я обычно использую mtr или winmtr для этого ...

mpenning@mpenning-T61:~$ mtr -n <destination_ip>
HOST: mpenning-T61              Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. 10.239.84.1                0.0%    407    8.8   9.1   7.7  11.0   1.0
  2. 66.68.3.223                0.0%    407   11.5   9.2   7.1  11.5   1.3
  3. 66.68.0.8                  0.0%    407   19.9  16.7  11.2  21.4   3.5
  4. 72.179.205.58              0.0%    407   18.5  23.7  18.5  28.9   4.0
  5. 66.109.6.108               5.2%    407   16.6  17.3  15.5  20.7   1.5 <----
  6. 66.109.6.181               4.8%    407   18.2  19.1  16.8  23.6   2.3
  7. 4.59.32.21                 6.3%    407   20.5  26.1  19.5  68.2  14.9
  8. 4.69.145.195               6.4%    406   21.4  27.6  19.8  79.1  18.1
  9. <destination_ip>           6.8%    406   22.3  23.3  19.4  32.1   3.7

Если вы видите прыжок, в котором вы постоянно теряете пакеты с течением времени, а прыжки за ним теряют пакеты, то вам нужно исправить то, что вызывает потерю пакетов. Я обычно измеряю по крайней мере пять или десять минут ... часто часами, если я не вижу проблемы немедленно.

Другая ситуация - задержка ... вам нужно будет еще раз определить проблему, указав особенности сквозной задержки, а также информацию об ОС src/dest, прежде чем кто-то сможет ответить на это.

Так что у вас есть выбор ... либо:

  • Выясните, что заставляет вас снижать производительность
  • Разбейте ваши передачи на несколько файлов и передавайте их параллельно (чтобы преодолеть любые факторы, снижающие пропускную способность сейчас)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .