Почему Udcast во много раз быстрее Netcat?

Почему Udcast во много раз быстрее Netcat?

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

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

Вот несколько примеров без 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 будет работать быстрее Netcat минимум в 5 раз, и мне интересно, почему так происходит.

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

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

реальный 9m26.186s
пользователь 0m1.247s
система 0m23.836s

А вот cp через Samba из Linux в Windows
real 9m17.729s
user 0m0.311s
sys 0m11.044s

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

решение1

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

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

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

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

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

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