• Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Mi Blog
✔ Cómo medir el ancho de banda entre dos ordenadores

✔ Cómo medir el ancho de banda entre dos ordenadores

Realizar pruebas de rendimiento de red entre dos equipos conectados entre si en una LAN ó a través de Internet, es una de las primeras pruebas que realiza un SysAdmin a la hora de descubrir el por qué de la lenta velocidad entre los equipos. Existen multitud de herramientas en el mercado, pero voy a enseñaros a utilizar una de las mas famosas que se usa en entornos tanto personales como en grandes compañías de IT y por supuesto Software Libre. La herramienta se llama iPerf y existe un GUI creado en Java llamado Jperf que aporta algunas ventajas como por ejemplo, gráficas en tiempo real o poder hacer todo el proceso con un sencillo "click". Jperf usa Iperf como "core", por tanto JPerf es solamente un GUI (Graphical User Interface). Vamos allá!

¿QUE ES EL BANDWIDTH?

En las redes informáticas, el ancho de banda a menudo se utiliza como sinónimo para la tasa de transferencia de datos -la cantidad de datos que se puedan llevar de un punto a otro en un período dado- (generalmente un segundo). Esta ancho de banda se expresa -generalmente- en bits (de datos) por segundo (bps). Una red Ethernet funciona a 10.000.000 (10Mbits), las redes Fast Ethernet a 100.000.000 (100Mbps) y las nuevas tarjetas Gigabit admiten hasta 1.000.000.000 (1Gbps). Existen velocidades superiores gracias a la tecnología de fibra óptica en lugar de eléctrica que llegan hasta los 10.000.000.000 (10Gbps).

Debemos recordar que una comunicación consiste -generalmente- en una sucesión de conexiones, cada una con su propio ancho de banda. Si una de éstas conexiones es mucho más lenta que el resto actuará como cuello de botella (bottleneck) en la comunicación. Puede deberse a que la red no es lo suficientemente rápida o que tenemos un problema en uno de los extremos o en el canal de transmisión.

1.- ELEMENTOS USADOS EN ESTE TUTORIAL

  • Windows 7 64 bits + JPerf + Iperf
  • Raspbian en RaspberryPi + Iperf

2.- DESCARGA E INSTALACIÓN DE IPERF y JPERF

JPERF no necesita instalación en Windows, por lo tanto, basta con descargarlo y ejecutarlo. Al ser un programa desarrollado en JAVA, necesitamos tener JAVA instalado en nuestro Windows. Para descargar JPERF, iremos a la siguiente página https://code.google.com/archive/p/xjperf/ y descargaremos la última versión, Jperf 2.0.2.

Para instalar IPerf en el equipo GNU/Linux con Raspbian (Debian), ejecutaremos como root o con un usuario con privilegios el siguiente comando:

root@localhost# apt-get update && apt-get install iperf

Como se puede comprobar, la instalación en ambos sistemas es sumamente sencilla.

3.- COMO USAR IPERF Y JPERF

Iperf funciona en modo cliente-servidor, por lo tanto necesitamos arrancar Iperf en modo servidor en uno de los extremos y atacar en modo cliente desde el otro nodo. Para este tutorial, he usado el modo servidor en el equipo con GNU/Linux en una RaspberryPi conectada por Wifi 802.11n en 2.4 GHz y a 150mbps.

En el siguiente ejemplo se puede ver el estado de mi coneción Wi-Fi. Ese paso es solo a nivel informativo.

root@raspberrypi:/home/pi# iwconfig wlan0
wlan0 IEEE 802.11bgn ESSID:"MI-RED" Nickname:""
Mode:Managed Frequency:2.452 GHz Access Point: 2C:30:33:XX:XX:XX
Bit Rate:150 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:****-****-****-****-****-****-****-**** Security mode:open
Power Management:off
Link Quality=100/100 Signal level=64/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Para arrancar Iperf en dicho equipo con GNU/Linux ejecutaremos el siguiente comando como root:

root@raspberrypi:/home/pi# iperf -s -i 1
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)

De esta forma el servidor está en modo escucha en el puerto 5001 TCP. Ahora lo que haremos será arrancar JPerf en el equipo con Windows. Debemos descomprimir el fichero de Jperf y ejecutar el archivo bat "jperf.bat":

IperfArrancar Jperf

Si todo ha ido bien, veremos una pantalla como la que se muestra a continuación:

IperfPantalla principal JPerf

La configuración mas sencilla de Jperf consta de Server Address donde introduciremos la IP del Servidor, el Port introduciremos el puerto ( por defecto 5001 ) y activaremos el modo TCP ó UDP en función del que queremos probar. Por defecto se hacen todas las pruebas en TCP. En el siguiente ejemplo se ve una prueba desde un PC conectado por Wifi N 2.4Ghz contra una RaspberryPi en 802.11N 2.4Ghz.

IperfPrimera prueba TCP

En la parte del servidor también podemos ir viendo las velocidades de las pruebas en tiempo real:

root@raspberrypi:/home/pi# iperf -s -i 1
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 172.27.1.112 port 5001 connected with 172.27.1.111 port 52623
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 1.75 MBytes 14.7 Mbits/sec
[ 4] 1.0- 2.0 sec 1.79 MBytes 15.0 Mbits/sec
[ 4] 2.0- 3.0 sec 1.75 MBytes 14.7 Mbits/sec
[ 4] 3.0- 4.0 sec 1.82 MBytes 15.2 Mbits/sec
[ 4] 4.0- 5.0 sec 1.57 MBytes 13.2 Mbits/sec
[ 4] 5.0- 6.0 sec 1.86 MBytes 15.6 Mbits/sec
[ 4] 6.0- 7.0 sec 1.80 MBytes 15.1 Mbits/sec
[ 4] 7.0- 8.0 sec 1.81 MBytes 15.2 Mbits/sec
[ 4] 8.0- 9.0 sec 1.81 MBytes 15.2 Mbits/sec
[ 4] 9.0-10.0 sec 1.88 MBytes 15.7 Mbits/sec
[ 4] 10.0-11.0 sec 1.90 MBytes 15.9 Mbits/sec
[ 4] 11.0-12.0 sec 1.78 MBytes 14.9 Mbits/sec
[ 4] 12.0-13.0 sec 1.56 MBytes 13.1 Mbits/sec
[ 4] 13.0-14.0 sec 1.90 MBytes 15.9 Mbits/sec
[ 4] 14.0-15.0 sec 1.64 MBytes 13.8 Mbits/sec
[ 4] 15.0-16.0 sec 1.53 MBytes 12.9 Mbits/sec
[ 4] 16.0-17.0 sec 1.85 MBytes 15.5 Mbits/sec
[ 4] 17.0-18.0 sec 1.84 MBytes 15.5 Mbits/sec
[ 4] 18.0-19.0 sec 1.64 MBytes 13.7 Mbits/sec
[ 4] 19.0-20.0 sec 1.75 MBytes 14.7 Mbits/sec
[ 4] 20.0-21.0 sec 1.74 MBytes 14.6 Mbits/sec
[ 4] 21.0-22.0 sec 1.53 MBytes 12.9 Mbits/sec
[ 4] 22.0-23.0 sec 1.89 MBytes 15.8 Mbits/sec
[ 4] 23.0-24.0 sec 1.71 MBytes 14.4 Mbits/sec
[ 4] 24.0-25.0 sec 1.74 MBytes 14.6 Mbits/sec
[ 4] 25.0-26.0 sec 1.73 MBytes 14.5 Mbits/sec
[ 4] 26.0-27.0 sec 1.77 MBytes 14.8 Mbits/sec
[ 4] 27.0-28.0 sec 1.70 MBytes 14.3 Mbits/sec
[ 4] 28.0-29.0 sec 1.61 MBytes 13.5 Mbits/sec
[ 4] 29.0-30.0 sec 1.59 MBytes 13.3 Mbits/sec
[ 4] 0.0-30.0 sec 52.2 MBytes 14.6 Mbits/sec

Podemos realizar muchas pruebas, tanto en TCP como UDP, cambiar el tamaño de ventana, el buffer TCP y UDP, el tiempo de la prueba etc ... En la siguiente captura se ve la misma prueba realizada en UDP, indicando un Bandwidth máximo de 70Mbps y durante 30 segundos:

IperfPrueba UDP con Iperf

Para la prueba UDP, en el servidor se ve exactamente lo mismo pero en modo texto:

root@raspberrypi:/home/pi# iperf -s -u -i 1 
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 160 KByte (default)
------------------------------------------------------------
[ 3] local 172.27.1.112 port 5001 connected with 172.27.1.111 port 58861
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 1.59 MBytes 13.4 Mbits/sec 1.456 ms 0/ 1136 (0%)
[ 3] 1.0- 2.0 sec 1.59 MBytes 13.4 Mbits/sec 1.218 ms 0/ 1136 (0%)
[ 3] 2.0- 3.0 sec 1.58 MBytes 13.3 Mbits/sec 1.171 ms 0/ 1130 (0%)
[ 3] 3.0- 4.0 sec 1.73 MBytes 14.5 Mbits/sec 1.180 ms 0/ 1232 (0%)
[ 3] 4.0- 5.0 sec 1.78 MBytes 14.9 Mbits/sec 1.130 ms 0/ 1267 (0%)
[ 3] 5.0- 6.0 sec 1.69 MBytes 14.2 Mbits/sec 1.103 ms 0/ 1208 (0%)
[ 3] 6.0- 7.0 sec 1.67 MBytes 14.0 Mbits/sec 1.242 ms 0/ 1194 (0%)
[ 3] 7.0- 8.0 sec 1.60 MBytes 13.5 Mbits/sec 1.470 ms 0/ 1144 (0%)
[ 3] 8.0- 9.0 sec 1.70 MBytes 14.3 Mbits/sec 1.089 ms 0/ 1216 (0%)
[ 3] 9.0-10.0 sec 1.59 MBytes 13.3 Mbits/sec 1.123 ms 0/ 1133 (0%)
[ 3] 10.0-11.0 sec 1.51 MBytes 12.6 Mbits/sec 1.277 ms 0/ 1075 (0%)
[ 3] 11.0-12.0 sec 1.61 MBytes 13.5 Mbits/sec 1.510 ms 0/ 1149 (0%)
[ 3] 12.0-13.0 sec 1.62 MBytes 13.6 Mbits/sec 1.092 ms 0/ 1155 (0%)
[ 3] 13.0-14.0 sec 1.64 MBytes 13.8 Mbits/sec 1.033 ms 0/ 1173 (0%)
[ 3] 14.0-15.0 sec 1.65 MBytes 13.9 Mbits/sec 1.100 ms 0/ 1178 (0%)
[ 3] 15.0-16.0 sec 1.65 MBytes 13.8 Mbits/sec 1.011 ms 0/ 1177 (0%)
[ 3] 16.0-17.0 sec 1.73 MBytes 14.5 Mbits/sec 1.325 ms 0/ 1232 (0%)
[ 3] 17.0-18.0 sec 1.66 MBytes 13.9 Mbits/sec 0.933 ms 0/ 1184 (0%)
[ 3] 18.0-19.0 sec 1.61 MBytes 13.5 Mbits/sec 1.087 ms 0/ 1150 (0%)
[ 3] 19.0-20.0 sec 1.73 MBytes 14.5 Mbits/sec 0.995 ms 0/ 1233 (0%)
[ 3] 20.0-21.0 sec 1.63 MBytes 13.7 Mbits/sec 1.328 ms 0/ 1166 (0%)
[ 3] 21.0-22.0 sec 1.44 MBytes 12.1 Mbits/sec 1.432 ms 0/ 1027 (0%)
[ 3] 22.0-23.0 sec 1.28 MBytes 10.7 Mbits/sec 1.259 ms 0/ 912 (0%)
[ 3] 23.0-24.0 sec 1.52 MBytes 12.7 Mbits/sec 1.030 ms 0/ 1082 (0%)
[ 3] 24.0-25.0 sec 1.59 MBytes 13.3 Mbits/sec 1.612 ms 0/ 1135 (0%)
[ 3] 25.0-26.0 sec 1.49 MBytes 12.5 Mbits/sec 1.025 ms 0/ 1063 (0%)
[ 3] 26.0-27.0 sec 1.63 MBytes 13.7 Mbits/sec 1.161 ms 0/ 1161 (0%)
[ 3] 27.0-28.0 sec 1.61 MBytes 13.5 Mbits/sec 1.342 ms 0/ 1151 (0%)
[ 3] 28.0-29.0 sec 1.63 MBytes 13.7 Mbits/sec 1.076 ms 0/ 1164 (0%)
[ 3] 29.0-30.0 sec 1.64 MBytes 13.7 Mbits/sec 1.180 ms 0/ 1169 (0%)
[ 3] 0.0-30.0 sec 48.4 MBytes 13.5 Mbits/sec 1.449 ms 0/34535 (0%)

04.- TUNNING DE LA RED

Iperf sirve para comprobar el estado de nuestra red y ver si podemos cambiar algunos de los parámetros de red e incrementar nuestro rendimiento. Por ejemplo, en mi red Wifi cambiando el tamaño de ventana a 1500KB en el lado del cliente el rendimiento Wifi es del doble:

root@raspberrypi:/home/pi# iperf -s -i 1         
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 172.27.1.112 port 5001 connected with 172.27.1.111 port 52637
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 4.50 MBytes 37.7 Mbits/sec
[ 4] 1.0- 2.0 sec 4.34 MBytes 36.4 Mbits/sec
[ 4] 2.0- 3.0 sec 5.08 MBytes 42.6 Mbits/sec
[ 4] 3.0- 4.0 sec 5.03 MBytes 42.2 Mbits/sec
[ 4] 4.0- 5.0 sec 4.88 MBytes 41.0 Mbits/sec
[ 4] 5.0- 6.0 sec 5.05 MBytes 42.4 Mbits/sec
[ 4] 6.0- 7.0 sec 4.27 MBytes 35.8 Mbits/sec
[ 4] 7.0- 8.0 sec 5.02 MBytes 42.1 Mbits/sec
[ 4] 8.0- 9.0 sec 4.76 MBytes 40.0 Mbits/sec
[ 4] 9.0-10.0 sec 4.62 MBytes 38.8 Mbits/sec
[ 4] 10.0-11.0 sec 4.71 MBytes 39.5 Mbits/sec
[ 4] 11.0-12.0 sec 4.60 MBytes 38.6 Mbits/sec
[ 4] 12.0-13.0 sec 5.24 MBytes 43.9 Mbits/sec
[ 4] 13.0-14.0 sec 4.80 MBytes 40.3 Mbits/sec
[ 4] 14.0-15.0 sec 4.25 MBytes 35.7 Mbits/sec
[ 4] 15.0-16.0 sec 4.14 MBytes 34.7 Mbits/sec
[ 4] 16.0-17.0 sec 5.04 MBytes 42.3 Mbits/sec
[ 4] 17.0-18.0 sec 4.94 MBytes 41.4 Mbits/sec
[ 4] 18.0-19.0 sec 5.42 MBytes 45.5 Mbits/sec
[ 4] 19.0-20.0 sec 4.58 MBytes 38.5 Mbits/sec
[ 4] 20.0-21.0 sec 4.80 MBytes 40.2 Mbits/sec
[ 4] 21.0-22.0 sec 4.52 MBytes 37.9 Mbits/sec
[ 4] 22.0-23.0 sec 4.29 MBytes 36.0 Mbits/sec
[ 4] 23.0-24.0 sec 4.44 MBytes 37.2 Mbits/sec
[ 4] 24.0-25.0 sec 4.52 MBytes 37.9 Mbits/sec
[ 4] 25.0-26.0 sec 4.87 MBytes 40.8 Mbits/sec
[ 4] 26.0-27.0 sec 4.92 MBytes 41.3 Mbits/sec
[ 4] 27.0-28.0 sec 4.54 MBytes 38.1 Mbits/sec
[ 4] 28.0-29.0 sec 4.52 MBytes 37.9 Mbits/sec
[ 4] 29.0-30.0 sec 4.32 MBytes 36.2 Mbits/sec
[ 4] 0.0-30.3 sec 142 MBytes 39.4 Mbits/sec

Ahora solo os queda probar en vuestra red y mirar la ayuda de Iperf para conocer todas las opciones que tiene ;) iperf --help ó aquí: https://iperf.fr/iperf-doc.php

ENJOY!


Raúl Prieto Fernández

Sitio Web: /

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Comentarios  

Giancarlo
# Giancarlo 11-12-2017 20:56
Hola, pregunta en la última imagen, dices tamaño de ventana a 1500KB, a que te refieres con ello?
saludos
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 18-12-2017 11:51
Hola Giancarlo:

El tamaño de ventana TCP (TCP Window Size) es un valor que especifica el receptor TCP en la cabecera, y especifica
la cantidad máxima de información en bytes que el receptor está preparado para recibir. El estándar TCP dice que el
receptor tiene que ser capaz de aceptar una ventana completa de datos. Es la forma de realizar un control de flujo en TCP.

Con esto podemos (bajo determinadas circunstancias y escenarios) mejorar la velocidad de transmisión de los datos entre equipos.

un saludo
Responder

Escribir un comentario

Información básica sobre Protección de Datos

Responsable: Raúl Prieto Fernández +info

Finalidad: Moderar los comentarios a los artículos publicados en el blog. +info

Legitimación: Consentimiento del interesado +info

Destinatarios: No se comunicarán datos a persona u organización alguna. +info +info

Derechos: Tiene derecho a Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la información adicional. +info

Plazo de conservación de los datos: Hasta que no se solicite su supresión por el interesado.

Información adicional: Puede consultar la información adicional y detallada sobre Protección de Datos Personales en mi página web raulprietofernandez.net +info

     

Código de seguridad
Refescar


LOGIN / ENTRAR

BUSCAR EN EL BLOG

TWITTER TIMELINE

Posts Relacionados

Booking.com

ENCUESTA

¿Cual es el mejor Sistema Operativo?

Como es lógico, esta web utiliza cookies propias y de terceros para elaborar información estadística y mostrar publicidad personalizada a través del análisis de tu navegación, conforme a la política de cookies.

  Si continúas navegando, aceptas su uso.