2

Время от времени я использую Netcat для копирования файлов или образов дисков по сети. В то время как он выполняет свою работу, я всегда чувствовал, что он всегда был на медленной медлительной стороне, независимо от использования ssh, без ssh, сжатия или без сжатия.

Я начал тестирование udpcast (http://www.udpcast.linux.lu/cmd.html), и, похоже, он работает как минимум в 5 раз (или более) быстрее. Udpcast со сжатыми каналами иногда во много раз быстрее, чем netcat без сжатых каналов.Сжатие с помощью Nc обычно замедляется в локальной сети, поэтому я обычно избегаю его. Потому что моя сеть обычно работает на 1 Гбит

Вот пара примеров без ssh и без сжатия, которое я использую

dd if=somedisk |pv|nc -l -p 9999  
nc networkaddr 9999|pv >./disk.img  


udp-sender --full-duplex --file /dev/somedisk
udp-receiver --file ./disk.img

Вот некоторые основные примеры, которые я использую. Естественно, я тоже использую сжатые трубы. Во всех случаях udpcast будет выполнять минимальные 5x скоростей Netcat, и мне интересно, почему это так.

Я даже склонен думать, что Udpcast с каналами является хорошим дополнением для сетевой передачи файлов.

Вот udpcast с tar и untar pipe для 17,5 ГиБ по сети

настоящий 9м26.186с
пользователь 0m1.247s
sys 0m23.836s

А вот cp поверх Samba из Linux в Windows
настоящий 9m17.729s
пользователь 0m0.311s
sys 0m11.044s

Можно ли поймать производительность Udpcast с Netcat?
Причина, по которой я иногда спрашиваю некоторые дистрибутивы, теперь может предлагать Udpcast.

1 ответ1

2

nc по умолчанию использует TCP.

TCP начинается с низкого "размера окна" и набирает скорость во время соединения, так как максимальный размер окна определяется как больший. Кроме того, TCP отправляет дополнительный трафик для поддержания соединений, то есть пакеты ACK. Это необходимо для поддержки понятия "соединение" и надежной, заказанной доставки.

UDP не поддерживает соединения или надежную доставку, поэтому никакого дополнительного багажа не существует, и поэтому он быстрее.

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

nc есть опция -u IIRC для отправки / получения с использованием UDP вместо TCP.

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