*********************************************
* TUTORIAL MRTG y Router 3Com 11g Wireless *
*********************************************
1) Introducción y el porqué de este documento.
La idea de redactar esta guía me surgió a partir de un comentario en el hilo
Velocidad de descarga real??. Muy oportuno, Hard_007.
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:\cygwin\home\nombre_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 "$avgint\n";
print "0\n";
print "0\n";
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.
Publicado originalmente en el foro de ADSLAyuda:
http://www.adslayuda.com/XForum-viewthread-tid-22876.html.