1 de Agosto, 2005

Midiendo el rendimiento de una red

Jaume tiene que realizar unas pruebas de campo con 802.11b y relacionadas con su proyecto final de carrera. Una vez establecido el enlace wireless a cierta distancia hay que valorar la calidad del enlace, y he encontrado un par de recursos interesantes.

El principal es Bandwidth Estimation: Issues and Approaches en CAIDA (Cooperative Association for Internet Data Analysis).

Hace un pequeño estudio de diferentes herramientas que nos permiten evaluar diferentes aspectos de una red atendiendo al enlace entre dos puntos de la misma (ancho de banda, congestion, rendimiento, pérdidas, etc.).

Algunos enlaces están mal, pero si buscamos un poco el nombre de la herramienta se puede encontrar una página más o menos actualizada. Es lo que me ha pasado con CLink.

CLink nos permite estimar de forma bastante sencilla el ancho de banda y la latencia entre dos estaciones. El funcionamiento es similar a traceroute, enviando datagramas UDP para medir el tiempo de respuesta ICMP a los mismos. Enviando la cantidad suficiente de paquetes (en enlaces con latencia alta tarda bastante), consigue hacer una estimación.

He hecho algunas pruebas:

# ./clink 192.168.0.50
clink to 192.168.0.50 (192.168.0.50)
  8 probes at each of 93 sizes (28 to 1500 by 16)
0 localhost
|       n=  744  lat= 0.074 ms  bw= (44.247, 44.372, 44.337) Mb/s
1 192.168.0.50 (192.168.0.50)

# ./clink -f2 10.1.2.1
clink to scuba.nodo4.elxwifi (10.1.2.1)
  8 probes at each of 93 sizes (28 to 1500 by 16)
0 localhost
|       n=  744  lat= 1.231 ms  bw= (2.568, 2.773, 2.667) Mb/s
2 ns1.nodo4.elxwifi (10.1.2.1)

Hay dos condiciones: es necesario que se ejecute como superusuario porque emplea sockets en formato raw y que se compile en Linux (en BSD parecen faltar algunas constantes, así que es específico del sistema).

En la primera ejecución he medido el ancho de banda desde mi máquina a blackshell, que me ha dado una latencia de 0.074 ms y un ancho de banda de 44.337 mbps (mejor estimación).

En la segunda ejecución he realizado la misma medición pero contra scuba (he indicado que empiece en el segundo hop, porque el primero es blackshell y ya lo hemos medido). El resultado ha sido una latencia de 1.231 ms con un ancho de banda de 2.667 mbps (mejor estimación otra vez).

No sé cómo interpretar estos resultados. Voy a describir un poco ambos casos.

Primero tenemos mi red local, que va a un switch de 100 mbps y ambas tarjetas son de 100 mbps. El tramo de RJ-45 desde el switch a blackshell es de 15 metros (además dudo de su calidad), y hay que tenerlo en cuenta, pero aún así me parece poco rendimiento para dos tarjetas configuradas 100BASE-TX full-duplex.

En segundo lugar he bajado un fichero grande de scuba, obteniendo con wget una velocidad de 416.82 KB/s (vía HTTP), lo que se traduce en 3.256 mbps (que es un resultado puntual que queda cerca de la estimación a la alza de 2.773 mbps, aunque no demasiado).

Si ojeamos las conclusiones del desarrollo de CLink, tenemos que la latencia es fiable (fácil de calcular). No obstante también nos advierte que a más ancho de banda hay más dificultad hay para realizar una estimación exacta de la misma, lo que podría explicar los resultados poco razonables en ese aspecto.

Así que mi primer contacto con estas herramientas de estimación de ancho de banda no ha sido definitivo :(. Según vaya teniendo tiempo, iré probando otras herramientas para contrastar resultados. Quien sabe, quizás descubra que mi red local necesita un buen repaso ;).

Actualización: Me picaba mucho la curiosidad y he probado PChar, una solución que implementa los mismos algoritmos (y esta vez sí es portable, incluido en los ports de varios BSD y empaquetado por varias distribuciones de Linux).

He repetido las pruebas y se confirman los resultados :o. PChar además nos da los valores de pérdida y tiempo empleado en las colas de espera. También identifica cuellos de botella si indicamos dos estaciones con enrutadores intermedios (homeworld -> blackshell -> scuba, por ejemplo).

Creo que me quedo con PChar, una herramienta bastante interesante para añadir al arsenal de cualquier administrador de sistemas. Además me parece una buena opción para Jaume, ya que muestra la pérdida de paquetes (19% al hacer la prueba contra scuba).

Actualización 2: Cuidado, que esto engancha :P.

He hecho la prueba entre homeworld y stronghold y en este caso y, sin cable de 15 metros por enmedio, he obtenido 44.732 mbps.

Yo pensaba que la SiS900 Fast Ethernet (una compatible Realtek 8201) que lleva integrada en placa stronghold era una castaña (he notado diferencia de rendimiento con blackshell, pero igual es cosa mía). Eso sí, se ha registrado un 19% de pérdidas :o (¿el cable está mal? he cambiado el cable y obtengo los mismos resultados).

La tarjeta de homeworld es una Intel 82801BD PRO/100, y la tarjeta de blackshell que trabaja en la red local es una VIA VT6105 RhineIII. No hablo de micros/RAM porque sospecho que tiene poco que ver.

Así que tendré que buscar al responsable del 44% de rendimiento en otro sitio. El switch Benq tiene todas las de ganar, me temo :(.

Actualización 3: He hecho la prueba en dirección contraria, es decir, de blackshell a homeworld, con los mismos resultados en cuando a ancho de banda, pero con un 19% de pérdidas (ojo que este valor es un redondeo, sino ya pensaría que el programa simplemente no funciona :P). Empiezo a sospechar que las pérdidas son responsabilidad de la Intel PRO/100, al menos en las pruebas con 802.3.

Anotación por Juan J. Martínez.

Hay 3 comentarios

Gravatar

Me sonaba que había otra herramienta para testear el ancho de banda entre dos máquinas. Después de buscar un poco creo que la he encontrado: iperf
http://dast.nlanr.net/Projects/Iperf/
Esta para prácticamente cualquier sistema operativo.
No la he usado nunca, así que no puedo dar mi opinión.

por josefu, en 2005-08-01 22:46:59

Gravatar

Pero requiere un cliente y un servidor... lo cual puede ser incómodo en muchos casos.

La idea de clink y pchar me parece más interesante, aunque estoy obteniendo resultados bastante extraños :|

por Juanjo, en 2005-08-01 22:50:12

Gravatar

Gracias por descubrirme estas herramientas. He estado probándolas para ver si me sirven. En principio para enlaces Wi-Fi arrojan resultados coherentes.

He realizado más o menos las mísma pruebas que tu. Sobre ethernet y sobre Wi-Fi. Aunque mi enlace radio era entre dos equipos en habitaciones contigüas.

Los resultados para LAN:
Clink:
n= 744 lat= 0.071 ms bw= (47.032, 47.128, 47.318) Mb/s
Pchar:
Path bottleneck: 49919.114348 Kbps

Más o menos coinciden. Y muestran que el throughput efectivo es 50% del nominal. Lo cual me extraña.

Para WLAN (802.11b):
Clink:
n= 744 lat= 0.991 ms bw= (6.265, 6.196, 6.441) Mb/s
Pchar:
Path bottleneck: 6272.139639 Kbps

Estos resultados si que concuadran con lo que habría leído sobre el tema.

por Jaume, en 2005-08-02 14:58:35

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.