# Test de débit entre un client et un serveur

Pour mesurer la vitesse d’une connexion internet, on peut utiliser des services comme SpeedTest ou Google Speed Test.

> **Mais comment vérifier la vitesse entre deux serveurs ou entre un ordinateur et un serveur ?**  
> Pour ce faire nous allons utiliser `iperf` qui fonctionne entre client et serveur et permet de tester la vitesse et bande passante entre deux hôtes.  
> Cet outil réseau fonctionne sur Linux, Windows, Android et iOS.

Les commandes iperf montrent des informations sur la bande passante, le retard, la gigue et la perte de datagramme. Il s’agit d’un outil pour effectuer des mesures de débit de 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 éliminer le trafic) et un client (pour générer du trafic).

#### iperf ou iperf3 ?

L’outil existe en deux versions.  
La version 3 est plus récente et propose des options supplémentaires comme la congestion, la sort JSON, etc.  
De plus le port utilisé par défaut est différent :

- **iperf** qui écoute sur le port 5901 par défaut
- **iperf3** qui écoute sur le port 5201 par défaut

Sinon l’utilisation des commandes et le principe sont totalement identiques.

#### 1/ Installation

Tout d'abord iperf doit être installé sur le serveur ET sur le client qui peut être un ordinateur ou un autre serveur .

<span style="text-decoration: underline;">Sur Linux :</span>

```bash
sudo apt install iperf3
```

<span style="text-decoration: underline;">Pour Windows :</span>

Vous pouvez télécharger `iperf` sur le site officiel : [iperf3](https://iperf.fr/iperf-download.php)

-&gt; Utilisez ensuite l’invite de commandes pour exécuter les commandes `iperf`.

####   


#### 2/ Mise en place

**Pour que `iperf` fonctionne il faut utiliser un port qui n'est pas déjà utilisé par un service.**

Par exemple les ports suivants ne seront pas utilisables car un service les écoutes sur le serveur :

- 80 : Apache utilise le port 80 pour les requêtes HTTP
- 443 : Apache utilise le port 443 pour les requêtes HTTPS
- 1194 : OpenVPN utilise le port 1194

<p class="callout info">Dans notre cas nous allons utiliser le port **27015.**</p>

<p class="callout warning">Les conditions ci-dessous pour que l'utilisation du port 27015 fonctionne : </p>

- Pour l'utiliser nous devons autoriser le port 27015 en TCP sur le par-feu de notre serveur.
- Et si le serveur se trouve derrière une box internet (pour les serveurs maison) vous devez autoriser le port 27015 en TCP sur la box internet.

#### 3/ Utilisation

Pour la machine ayant le rôle de <span style="text-decoration: underline;">**serveur**</span>, lancer la commande suivante :

```
iperf3 -s -p <port>
```

<table border="1" id="bkmrk--s%2C---server-run-in-" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 17.3458%;"></col><col style="width: 82.7779%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">-s, --server</td><td style="height: 29.7969px;">run in server mode</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">-p, --port</td><td style="height: 29.7969px;">server port to listen on/connect to</td></tr></tbody></table>

Pour la machine ayant le rôle de **<span style="text-decoration: underline;">client</span>**, lancer la commande suivante :

```
iperf3 -c <ip.adress.server> -p <port>
```

<table border="1" id="bkmrk--c%2C---client-run-in-" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 17.3458%;"></col><col style="width: 82.7779%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">-c, --client</td><td style="height: 29.7969px;">run in client mode, connecting to &lt;host&gt;</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">-p, --port</td><td style="height: 29.7969px;">server port to listen on/connect to</td></tr></tbody></table>