Aplicar TOS en soluciones Asterisk + Freepbx


Como ya es sabido, Asterisk permite aplicar TOS (Type Of Service) tanto en el tráfico de señalización SIP como en el de media RTP (audio o vídeo) mediante los parámetros tos_sip, tos_audio y tos_video.

Los valores recomendados para cada uno de estos tipos de tráfico son los siguientes.

tos_sip=cs3
tos_audio=ef
tos_video=af41

Hasta aquí perfecto, pero si tenemos un entorno con Asterisk + Freepbx y realizamos algunas capturas de tráfico, observaremos como, lamentablemente, los paquetes no aparecen marcados con el valor que le hemos asignado en la configuración de Asterisk. Este comportamiento se debe en el fondo a un problema de permisos, cuando realizamos una instalación únicamente de Asterisk, este se suele ejecutar como root y no existe ningún problema en el marcaje de paquetes, pero cuando instalamos la capa de Freepbx el usuario con que se ejecuta Asterisk es asterisk. CentOS, en este caso, dispone de un sistema de protección por el cual los usuarios distintos a root no pueden usar prioridades altas de TOS.

Ante este problema nos podemos plantear dos posibles soluciones, una es ejecutar Asterisk como root. Para ello es necesario acceder al fichero /var/lib/asterisk/bin/freepbx_engine y modificar la siguiente linea.

/usr/sbin/safe_asterisk -U asterisk -G $AMPASTERISKGROUP

Por esta otra.

/usr/sbin/safe_asterisk

De esta forma cuando ejecutemos "amportal start" Asterisk se iniciara con usuario root.

Pero si seguimos queriendo utilizar el usuario asterisk, podemos instalar la librería libcap-devel (un clásico yum es suficiente) y recompilar Asterisk (sobretodo hacer un ./configure).

Para comprobar que la librería esta bien "linkada" podemos usar el comando "ldd /usr/sbin/asterisk", el cual nos debería devolver algo parecido a lo siguiente.

libdl.so.2 => /lib64/libdl.so.2 (0x00000030ada00000)
libcap.so.1 => /lib64/libcap.so.1 (0x00000030afa00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030ae200000)
libtermcap.so.2 => /lib64/libtermcap.so.2 (0x0000003110a00000)
libm.so.6 => /lib64/libm.so.6 (0x00000030ade00000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00000030b0600000)
libc.so.6 => /lib64/libc.so.6 (0x00000030ad600000)
/lib64/ld-linux-x86-64.so.2 (0x00000030ad200000)

Dónde podemos observar que la librería se ha instalado de forma correcta.
A partir de este momento Asterisk podrá marcar los paquetes con cualquier valor de TOS.

Etiquetas: 

Testimonio de Clientes

"Nuestro Call Center realiza más de 5000 llamadas cada día, que además por cuestiones legales tenemos que grabar. Con Asterisk hemos conseguido una óptima solución tecnólogica a nuestros requerimientos sin tener que hipotecar nuestro negocio..."

“Los niveles de SLA que tenemos con nuestros clientes nos exigen un alto grado de fiabilidad en nuestras infraestructuras. Gracias a la solución de Call Center IP que nos implantó Quarea, llevamos ya dos años en funcionamiento y no puedo quejarme ni de la tecnología ni del servicio prestado”

Contacto

       .dPYb.  8888  d8       
.d88 YbwwdP 8ww. 8 .d88
8 8 dP""Yb `8 8 8 8
`Y88 `YbdP' Y88P 8 `Y88
wwdP wwdP