Monitorizando RTTs en IPv6 con Cacti
IPv6 |
Cacti es una herramienta muy conocida y extremadamente útil para monitorizar parámetros de servidores y dispositivos de red. Parámetros como espacio en disco, carga de procesador, tráfico de red, descarte de paquetes y errores en interfaces se pueden colectar y graficar fácilmente con esta herramienta.
Además es posible crear usuarios con diferentes niveles de acceso a las gráficas y presentar las gráficas en forma arborescente, lo que las hace fácilmente accesibles.
Recientemente nos enfrentamos a un problema que básicamente consistía en que los caminos IPv4 e IPv6 a un mismo host tenían características muy diferentes, en particular el camino IPv6 estaba descartando casi el 50% de los paquetes, lo cual creaba algunos problemas interesantes a nivel de aplicaciones web que controlan sesión por dirección IP.
Encontramos que el script para monitorizar RTT de Cacti no soporta direcciones IPv6, por lo cual hicimos una pequeña modificación al mismo, el cual publicamos aquí:
---- cut here ----
#!/usr/bin/perl # take care for tcp:hostname or TCP:ip@ $host = $ARGV[0]; $host =~ s/tcp:/$1/gis; $PINGCMD = "ping"; # check if passed an IPv6 address if ( $host =~ m/:/ ) { $PINGCMD = "ping6"; } open(PROCESS, "$PINGCMD -c 1 $host | grep icmp_seq | grep time |"); $ping = <PROCESS>; close(PROCESS); $ping =~ m/(.*time=)(.*) (ms|usec)/; if ($2 == "") { print "U"; # avoid cacti errors, but do not fake rrdtool stats }elsif ($3 eq "usec") { print $2/1000; # re-calculate in units of "ms" }else{ print $2; }
---- cut here ----