throughput netcat basso ma iperf alto


9

Stavo testando il throughput tra due pc, collegati sullo stesso router, uno con lan da 100 Mbps, l'altro con wifi da 54 Mbps.

Ecco la parte interessante:

  • usando nc, ottengo 2,63 MB / s quando invio da A a B (misurato con pv -r|nc ipB)
  • usando iperf, ottengo 23MB / s che è praticamente ok.

Cosa potrebbe esserci di sbagliato nc?

Il sistema operativo è Ubuntu 11.04 per entrambi.



Risposte:


6

Il suono della scala è corretto per NetCat che non supporta TCP Windowing. Se esegui un tcpdump sull'interfaccia mentre i due benchmark sono in esecuzione, suppongo che vedrai questo schema per NC:

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

E questo modello per IPerf:

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

Con Windowing TCP segmenti è possibile ottenere throughput molto più elevati poiché non è necessario attendere l'Ack dopo ogni pacchetto, solo dopo ogni segmento.


1
Posso confermare di vedere lo stesso problema sulla mia configurazione 10g. dd/netcatsegnala una larghezza di banda inferiore rispetto a iperf. dd/netcatsegnala 3Gb / s mentre iperfsegnala 9Gb / s.
Vince,

Vuoi controllare se la tua ipotesi è corretta qui? :)
rogerdpack

La mia scatola di Windows 10 con netcat stava inviando solo pacchetti da 8 KB con una dimensione della finestra TCP di soli 8 KB, con prestazioni terribili su gigabit. Succede sia in nc che in ncat, ma SSH fornisce 90+ MB / sec tra le stesse macchine. Esiste un vecchio bug nei socket di Windows che causa questo: support.microsoft.com/en-us/help/823764/…
Orion Lawlor

1

Non lo è netcat. Con iperfottengo

[  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/nulle cat /dev/zero | pv -r | nc 192.168.1.200 1852ottengo

[  34MB/s]

(Fluttua tra 30 e 60.)

Quali dati stai fornendo netcat?


0

Solo perché la tua scheda wireless è in grado di connettersi a 54 Mb non significa che otterrai questo throughput. In particolare, sembra che tu abbia 802.11g che ha un tallone d'Achille . Fino a quando ** ogni * dispositivo wireless con cui sta parlando è anche g andrà veloce, ma non appena un dispositivo che è solo a velocità b , deve usare il minimo comune denominatore per parlare con tutti i dispositivi.

Potresti provare ad aprire un terminale sulla macchina con wireless e in esecuzione iwconfig. Cerca il campo Bit Rate = e vedi a quale velocità sei effettivamente connesso.


0

Fai attenzione alle unità iperf. Questo è un errore comune: iperf spesso viene visualizzato in Mbit / s anziché in Mbyte / s.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.