J’ai configuré quatre serveurs au total dans un centre de données basé sur le cloud. Ils fonctionnent sous CentOS ou Ubuntu Linux. Je dois m’assurer que les performances du système de fichiers en cluster sont raisonnables car mes serveurs sont partagés avec d’autres utilisateurs. Comment puis-je vérifier la vitesse entre les deux serveurs Linux en utilisant les options de ligne de commande pour le LAN/VLAN privé ?

Vous pouvez tester la vitesse/le débit du réseau entre Ubuntu/CentOS/Debian/Fedora Linux ou une boîte Unix en utilisant la commande iperf. Les commandes Iperf fournissent des informations sur la bande passante, le retard, la gigue et la perte de datagrammes. Il s’agit d’un outil permettant de mesurer le débit d’un réseau. Il peut tester le débit TCP ou UDP. Pour effectuer un test iperf, l’utilisateur doit établir à la fois un serveur (pour rejeter le trafic) et un client (pour générer du trafic). Cette page explique comment tester la vitesse/le débit du réseau entre deux serveurs Linux.

Détails du tutoriel
Difficulté niveau Facile
Privilèges de démarrage Oui
Réquisitions Linux avec iperf
Est. temps de lecture 8 minutes

Mon exemple de configuration pour tester la vitesse/le débit du réseau entre deux serveurs Linux

Fig.01 Test de la vitesse du réseau entre deux ordinateurs Linux

Fig.01 Test de la vitesse du réseau entre deux ordinateurs Linux

Etape 1 – Installation

Vous devez installer iperf selon la version de votre distro Linux. Il existe deux versions d’iperf :

  1. iperf
  2. iperf3

L’iperf/iperf3 fonctionne sur Linux, Unix, Windows, *BSD et d’autres systèmes d’exploitation.

Installer iperf sur un serveur Linux Ubuntu/Debian

Tapez la commande apt-get/apt suivante pour installer iperf sur les deux serveurs:
$ sudo apt-get update
$ sudo apt-get install iperf

Voici ce que nous voyons sur Ubuntu 20.04 LTS :

 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) ...

Une note sur l’installation d’iperf3 sur un Linux Debian/Ubuntu

Il est également possible d’installer iperf3 (dernière version) comme suit :
$ sudo apt-get install iperf3
Sorties:

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 d’iperf sur un serveur Linux Fedora latest/RHEL/CentOS 8

Tapez la commande dnf suivante pour installer iperf sur les deux serveurs :
$ sudo dnf install iperf

Une note sur l’installation d’iperf3 sur un CentOS/RHEL/SL/Oracle Linux

Tapez la commande suivante :
$ sudo dnf install iperf3

Installer iperf sur un serveur CentOS/RHEL/Oracle/Scientific Linux

Tapez la commande yum suivante pour installer iperf sur les deux serveurs (activez d’abord le repo EPEL pour CentOS/RHEL 7.x):
$ sudo yum install iperf
Si vous utilisez la dernière version de Fedora et CentOS/RHEL 8.x, essayez la commande dnf comme suit:
$ sudo dnf install iperf3

Comment tester le débit du réseau entre deux serveurs Linux

Installation d’iperf3 sur un serveur CentOS ou RHEL 8.x

Une note sur l’installation d’iperf3 sur un CentOS/RHEL/SL/Oracle Linux

Tapez la commande suivante :
$ sudo yum install iperf3

Étape 2 – Démarrer un serveur iperf sur le serveurA (mode serveur)

Tapez la commande suivante pour exécuter iperf en mode serveur :
iperf -s
OR
iperf3 -s
Exemples de sorties:

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

Veuillez noter le port TCP # 5001.

Une note sur la configuration du pare-feu

Veuillez noter que vous devez ouvrir le port TCP 5001 sur le serveurA. Voir comment utiliser ufw pour ouvrir un port sur Ubuntu/Debian Linux:
$ sudo ufw allow from 192.168.149.0/24 to 192.168.149.69 port 5001 proto tcp
Les utilisateurs de CentOS/RHEL/Fedora doivent à le port en utilisant un pare-feuD. Voir comment configurer un pare-feu en utilisant FirewallD sur CentOS 8:
sudo firewall-cmd --zone=public --add-port=5001/tcp --permanent
Il est également possible de changer le port en passant l’option -p comme suit (par ex. ouvrir et utiliser le port TCP 2323):
iperf -s -p 2323
iperf3 -s -p 4242

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

Étape 3 – Démarrer un serveur iperf sur le serveurB (mode client)

Tapez la commande suivante pour l’exécuter en mode client, en vous connectant à 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

Exemples de sorties:

Fig.02: Résultat du test de vitesse du réseau Linux

Fig.02 : Résultat du test de vitesse du réseau Linux

Comment utiliser UDP plutôt que TCP

Côté serveur :
iperf -s -u
Côté client :
iperf -c 192.168.149.69 -u

Voir aussi : Comment installer Speedtest-cli sur un Linux CentOS / RHEL / Scientific / Fedora Pour vérifier la vitesse d’Internet depuis le shell Bashl

Comment définir le nombre de threads clients parallèles à exécuter (options du mode client)

Passer l’option -P :
iperf -c 192.168.149.69 -P 3
Vous pouvez également définir le temps en secondes pour transmettre pendant (par défaut 10 secs) comme suit :
iperf -c 192.168.149.69 -P 3 -t 30
Exemples de sorties :

------------------------------------------------------------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

Voici la sortie de iperf3 :
## on the server side ##
iperf3 -s
## on the client side ##
iperf3 -c 192.168.149.69

Exemples de sorties :

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

Avoir de l’aide est facile

Tapez la commande suivante :
$ 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

.

Résumé

Cette page a expliqué comment effectuer des tests de débit réseau entre deux serveurs Linux ou Unix en utilisant l’outil iperf3/iperf. Voir la documenation iperf et le code source iperf3 en ligne pour plus d’informations.

🐧 Obtenez les derniers tutoriels sur Linux, Open Source & DevOps via le flux RSS ou la newsletter hebdomadaire par email.
🐧 5 commentaires jusqu’à présent…. en ajouter un ↓

.

.

.

Catégorie Liste des commandes Unix et Linux
Gestion des fichiers cat
Firewall Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04
Utilitaires réseau dig – host – ip – nmap
OpenVPN CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04
Gestionnaire de paquets apk – apt
Processes Management bg – chroot – cron – disown – fg – jobs – killall – kill – pidof – pstree – pwdx – time
Recherche grep – whereis – which
Informations sur l’utilisateur groupes – id – lastcomm – last – lid/libuser-.lid – logname – members – users – whoami – who – w
WireGuard VPN Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *