web-dev-qa-db-fra.com

Comment testez-vous la vitesse du réseau entre deux boîtes?

J'ai un réseau gigabit dans ma maison et quelques boîtiers basés sur Ubuntu. Par curiosité, j'aimerais vérifier la vitesse entre les deux cases. Je n'ai pas de problèmes de vitesse ou quoi que ce soit, c'est vraiment le geek en moi qui est curieux. De plus, peut-être que les résultats me laisseront savoir s'il y a place à amélioration ou si quelque chose est mal configuré.

Alors, comment testez-vous correctement la vitesse du réseau entre les boîtiers Ubuntu?

161
Jacob Schoen

J'utilise iperfname__. Il s’agit d’un arrangement client-serveur en ce sens que vous l’exécutez en mode serveur d’un côté et que vous vous connectez à son ordinateur depuis un autre ordinateur situé de l’autre côté du réseau.

Une des deux machines fonctionne:

Sudo apt-get install iperf

Nous allons démarrer un serveur iperfsur l'une des machines:

iperf -s

Et puis sur l’autre ordinateur, dites à iperfde vous connecter en tant que client:

iperf -c <address of other computer>

Sur l'ordinateur client, 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 sûr, si vous utilisez un pare-feu sur le serveur, vous devez autoriser les connexions sur le port 5001 ou modifier le port avec l'indicateur -p.


Vous pouvez faire à peu près la même chose avec plain old nc(netcat) si vous êtes de cette façon incliné. Sur la machine serveur:

nc -vvlnp 12345 >/dev/null

Et le client peut acheminer un gigaoctet de zéros par ddpar le tunnel ncname__.

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

Comme demod:

$ 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 ddmais il devrait être suffisamment précis car il ne peut sortir que si le tuyau le prend rapidement. Si vous n'êtes pas satisfait de cela, vous pouvez envelopper le tout dans un appel timename__.

Rappelez-vous que le résultat est en méga octets multipliez-le donc par 8 pour obtenir un méga bits - vitesse par seconde. La démo ci-dessus fonctionne à 944 Mbps.

255
Oli

Identique à la recommandation d'Oli pour iperf. Je veux juste ajouter plusieurs points:

  1. Il existe également des clients Windows permettant de tester différentes plates-formes.
  2. -t <seconds> modifie la durée du test. -P <n> change le nombre de connexions simultanées. Par exemple, iperf -c [target IP] -P 10 -t 30 teste 10 connexions ensemble pendant 30 secondes et fournit des résultats agrégés ainsi que 10 vitesses de connexion distinctes.
  3. Tu n'as pas besoin de Sudo. Vous pouvez simplement télécharger le binaire à l'adresse http://iperf.fr/ . Ça devrait marcher. Téléchargez-le avec wget, rendez-le exécutable avec chmod et vous pourrez exécuter directement le binaire. Ça fonctionne parfaitement.

J'ai constaté que, avec les paramètres par défaut, la vitesse de connexion unique fluctuait un peu. Cependant, avec plus de 3 connexions parallèles, les résultats sont plus cohérents sur mon commutateur gigaoctet. (toujours @ 910-920Mbps)

20
wujj123456

En utilisant 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 par l'hôte distant. Ce n'est pas un argument obligatoire.
7
VeLKerr

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

https://github.com/jwbensley/Etherate

Ajoutez-y des outils comme iPerf (qui sont très bons!) Fonctionnent sur IP et TCP ou UDP. Etherate teste directement sur la couche 2 Ethernet/OSI.

4
jwbensley

Il existe également d’autres outils de ligne de commande de Nice pour l’analyse comparative de la bande passante entre deux hôtes:

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

goben

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
1
Everton

comme je le faisais remarquer au mieux dans mon commentaire, cette solution n’est pas suffisante, car le client/serveur n’est pas optimisé pour ... squeeze chaque bit de vitesse

ma solution:

créez un disque mémoire des deux côtés (par conséquent, vous n'êtes pas limité par la vitesse de stockage et je vous suggère de les créer avec ramfs, pas avec les fichiers tmpfs, afin qu'ils n'entrent pas en échange ... faites attention de ne pas laisser au moins 512 millions de mémoire libre pour le système, cela est OBLIGATOIRE si vous avez giga ethernet, à cette vitesse, même les SSD peuvent ralentir les choses) installez Apache sur le serveur, puis créez un lien vers le disque mémoire, créez quelques fichiers volumineux sur le disque (100M-1G, vous pouvez les créer avec dd à partir de/dev/random ou copier si vous en avez) puis allez côté client et téléchargez-les (également sur le disque mémoire de ce côté-là) avec un programme de téléchargement avancé, j'ai utilisé lftp

eh bien, la différence était majeure, à partir de 75 Mbps rapporté par iperf et netcat 9.5M/s

à 11.18M/s avec ma solution:

1591129421 bytes transferred in 136 seconds (11.18M/s)
0
THESorcerer