Catégories
Reseau

Tester la performance de votre réseau avec Iperf

Iperf est un des outils indispensable pout tout administrateur réseau qui se respecte. En effet, ce logiciel de mesure de performance réseau, diponible sur de nombreuses plateformes (Linux, BSD, Mac, Windows…), se présente sous la forme d’une ligne de commande à executer sur deux machines disposées aux extrémités du réseau à tester.

Iperf fonctionne comme un client/serveur selon le diagramme suivant:

Iperf

Iperf doit être lancé sur deux machines se trouvant de part et d’autre du réseau à tester. La première machine lance Iperf en « mode serveur » (avec l’option -s), la seconde en « mode client » (option -c). Par défaut le test réseau se fait en utilsant le protocole TCP (mais il est également possible d’utiliser le mode UDP avec l’option -u).

Nous allons commencer par installer iperf en utilisant la commande suivante (sous Fedora):

# yum install iperf

Pour les autres système d »exploitation, vous pouvez vous rendre sur cette page.

Premier exemple d’utilisation

Ensuite, sur une des deux machines de test, nous allon slancer le serveur grâce à la commande suivante:

# iperf -s

Sur le client, il ne reste plus qu’a lancer le client en précisant l’adresse du serveur:

# iperf -c <adresse IP du serveur>

Vous devriez avoir le rapport qui s’affiche après 10 secondes de test.

————————————————————
Client connecting to 192.168.29.1, TCP port 5001
TCP window size: 65.0 KByte (default)
————————————————————
[ 3] local 192.168.29.157 port 50675 connected with 192.168.29.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 110 MBytes 92.6 Mbits/sec

Avec les options par défaut, le test est fait en TCP sur une durée de 10 secondes. Sur un réseau local vous devriez donc obtenir un valeur proche de la capacité de commutation de vos équipements (par exemple 92.6 Mbits/sec qui est une valeur proche de 100 Mbits/sec).

Pour afficher des rapports intermédiaires (par exemple toutes les secondes) , il suffit d’ajouter l’option (-i 1) sur le client et/ou le serveur.

# iperf -s -i 1
————————————————————
Server listening on TCP port 5001
TCP window size: 56.0 KByte (default)
————————————————————
[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 50692
[ 6] 0.0- 1.0 sec 10.1 MBytes 84.8 Mbits/sec
[ 6] 1.0- 2.0 sec 11.1 MBytes 93.0 Mbits/sec
[ 6] 2.0- 3.0 sec 11.2 MBytes 93.8 Mbits/sec
[ 6] 3.0- 4.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 4.0- 5.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 5.0- 6.0 sec 11.2 MBytes 93.8 Mbits/sec
[ 6] 6.0- 7.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 7.0- 8.0 sec 11.2 MBytes 93.8 Mbits/sec
[ 6] 8.0- 9.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 9.0-10.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 0.0-10.0 sec 111 MBytes 92.9 Mbits/sec

Une autre option de base est (-t) qui permet de fixer au niveau du client le temps du test (en secondes). Par exemple pour effectuer un test pendant 1 minute:

# ipert -c <adresse IP du serveur> -t 60

Exemple de test en utilisant le protocole UDP

Iperf permet également de générer un traffic de type UDP (-u). Dans ce cas là, il faut penser à fixer la bande passante cible (contrairement au protocole TCP, UDP ne peut pas faire de contrôle de flux). On utilise pour cela l’argument -b au niveau du client:

Sur le serveur:

# iperf -s -u

Sur le client:

# ipert -c <adresse IP du serveur> -u -b 512k

Ce couple de commandes va générer un test avec un flux réseau UDP de 512 Kbits/sec.

Comme vous pouvez le voir Iperf est également un bon outil de génération de flux. Je l’ai déjà testé pour générer un flux UDP constant pendant plusieurs jours.

Exemple de test en multicast (UDP)

Iperf peut fonctionner en mode multicast (-B). Il faut le lancer de la manière suivante:

Sur le serveur:

# iperf -s -u -B 226.10.11.12

Sur le/les clients:

# iperf -c 226.10.11.12 -u -T 32 -b 512k

Ce couple de commandes génére un flux multicast UDP (sur l’adresse 226.10.11.12, avec un TTL de 32) de 512 Kbits/sec.

Autres options

NOUVEAU: Consultez cet autre article (cliquez ici) pour une description des options avancés de Iperf.

Et bien entendu, il reste la fameuse commande:

# iperf –help

…pour avoir la liste complète des options. Si vous avez des questions, n’hésitez pas !

Sur le même sujet

Pour mes propres besoins, j’ai ecrit un programme nommé SJitter permettant, comme le fait Iperf (c’est à dire sous la forme d’un client/serveur), de mesurer la gigue réseau (ou jitter en anglais). Paramètre très important si vous souhaitez mettre en place de la voie sur IP sur votre réseau.

Catégories
Reseau

Monter un répertoire distant en SSH

Je me sers exlusivement du protocole SSH pour administrer mes machines via une console. Ce protocole permet également d’effectuer des transferts de fichiers via le protocole SCP. Cependant, il était jusqu’a maintenant nécessaire d’utiliser un client (scp sous Linux/BSD, WinSCP sur Windows ou Fugu sur Mac). Cette contrainte n’est plus d’actualité depuis l’apparition de Fuse.

« Pour rappel, Fuse (pour Filesystem in Userspace) permet à un utilisateur (non root) de créer son propre système de fichier sans avoir à modifier le noyau du systeme. Il existe par exemple une extension pour accéder à votre compte Gmail comme si celui-ci était un répertoire de votre disque dur (GmailFS). Fuse a de plus le bon goût d’être développé sous licence open-source GPL et LGPL. »

Pour notre besoin, nous allons utiliser le module SSHFS (SSH sur Fuse).

Installation (sur Fedora)

# yum install fuse-sshfs

Utilisation (sur Linux)

La première chose à faire est de créer, sur votre machine cliente, le répertoire dans lequel sera monté le répertoire distant:

# mkdir /mnt/test

Ensuite, on monte le répertoire distant /home/test qui se trouve sur la machine 192.168.0.2:

# sshfs 192.168.0.2:/home/test/ /mnt/test/

On vérifie en faisant un ls dans le répertorie /mnt/test. Il doit afficher le contenu du répertoire distant.

# ls /mnt/test
test.zip

Pour démonter le répertoire distant, il faut taper la commande suivante:

# fusermount -u /mnt/test

Et voila le travail…

Catégories
Reseau

Sjitter – Version pour MacOSX

Je viens de mettre en package la version 0.14b de Sjitter mon outil (en ligne de commande) de mesure de bande passante, de delais de transit et de gigue pour MacOSX.

Le site officiel est ici mais vous pouvez également trouvez le package ici ou la.

A+

Catégories
Open-source Reseau

Installation de Nagios sur Fedora

Update: pour une procédure d’installation de Nagios version 3, merci de suivre ce lien… 

Voici les étapes à suivre pour installer Nagios (le « bien connu » outil de monitoring réseau « open-source ») sur un serveur Fedora.

La configuration est la suivante:

  • Fedora Core 6 (avec kernel 2.6.19) avec serveur Apache pre-installé.
  • Nagios 2.6

On commence par l’installation de Nagios et des différents plugins.

# yum -y install nagios
# yum -y install nagios-plugins
# yum -y install nagios-plugins-ping nagios-plugins-tcp nagios-plugins-udp nagios-plugins-http nagios-plugins-dns nagios-plugins-smtp nagios-plugins-ldap nagios-plugins-pgsql nagios-plugins-mysql

Vient ensuite la configuration du serveur web (Apache dans notre exemple, mais on peut en utiliser un autre). On doit pour cela modifier le fichier nagios.conf dans /etc/httpd/conf.d/ pour autoriser l’accés depuis toutes les sources.

# vi /etc/httpd/conf.d/nagios.conf
> Remplacer les lignes deny from all par allow from all

On doit également générer un couple login/password pour accèder à l’interface Web d’administration. Pour cela, il faut:

# htpasswd -c /etc/nagios/passwd admin

Dans ma configuration il a aussi fallu que je passe ma Fedora en mode SELINUX permissive, sinon les scripts CGI de Nagios ne s’executaient pas.

# vi /etc/selinux/config
> SELINUX=disabled
# reboot

Il ne reste plus qu’a vérifier que le serveur Web marche bien.
http://<adresse de votre serveur>/nagios/

La configuration de base du daemon Nagios est alors la suivante:

# cd /etc/nagios
# cp nagios.cfg-sample nagios.cfg
# vi nagios.cfg
Se reporter à la documentation suivante pour configurer ce fichier.
# cp cgi.cfg-sample cgi.cfg
# vi cgi.cfg
Se reporter à la documentation suivante pour configurer ce fichier.
# vi contacts.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi dependencies.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi escalations.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi hostgroups.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi hosts.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi hostgroups.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi services.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.
# vi timeperiods.cfg
> Se reporter à la documentation suivante pour configurer ce fichier.

Update: j’ai également écrit un post pour détailler cette configuration.

Pour tester vos fichiers de configuration, vous pouvez utiliser la commande suivante:

# nagios -v /etc/nagios/nagios.cfg

Total Warnings: 0
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check

Et voila le moment tant attendu, le lancement du process:

# service nagios start

Ne pas oublier de forcer le demarrage du process au reboot de la machine grâce à la commande (petit rappel):

# chkconfig –levels 235 nagios on

Il ne reste plus qu’a pointer votre navigateur Web favori sur l’URL suivante:
http://<adresseipduserveur>/nagios/

En cas de problème (serveur Web injoignable par exemple), il faut vérifier que le Firewallautorise bien les requêtes HTTP entrantes.

# iptable -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
# /sbin/iptables-save

Et voila le travail !!!

PS: en cas de modification des fichiers de configuration (par exemple ajout d’une machine monitorer), vous pouvez utiliser la commande suivante, qui vérifie vos fichiers de configurations et que les recharges.

# service nagios reload

Catégories
Reseau

Nouvelle version de SJitter (v0.14)

SJitter est un utilitaire que j’ai développé il y a quelques temps pour tester une liaison réseau. Il fournit notamment des informations sur la bande passante, la gigue (jitter dans la langue de qui vous savez), et les délais de transit.

Il fonctionne sous le principe d’un client/server. Le code est écrit en C sous licence GNU.

Voici la page du projet: http://freshmeat.net/projects/sjitter/

et le site officiel: http://www.nicolargo.com/dev/sjitter/