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?
J'utilise iperf
name__. 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 iperf
sur l'une des machines:
iperf -s
Et puis sur l’autre ordinateur, dites à iperf
de 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 dd
par le tunnel nc
name__.
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 dd
mais 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 time
name__.
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.
Identique à la recommandation d'Oli pour iperf. Je veux juste ajouter plusieurs points:
-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.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)
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.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.
Il existe également d’autres outils de ligne de commande de Nice pour l’analyse comparative de la bande passante entre deux hôtes:
server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address
server$ nepim
client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address
server$ goben
client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
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)