rendimiento de netcat bajo pero iperf alto

9

Estaba probando el rendimiento entre dos PC, conectadas en el mismo enrutador, una con 100mbps lan, la otra con 54mbps wifi.

Esta es la parte interesante:

  • usando nc, obtengo 2.63MB / s cuando envío de A a B (medido con pv -r|nc ipB)
  • usando iperf, obtengo 23MB / s, lo cual está bastante bien.

¿Con qué podría estar mal nc?

El sistema operativo es ubuntu 11.04 para ambos.

Jorge
fuente

Respuestas:

6

El sonido de escala correcto para NetCat no admite TCP Windowing. Si realiza un tcpdump en la interfaz mientras se ejecutan los dos puntos de referencia, supongo que verá este patrón para NC:

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

Y este patrón para IPerf:

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

Al vincular segmentos TCP, puede obtener rendimientos mucho más altos ya que no tiene que esperar el Ack después de cada paquete, solo después de cada segmento.

sysadmin1138
fuente
1
Puedo confirmar que veo el mismo problema en mi configuración de 10g. dd/netcatEste informa un ancho de banda menor en comparación con iperf. dd/netcatinforma sobre 3Gb / s mientras que iperfinforma 9Gb / s.
Vince
¿Te importaría comprobar si tu suposición es correcta aquí? :)
rogerdpack
Mi caja de Windows 10 usando netcat solo estaba enviando paquetes de 8 KB con un tamaño de ventana TCP de solo 8 KB, lo que resultó en un rendimiento horrible sobre gigabit. Sucede tanto en nc como en ncat, pero SSH proporciona más de 90 MB / seg entre las mismas máquinas. Hay un error antiguo en los enchufes de Windows que causa esto: support.microsoft.com/en-us/help/823764/…
Orion Lawlor
1

No es netcat. Con iperfyo consigo

[  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

Con nc -l -p 1852 > /dev/nully cat /dev/zero | pv -r | nc 192.168.1.200 1852consigo

[  34MB/s]

(Fluctúa entre 30 y 60.)

¿Qué datos estás alimentando netcat?

Mark Wagner
fuente
0

El hecho de que su tarjeta inalámbrica sea capaz de conexiones de 54mbs no significa que obtendrá ese rendimiento. En particular, parece que tiene 802.11g que tiene un talón Achilies . Mientras ** cada dispositivo inalámbrico * que está hablando con es también g va a ir rápido, pero tan pronto como incluso un dispositivo que sólo es b velocidad capaz, tiene que utilizar el mínimo común denominador para hablar con todos los dispositivos.

Puede intentar abrir un terminal en la máquina con conexión inalámbrica y en ejecución iwconfig. Busque el campo Bit Rate = y vea a qué velocidad está realmente conectado.

Caleb
fuente
0

Tenga cuidado con las unidades iperf. Este es un error común: iperf a menudo se muestra en Mbit / s en lugar de Mbyte / s.

Gregory MOUSSAT
fuente