Catégories
Open-source Reseau

Tester une liaison TCP/IP avec nttcp

NTTcp est un petit utilitaire bien pratique, dans la lignée des IPerf, pour tester une liaison TCP/IP (ou UDP) en ligne de commande sous Linux. A ajouter à votre liste d’outils pour l’administrateur réseau

Installation de NTTcp

Il faut installer le logiciel sur les deux machines (ou plus) entre lesquelles vous voulez tester votre réseau TCP/IP.

Sous Ubuntu:

[shell]sudo aptitude install nttcp[/shell]

Utilisation de NTTcp

Sur la machine A ayant comme adresse IP 192.168.0.100 (d’un coté du réseau):

[shell]nttcp -i -v[/shell]

Sur la machine B (de l’autre coté du réseau à tester):

[shell]nttcp -t -T 192.168.0.100[/shell]

Par défaut, NTtcp va transférer 2048 « buffers » de 4 Kilo octets (4KB), soit un total de 8 Mo de B vers A.

Le résultat devrait ressembler à:

     Bytes  Real s   CPU s Real-MBit/s  CPU-MBit/s   Calls  Real-C/s   CPU-C/s
l  8388608    0.71    0.02     93.8840   3355.2754    2048   2865.11  102394.9
1  8388608    0.72    0.06     92.7279   1198.3084    5209   7197.55   93012.9

Les options disponibles

Pour inverser et effectuer un test de débit de A vers B, il faut utiliser l’option -r au lieu de l’option -t.

On peut notamment noter l’option -u pour forcer l’utilisation du protocole UDP en lieu et place de TCP.

Un petit coup de man:

[shell]

Usage: nttcp [local options] host [remote options]
local/remote options are:
-t transmit data (default for local side)
-r receive data
-l# length of bufs written to network (default 4k)
-m use IP/multicasting for transmit (enforces -t -u)
-n# number of source bufs written to network (default 2048)
-u use UDP instead of TCP
-g#us gap in micro seconds between UDP packets (default 0s)
-d set SO_DEBUG in sockopt
-D don’t buffer TCP writes (sets TCP_NODELAY socket option)
-w# set the send buffer space to #kilobytes, which is
dependent on the system – default is 16k
-T print title line (default no)
-f give own format of what and how to print
-c compares each received buffer with expected value
-s force stream pattern for UDP transmission
-S give another initialisation for pattern generator
-p# specify another service port
-i behave as if started via inetd
-R# calculate the getpid()/s rate from # getpid() calls
-v more verbose output
-V print version number and exit
-? print this help
-N remote number (internal use only)
default format is: %9b%8.2rt%8.2ct%12.4rbr%12.4cbr%8c%10.2rcr%10.1ccr

[/shell]

Catégories
Open-source Reseau

Tester le débit de votre liaison réseau en fonction de la taille des paquets

Vous le savez (ou pas) mais la performance de vos applications réseau ne dépends pas seulement du débit et du délais de transit de votre liaison. Un des paramètre à prendre en compte est la taille des paquets générés par vos applications. C’est sur ce postulat que le logiciel Netpipe-TCP a été developpé.

NPtcp (disponible dans le package Netpipe-TCP sous Ubuntu) est un petit utilitaire bien pratique, en ligne de commande, permettant de tester le débit maximal d’une liaison en fonction de la taille des paquets.

Installation de NPtcp

Il faut installer le logiciel sur les deux machines (ou plus) entre lesquelles vous voulez tester votre réseau TCP/IP.

Sous Ubuntu:

sudo aptitude install netpipe-tcp

Utilisation de NPtcp en mode TCP

Sur la machine A ayant comme adresse IP 192.168.0.100 (d’un coté du réseau):

NPtcp

Sur la machine B (de l’autre coté du réseau à tester):

NPtcp -h 192.168.0.100

Il est important de noter que NPTcp va faire un test bi-directionnel (c’est à dire que les flux seront envoyé simultanément de A vers B et de B vers A). Pour tester seulement de B vers A, on peut utiliser l’option -s (à ajouter sur les deux lignes de commande).

Le résultat devrait ressembler à:

Send and receive buffers are 16384 and 87380 bytes
(A bug in Linux doubles the requested buffer sizes)
Now starting the main loop
 0:       1 bytes    648 times -->      0.05 Mbps in     142.98 usec
 1:       2 bytes    699 times -->      0.11 Mbps in     144.26 usec
 2:       3 bytes    693 times -->      0.16 Mbps in     145.62 usec
 3:       4 bytes    457 times -->      0.21 Mbps in     145.54 usec
 4:       6 bytes    515 times -->      0.31 Mbps in     145.94 usec
 5:       8 bytes    342 times -->      0.42 Mbps in     144.11 usec
 6:      12 bytes    433 times -->      0.63 Mbps in     146.39 usec
 7:      13 bytes    284 times -->      0.67 Mbps in     147.55 usec
 8:      16 bytes    312 times -->      0.83 Mbps in     147.73 usec
 9:      19 bytes    380 times -->      0.98 Mbps in     148.04 usec
 10:      21 bytes    426 times -->      1.07 Mbps in     150.25 usec
...

Comment lire les résultats ?
On obtient donc un débit de 0.63 Mbps pour des tailles de paquets TCP de 12 octets, 1 Mbps pour 21 octets…

Et si l’on veut générer un beau graphe

Et oui, les chefs, les tableaux et les résultats en mode texte ils n’aiment pas ça… Donc pour assurer votre prochaine augmentation, nous allons, avec l’aide de gplot, compulser les chiffres générés par NPTcp dans un « beau » graphe…

On commence par ajouter l’option « -o fichier »:

Sur la machine B (de l’autre coté du réseau à tester):

NPtcp -h 192.168.0.100 -o nptcp.out

Puis on trace le graphe:

echo « reset; set terminal png; \

set logscale x;

set xlabel ‘Taille des paquets (octets)’; \

set ylabel ‘Debits (Mbps)’; \

plot ‘nptcp.out’ using 1:2 with linespoints; » | gnuplot > nptcp.png

Et on a le résultat suivant (sur une liaison LAN):

Quelques options en bonus…

Pour simuler un flux unidirectionnel de B vers A (streaming):

A# NPtcp -s

B# NPtcp -h 192.168.0.100 -s -o nptcp.out

Pour limiter le test a une taille maximale de paquet de 256 Ko:

NPtcp -h 192.168.0.100 -u 256000 -o nptcp.out

Pour fixer une taille minimale à 16 Ko:

NPtcp -h 192.168.0.100 -u 256000 -l 16000 -o nptcp.out

Conclusion

Un bon outil de plus à ajouter a son couteau suisse des applications open-source pour l’administration et le test de son réseau !

Catégories
Open-source Reseau

FTP actif versus FTP passif

Je me pose régulièrement la question de la différence entre les deux modes de transfert de fichiers FTP: actif ou passif. Voici donc un billet mémo à destination des petites têtes (dont je fais parti…).

Le mode FTP actif

C’est le mode par défaut des clients FTP. Le client établi dans un premier temps une session TCP sur le port 21 (FTP) du serveur (« control channel »). Une fois la session établie et l’authentification FTP acceptée, c’est le serveur qui établi une session TCP (avec le port source 20, FTP-DATA) vers un port dynamique du client (« data channel »).


FTP-actif---Nicolargo.png

Le mode FTP passif

Il faut garder en mémoire que le mode passif est conseillé à partir du moment ou les clients peuvent se trouver derrière un Firewall/NAT. En effet dans ce mode, toutes les initialisions de sessions TCP se font à partir du client.

Comme pour le FTP actif, le client établi une première session TCP sur le port 21 (FTP) du serveur (« control channel »). Une fois la session établie et l’authentification FTP acceptée, on demande au serveur de se mettre en attente de session TCP grâce à la commande PASV. Alors le client peut établir une seconde session TCP sur un port dynamique vers le serveur (« data channel »).

Le numéro de port dynamique est transmis du serveur vers le client suite à la commande PASV. On peut réduire la plage de port en configurant le serveur FTP. Par exemple, pour le serveur pro-ftpd:

# vi /usr/local/etc/proftpd.conf

PassivePortRange 30000 32000


FTP-passif---Nicolargo.png

Pour les fans, vous pouvez consulter la RFC du protocole FTP (en français).
Catégories
Open-source Reseau

TCPtrack: suivre ses connexions TCP

TCPTrack est un petit utilitaire bien pratique pour suivre les connexions TCP. L’idéal est de l’installer sur sa machine ou sur le routeur d’accès. Disponible sous licence GPL (version 2) il est téléchargeable à l’adresse suivante. Je l’ai compilé sans problème sous Linux, FreeBSD et Mac OS X.

Nous allons voir dans le tutoriel suivant, comment installer et utiliser cet utilitaire…