Увеличьте скорость передачи данных по сети для различных приложений

Увеличьте скорость передачи данных по сети для различных приложений

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

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

решение1

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

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, прежде чем кто-то сможет отреагировать на нее.

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

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

Связанный контент