Netcat-Durchsatz niedrig, aber iperf hoch


9

Ich habe den Durchsatz zwischen zwei PCs getestet, die auf demselben Router angeschlossen sind, einer mit 100 MBit / s LAN, der andere mit 54 MBit / s WLAN.

Hier ist der interessante Teil:

  • Mit ncbekomme ich 2,63 MB / s beim Senden von A nach B (gemessen mit pv -r|nc ipB)
  • Mit iperfbekomme ich 23MB / s, was ziemlich in Ordnung ist.

Womit könnte etwas falsch sein nc?

Das Betriebssystem ist Ubuntu 11.04 für beide.


Ich habe eine sehr ähnliche Frage, die Sie vielleicht nützlich finden: Messen des Netzwerkdurchsatzes mit Netcat vs. CIFS / SMB-Übertragungsraten

Antworten:


6

Die Skalierung klingt ungefähr richtig für NetCat, das TCP Windowing nicht unterstützt. Wenn Sie einen tcpdump auf der Schnittstelle ausführen, während die beiden Benchmarks ausgeführt werden, wird dieses Muster vermutlich für NC angezeigt:

  1. Paket ->
  2. <- Bestätigen
  3. Paket ->
  4. <- Bestätigen
  5. Paket ->
  6. <- Bestätigen
  7. Paket ->
  8. <- Bestätigen

Und dieses Muster für IPerf:

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

Durch das Fenstern von TCP-Segmenten können Sie viel höhere Durchsätze erzielen, da Sie nicht nach jedem Paket, sondern nur nach jedem Segment auf die Bestätigung warten müssen.


1
Ich kann bestätigen, dass bei meinem 10g-Setup dasselbe Problem auftritt. dd/netcatis meldet geringere Bandbreite im Vergleich zu iperf. dd/netcatBericht über 3 Gbit / s, während iperf9 Gbit / s gemeldet werden.
Vince

Möchten Sie überprüfen, ob Ihre Vermutung hier richtig ist? :)
Rogerdpack

Meine Windows 10-Box mit Netcat sendete nur 8-KB-Pakete mit einer TCP-Fenstergröße von nur 8 KB, was zu einer schrecklichen Leistung über Gigabit führte. Passiert sowohl in nc als auch in ncat, aber SSH bietet mehr als 90 MB / s zwischen denselben Computern. Es gibt einen alten Fehler in Windows-Sockets, der dies verursacht: support.microsoft.com/en-us/help/823764/…
Orion Lawlor

1

Ist es nicht netcat. Mit iperfbekomme ich

[  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

Mit nc -l -p 1852 > /dev/nullund cat /dev/zero | pv -r | nc 192.168.1.200 1852ich bekomme

[  34MB/s]

(Schwankt zwischen 30 und 60.)

Welche Daten füttern Sie netcat?


0

Nur weil Ihre WLAN-Karte 54 MBit / s-Verbindungen unterstützt, bedeutet dies nicht, dass Sie diesen Durchsatz erzielen. Insbesondere klingt es so, als hätten Sie 802.11g mit einer Achilies-Ferse . Solange ** jedes * drahtlose Gerät, mit dem es spricht, auch g ist , wird es schnell gehen, aber sobald auch nur ein Gerät, das nur b geschwindigkeitsfähig ist, muss es den kleinsten gemeinsamen Nenner verwenden, um mit allen Geräten zu sprechen.

Sie können versuchen, ein Terminal auf dem Computer drahtlos zu öffnen und auszuführen iwconfig. Suchen Sie nach dem Feld Bitrate = und sehen Sie, mit welcher Geschwindigkeit Sie tatsächlich verbunden sind.


0

Vorsicht vor Iperf-Einheiten. Dies ist eine häufige Gefahr: iperf wird häufig in Mbit / s anstelle von Mbyte / s angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.