¿Por qué Udcast es muchas veces más rápido que Netcat?

¿Por qué Udcast es muchas veces más rápido que Netcat?

Utilizo Netcat de vez en cuando para copiar archivos o imágenes de disco a través de la red. Si bien hace el trabajo, siempre sentí que siempre estaba en el lado lento, independientemente de usar ssh, sin ssh, compresión o sin compresión.

Empecé a probar udpcast (http://www.udpcast.linux.lu/cmd.html) y parece ser al menos 5 veces (o más) más rápido. Udpcast con tuberías comprimidas es a veces mucho más rápido que netcat sin tuberías comprimidas. La compresión con Nc generalmente se ralentiza en mi red local, por lo que generalmente la evito. Porque mi red generalmente funciona a 1 GB

Aquí hay un par de ejemplos sin ssh y sin compresión que uso

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

Estos son algunos ejemplos básicos que uso. Naturalmente, también uso tubos comprimidos. En todos los casos, udpcast superará a Netcat con velocidades mínimas de 5x y me pregunto por qué es así.

Incluso me inclino a pensar que Udpcast con canalizaciones es un buen complemento para la transferencia de archivos en red.

Aquí udpcast con tar y untar pipe para 17,5 GiB a través de la red

real 9m26.186s
usuario 0m1.247s
sistema 0m23.836s

Y aquí está cp sobre Samba de Linux a Windows
real 9m17.729s
usuario 0m0.311s
sys 0m11.044s

¿Es posible captar el rendimiento de Udpcast con Netcat?
La razón por la que pregunto es que a veces alguna distribución podría ofrecer ahora Udpcast.

Respuesta1

ncpor defecto utiliza TCP.

TCP comienza con un "tamaño de ventana" bajo y gana velocidad durante una conexión a medida que se determina que el tamaño máximo de ventana es mayor. Además, TCP envía tráfico adicional para mantener las conexiones, es decir, paquetes ACK. Esto es necesario para respaldar la noción de "conexión" y entrega ordenada y confiable.

UDP no admite conexiones ni entregas confiables, por lo que no existe ese equipaje adicional y, por lo tanto, es más rápido.

No he jugado udpcastmucho con él, pero si no tiene ningún mecanismo de detección de errores, corre el riesgo de no tener una buena copia de lo que transmitió si su red decide descartar un paquete.

nctiene una -uopción IIRC para enviar/recibir usando UDP en lugar de TCP.

información relacionada