La Fibre
Télécom => Logiciels et systèmes d'exploitation => Iperf => Discussion démarrée par: vivien le 28 janvier 2020 à 21:42:27
-
Lignes de commande pour installer iPerf 3.7 sur Ubuntu / Debian
- Ubuntu 64 bits / Debian 64 bits / Mint 64 bits (AMD64) :
sudo apt remove iperf3 libiperf0
sudo apt install libsctp1
wget https://iperf.fr/download/ubuntu/libiperf0_3.7-3_amd64.deb
wget https://iperf.fr/download/ubuntu/iperf3_3.7-3_amd64.deb
sudo dpkg -i libiperf0_3.7-3_amd64.deb iperf3_3.7-3_amd64.deb
rm libiperf0_3.7-3_amd64.deb iperf3_3.7-3_amd64.deb
- Ubuntu 32 bits / Debian 32 bits / Mint 32 bits (i386) :
sudo apt remove iperf3 libiperf0
sudo apt install libsctp1
wget https://iperf.fr/download/ubuntu/libiperf0_3.7-3_i386.deb
wget https://iperf.fr/download/ubuntu/iperf3_3.7-3_i386.deb
sudo dpkg -i libiperf0_3.7-3_i386.deb iperf3_3.7-3_i386.deb
rm libiperf0_3.7-3_i386.deb iperf3_3.7-3_i386.deb
-
Vous pouvez maintenant choisir l'algorithme d'évitement de congestion TCP.
Attention l'algorithme utilisé coté serveur n'est pas forcément l'algorithme demande.
L'option -V permet de voir l'algorithme utilisé coté client et coté serveur.
Exemple en forçant l'algorithme Illinois, non supporté sur le serveur Bouygues :
$ iperf3 -c bouygues.testdebit.info -p 9200 -V --congestion=illinois
snd_tcp_congestion illinois
rcv_tcp_congestion cubic
$ iperf3 -c bouygues.testdebit.info -p 9200 -R -V --congestion=illinois
snd_tcp_congestion cubic
rcv_tcp_congestion illinois
-
Il est possible de faire un test avec un algorithme d'évitement de congestion TCP disponible sur le client mais non disponible sur le serveur mais l'inverse est impossible :
Vous obtenez l'erreur suivante :
iperf3: error - unable to set TCP_CONGESTION: Supplied congestion control algorithm not supported on this host
Exemple :
$ iperf3 -c bouygues.testdebit.info -p 9200 -R -V --congestion=bbr
iperf 3.7
Linux k-net 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64
Control connection MSS 1428
Time: Mon, 03 Feb 2020 09:24:06 GMT
Connecting to host bouygues.testdebit.info, port 9200
Reverse mode, remote host bouygues.testdebit.info is sending
Cookie: zo5c42fim3xl5whxsd55shsji75uiefnvgcx
TCP MSS: 1428 (default)
iperf3: error - unable to set TCP_CONGESTION: Supplied congestion control algorithm not supported on this host
Solution pour rajouter l'algorithme BBR disponible sur le client :
sudo nano /etc/modules-load.d/tcp_allowed_congestion_control.conf
Copier / coller ces lignes dans le fichier puis sauvegarder :
# TCP congestion control protocol
# cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
tcp_bbr
Après un reboot le test fonctionne :
$ iperf3 -c bouygues.testdebit.info -p 9200 -R -V --congestion=bbr
iperf 3.7
Linux k-net 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64
Control connection MSS 1428
Time: Mon, 03 Feb 2020 13:08:24 GMT
Connecting to host bouygues.testdebit.info, port 9200
Reverse mode, remote host bouygues.testdebit.info is sending
Cookie: 2xqj6zdiogrc2i6civrr2mt3yow3xyc4jx75
TCP MSS: 1428 (default)
[ 5] local 2a03:4980::f:0:17 port 49342 connected to 2001:860:deff:1000::2 port 9200
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 10 second test, tos 0
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 102 MBytes 855 Mbits/sec
[ 5] 1.00-2.00 sec 109 MBytes 914 Mbits/sec
[ 5] 2.00-3.00 sec 110 MBytes 927 Mbits/sec
[ 5] 3.00-4.00 sec 110 MBytes 922 Mbits/sec
[ 5] 4.00-5.00 sec 110 MBytes 926 Mbits/sec
[ 5] 5.00-6.00 sec 109 MBytes 914 Mbits/sec
[ 5] 6.00-7.00 sec 109 MBytes 916 Mbits/sec
[ 5] 7.00-8.00 sec 111 MBytes 932 Mbits/sec
[ 5] 8.00-9.00 sec 109 MBytes 914 Mbits/sec
[ 5] 9.00-10.00 sec 109 MBytes 916 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 1.07 GBytes 922 Mbits/sec 6938 sender
[ 5] 0.00-10.00 sec 1.06 GBytes 913 Mbits/sec receiver
snd_tcp_congestion bbr
rcv_tcp_congestion bbr
iperf Done.
-
Bug coté serveur : après avoir forcé algorithme d'évitement de congestion TCP particulier, celui-ci reste actif sur le port donné.
Pour revenir en fonctionnement nominal, il faut forcer l'algorithme proposé par défaut.
Voici les lignes de commandes passées dans l'ordre et leur effet :
iperf3 -t 3 -c paris.testdebit.info -p 9222 -R -V
snd_tcp_congestion cubic
rcv_tcp_congestion cubic
iperf3 -t 3 -c paris.testdebit.info -p 9222 -R -V --congestion=bbr
snd_tcp_congestion bbr
rcv_tcp_congestion bbr
iperf3 -t 3 -c paris.testdebit.info -p 9222 -R -V
snd_tcp_congestion bbr
rcv_tcp_congestion cubic
iperf3 -t 3 -c paris.testdebit.info -p 9222 -R -V --congestion=cubic
snd_tcp_congestion cubic
rcv_tcp_congestion cubic
Pour limites les impact et les cas où le process iPerf3 se bloque coté serveur, j'ai mis en place un reboot chaque heure sur les serveurs que je gère.
Voici le planning des reboot, qui interrompent également un test en cour à ce moment là :
- 0 heure 59 minutes et 15 sec
- 1 heure 59 minutes et 15 sec
- 2 heure 59 minutes et 15 sec
- 3 heure 59 minutes et 15 sec
- 4 heure 59 minutes et 15 sec
- 5 heure 59 minutes et 15 sec
- 6 heure 59 minutes et 15 sec
- 7 heure 59 minutes et 15 sec
- 8 heure 59 minutes et 15 sec
- 9 heure 59 minutes et 15 sec
- 10 heure 59 minutes et 15 sec
- 11 heure 59 minutes et 15 sec
- 12 heure 59 minutes et 15 sec
- 13 heure 59 minutes et 15 sec
- 14 heure 59 minutes et 15 sec
- 15 heure 59 minutes et 15 sec
- 16 heure 59 minutes et 15 sec
- 17 heure 59 minutes et 15 sec
- 18 heure 59 minutes et 15 sec
- 19 heure 59 minutes et 15 sec
- 20 heure 59 minutes et 15 sec
- 21 heure 59 minutes et 15 sec
- 22 heure 59 minutes et 15 sec
- 23 heure 59 minutes et 15 sec
-
Pourquoi installer les fichiers .deb et ne pas utiliser ceux fournis par Ubuntu / Debian ? En tout cas sous Ubuntu 20.10 c'est bien iperf3.7 qui est disponible.
-
Cela ne concerne bien sur que ceux qui ont une veille version d'iPerf.
Aujourd'hui les version d'iPerf sont les suivantes dans les dépôts :
- Ubuntu 16.04 LTS (xenial) : 3.0.11-1
- Ubuntu 18.04 LTS (bionic) : 3.1.3-1
- Ubuntu 20.04 LTS (focal) : 3.7-3
- Ubuntu 20.10 (groovy) : 3.7-3
- Ubuntu 21.04 (hirsute) : 3.9-1
Oui, il faut que je mette la version 3.9 à dispo pour ceux qui ne sont pas sous Ubuntu 21.04