Tabla de Contenidos

Rendimiento de una Red

Networking

Para probar el rendimiento de una red, no nos bastan las aplicaciones convencionales, las que pueden producir una serie de inconsistencias en las pruebas de velocidad de una red entre dos puntos, para eso hay herramientas especializadas que permite hacer estas pruebas.

Para realizar esto, disponemos de una herramienta especializada que permite probar protocolos TCP y UDP entre dos puntos.

Características de Iperf

Protocolo TCP:

Protocolo UDP:

Pruebas con Iperf

Para realizar las pruebas con esta herramienta, sobre un enlace de red debemos ejecutar Iperf en ambos extremos del enlace a examinar. Un equipo se ejecutará en modo cliente y el otro en modo servidor.

Vamos a realizar varias pruebas alternando entre varias de las opciones disponibles, para conocer todas las opciones posibles podemos utilizar el modificador -h.

[mantra-multi][mantra-column width=”1/2″]

Configuración predeterminada:

[/mantra-column] [mantra-column width=”1/2″]

[/mantra-column] [/mantra-multi]

Configuración Predeterminada

El cliente se conecta al servidor por el puerto tcp/5001, sin argumentos, iperf sólo mide el ancho de banda entre el cliente y el servidor.

Servidor

Para ejecutar en modo Servidor, se debe ejecutar en un terminal, en el equipo de definamos como servidor, el comando siguiente:

 # iperf -s

La salida en el lado del servidor es similar a esta:

+------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
+------------------------------------------------------------
[  4] local 192.168.0.7 port 5001 connected with 192.168.0.10 port 42314
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec   114 MBytes  94.2 Mbits/sec
[  5] local 192.168.0.7 port 5001 connected with 192.168.0.10 port 42330
[  5]  0.0-10.1 sec   113 MBytes  94.2 Mbits/sec
[  4] local 192.168.0.7 port 5001 connected with 192.168.0.10 port 42332
[  4]  0.0-10.1 sec   113 MBytes  94.2 Mbits/sec

Cliente

Para el otro equipo que probará la velicidad de conexión es el definido como el cliente de esta conexión, para ello deberemos ejecutar en el terminal, el comando siguiente:

$ iperf -c ip_destino

La salida en el lado del cliente, es similar a esta:

+------------------------------------------------------------
 Client connecting to 192.168.0.7, TCP port 5001
 TCP window size: 85.0 KByte (default)
+------------------------------------------------------------
[  3] local 192.168.0.10 port 42332 connected with 192.168.0.7 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   113 MBytes  95.0 Mbits/sec

Formato de los Datos

La opción –f nos permite mostrar el resultado en el formato indicado: bits, Bytes, kilobits, Kilobytes, megabits, Megabytes, gigabits o Gigabytes. Habitualmente las mediciones del ancho de banda se indican en bits, kilobits, etc. y la cantidad de datos se muestra en Bytes, Kilobytes, etc.

# iperf -c ip_destino  -f b
# iperf -c 192.168.0.7 -f b

Esto nos entrega los datos en bits por segundo .

+------------------------------------------------------------
 Client connecting to 192.168.0.7, TCP port 5001
 TCP window size: 87040 Byte (default)
+------------------------------------------------------------
[  3] local 192.168.0.10 port 42856 connected with 192.168.0.7 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  118882304 Bytes  95014041 bits/sec

Diferentes Pruebas con iperf

A continuación realizaremos diferentes pruebas de mediciones con diferentes puertos, protocolos y tamaños, variando los intervalos de tiempos y otros parámetros de la comunicación TCP/UDP.

Ancho de Banda Bidireccional

El comando predeterminado sólo mide el ancho de banda, desde el cliente al servidor. En la medición bidireccional, el servidor se conecta de vuelta con el cliente permitiendo la medición en ambos sentidos del enlace de datos.

Si se desea realizar la medición del ancho de banda en ambas direcciones secuencialmente, se utiliza el argumento –r.

# iperf -c 192.168.0.7 -r

Ancho de Banda Bidireccional Simultáneo

Para medir el ancho de banda en ambas direcciones simultáneamente, se utiliza el argumento en la línea de comandos –d.

# iperf -c 192.168.0.7 -d

Tamaño de la Ventana TCP

El tamaño de la ventana TCP es la cantidad de datos que pueden ser almacenados en el buffer durante una conexión sin la validación por parte del receptor. El tamaño se encuentra dentro del rango de 2 a 65,535 bytes. En los sistemas Linux, cuando se especifica un tamaño de ventana con el argumento –w, el kernel reserva el doble de lo indicado.

# iperf -c 192.168.0.7 -w 2000 => Para el cliente
# iperf -s -w 4000             => Para el Servidor

Puerto, Temporización e Intervalo

El puerto de comunicación puede ser cambiado con la opción –p, este debe estar configurado tanto en el cliente como en el servidor y debe ser el mismo valor, el puerto TCP predeterminado es el 5001.

La opción –t especifica la duración del análisis en segundos, el valor predeterminado es de 10 segundos.

La opción –i indica el intervalo entre reportes de ancho de banda en segundos.

# iperf -c 192.168.0.7 -p 12960 -t 20 -i 6 => Para el Cliente
# iperf -s -p 12960                        => Para el Servidor

Análisis UDP, configuración de Ancho de Banda

Las pruebas utilizando UDP se realizan con la opción –u. Dichas pruebas proporcionan información importante sobre el jitter y pérdida de paquetes. Si no se indica de manera predeterminada se utiliza TCP.

Para mantener una buena calidad en el enlace, la pérdida de paquetes no debe ser mayor al 1%. Una tasa de pérdida de paquetes alta generará muchas retransmisiones de segmentos TCP, lo cual afectará el ancho de banda.

La opción -b permite usar el ancho de banda deseado en la prueba.

# iperf -c 192.168.0.7 -u -b 100m => Para el Cliente
# iperf -s -u -i 1                => Para el Servidor

El Cliente envía al Server paquetes UDP con un ancho de banda seleccionado de 100Mbps y el Server recepciona esos paquetes UDP con intervalos de 1 segundo.

Visualización del Tamaño Máximo de Segmento

El tamaño máximo del segmento (MSS) es la mayor cantidad de datos, en bytes, que soporta un equipo en un solo segmento de TCP, sin fragmentar. Este tamaño puede ser calculado de la siguiente manera:

MSS = MTU – encabezados TCP e IP

Los encabezados TCP e IP tienen un tamaño igual a 40 bytes.

La unidad máxima de transferencia (MTU) es la mayor cantidad de datos que puede ser transferida en una trama.

Las diferentes topologías de red ya tienen establecido un valor predeterminado para el MTU:

# iperf -c 192.168.0.7 -m  => Para el Cliente
# iperf -s 

Ajustes al Máximo Tamaño de Segmento

Para cambiar el tamaño del segmento (MSS), se utiliza la opción -M en el comando:

# iperf -c 192.168.0.7 -M 1300 -m  => Para el Cliente
# iperf -s                         => Para el Servidor

En el ejemplo se visualiza que el segmento se ha definido de 1300, pero se debe considerar que el segmento proporciona menos de los 1300 byte como datos útiles debido a que utiliza dentro del segmento como parte del control del protocolo, que es diferente a los flags de los headers del protocolo.

Análisis en Paralelo

Para realizar pruebas en paralelo se utiliza la opción -P, la que se usa de la siguiente manera:

# iperf -c 192.168.0.7 -P 2 => Para el Cliente
# iperf -s                  => Para el Servidor

Estas pruebas simultáneas y en paralelo producen una división del ancho de banda disponible en a red y en las NIC en cada extremo de la comunicación y es utilizada para ver el rendimiento de los enlaces.