MRTG y Router 3Com 11g Wireless

1) Introducción y el porqué de este documento. 

MRTG (Multi Router Traffic Grapher) es una potente herramienta de monitorización de red basada en SNMP.

Funciona generando páginas con contenido html que nos permiten visualizar, mediante gráficas, el tráfico cursado (entrante y saliente) por el router en cada una de sus interfaces de red (LAN,WLAN,ADSL). El aspecto de una de la gráficas geenradas sería algo como:

 

La principal ventaja de esto es que la información proviene directamente del router, por donde pasa todo el tráfico de nuestra red. Así, las medidas resultan mucho más fiables que las que nos proporcionarían otros monitores de red ejecutándose localmente en un PC. Además es mucho más ligero de ejecutar (en cuanto a RAM y CPU) y tiene un consumo mínimo de ancho de banda en nuestra red local.

2) Instalación y requisitos:

Suponiendo Windows 2K/XP, necesitamos un intérprete PERL y el paquete MRTG:

* Respecto al intérprete Perl , nos vale cualquiera (como ActivePerl), pero mi recomendación es instalar cygwin , con lo que de paso conseguimos un shell bastante más potente que el de windows:

1. Bajamos el fichero setup.exe y lo ejecutamos.
2. Seleccionamos «Install from Internet», el directorio de instalación…
3. Cuando lleguemos a la parte de selección de paquetes, incluimos los siguientes: perl (categoría intérpretes,2 paquetes relacionados) y bash (categoría base, 1 paquete)

* Instalación de MRTG:

1. Nos bajamos la (actualmente) última versión: MRTG 2.10.14

2. Lo más cómodo es descomprimirla en C:cygwinhomenombre_de_usuario 

3) Configuración inicial de MRTG: 

En lo siguiente supongo que el router tiene IP local 192.168.2.1, con comunidad SNMP public habilitada para lectura. Ver antes apartado 6 para no tener que repetir todo esto luego.

– MRTG necesita un fichero de configuración, donde definimos los parámetros que monitorizamos del router. Afortunadamente, se incluye una herramienta para generar de forma automática este fichero. 
Abrimos cygwin, nos movemos a la carpeta ~/mrtg-2.10.14/bin y ejecutamos:

Perl cfgmaker public@192.168.2.1 > mrtg.cfg

– Editamos el fichero que se nos ha creado (con wordpad,emacs…NUNCA con Word) añadiendo al principio las siguientes líneas:

WorkDir: C:inetpub

Language: spanish

El directorio que indiquemos en WorkDir, será donde el programa guarde las páginas html, ficheros de trazas para las medidas y demás.Si no existe,lo creamos.

Un par de detalles más: 

Por defecto, las gráficas se mostrarán en BYTES y «correran» hacia la izquierda(lo contrario a lo habitual). Si queremos que la unidad de medida sea el bit y/o la gráfica se genere hacia la derecha, incluimos alguna o ambas opciones junto a las líneas anteriores:

Options[_]: growright, bits

– Por último, crearemos tb una página index.html para visualizar de manera más sencilla las diversas gráficas. De nuevo tenemos una herramienta para hacerlo de forma automática:

Desde cygwin, nos movemos a ~/mrtg-2.10.14/bin y ejecutamos:

./indexmaker mrtg.cfg > c:/inetpub/index.html

Donde c:inetpub es el directorio de trabajo anterior.

Y de nuevo, para una mejor visualización de los datos presentados, la vamos a editar, cambiando la aparicion de:

Traffic Analysis for 2 — Broadband Residential Gateway 

por esto:

Traffic Analysis for 2 — LAN

Igualmente, para el resto de interfaces:

Traffic Analysis for 3 — Broadband Residential Gateway -> Traffic Analysis for 3 — Wireless
Traffic Analysis for 4 — Broadband Residential Gateway -> Traffic Analysis for 4 — ADSL

Si queremos añadimos un marcador a esta página en nuestro navegador preferido.

4) Usando MRTG 

– Desde cygwin, nos movemos a ~/mrtg-2.10.14/bin y ejecutamos 

Perl mrtg mrtg.cfg

– Esto hay que ejecutarlo periódicamente para que se actualicen los datos. 

Como no queremos estar constantemente ejecutando manualmente eso, comento la opción más secilla:

Creamos un fichero de nombre start.sh, cuyo contenido es:

quote:


while :
do
perl mrtg mrtg.cfg
echo «>>> Updated»
sleep 60s
done
 


Esto ejecutaría lo anterior cada minuto, si queremos que se actualice cada 5 minutos sustituir por sleep 5m.

Este fichero tiene que estar en el mismo directorio que mrtgcfg y demás (~/mrtg-2.10.14/bin), y ya solo tendríamos que ejecutar:

sh start.sh

Para que se actualice periódicamente. Por supuesto, se podría incluir como servicio de sistema, pero esto se sale ya del propósito del manual. O usar las siguientes opciones en el fichero de configuración mrtg.cfg:

RunAsDaemon: Yes
Interval: 1

Con lo que también se ejecutaría cada minuto.

5) Visualizando datos: 

– Desde el navegador, vamos a la página index.html. Allí se nos muestran las gráficas de tráfico diario para cada una de las interfaces. 

Cada gráfica es un acceso directo a una página más detallada para cada interfaz, donde podemos ver velocidad media , máxima y actual, y cuanto tiempo lleva funcionando.

– Solo remarcar un par de detalles: 

Respecto al tráfico saliente (en verde) y entrante (en azul): esto es desde el punto de vista del router. Así, el tráfico saliente de la interfaz wireless será el que llega a nuestro ordenador (desde internet por ejemplo).

Respecto al formato del eje temporal de la gráficas: están en hora militar, cada barra de la gráfica es 1 hora.

6) Usando MRTG de manera segura 

Como no queremos que la información de nuestro router sea accesible desde el exterior, realizaremos lo siguiente:

– Desde la interfaz web del router (3Com 11g Wireless), suponiendo el firmware SMC, accedemos a SNMP -> Community:

1. Cambiar el nombre de la comunidad con permiso de lectura, de public a otro cualquiera.
2. Deshabilitar cualquier comunidad con permiso de escritura.

Si nuestro firmware es otro (cualquier versión de 3com), no podemos hacer esto, pero tenemos las comunidad public para lectura y private para escritura permanentemente habilitadas.

– Para evitar accesos externos, redirigimos (NAT) el puerto udp 161 a una IP privada inexistente en nuestra red.

Solo añadir que todo lo dicho funciona con cualquier router que soporte SNMP, pero como todos los retoques están enfocados al 3Com 11g wireless lo posteo en la sección correspondiente.

 

**************************
* II. MRTG AVANZADO *
**************************

7) Monitorizando otros parámetros: 

La configuración anterior nos permite visualizar las tasas de transmisión/recepción en cada interfaz del router. 

¿Es esta toda la información que podemos obtener? No, es posible saber mucho más sobre el estado de nuestra línea ADSL y de la red local. 

MRTG permite tanto la consulta y tratamiento de cualquier variable SNMP, como la ejecución de scripts externos para obtener mediciones de parámetros no directamente accesibles con SNMP.

Un ejemplo útil para cada uno de esos casos:

– Monitorización de la longitud de las colas de cada interfaz mediante consulta SNMP del router
– Medición de la latencia (ping) de la línea mediante script externo.

8) Longitud de las colas: 

Antes de nada, decir que todos estos parámetros (distintos de mediciones de velocidad), exigen la edición manual del fichero de configuración mrtg.cfg. Aún así nos servirá de base el proporcionado por cfgmaker. Así mismo, cada vez que editemos este fichero hay que generar el index.html como se explicó antes.

Lo único que hay que hacer es añadir esto al final de mrtg.cfg:

code:

### Longitud de colas de salida para LAN y WLAN:  

Target[queue1]: ifOutQLen.2&ifOutQLen.3:public@192.168.2.1 MaxBytes[queue1]: 1250000 Title[queue1]: Longitud de las colas de salida (LAN/WLAN) PageTop[queue1]: <H1>Longitud de las colas de salida (LAN/WLAN)</H1> Options[queue1]: gauge , nopercent, growright, noinfo YLegend[queue1]: paquetes ShortLegend[queue1]: paquetes LegendI[queue1]: Long: LegendO[queue1]: Long: Legend1[queue1]: Longitud para la interfaz LAN Legend2[queue1]: Longitud de para interfaz WLAN

### Longitud de cola de salida para interfaz ADSL:

Target[queue2]: ifOutQLen.4&ifOutQLen.4:public@192.168.2.1 MaxBytes[queue2]: 1250000 Title[queue2]: Longitud de las colas de salida (ADSL) PageTop[queue2]: <H1>Longitud de las colas de salida (ADSL)</H1> Options[queue2]: gauge , nopercent, growright, noinfo YLegend[queue2]: paquetes ShortLegend[queue2]: paquetes LegendI[queue2]: Long: LegendO[queue2]: Legend1[queue2]: Longitud para la interfaz ADSL

 

Recordar que si nuestra comunidad de lectura no es public y/o la IP local del router no es 192.168.2.1 habría que cambiarlo adecuadamente.

Cada interfaz de red (LAN,WLAN,ADSL) tiene un buffer asociado donde los paquetes esperan en cola para ser transmitidos. Hay multiples motivos que pueden hacer que estas colas se disparen , y ninguno de ellos es bueno para el rendimiento. 

9) Latencia de la línea ADSL: 

La medición de este parámetro precisa el uso de un script externo, que creamos en el directorio de ejecuación de mrtg (~/mrtg-2.10.14/bin, donde tengamos los ficheros mrtg.cfg y demás…)

– Creamos un fichero de nombre mrtgping.pl, cuyo contenido es:

code:

$target = "213.4.130.210";  $numping = 3; 

$aux1 = `ping -n $numping -w 10000 $target | tail -1`; chop($aux1);

($aux,$aux,$min,$aux,$aux,$max,$aux,$aux,$avg) = split(" " ,$aux1); ($avgint,$aux) = split("m",$avg);
print "$avgintn"; print "0n"; print "0n"; print "latency n";

 

Podemos cambiar el host con el que se mide el ping ($target,www.terra.es en el script de ejemplo) y el número de pings que se lanzan en cada ejecución($numpings)

– Editamos mrtg.cfg:

code:

#### Medición de la latencia de la línea ADSL.  

Target[latency]: `Perl mrtgping.pl ` MaxBytes[latency]: 1250000 Title[latency]: Latencia de la línea ADSL PageTop[latency]: <H1>Latencia de la línea ADSL</H1> Options[latency]: gauge , nopercent, growright, noinfo YLegend[latency]: ms ShortLegend[latency]: ms LegendI[latency]: Latencia: LegendO[latency]: Legend1[latency]: Latencia media

 

– Una advertencia: 

El resto de mediciones realizadas (velocidad, colas,…) no consumen ancho de banda ADSL, solo en la red local.Y además de una manera bastante optimizada, ya que MRTG minimiza el numero de peticiones SNMP a realizar.

Pero la medición de la latencia SÍ consume ancho de banda por el cual estamos pagando. Así que, desde cierto punto de vista, nos cuesta dinero medir esto.

¿Cuanto ancho de banda estamos consumiendo? 

Depende de como tengamos configurado MRTG y el script de perl anterior (mrtgping.pl):

Suponiendo que mrtg se ejecuta cada T_ejecucion=5 minutos (ver apartado 4), que nuestros pings son 32 bytes de datos (despreciamos cabeceras), y que enviamos 3 pings por ejecución:

BW= (numping*32bytes) / (T_ejecucion*60 segundos) = 0,32 Bps. 

Que parece despreciable, pero una incorrecta configuración, elevando el número de pings respecto al periodo de ejecución, puede hacer que ascienda a valores mayores.

– Por último, como todos sabemos, a menor latencia mejor (que se lo pregunten a los gamerz,asiduos a chats…).

Realizado por MetalHead para www.adslayuda.com.