Monitorear la calidad de llamadas VoIP hechas con Asterisk

7 May

Desde hace varios años he querido monitorear las diferentes métricas de calidad (latencia, jitter, pérdida de paquetes, etc) de una llamada VoIP. Nunca había encontrado una herramienta que me sirviera (open source, claro está) pero hoy que entré a http://voip-info.org, encontré una publicación que parece ser al menos un paso más adelante de lo que todos aquellos que damos servicio de VoIP necesitamos: un monitor open source de VoIP para Linux.

El Voipmonitor tiene potencial para ser una herramienta muy útil, ya que es un sniffer pasivo que guarda las mediciones hechas a todas las llamadas que circulen por el sistema en una base de datos (MySQL) que podremos consultar después. Como utiliza libpcap, podemos poner a nuestra tarjeta de red en modo promiscuo y monitorear llamadas que ni siquiera estén pasando por el equipo donde Voipmonitor esté instalado.

Por si esto no fuera suficiente, también almacena todas las llamadas en formato .pcap con lo que podemos reconstruirlas después para futuro análisis. Genial, ¿no?

Las instrucciones para instalarlo son bastante simples (algunos vienen en la página del producto, otros hay que inferirlos). Yo descargué la versión para Debian Lenny, y seguí estos pasos:

Nos aseguramos de tener las dependencias

apt-get install libmysqlclient15off libmysql++3 libpcap-dev

Descargamos e instalamos el .deb

wget http://downloads.sourceforge.net/project/voipmonitor/1.0/voipmonitor_1.0...
dpkg -i voipmonitor_1.0-lenny.deb

Ahora bien, con esto queda instalado el programa y se invoca utilizando voipmonitor. Para darle un lugar donde guardar las estadísticas, necesitamos crear la base de datos en MySQL. Para esto, les dejo aqui en línea un archivo.sql que contiene las instrucciones para hacer todo en un solo paso:

  • Crear la BD `voipmonitor`
  • Crear un usuario 'voipuser' con password 'voippass' con permisos muy restringidos (select, update e insert en la tabla voipmonitor.cdr)
  • Crear la tabla voipmonitor.cdr

Finalmente, con la tabla creada, solo haria falta invocar al voipmonitor para que comience a sniffear las llamadas. Puede invocarlo de la siguiente manera:

voipmonitor -u voipuser -p voippass -i eth0

Donde lo que estamos haciendo es especificar que monitoree la interfaz eth0 y se conecte a la BD usando el usuario/pass de voipuser/voippass.

¡Eso es todo! En nuestra tabla voipmonitor.cdr veremos que pasados unos instantes empiezan a aparecer registros de las llamadas monitoreadas, asi como sus datos de jitter, latencia y demás.

En una siguiente actualización veré de documentar bien que significa cada campo de esta tabla, ya que la documentación en este momento es prácticamente inexistente y es un tanto difícil asumir que quiere decir cada cosa.

La información ya está guardada. Ahora, el chiste será interpretarla =)

Christian Cabrera

Soy ingeniero en comunicaciones con especial interés en el área de voz sobre IP y tecnologías sobre información. He usado Asterisk de manera diaria desde hace más de 18 años. En el 2011 co-fundé Enlaza Comunicaciones, una empresa que se especializa en brindar servicios profesionales de consultoría sobre voz sobre IP basadas en Asterisk, así como servicios de interpretación simultánea y traducción.