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

168

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?

Jacob Schoen
la source

Réponses:

272

Je l'utilise iperf. 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 de l’autre côté du réseau.

Une des deux machines fonctionne:

sudo apt-get install iperf

Nous allons démarrer un iperfserveur sur 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' -pindicateur.


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

nc -vvlnp 12345 >/dev/null

Et le client peut diriger un gigaoctet de zéros à travers ddle nctunnel.

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 est donné par ddmais il doit ê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 tout inclure dans un timeappel.

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

Oli
la source
Homme tu as toutes les réponses à mes questions! Mon réseau n’est apparemment pas configuré et votre transfert n’est que de 714 Mo et une bande passante de 598 Mbits / s. Dunno pourrait envisager cela à l'avenir. Merci.
Jacob Schoen
En toute justice, l’autre boîtier n’est qu’à un commutateur (et à 20 mètres de cat5e) et il n’ya pas de congestion. 600 Mbps est encore assez rapide.
Oli
C'est génial, mais je n'ai pas d'accès root au serveur.
Geoff
Essayez -P 10. Mon résultat avec une connexion unique est similaire à jschoens, mais avec plus de 3 connexions parallèles, il pousse systématiquement à 920 Mbps.
wujj123456
1
@CMCDragonkai Vous ne devriez probablement pas tester des ressources qui ne sont pas les vôtres. Les tests lourds en bande passante peuvent avoir un impact sur la stabilité à court terme.
Oli
22

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>change la longueur du test. change le nombre de connexions simultanées. Par exemple, teste 10 connexions ensemble pendant 30 secondes et donne des résultats agrégés ainsi que 10 vitesses de connexion distinctes.-P <n>iperf -c [target IP] -P 10 -t 30
  3. Tu n'as pas besoin de sudo. Vous pouvez simplement télécharger le binaire sur http://iperf.fr/ . Ça devrait marcher. Téléchargez-le avec wget, rendez-le exécutable chmod, et vous pouvez 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)

wujj123456
la source
8

En utilisant ce script, vous pouvez facilement tester la vitesse de connexion entre votre ordinateur 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)
  • 80000est 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.
VeLKerr
la source
4
Cela semble tester la vitesse de l'application SCP, qui sera inférieure à un test sur une couche inférieure. Par exemple, nc utilise L4. Bien sûr, c’est formidable si vous vous souciez davantage de la vitesse de SCP.
sudo
1
A des problèmes: ce script écrit et lit un fichier sur le disque - plus lent que la RAM, peut donc être un ralentissement artificiel. De plus, n'envoie que des zéros, au cas où ils seraient compressés, ce qui représente une grande accélération artificielle. Si vous voulez des données pseudo-aléatoires, n'utilisez pas /dev/random(elles peuvent bloquer) ouurandom (les commentaires de liens suggérés) peuvent être très lentes aussi, utilisez plutôt un cryptage dm (Voir la FAQ de cryptsetup 2.19. Comment puis-je effacer un périphérique avec qualité aléatoire? ) peut-être avec un fichier en RAM.
Xen2050
4

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, TCP ou UDP. Etherate teste directement sur la couche 2 Ethernet / OSI.

Jwbensley
la source
2

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

ssh [email protected] '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 factice de 3 Go (1 000 ^ 3 octets) plein de zéros sur la sortie standard du serveur distant, qui est imprimé (transféré) via SSH sur la sortie standard du serveur local, puis redirigé vers /dev/null(c'est- à -dire ignoré). Vous pouvez même voir la progression du test lors de son exécution.

Certainement pas aussi précis que d'autres outils, mais mon cas d'utilisation était de déboguer un processus de sauvegarde dans lequel je voulais tester si la vitesse du réseau posait problème sans installer de paquet supplémentaire.

bm-bergmotte
la source
1

Il existe également d'autres outils de ligne de commande utiles 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
Everton
la source
2
En quoi sont-ils différents les uns des autres et d'iperf? Travaillent-ils de la même façon, que font-ils? nuttcp est dans Debian et apparemment "nuttcp est basé sur nttcp, qui était à son tour une amélioration apportée par une personne de Silicon Graphics (SGI) au ttcp original, qui avait été écrit par Mike Muuss chez BRL avant décembre 1984 - pour comparer les performances de Les piles TCP de UC Berkeley et BBN aideront DARPA à choisir la version de la première version de BSD Unix. "
Xen2050
0

comme je l’ai souligné dans mon commentaire, cette solution n’est pas suffisante, car le client / serveur n’est pas optimisé pour ... tirer le maximum 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 ne soient pas échangés ... veillez à 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 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é, que 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)
Le sorcier
la source
1
9,5 M * 8 = 76 Mbps; il est tout près de 75 mbps
Fusca Software
-4

Il est facile de brancher votre ordinateur sur la première boîte, de connecter l’autre boîte à la première. Puis, à partir de votre ordinateur, envoyez une requête ping à la première boîte, enregistrez le résultat, envoyez une requête ping à l’autre boîte et exécutez la soustraction.

Nyamiou le galeanthrope
la source
10
Cela montre la latence du réseau qui n’est qu’une partie de la vitesse. Par exemple, la connexion 3G de mon téléphone a une latence énorme (100 à 300 ms), mais elle peut tout de même gérer un débit de 5 Mbps.
Oli
Ce n’est pas de ma faute s’il demandait de la vitesse, mais voulait du débit.
Nyamiou The Galeanthrope
2
La latence est le temps de réaction, pas la vitesse.
wullxz