Transferência de arquivos UDP do Netcat entre dois servidores?

1

Estou testando velocidades de transferência de arquivos entre dois servidores da Red Hat que estão conectados ao mesmo switch dentro do data center e decidi usar o netcat para eliminar a sobrecarga de protocolo tanto quanto possível.

O teste no modo TCP correu bem e fiquei imaginando como o UDP poderia se sair.

No meu recebimento (cliente) final, eu corri isto:

nc -u -l 11225 -v > myfile.out

E, no final do envio (servidor), executei o seguinte:

cat myfile.out | nc -u myserver.foo.zzz.com 11225 -v

O arquivo com o qual estou testando é de 38 GB, mas a transferência parece parar em ao redor 15 GB (uma vez em 14.9, outra em 15.6).

Eu testei adicionando um "-w 5000" apenas no caso de expirar mas sem alegria. Adicionar o -v não mostra nada, exceto reconhecer que a conexão ocorreu. Nenhum erro.

Então - alguma sugestão sobre por que a transferência cessaria?

    
por Mark Bowytz 22.08.2014 / 17:04

1 resposta

3

O que você está vendo não é um tempo limite. O que você está vendo é o resultado do uso do protocolo errado para o propósito.

O TCP executará o controle de fluxo, o que significa que ele ajustará a velocidade de transmissão para a capacidade da rede e do receptor. Adicionalmente, o TCP irá retransmitir pacotes perdidos.

O UDP não faz nada disso. O comando nc que você usou transmitirá pacotes tão rapidamente quanto puder ler o disco e inseri-los na interface de rede. Se a rede ou a recepção não puder acompanhar, continuará na mesma velocidade e enviará os dados apenas uma vez.

Se você vir apenas metade dos dados chegando do outro lado, provavelmente significa que a máquina de envio é capaz de enviar os dados duas vezes mais rápido que o resto do sistema pode lidar com isso.

Se você examinar cuidadosamente o arquivo no terminal de recebimento, deverá descobrir que ele não contém apenas a primeira metade do arquivo original. Em vez disso, você pode esperar encontrar fragmentos de todo o arquivo original.

    
por 22.08.2014 / 17:55