Browse Source

Relecture

master
Gregory Colpart 3 years ago
parent
commit
3611d8d8ff
2 changed files with 118 additions and 44 deletions
  1. +117
    -43
      HowtoIperf.md
  2. +1
    -1
      HowtoMTR.md

+ 117
- 43
HowtoIperf.md View File

@@ -1,101 +1,171 @@
---
categories: network
title: Howto Iperf
title: Howto iperf
...

* Documentation : <https://iperf.fr/iperf-doc.php>
* Manpage : <https://manpages.debian.org/stable/iperf/iperf.1.en.html>
* Code source iperf v3 : <https://github.com/esnet/iperf>

[iperf](http://software.es.net/iperf/) est un outil de diagnostic réseau permettant de mesurer le débit réseau sur des réseaux IP.

[Iperf](https://iperf.fr/) est un outil de diagnostic réseau permettant de mesurer le débit entre deux machines.

## Principe

Iperf fonctionne en mode client-serveur : sur les deux machines entre lesquelles le débit doit être mesuré, l'un est serveur, l'autre est client.
Le débit peut être mesuré différemment selon que l'on passe par UDP ou TCP : en TCP, le débit sera aussi élevé que la liaison de bout en bout le permet, alors qu'en UDP, le client doit choisir quel débit émettre ou recevoir. Le mode UDP affiche également un rapport comprenant la gigue et les paquets perdus. Par défaut, le mode TCP et le port 5001 sont utilisés.
iperf doit être installé sur les deux machines entre lesquelles le débit est mesuré : il sera lancé en mode serveur sur l'une, et en mode client sur l'autre.

Si l'on utilise le protocole TCP, le débit sera aussi élevé que la liaison de bout en bout le permet ; avec le protocole UDP, le client devra choisir quel débit émettre ou recevoir, et un rapport affichera le nombre de paquets perdus.

iperf a été ré-écrit en version 3 (commande `iperf3`), avec notamment le support d'IPv6. Suivant les cas d'usage, nous utilisons encore iperf en version 2 (commande `iperf`) notamment dans le cas de tests en mode UDP où iperf3 a pas mal de bugs.

Par défaut iperf3 en mode serveur ouvre la socket réseau `TCP/5201`, pour iperf c'est `TCP/5001`.


## Installation

Sous Debian :

~~~
# apt install iperf
# apt install iperf iperf3
~~~

Sous OpenBSD :

~~~
# pkg_add iperf
# pkg_add iperf iperf3
~~~

Note : le paquet `iperf` va jusqu'à la version 2.0. Pour avoir la version 3, il faut installer le paquet `iperf3` qui supporte notamment IPv6 ou l'option `-J` pour obtenir une sortie en json.

## Utilisation
## Utilisation basique

### Serveur
Lancer en mode serveur :

Lancer en mode serveur TCP :
~~~
$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
~~~

Sur le client, on lance le test de débit pendant 60 secondes :

~~~
$ iperf -s
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
$ iperf3 -c 192.0.2.1 -t 60
Connecting to host 192.0.2.1, port 5201
[ 4] local 192.0.2.2 port 56832 connected to 192.0.2.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 11.9 MBytes 99.8 Mbits/sec 0 129 KBytes
[ 4] 1.00-2.00 sec 11.3 MBytes 94.9 Mbits/sec 0 156 KBytes
[ 4] 2.00-3.00 sec 11.2 MBytes 93.8 Mbits/sec 0 156 KBytes
[ 4] 3.00-4.00 sec 11.1 MBytes 93.3 Mbits/sec 0 156 KBytes
[ 4] 4.00-5.00 sec 11.1 MBytes 92.8 Mbits/sec 0 163 KBytes
[ 4] 5.00-6.00 sec 11.1 MBytes 93.3 Mbits/sec 0 163 KBytes
[ 4] 6.00-7.00 sec 11.2 MBytes 93.8 Mbits/sec 0 163 KBytes
[ 4] 7.00-8.00 sec 11.2 MBytes 93.8 Mbits/sec 0 163 KBytes
[ 4] 8.00-9.00 sec 11.1 MBytes 92.8 Mbits/sec 0 163 KBytes
[ 4] 9.00-10.00 sec 11.2 MBytes 93.8 Mbits/sec 0 163 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 112 MBytes 94.2 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 111 MBytes 93.4 Mbits/sec receiver

iperf Done.
~~~

Lancer en mode serveur UDP et en écoute sur le port 9090 :

## Utilisation avancée

### Firewall

Afin de pouvoir utiliser iperf, il faut s'assurer que les ports entre le client et le serveur sont bien ouverts.
Par défaut il faut donc autoriser les flux TCP entre le port client (1024 et 65535) et le port serveur (5201).

### UDP

Par défaut en mode UDP, une bande passante de **1Mb/s** sera utilisée.
Il faut préciser la bande passante souhaitée pour le test avec l'option `-b`, par exemple pour 10Mb/s : `-b 10M`.

#### iperf (version 2)

Il faut lancer explicitement le serveur en mode UDP :

~~~
$ iperf -su -p 9090
$ iperf -s -u
------------------------------------------------------------
Server listening on UDP port 9090
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
~~~

### Client

Se connecter à un serveur avec les paramètres par défaut (TCP, port 5001, unidirectionnel, transmission pendant 10 secondes) :
On peut alors lancer le client en mode UDP :

~~~
$ iperf -c 192.0.2.2
$ iperf -c 192.0.2.1 -u -b 10M
------------------------------------------------------------
Client connecting to 192.0.2.2, TCP port 5001
TCP window size: 85.0 KByte (default)
Client connecting to 192.0.2.1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.0.2.1 port 44246 connected with 192.0.2.2 port 5001
[ 3] local 192.0.2.2 port 50090 connected with 192.0.2.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 209 MBytes 175 Mbits/sec
[ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec
[ 3] Sent 8505 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec 0.051 ms 0/ 8505 (0%)

~~~

Se connecter en UDP, port 9090 :
#### iperf3

Avec iperf3, on ne lance pas le serveur en mode UDP, c'est le client qui va gérer la bascule sur le protocole UDP.
Ce comportement s'explique notamment pour des raisons de sécurité, pour éviter de pouvoir envoyer trop facilement un flux UDP vers n'importe quelle IP.

On lance donc le serveur de façon standard :

~~~
$ iperf -c 192.0.2.2 -u -p 9090
$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
~~~

Par défaut en UDP, une bande passante de **1Mbit/s** sera utilisée. Il faut préciser la bande passante voulue :
Et on précise le mode UDP au niveau client :

~~~
$ iperf -c 192.0.2.2 -u -b 100m
Client connecting to 192.0.2.2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
[ 3] local 192.0.2.1 port 47692 connected with 192.0.2.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 120 MBytes 101 Mbits/sec
[ 3] Sent 85471 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 120 MBytes 100 Mbits/sec 0.022 ms 0/85470 (0%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
$ iperf3 -c 192.0.2.1 -u -b 10M
Connecting to host 192.0.2.1, port 5201
[ 4] local 192.0.2.2 port 34378 connected to 192.0.2.1 port 5201
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 0.00-1.00 sec 1.09 MBytes 9.17 Mbits/sec 140
[ 4] 1.00-2.00 sec 1.19 MBytes 9.96 Mbits/sec 152
[...]
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-10.00 sec 11.8 MBytes 9.92 Mbits/sec 0.539 ms 0/1512 (0%)
[ 4] Sent 1512 datagrams

iperf Done.
~~~

Autres options utiles :

* `-i n` Afficher un rapport toutes les n secondes (en plus du rapport final). Exemple : -i 5
* `-t n` Effectuer la transmission de données pendant n secondes. Exemple : -t 30
* `-d` Faire une transmission bidirectionnelle simultanément
* `-r` Faire une transmission bidirectionnelle séparément
### Options

Options générales intéressantes :

* `-p N` : utiliser un port spécifique
* `-i N` : afficher un rapport intermédiaire toutes les N secondes
* `-J` : sortie au format JSON (iperf3 uniquement)

Options intéressantes pour le serveur :

* `-D` : lancer en mode daemon
* `-1` : traiter un seul client et quitter (iperf3 uniquement)

Options intéressantes pour le client :

* `-t N` : transmission pendant N secondes (au lieu de 10 secondes par défaut)
* `-P N` : lancer N clients en parallèle (iperf3 uniquement)
* `-d` : lancer une transmission bidirectionnelle simultanément (iperf v2 uniquement)
* `-r` : lancer une transmission bidirectionnelle séparément (iperf v2 uniquement)


+ 1
- 1
HowtoMTR.md View File

@@ -4,7 +4,7 @@ categories: tips network
...

* Manpage <https://manpages.debian.org/stable/mtr-tiny/mtr.8.en.html>
* code source : <https://github.com/traviscross/mtr>
* Code source : <https://github.com/traviscross/mtr>

[MTR (My traceroute)](http://www.bitwizard.nl/mtr/) est un outil de diagnostic réseau combinant les fonctionnalités des programmes _traceroute_ et _ping_.



Loading…
Cancel
Save