Frage Wie testen Sie die Netzwerkgeschwindigkeit zwischen zwei Boxen?


Ich habe ein Gigabit-Netzwerk in meinem Haus und ein paar Ubuntu-basierten Boxen eingerichtet. Aus reiner Neugier möchte ich die Geschwindigkeit zwischen den beiden Boxen überprüfen. Ich habe keine Probleme mit der Geschwindigkeit oder irgendetwas, es ist wirklich nur der Geek in mir, der neugierig ist. Außerdem können die Ergebnisse mich wissen lassen, ob es Raum für Verbesserungen gibt oder ob ich etwas falsch konfiguriert habe.

Wie testen Sie die Netzwerkgeschwindigkeit zwischen Ubuntu-Boxen?


141
2017-10-17 17:04


Ursprung




Antworten:


ich benutze iperf. Es ist eine Client-Server-Anordnung, in der Sie es im Server-Modus an einem Ende ausführen und von einem anderen Computer auf der anderen Seite des Netzwerks eine Verbindung mit dem Server herstellen.

Einer der beiden Maschinen läuft:

sudo apt-get install iperf

Wir werden ein beginnen iperf Server auf einer der Maschinen:

iperf -s

Und dann auf dem anderen Computer, sag es iperf als Client verbinden:

iperf -c <address of other computer>

Auf dem Clientcomputer sehen Sie etwa Folgendes:

oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

Wenn Sie eine Firewall auf dem Servercomputer ausführen, müssen Sie natürlich Verbindungen auf Port 5001 zulassen oder den Port mit der Option ändern -p Flagge.


Sie können so ziemlich dasselbe mit altem tun nc (netcat) wenn du so geneigt bist. Auf dem Servercomputer:

nc -vvlnp 12345 >/dev/null

Und der Client kann ein Gigabyte Nullen durchleiten dd über dem nc Tunnel.

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

Als Demod:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

Das Timing dort ist gegeben durch dd aber es sollte genau genug sein, da es nur so schnell ausgeben kann, wie es die Pipe braucht. Wenn du damit unzufrieden bist, könntest du die ganze Sache in einem time Anruf.

Denken Sie daran, dass das Ergebnis in Mega istBytes also multipliziere es mit 8, um ein Mega zu erhaltenBitspro Sekunde. Die obige Demo läuft mit 944mbps.


218
2017-10-17 17:15



Mann, du hast alle Antworten auf meine Fragen! Mein Netzwerk ist anscheinend nicht so eingerichtet wie Ihr nur Transfer bei 714 MByte und Bandbreite von 598 MBit / s. Dunno wird sich das in Zukunft vielleicht ansehen. Vielen Dank. - Jacob Schoen
Fairerweise ist die andere Box nur ein Schalter (und 20 Meter von Cat5e) entfernt und es gibt keine Überlastung. 600mbps sind immer noch ziemlich schnell. - Oli♦
Das ist großartig, aber ich habe keinen Root-Zugriff auf den Server. - Geoff
Versuchen Sie -P-10. Mein Ergebnis mit einer einzelnen Verbindung ist ähnlich wie jschoens, aber mit 3+ parallelen Verbindungen, schiebt es konsequent 920Mbps. - wujj123456
@ CMCDragonkai Sie sollten wahrscheinlich keine Ressourcen testen, die nicht Ihre sind. Bandbreiten-Tests können sich auf die Kurzzeitstabilität auswirken. - Oli♦


Genau wie Olis Empfehlung für iperf. Ich möchte nur einige Punkte hinzufügen:

  1. Es gibt auch Windows-Clients, die das Testen ermöglichen Plattformen.
  2. -t <Sekunden> Ändert die Testlänge. -P <n> Ändert die Anzahl der gleichzeitigen Verbindungen. Beispielsweise, iperf -c [Ziel-IP] -P 10 -t 30 testet 10 Verbindungen für 30 Sekunden und gibt aggregierte Ergebnisse zusammen mit 10 separaten Verbindungsgeschwindigkeiten.
  3. Sie brauchen kein Sudo. Sie können die Binärdatei einfach herunterladen unter http://iperf.fr/. Es sollte funktionieren. Laden Sie es mit herunter wgetmach es ausführbar mit chmodund Sie können die Binärdatei direkt ausführen. Es funktioniert perfekt.

Ich habe festgestellt, dass die Verbindungsgeschwindigkeit bei Verwendung der Standardeinstellungen ziemlich schwankt. Bei 3+ parallelen Verbindungen sind die Ergebnisse bei meinem Gigabyte-Switch konsistenter. (konsistent @ 910-920 Mbit / s)


19
2018-05-14 07:33





Verwenden Dieses Skript Sie können die Verbindungsgeschwindigkeit zwischen Ihrem Gerät und einem entfernten Host einfach testen. Anwendungsbeispiel:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host ist Ihr Ziel-Host (Sie müssen ssh-Zugang haben zu diesem Gastgeber)
  • 80000 ist die ungefähre Größe der Testdatei (in kbs), die sein wird empfangen an den Remote-Host. Es ist kein zwingendes Argument.

6
2017-08-06 19:40



Dies scheint die Geschwindigkeit der SCP-Anwendung zu testen, die niedriger ist als ein Test auf einer niedrigeren Schicht. Zum Beispiel verwendet NC L4. Natürlich ist das großartig, wenn Sie mehr Wert auf die Geschwindigkeit von SCP legen. - sudo
Hat Probleme: Dieses Skript schreibt und liest eine Datei auf die Festplatte - das ist langsamer als RAM, kann also eine künstliche Verlangsamung sein. Schickt auch nur Nullen, falls sie komprimiert sind, ist das eine große künstliche Beschleunigung. Wenn Sie Pseudozufallsdaten möchten, nicht benutzen /dev/random (es kann blockieren) oder urandom (Link Kommentare vorgeschlagen, dass) sie können auch sehr langsam sein, stattdessen verwenden Sie eine dm-crypt (siehe Cryptsetup FAQ 2.19 Wie kann ich ein Gerät mit kryptographischer Zufälligkeit löschen?) vielleicht mit einer Datei im RAM. - Xen2050


Wenn Sie Ihr Ethernet LAN auf einer niedrigeren Ebene testen möchten, können Sie Etherate verwenden, ein kostenloses Linux CLI Ethernet Test-Tool:

https://github.com/jwbensley/Etherate

Als Tools wie iPerf (die sehr gut sind!) In den Mix zu werfen, funktionieren sie über IP und TCP oder UDP. Etherate testet direkt über Ethernet / OSI Layer 2.


2
2018-03-26 20:37





Es gibt auch einige andere nützliche Befehlszeilen-Tools für das Bandbreiten-Benchmarking zwischen zwei Hosts:

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

Nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

Gaben

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address

2
2018-02-12 20:15



Wie unterscheiden sich diese voneinander und von iperf? Arbeiten sie gleich, was machen sie? Nuttcp ist in Debian und anscheinend "nuttcp basiert auf nttcp, was wiederum eine Verbesserung von jemandem bei Silicon Graphics (SGI) auf der ursprünglichen ttcp war, die von Mike Muuss in BRL irgendwann vor Dezember 1984 geschrieben wurde, um die Leistung von TCP Stacks von UC Berkeley und BBN, um DARPA bei der Entscheidung zu helfen, welche Version in der ersten BSD Unix-Version veröffentlicht werden soll. " - Xen2050


wie ich in meinem Kommentar am besten darauf hingewiesen habe, ist diese Lösung nicht gut genug, weil Client / Server nicht ist optimiert zu ... drücken jedes bisschen Geschwindigkeit

meine Lösung:

Machen Sie eine Ramdisk auf beiden Seiten (daher sind Sie nicht durch Speichergeschwindigkeit beschränkt und ich schlage vor, Sie haben sie mit Ramfs nicht tmpfs, so dass sie nicht in Swap gehen ... nur darauf achten, nicht mindestens 512M freien Speicher zu verlassen für System ist dies erforderlich, wenn Sie Giga Ethernet haben, mit dieser Geschwindigkeit sogar SSDs können verlangsamen) Installieren Sie Apache auf dem Server, dann erstellen Sie einen Link zu Ramdisk, erstellen Sie einige große Dateien auf der Ramdisk (100M-1G, können Sie sie mit dd aus / dev / random erstellen oder kopieren, wenn Sie einige zur Hand haben) dann gehen Sie clientseitig und laden Sie sie (auch auf der Ramdisk dieser Seite) mit einem vorgerückten Downloadprogramm, das ich verwendete lftp

naja, der unterschied war groß, von 75mbps berichteten iperf und 9,5M / s netcat

zu 11,18 M / s mit meiner Lösung:

1591129421 bytes transferred in 136 seconds (11.18M/s)

0
2017-07-27 07:24





Es ist einfach, den Computer an die erste Box anzuschließen und die andere Box an die erste Box anzuschließen. Dann von Ihrem Computer ping die erste Box speichern Sie das Ergebnis, ping die andere Box und machen Sie die Subtraktion.


-3
2017-10-17 17:16



Das zeigt Netzwerklatenz, die nur ein Teil der Geschwindigkeit ist. Zum Beispiel hat die 3G-Verbindung meines Telefons eine große Latenz (100-300 ms), aber es kann immer noch einen Durchsatz von 5 Mbit / s bewältigen. - Oli♦
Nicht meine Schuld, wenn er Geschwindigkeit verlangte, aber Durchsatz wollte. - Nyamiou The Galeanthrope
Latenzzeit ist Reaktionszeit, nicht Geschwindigkeit. - wullxz