213 votes

Comment tester la vitesse du réseau entre deux boîtes ?

J'ai un réseau gigabit installé dans ma maison et quelques boîtes basées sur Ubuntu. Par pure curiosité, je voudrais vérifier la vitesse entre les deux boîtes. Je n'ai aucun problème de vitesse ou autre, c'est juste le geek en moi qui est curieux. De plus, les résultats me permettront peut-être de savoir s'il est possible de s'améliorer ou si j'ai mal configuré quelque chose.

Alors comment tester correctement la vitesse du réseau entre les boîtes Ubuntu ?

351voto

Mufaka Points 54

J'utilise iperf . Il s'agit d'une configuration client-serveur dans la mesure où vous l'exécutez en mode serveur à une extrémité et où vous vous connectez à partir d'un autre ordinateur de l'autre côté du réseau.

Une fois que les deux machines fonctionnent :

sudo apt-get install iperf

Nous allons commencer un iperf sur l'une des machines :

iperf -s

Et ensuite, sur l'autre ordinateur, dites iperf pour se connecter en tant que client :

iperf -c <address of other computer>

Sur la machine cliente, vous verrez quelque chose comme ceci :

oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

Bien entendu, si vous utilisez un pare-feu sur la machine serveur, vous devrez autoriser les connexions sur le port 5001 ou modifier le port avec la commande -p drapeau.


Vous pouvez faire à peu près la même chose avec un bon vieux nc (netcat) si vous êtes de cet avis. Sur la machine serveur :

nc -vvlnp 12345 >/dev/null

Et le client peut faire passer un giga-octet de zéros à travers dd sur le nc tunnel.

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

Comme démod :

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

Le timing y est donné par dd mais il devrait être assez précis car il ne peut sortir qu'à la vitesse à laquelle le tuyau le prend. Si vous n'êtes pas satisfait de cela, vous pouvez envelopper l'ensemble dans un fichier time appeler.

N'oubliez pas que le résultat est en méga octets il faut donc le multiplier par 8 pour obtenir un méga bits -par seconde. La démo ci-dessus fonctionne à 944mbps.

26voto

wujj123456 Points 361

Même chose que la recommandation d'Oli pour iperf. Je veux juste ajouter plusieurs points :

  1. Il existe également des clients Windows qui permettent d'effectuer des tests à travers plateformes.
  2. -t _<seconds>_ modifie la durée du test. -P _<n>_ modifie le nombre de connexions simultanées. Par exemple, iperf -c _[target IP]_ -P 10 -t 30 teste 10 connexions ensemble pendant 30 secondes et donne des résultats agrégés ainsi que 10 vitesses de connexion distinctes.
  3. Vous n'avez pas besoin de sudo. Vous pouvez simplement télécharger le binaire à http://iperf.fr/ . Il devrait fonctionner. Téléchargez-le avec wget et le rendre exécutable avec chmod et vous pouvez directement exécuter le binaire. Cela fonctionne parfaitement.

J'ai constaté qu'en utilisant les paramètres par défaut, la vitesse de connexion unique fluctue assez fortement. Cependant, avec 3+ connexions parallèles, les résultats sont plus cohérents sur mon switch Gigabyte. (constamment @ 910-920Mbps)

16voto

bm-bergmotte Points 261

La commande ci-dessous ne nécessite pas de paquetage supplémentaire mais un accès SSH :

ssh username@myserver.example.com 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress

Exemple de sortie :

2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s

La commande imprime un fichier fictif de 3 Go (1000^3 octets) rempli de zéros vers stdout sur le serveur distant, qui est imprimé (transféré) via SSH vers stdout du serveur local, puis dirigé localement vers /dev/null (c'est-à-dire ignorée). Vous pouvez même voir la progression du test pendant son exécution.

Il n'est certainement pas aussi précis que d'autres outils mais mon cas d'utilisation était de déboguer un processus de sauvegarde où je voulais tester si la vitesse du réseau était le problème sans installer de paquets supplémentaires.

9voto

VeLKerr Points 213

Utilisation de ce script vous pouvez facilement tester la vitesse de connexion entre votre machine et un hôte distant. Exemple d'utilisation :

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host est votre hôte de destination (vous devez avoir un accès ssh à cet hôte)
  • 80000 est la taille approximative du fichier de test (en kbs), qui sera reçu sur l'hôte distant. Ce n'est pas un argument obligatoire.

5voto

jwbensley Points 615

Si vous souhaitez tester votre réseau local Ethernet à un niveau inférieur, vous pouvez utiliser Etherate qui est un outil de test Ethernet CLI Linux gratuit :

https://github.com/jwbensley/Etherate

Il faut savoir que des outils comme iPerf (qui sont très bons !) fonctionnent sur IP et TCP ou UDP. Etherate teste directement sur Ethernet / couche 2 OSI.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X