netcat throughput low mas iperf high

8

Eu estava testando o throughput entre dois pcs, conectados no mesmo roteador, um com 100mbps lan, o outro com 54mbps wifi.

Aqui está a parte interessante:

  • usando nc , obtenho 2.63MB / s ao enviar de A para B (medido com pv -r|nc ipB )
  • usando iperf , obtenho 23MB / s , o que é muito bom.

O que poderia estar errado com nc ?

O sistema operacional é o Ubuntu 11.04 para ambos.

    
por george 02.08.2011 / 06:55

4 respostas

6

A escala parece certa para o NetCat não suportar o TCP Windowing. Se você fizer um tcpdump na interface enquanto os dois benchmarks estão rodando, eu acho que você verá este padrão para NC:

  1. Pacote - >
  2. < - Ack
  3. Pacote - >
  4. < - Ack
  5. Pacote - >
  6. < - Ack
  7. Pacote - >
  8. < - Ack

E esse padrão para o IPerf:

  1. Pacote - >
  2. Pacote - >
  3. Pacote - >
  4. Pacote - >
  5. Pacote - >
  6. Pacote - >
  7. < - Ack
  8. Pacote - >
  9. Pacote - >
  10. Pacote - >
  11. Pacote - >
  12. Pacote - >
  13. Pacote - >
  14. < - Ack
  15. Pacote - >
  16. Pacote - >
  17. Pacote - >
  18. Pacote - >
  19. Pacote - >
  20. Pacote - >
  21. < - Ack

Por segmentos TCP Windowing, você pode obter taxas de transferência muito mais altas, já que você não precisa esperar pelo Ack após cada pacote, somente após cada segmento.

    
por 02.08.2011 / 17:39
1

Não é netcat . Com iperf eu recebo

[  3] local 192.168.1.201 port 55610 connected with 192.168.1.200 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   394 MBytes  39.4 MBytes/sec

Com nc -l -p 1852 > /dev/null e cat /dev/zero | pv -r | nc 192.168.1.200 1852 obtenho

[  34MB/s]

(flutua entre 30 e 60).

Quais dados você está alimentando netcat ?

    
por 02.08.2011 / 19:07
0

Apenas porque sua placa sem fio é capaz de conexões de 54mbs, não significa que você obterá essa taxa de transferência. Em particular, parece que você tem 802.11g que tem um calcanhar Achilies . Contanto que ** cada * dispositivo sem fio com o qual ele esteja falando também seja g , ele irá mais rápido, mas assim que um dispositivo com apenas velocidade puder, ele tem que usar o menor denominador comum para falar com todos os dispositivos.

Você pode tentar abrir um terminal na máquina sem fio e executando iwconfig . Procure o campo taxa de bits = e veja em que velocidade você está realmente conectado.

    
por 03.08.2011 / 01:23
0

Cuidado com as unidades iperf. Essa é uma armadilha comum: iperf geralmente é exibido em Mbit / s em vez de Mbyte / s.

    
por 16.04.2012 / 12:28

Tags