Medir el ancho de banda entre dos nodos en una LAN
Como administrador de una red es importante saber a que velocidad circulan los datos en nuestra red, pudiendo optimizar la red o detectar cuellos de botella.
Para ésta tarea hay varias herramientas, en éste artículo me centraré en el uso de Iperf (http://sourceforge.net/projects/iperf/) [Wiki (http://en.wikipedia.org/wiki/Iperf)], una herramienta gratuita de tipo cliente-servidor para medir el ancho de banda entre dos nodos. Se trata de una herramienta de consola que mide el tráfico TCP y UDP, pero se ha desarrollado una interfaz gráfica (GUI) en java, llamada JPerf, cuyo uso veremos más adelante.
Introducción a IPerf
Al tratarse de una arquitectura cliente-servidor, esta herramienta hay que instalarla en los dos nodos en los que se realizará la prueba. Es multiplataforma y opensource, pero en este tutorial usaré dos máquina con GNU/Linux, al final encontraréis como usarlo en Windows.
Instalar IPerf:
apt-get install iperf
Configurar IPerf
En el equipo que hará de servidor hay que ponerlo en modo escucha y en el que se conectará habrá que indicarle la IP del nodo servidor:
Servidor:
iperf -s
(http://madzone.comoj.com/image_host/images/capturwhw.png)
Cliente:
iperf -c <ip_servidor>
Después de conectarnos al cliente se realizará la prueba y saldrá el resultado en MB/segundo.
(http://madzone.comoj.com/image_host/images/captura2.png)
Se disponen de muchas más opciones para realizar el testeo.
Para el cliente:
-b, --bandwidth #[KM]
for UDP, bandwidth to send at in bits/sec (default 1 Mbit/sec,
implies -u)
-c, --client
Ejecutarse en modo cliente y conectarse a un servidor
-d, --dualtest
Se realiza un test bidireccional
-n, --num
#[KM] Número de paquetes a transmitir
-r, --tradeoff
Test bidireccional individual
-t, --time
# Tiempo en segundo de transferencia (por defecto 10 segundos)
-F, --fileinput
Configurar un fichero como datos de transferencia
-I, --stdin
Configurar entrada de datos por consola como datos de transferencia
-L, --listenport #
Puerto para recibir los tests bidireccionales
-P, --parallel
# Número de procesos paralelos
-T, --ttl
# time-to-live, para multicast (por defecto 1)
Miscellaneous:
-h, --help
Muestra la ayuda del programa
-v, --version
Muestra la versión actual
[KM] Indica las opciones que soporta, una K para kilo o M mega.
A continuación vamos a ver algunos ejemplos de uso de los siguientes parámetros.
Formato de Datos:
Mediante el parámetro -f podemos indicarle a la aplicación en que formato debe mostrarnos los datos transferidos. Se usará para: bits(b), bytes(B), kilobits(k), kilobytes(K), megabits(m), megabytes(M), gigabits(g) ó gigabytes(G).
Cliente:
iperf -c 192.168.1.100 -f G
Servidor:
iperf -s
Test Bi-Direccional:
Por defecto, solo se mide el tráfico proveniente del cliente, pero si usamos el parámetro -r en el servidor, el testeo se realizará en los dos nodos.
Cliente:
iperf -c 192.168.1.100 -r
Servidor:
iperf -s
Si se quiere medir de forma simultanea, hay que usar -d y si se quiere medir de forma secuencial, es con el parámetro -r
Cliente:
iperf -c 192.168.1.100 -d
Servidor:
iperf -s
(http://madzone.comoj.com/image_host/images/capturada.png)
Tamaño de los Datagramas:
Se puede especificar el tamaño que tendrán los datagramas, mediante el parámetro -w y un valor comprendido entre 2 y 65,535 bytes.
Cliente:
iperf -c 192.168.1.100 -w 2000
Servidor:
iperf -s -w 4000
Tiempo, puerto e interval:
Al igual que el comando "ping" permite indicar un tiempo mediante -t, un intervalo mediante -i y un puerto mediante -p
Cliente:
iperf -c 192.168.1.100 -p 1337 -t 15 -i 3
Servidor:
iperf -s -p 1337
(http://madzone.comoj.com/image_host/images/capturxtx.png)
Hay muchos más parámetros que nos pueden facilitar las tareas, el resto lo dejo en vuestras manos.
Introducción a JPerf
Como ya he dicho anteriormente, JPerf es una GUI para IPerf. Lo primero que haremos será descargarla desde la página oficial del proyecto (http://code.google.com/p/xjperf/downloads/list).
Al estar hecho en Java, también necesitaremos el VM de Java. En Windows tendremos que ejecutar un .exe y en Linux o Mac, un .sh mediante consola y con permisos de ejecución.
(http://madzone.comoj.com/image_host/images/capturgeg.png)
Configurar JPerf
Al tratarse de una interfaz gráfica, suele ser bastante intuitivo, por lo que no se necesitarán muchas instrucciones.
(http://madzone.comoj.com/image_host/images/capturnon.png)
Como podéis ver, los parámetros son los mismos, y lo único que hace, es mostrar mediante una GUI los resultados obtenidos.
En esta última prueba, la he realizado desde un nodo con Windows XP conectandome a un servidor Linux. Os dejo juguetear con esta aplicación.
Documentación y Enlaces externos:
_Compilar Iperf en Windows con Cygwin (http://samkear.com/how-to-guides/how-to-compile-iperf-for-windows-using-cygwin).
_Man Pages para IPerf (http://staff.science.uva.nl/~jblom/gigaport/tools/man/iperf.html) | Mirror (http://www.digipedia.pl/man/doc/view/iperf.1/)
_Documentación Extendida del IPerf (http://openmaniak.com/iperf.php)
Para Windows también está bastante bien el Bandwidth Test de Mikrotik.
http://www.mikrotik.com/download/btest.exe
Se ejecuta en ambos equipos, en uno se activa el modo servidor y en el cliente se pone la IP del servidor.
Muy bueno, gracias!