Пропускная способность netcat низкая, но высокая iperf

9

Я тестировал пропускную способность между двумя устройствами, подключенными к одному маршрутизатору, один с локальной сетью 100 Мбит / с, другой с Wi-Fi 54 Мбит / с.

Вот интересная часть:

  • используя nc, я получаю 2,63 МБ / с при отправке из А в В (измеряется с помощью pv -r|nc ipB)
  • используя iperf, я получаю 23 МБ / с, что довольно хорошо.

Что может быть не так с nc?

ОС Ubuntu 11.04 для обоих.

Джордж
источник
У меня есть очень похожий вопрос, который вы могли бы найти полезным: Измерение пропускной способности сети с помощью скорости передачи данных netcat и CIFS / SMB
Смотрите также unix.stackexchange.com/questions/48399/...
rogerdpack

Ответы:

6

Масштаб звучит примерно так: NetCat не поддерживает TCP Windowing. Если вы выполните tcpdump для интерфейса во время выполнения двух тестов, я думаю, вы увидите этот шаблон для NC:

  1. Пакет ->
  2. <- Ack
  3. Пакет ->
  4. <- Ack
  5. Пакет ->
  6. <- Ack
  7. Пакет ->
  8. <- Ack

И этот шаблон для IPerf:

  1. Пакет ->
  2. Пакет ->
  3. Пакет ->
  4. Пакет ->
  5. Пакет ->
  6. Пакет ->
  7. <- Ack
  8. Пакет ->
  9. Пакет ->
  10. Пакет ->
  11. Пакет ->
  12. Пакет ->
  13. Пакет ->
  14. <- Ack
  15. Пакет ->
  16. Пакет ->
  17. Пакет ->
  18. Пакет ->
  19. Пакет ->
  20. Пакет ->
  21. <- Ack

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

sysadmin1138
источник
1
Я могу подтвердить, что вижу ту же проблему на моей установке 10g. dd/netcatэто сообщает о более низкой пропускной способности по сравнению с iperf. dd/netcatотчет о 3 Гбит / с, тогда как iperfсообщает 9 Гбит / с.
Винс
Хотите проверить, правильно ли ваше предположение здесь? :)
rogerdpack
Мой компьютер с Windows 10, использующий netcat, просто отправлял 8 КБ пакеты с размером окна TCP всего 8 КБ, что приводило к ужасной производительности по сравнению с гигабитом. Происходит как в nc, так и в ncat, но SSH дает более 90 МБ / с между одними и теми же машинами. Существует старая ошибка в Windows Sockets, которая вызывает это: support.microsoft.com/en-us/help/823764/…
Orion Lawlor,
1

Это не так netcat. С iperfя получаю

[  3] local 192.168.1.201 port 55610 connected with 192.168.1.200 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   394 MBytes  39.4 MBytes/sec

С nc -l -p 1852 > /dev/nullи cat /dev/zero | pv -r | nc 192.168.1.200 1852я получаю

[  34MB/s]

(Колеблется между 30 и 60.)

Какие данные вы кормите netcat?

Марк Вагнер
источник
0

То, что ваша беспроводная карта способна подключаться со скоростью 54 Мбит / с, не означает, что вы получите такую ​​пропускную способность. В частности, похоже, что у вас есть 802.11g, который имеет пятку Achilies . Пока ** каждый * беспроводное устройство он разговаривает также г он будет идти быстро, но как только еще один прибор , который только б скорость способна, она должна использовать наименьший общий знаменатель , чтобы говорить со всеми устройствами.

Вы можете попробовать открыть терминал на машине с беспроводной связью и работающей iwconfig. Найдите поле Bit Rate = и посмотрите, на какой скорости вы на самом деле подключены.

Калеб
источник
0

Остерегайтесь единиц Iperf. Это распространенная ошибка: iperf часто отображается в Мбит / с вместо Мбайт / с.

Грегори МУССАТ
источник