Ich habe insgesamt vier Server in einem Cloud-basierten Rechenzentrum eingerichtet. Sie laufen entweder unter CentOS oder Ubuntu Linux. Ich muss sicherstellen, dass die Leistung des geclusterten Dateisystems angemessen ist, da meine Server gemeinsam mit anderen Benutzern genutzt werden. Wie überprüfe ich die Geschwindigkeit zwischen den beiden Linux-Servern mit Hilfe von Kommandozeilenoptionen für ein privates LAN/VLAN?

Sie können die Netzwerkgeschwindigkeit/den Durchsatz zwischen Ubuntu/CentOS/Debian/Fedora Linux oder Unix-Boxen mit dem Befehl iperf testen. Iperf-Befehle zeigen Informationen über Bandbreite, Verzögerung, Jitter und Datagrammverlust. Es ist ein Werkzeug zur Durchführung von Netzwerk-Durchsatzmessungen. Es kann entweder den TCP- oder den UDP-Durchsatz testen. Um einen iperf-Test durchzuführen, muss der Benutzer sowohl einen Server (zum Verwerfen von Datenverkehr) als auch einen Client (zum Erzeugen von Datenverkehr) einrichten. Diese Seite erklärt, wie man die Netzwerkgeschwindigkeit/den Durchsatz zwischen zwei Linux-Servern testet.

Tutorial Details
Schwierigkeitsgrad level Easy
Root-Rechte Ja
Voraussetzungen Linux mit iperf
Est. Lesezeit 8 Minuten

Mein Beispielaufbau zum Testen der Netzwerkgeschwindigkeit/des Durchsatzes zwischen zwei Linux-Servern

Abb.01 Test der Netzwerkgeschwindigkeit zwischen zwei Linux-Rechnern

Abbildung 01 Test der Netzwerkgeschwindigkeit zwischen zwei Linux-Rechnern

Schritt 1 – Installation

Sie müssen iperf entsprechend der Version Ihrer Linux-Distribution installieren. Es gibt zwei Versionen von iperf:

  1. iperf
  2. iperf3

Das iperf/iperf3 funktioniert auf Linux, Unix, Windows, *BSD und anderen Betriebssystemen.

Installieren Sie iperf auf einem Ubuntu/Debian-Linux-Server

Tippen Sie den folgenden apt-get-Befehl/apt-Befehl ein, um iperf auf beiden Servern zu installieren:
$ sudo apt-get update
$ sudo apt-get install iperf

Hier sehen wir, was wir auf dem Ubuntu 20.04 LTS-System:

 password for vivek: Reading package lists... DoneBuilding dependency tree Reading state information... DoneThe following NEW packages will be installed: iperf0 upgraded, 1 newly installed, 0 to remove and 23 not upgraded.Need to get 76.5 kB of archives.After this operation, 213 kB of additional disk space will be used.Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 iperf amd64 2.0.13+dfsg1-1build1 Fetched 76.5 kB in 1s (70.5 kB/s) Selecting previously unselected package iperf.(Reading database ... 344795 files and directories currently installed.)Preparing to unpack .../iperf_2.0.13+dfsg1-1build1_amd64.deb ...Unpacking iperf (2.0.13+dfsg1-1build1) ...Setting up iperf (2.0.13+dfsg1-1build1) ...Processing triggers for man-db (2.9.1-1) ...

Ein Hinweis zur Installation von iperf3 auf einem Debian/Ubuntu-Linux

Es ist auch möglich, iperf3 (neueste Version) wie folgt zu installieren:
$ sudo apt-get install iperf3
Ausgaben:

Reading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed: libiperf0The following NEW packages will be installed: iperf3 libiperf00 upgraded, 2 newly installed, 0 to remove and 23 not upgraded.Need to get 86.2 kB of archives.After this operation, 294 kB of additional disk space will be used.Do you want to continue? yGet:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 libiperf0 amd64 3.7-3 Get:2 http://archive.ubuntu.com/ubuntu focal/universe amd64 iperf3 amd64 3.7-3 Fetched 86.2 kB in 1s (97.4 kB/s) Selecting previously unselected package libiperf0:amd64.(Reading database ... 344807 files and directories currently installed.)Preparing to unpack .../libiperf0_3.7-3_amd64.deb ...Unpacking libiperf0:amd64 (3.7-3) ...Selecting previously unselected package iperf3.Preparing to unpack .../iperf3_3.7-3_amd64.deb ...Unpacking iperf3 (3.7-3) ...Setting up libiperf0:amd64 (3.7-3) ...Setting up iperf3 (3.7-3) ...Processing triggers for man-db (2.9.1-1) ...Processing triggers for libc-bin (2.31-0ubuntu9.2) ...

Installation von iperf auf einem Fedora latest/RHEL/CentOS 8 Linux-Server

Geben Sie den folgenden dnf-Befehl ein, um iperf auf beiden Servern zu installieren:
$ sudo dnf install iperf

Ein Hinweis zur Installation von iperf3 auf einem CentOS/RHEL/SL/Oracle Linux

Geben Sie folgenden Befehl ein:
$ sudo dnf install iperf3

Installation von iperf auf einem CentOS/RHEL/Oracle/Scientific Linux Server

Geben Sie den folgenden yum-Befehl ein, um iperf auf beiden Servern zu installieren (schalten Sie zuerst das EPEL-Repo für CentOS/RHEL 7.x):
$ sudo yum install iperf
Wenn Sie die neueste Version von Fedora und CentOS/RHEL 8.x verwenden, versuchen Sie den dnf-Befehl wie folgt:
$ sudo dnf install iperf3

Wie man den Netzwerkgeschwindigkeitsdurchsatz zwischen zwei Linux-Servern testet

Installation von iperf3 auf einem CentOS- oder RHEL 8.x-Server

Ein Hinweis zur Installation von iperf3 auf einem CentOS/RHEL/SL/Oracle Linux

Geben Sie den folgenden Befehl ein:
$ sudo yum install iperf3

Schritt 2 – Starten eines iperf-Servers auf ServerA (Servermodus)

Geben Sie den folgenden Befehl ein, um iperf im Servermodus auszuführen:
iperf -s
OR
iperf3 -s
Beispielhafte Ausgaben:

------------------------------------------------------------Server listening on TCP port 5001TCP window size: 85.3 KByte (default)------------------------------------------------------------

Bitte notieren Sie sich den TCP-Port # 5001.

Ein Hinweis zur Firewall-Konfiguration

Bitte beachten Sie, dass Sie den TCP-Port 5001 auf dem ServerA öffnen müssen. Siehe, wie man ufw verwendet, um einen Port unter Ubuntu/Debian Linux zu öffnen:
$ sudo ufw allow from 192.168.149.0/24 to 192.168.149.69 port 5001 proto tcp
CentOS/RHEL/Fedora-Benutzer müssen den Port mit FirewallD. Siehe, wie man eine Firewall mit FirewallD unter CentOS 8 einrichtet:
sudo firewall-cmd --zone=public --add-port=5001/tcp --permanent
Es ist auch möglich, den Port durch Übergabe der Option -p wie folgt zu ändern (z.B. open and use TCP port 2323):
iperf -s -p 2323
iperf3 -s -p 4242

-----------------------------------------------------------Server listening on 4242-----------------------------------------------------------

Schritt 3 – Starten eines iperf-Servers auf ServerB (Client-Modus)

Geben Sie den folgenden Befehl ein, um im Client-Modus zu arbeiten und sich mit 192.168.149.69:
iperf -c {ip-address-of-serverA-here}
iperf -c {ip-address-of-serverA-here} -p {tcp-port}
iperf -c 192.168.149.69 -p 2323
iperf -c 192.168.149.69

OR
iperf3 -c {ip-address-of-serverA-here}
iperf3 -c {ip-address-of-serverA-here} -p {tcp-port}
iperf3 -c 192.168.149.69 -p 2323
iperf3 -c 192.168.149.69

Beispielhafte Ausgaben:

Zeichnung.02: Linux-Netzwerk-Geschwindigkeitstestergebnis

Abb.02: Ergebnis des Linux-Netzwerkgeschwindigkeitstests

UDP statt TCP verwenden

Auf der Server-Seite:
iperf -s -u
Auf der Client-Seite:
iperf -c 192.168.149.69 -u

Siehe auch: Wie man Speedtest-cli auf einem CentOS / RHEL / Scientific / Fedora Linux installiert, um die Internet-Geschwindigkeit von der Bash-Shell aus zu überprüfen

Anzahl der parallel laufenden Client-Threads einstellen (Client-Modus-Optionen)

Mit der Option -P:
iperf -c 192.168.149.69 -P 3
Sie können auch die Zeit in Sekunden für die Übertragung (Standard 10 Sekunden) wie folgt einstellen:
iperf -c 192.168.149.69 -P 3 -t 30
Beispielausgaben:

------------------------------------------------------------Client connecting to 192.168.149.69, TCP port 5001TCP window size: 85.0 KByte (default)------------------------------------------------------------ local 192.168.181.40 port 54198 connected with 192.168.149.69 port 5001 local 192.168.181.40 port 54194 connected with 192.168.149.69 port 5001 local 192.168.181.40 port 54196 connected with 192.168.149.69 port 5001 Interval Transfer Bandwidth 0.0-30.0 sec 2.26 GBytes 647 Mbits/sec 0.0-30.0 sec 2.89 GBytes 828 Mbits/sec 0.0-30.5 sec 1.91 GBytes 539 Mbits/sec 0.0-30.5 sec 7.07 GBytes 1.99 Gbits/sec

Hier ist die Ausgabe von iperf3:
## on the server side ##
iperf3 -s
## on the client side ##
iperf3 -c 192.168.149.69

Beispielhafte Ausgaben:

Connecting to host 192.168.149.69, port 5201 local 192.168.181.40 port 55522 connected to 192.168.149.69 port 5201 Interval Transfer Bandwidth Retr Cwnd 0.00-1.00 sec 235 MBytes 1.97 Gbits/sec 32 609 KBytes 1.00-2.00 sec 230 MBytes 1.93 Gbits/sec 21 670 KBytes 2.00-3.00 sec 159 MBytes 1.33 Gbits/sec 19 635 KBytes 3.00-4.00 sec 235 MBytes 1.97 Gbits/sec 7 686 KBytes 4.00-5.00 sec 229 MBytes 1.92 Gbits/sec 86 757 KBytes 5.00-6.00 sec 206 MBytes 1.73 Gbits/sec 6 537 KBytes 6.00-7.00 sec 210 MBytes 1.76 Gbits/sec 5 556 KBytes 7.00-8.00 sec 235 MBytes 1.97 Gbits/sec 10 617 KBytes 8.00-9.00 sec 245 MBytes 2.06 Gbits/sec 11 670 KBytes 9.00-10.00 sec 234 MBytes 1.96 Gbits/sec 10 713 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bandwidth Retr 0.00-10.00 sec 2.17 GBytes 1.86 Gbits/sec 207 sender 0.00-10.00 sec 2.16 GBytes 1.86 Gbits/sec receiver

Hilfe holen ist einfach

Geben Sie den folgenden Befehl ein:
$ man iperf
$ man iperf3
$ iperf --help
$ iperf3 --help

Server or Client: -p, --port # server port to listen on/connect to -f, --format format to report: Kbits, Mbits, Gbits, Tbits -i, --interval # seconds between periodic throughput reports -F, --file name xmit/recv the specified file -A, --affinity n/n,m set CPU affinity -B, --bind <host> bind to the interface associated with the address <host> -V, --verbose more detailed output -J, --json output in JSON format --logfile f send output to a log file --forceflush force flushing output at every interval -d, --debug emit debugging output -v, --version show version information and quit -h, --help show this message and quitServer specific: -s, --server run in server mode -D, --daemon run the server as a daemon -I, --pidfile file write PID file -1, --one-off handle one client connection then exit --rsa-private-key-path path to the RSA private key used to decrypt authentication credentials --authorized-users-path path to the configuration file containing user credentialsClient specific: -c, --client <host> run in client mode, connecting to <host> --sctp use SCTP rather than TCP -X, --xbind <name> bind SCTP association to links --nstreams # number of SCTP streams -u, --udp use UDP rather than TCP --connect-timeout # timeout for control connection setup (ms) -b, --bitrate # target bitrate in bits/sec (0 for unlimited) (default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) --pacing-timer # set the timing for pacing, in microseconds (default 1000) --fq-rate # enable fair-queuing based socket pacing in bits/sec (Linux only) -t, --time # time in seconds to transmit for (default 10 secs) -n, --bytes # number of bytes to transmit (instead of -t) -k, --blockcount # number of blocks (packets) to transmit (instead of -t or -n) -l, --length # length of buffer to read or write (default 128 KB for TCP, dynamic or 1460 for UDP) --cport <port> bind to a specific client port (TCP and UDP, default: ephemeral port) -P, --parallel # number of parallel client streams to run -R, --reverse run in reverse mode (server sends, client receives) --bidir run in bidirectional mode. Client and server send and receive data. -w, --window # set window size / socket buffer size -C, --congestion <algo> set TCP congestion control algorithm (Linux and FreeBSD only) -M, --set-mss # set TCP/SCTP maximum segment size (MTU - 40 bytes) -N, --no-delay set TCP/SCTP no delay, disabling Nagle's Algorithm -4, --version4 only use IPv4 -6, --version6 only use IPv6 -S, --tos N set the IP type of service, 0-255. The usual prefixes for octal and hex can be used, i.e. 52, 064 and 0x34 all specify the same value. --dscp N or --dscp val set the IP dscp value, either 0-63 or symbolic. Numeric values can be specified in decimal, octal and hex (see --tos above). -L, --flowlabel N set the IPv6 flow label (only supported on Linux) -Z, --zerocopy use a 'zero copy' method of sending data -O, --omit N omit the first n seconds -T, --title str prefix every output line with this string --extra-data str data string to include in client and server JSON --get-server-output get results from server --udp-counters-64bit use 64-bit counters in UDP test packets --repeating-payload use repeating pattern in payload, instead of randomized payload (like in iperf2) --username username for authentication --rsa-public-key-path path to the RSA public key used to encrypt authentication credentials indicates options that support a K/M/G suffix for kilo-, mega-, or giga- iperf3 homepage at: https://software.es.net/iperf/Report bugs to: https://github.com/esnet/iperf

Zusammenfassung

Diese Seite erklärt, wie man Netzwerk-Durchsatztests zwischen zwei Linux- oder Unix-Servern mit dem Tool iperf3/iperf durchführt. Weitere Informationen finden Sie in der iperf-Dokumentation und im iperf3-Quellcode online.

🐧 Erhalten Sie die neuesten Tutorials zu Linux, Open Source & DevOps per RSS-Feed oder wöchentlichem E-Mail-Newsletter.
🐧 Bisher 5 Kommentare… einen hinzufügen ↓

.

Kategorie Liste der Unix- und Linux-Befehle
Dateiverwaltung cat
Firewall Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04
Netzwerkdienstprogramme dig – host – ip – nmap
OpenVPN CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04
Package Manager apk – apt
Prozessverwaltung bg – chroot – cron – disown – fg – jobs – killall – kill – pidof – pstree – pwdx – time
Suchen grep – whereis – which
Benutzerinformationen groups – id – lastcomm – last – lid/libuser-lid – logname – members – users – whoami – who – w
WireGuard VPN Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.