TTCP, test TCP è un tool Open Source originariamente scritto da Mike Muuss che permette di verificare le performance (Throughput) della propria network evitando di scrivere o leggere dati su disco dando dunque la possibilità di testare anche network basate su fibra.
Il test si basa sull'invio e ricezione di pacchetti UDP o TCP tramite due host oppure utilizzandolo come "network pipe" , quindi con un terzo host che ha la funzione di inviare e ricevere, è possibile verificare il Throughput di un segmento di network che originariamente per motivi di routing o strutturali non possono colloquiare fra di loro.
Installazione
L'installazione non richiede nessuna particolare attenzione, sia tramite rpm o compilazione dei sorgenti. Per i primi ci si può appoggiare ai vari repository come http://www.rpmfind.net per trovare il package più adatto per i sorgenti si possono trovare in rete in varti ftp server pubblici come
Installazione da RPM
[root@dido root]# wget ftp://216.254.0.38/linux/redhat/9/en/os/i386/RedHat/RPMS/ttcp-1.12-7.i386.rpm
--11:12:45-- ftp://216.254.0.38/linux/redhat/9/en/os/i386/RedHat/RPMS/ttcp-1.12-7.i386.rpm
=> `ttcp-1.12-7.i386.rpm'
Connecting to 216.254.0.38:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /linux/redhat/9/en/os/i386/RedHat/RPMS ... done.
==> PORT ... done. ==> RETR ttcp-1.12-7.i386.rpm ... done.
Length: 12,259 (unauthoritative)
100%[=================================================================================>] 12,259 33.72K/s ETA 00:00
11:12:47 (33.72 KB/s) - `ttcp-1.12-7.i386.rpm' saved [12259]
[root@dido root]# rpm -ihv /home/neo/fastweb/ttcp-1.12-7.i386.rpm
Preparing... ########################################### [100%]
1:ttcp ########################################### [100%]
[root@dido root]# rpm -qil ttcp
Name : ttcp Relocations: (not relocateable)
[...]
Binario
/usr/bin/ttcp
Manual e file README
/usr/share/doc/ttcp-1.12
/usr/share/doc/ttcp-1.12/README
/usr/share/man/man1/ttcp.1.gz
Installazione da sorgenti
[root@dido root]# wget http://www.netcordia.com/tools/tools/TTCP/ttcp.c
--11:22:11-- http://www.netcordia.com/tools/tools/TTCP/ttcp.c
=> `ttcp.c'
Resolving www.netcordia.com... done.
Connecting to www.netcordia.com[63.208.176.20]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19,554 [text/plain]
100%[=================================================================================>] 19,554 60.81K/s ETA 00:00
11:22:12 (60.81 KB/s) - `ttcp.c' saved [19554/19554]
[root@dido root]# gcc -O3 -o ttcp ttcp.c
ttcp.c:539: warning: static declaration for `gettimeofday' follows non-static
Esempi di uso
Qualunque sia la funzione del test o l'invio dati tramite ttcp occorre attivarlo almeno su due host, sul primo in modalità "trasmitter" e il secondo in modalità "receiver".
Abilitazione del receiver tramite l'opzione -r, maggior verbosità con l'opzione -v e l'opzione -s per eviatre che i dati in stdin vengano printati sullo stdout.
La porta di ascolto di default è la 5001
[root@nefertiti root]# ttcp -r -v -s
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp
ttcp-r: socket
Abilitazione del trasmitter tramite l'opzione -t , specificando nella linea di comando l'host receiver o l'host che ha la funzione di network pipe e come era per il receiver anche qui l'opzione -s è dobbligo se si vuole effetuare un test.
[root@pippo root]# ttcp -t -v -s 192.168.1.2
Esempio Risulato
Per un considerare un test valido vengono richiesti almeno dieci secondi di trasferimento dati.
ttcp-r: accept from 192.168.1.5
ttcp-t: 16777216 bytes in 408.85 real seconds = 40.07 KB/sec +++
ttcp-t: 16777216 bytes in 0.00 CPU seconds = 1638400000.00 KB/cpu sec
ttcp-t: 2048 I/O calls, msec/call = 204.42, calls/sec = 5.01
ttcp-t: 0.0user 0.0sys 6:48real 0% 0i+0d 0maxrss 0+2pf 0+0csw
ttcp-t: buffer address 0x8050000
Esempio di utilizzo di ttcp come "network pipe"
[root@pippo root]# ttcp -rvs | ttcp -tvs 192.168.1.5
ttcp-r: socket
ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 192.168.1.5
ttcp-t: socket
ttcp-t: connect
In questo caso tutto il traffico ricevuto dall'host pippo sulla porta 5001 verrà dirottato sull'host 192.168.1.5
I comandi e le tecniche per diagnosticare la rete: netstat, arp, tcpdump.