Por que o Udcast é muitas vezes mais rápido que o Netcat?

2

Eu uso o Netcat de vez em quando para copiar arquivos ou imagens de disco pela rede. Enquanto ele faz o trabalho, eu sempre senti que ele estava sempre lento, independentemente de usar ssh, ssh, compressão ou nenhuma compressão.

Eu comecei a testar o udpcast ( link ) e parece ser pelo menos 5 vezes (ou mais ) Mais rápido. O Udpcast com pipes compactados é muitas vezes mais rápido que o netcat sem nenhum tubo comprimido. A compactação com o Nc geralmente fica mais lenta na minha rede local, então geralmente evito isso. Porque minha rede geralmente está em 1gbs

Aqui estão alguns exemplos sem ssh e sem compactação eu 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

Estes são alguns exemplos básicos que eu uso. Naturalmente eu também uso canos comprimidos. Em todos os casos, o udpcast irá executar um mínimo de 5x de velocidade no Netcat e eu estou querendo saber por que esse é o caso.

Estou até inclinado a pensar que o Udpcast com pipes é um bom complemento para a transferência de arquivos em rede.

Aqui udpcast com tar e untar pipe para 17,5 GiB na rede

real 9m26.186s
usuário 0m1.247s
sys 0m23.836s

E aqui está o cp sobre o Samba do Linux para o Windows
real 9m17.729s
usuário 0m0.311s
sys 0m11.044s

É possível capturar o desempenho do Udpcast com o Netcat?
A razão pela qual estou perguntando às vezes alguma distro agora pode oferecer o Udpcast.

    
por kerrreem 23.12.2013 / 18:42

1 resposta

2

nc por padrão usa TCP.

O TCP começa com um "tamanho de janela" baixo e ganha velocidade durante uma conexão, pois o tamanho máximo da janela é determinado como maior. Além disso, o TCP envia tráfego extra para manter conexões, ou seja, pacotes ACK. Isso é necessário para apoiar a noção de uma "conexão" e entrega confiável e ordenada.

O UDP não oferece suporte a conexões ou entrega confiável, portanto, nenhuma bagagem extra existe e, portanto, é mais rápida.

Eu não joguei com udpcast , mas se ele não tiver nenhum mecanismo de detecção de erros, você corre o risco de não ter uma boa cópia do que você transmitiu se a sua rede decidir descartar um pacote.

nc tem uma opção -u IIRC para enviar / receber usando UDP em vez de TCP.

    
por 23.12.2013 / 19:01

Tags