A veces es necesario conocer de la tasa maxima de transferencia de la red, o simplemente asegurarnos de que la LAN o WLAN en la que estamos trabajando no tiene congestionamientos utilizamos la herramienta de consola iPerf.
Como recordatorio antes que empezemos a hablar de transferencia de datos; 1 byte es igual a 8 bits. Y en el mundo de las computadoras 1 kilo es igual a 1024 (2^10). Por ejemplo, 100’000’000 bytes no es igual a 100 Mbytes, mas bien 100’000’000/1024/1024 = 95.37 Mbytes.
Como utilizar iPerf
Del lado del servidor, y de preferencia con el usuario root levantamos el servicio de iperf escuchando en el puerto 5001, tecleando;
Servidor iperf
# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------
Cliente iperf
Ahora en el lado del cliente, tecleamos;
:~$ iperf -c guatewireless.org ------------------------------------------------------------ Client connecting to guatewireless.org, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------
[ 3] local 10.4.0.16 port 42955 connected with 188.40.78.14 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.1 sec 15.5 MBytes 12.9 Mbits/sec
Con este sencillo comando podemos medir el rendimiento de la red, y perdidas de datagramas.
How to measure file transfer performance using iperf tool
Emulando Oracle database server
Con este utilitario tambien podemos testear puertos de servicios propietarios tales como Oracle. Si no podemos conectar al puerto donde escucha Oracle facilmente podemos ejecutar;
# iperf -s -p 1521
Asi mismo podemos verificar nuestra velocidad (ya que dicho sea de paso ancho de banda y velocidad de red son cosas distintas) en el puerto UDP, con datagramas de 200 bytes y con un tamaño de buffer UDP de 110kbyte, configurando el servidro de la siguiente forma;
:~$ iperf -su -i 1
- La opcion -i genera un despliege de progreso o reportes cada segundo.
- -p especifica o cambia el puerto de comunicaciones puerto en el que escucha el servidor
- -u envio de UDP en vez de TCP por defecto.
El formato de presentacion de datos lo podemos cambiar con el argumento -f bits(b), bytes(B), kilobits(k), kilobytes(K), megabits(m), megabytes(M), gigabits(g) or gigabytes(G).
Ahora desde el cliente;
:~$ iperf -c 10.1.2.9 -u -l 200 -b 100m
------------------------------------------------------------
Client connecting to 10.1.2.9, UDP port 5001
Sending 200 byte datagrams
UDP buffer size: 110 KByte (default)
------------------------------------------------------------ [ 3] local 10.1.0.16 port 44638 connected with 10.1.2.9 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 85.7 MBytes 71.9 Mbits/sec [ 3] Sent 449189 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 85.6 MBytes 71.6 Mbits/sec 0.024 ms 607/449188 (0.14%) [ 3] 0.0-10.0 sec 1 datagrams received out-of-order
Como pueden ver, en el ejemplo anterior se han enviado datagramas de 200 bytes a 100Mbits. Hablando de VoIP (voz sobre IP) lo importante es el valor de jitter, en este ejemplo de 0.024 milisegundos esta excelente para transmision de datos en tiempo real.
Y para estar seguros, en otra consola podemos ejecutar tcpdump para ver la transferencia de datos con el protocolo UDP;
# tcpdump -p udp
desde mi iperf en windows no me muestra el jitter, sera que en linux si lo muestra, o falta algo???. sl2.