Configuración práctica de Asterisk (17): Instalación de Asterisk con PJSIP

El principal componente de Asterisk cuando trabaja con el protocolo SIP es la pila de comunicaciones o “driver” de canal denominado chan_sip. Esta pila contiene el código necesario para crear  y leer los diferentes mensajes SIP (INVITE, ACK, BYE, CANCEL, REGISTER, OPTIONS, SUBSCRIBE, etc) que puede enviar o recibir Asterisk durante su funcionamiento, así como para manejar convenientemente todas las opciones de configuración del fichero sip.conf, incluyendo lo relacionado con los protocolos SDP, RTP, RTCP, STUN, TURN, ICE y muchos más. Chan_sip es por tanto una pila de comunicaciones compleja, que ha ido creciendo a lo largo de los años y que, debido a su diseño monolítico, cada vez se ha hecho más difícil de mantener. Los desarrolladores expertos de Asterisk afirman que es muy complejo añadir nuevas funcionalidades en chan_sip y que, frecuentemente, la corrección de errores da lugar a la aparición de otros nuevos errores ya subsanados en versiones anteriores. Todo ello ha motivado la sustitución de chan_sip por una nueva pila de comunicaciones con un diseño modular, fácilmente portable y modificable. Esta nueva pila de comunicaciones se denomina PJSIP, la cual es desarrollada y mantenida por Teluu Ltd

La instalación de Asterisk con PJSIP requiere por tanto utilizar la versión correcta de PJSIP y para ello, desde la versión 13.8.0, Asterisk cuenta con un script que se encarga de buscar la última versión de PJSIP así como de instalar todas las dependencias necesarias. El proceso de instalación comienza con la descarga de Asterisk 16.X.X en el directorio /usr/src mediante el comando wget:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

Descarga de Asterisk en el directorio /usr/src

A continuación se descomprime el fichero mediante el comando tar zxvf asterisk-16-current.tar.gz

Finalización del comando tar

En estos momentos se ha creado un nuevo directorio de nombre asterisk-16.6.2, donde están situados todos los ficheros necesarios para la instalación de Asterisk

Directorio Asterisk-16.6.2 con todos los ficheros necesarios para la instalación

Antes de proceder a la compilación de Asterisk es necesario descargar pjsip y las dependencias necesarias. Para ello accedemos al directorio asterisk-16.6.2/contrib/scripts

Directorio contrib/scripts

En dicho directorio encontramos el fichero install_prereq, del cual podemos consultar sus diferentes opciones mediante el comando ./install_prereq

Opciones de install_prereq

Mediante el comando ./install prereq install se lleva a cabo la instalación de la última versión de pjsip y las dependencias necesarias.

Comienzo de ./install_prereq install

Una vez finalizado este proceso, regresamos al directorio /asterisk-16.6.2 y ejecutamos el comando ./configure, el cual verifica que están presentes todas las dependencias necesarias para la compilación sobre una máquina dada.

Terminación con éxito del comando ./configure

Y a continuación ejecutamos make menuselect para seleccionar aquellos módulos que no queremos que sean compilados, como por ejemplo los driver de canal chan_sip, iax2 y otros.

Selección de los módulos de Channel Drivers para la compilación

Y el siguiente paso es la compilación mediante la orden make.

Fin de la compilación con la orden make

Una vez finalizada la compilación se deben ejecutar las siguientes ordenes:

  • make install: Coloca los ficheros ejecutables en los directorios adecuados.
  • make config: Prepara Asterisk para que arranque de forma automática. 
  • make samples: copia en /etc/asterisk los ficheros de configuración de ejemplo.

Una vez finalizados estos tres pasos, ejecutamos las ordenes systemctl enable asterisk systemctl start asterisk, tras lo cual Asterisk debe estar disponible, lo cual se comprueba accediendo a la consola de Asterisk

Consola de comandos de Asterisk

Si ahora ejecutamos un reload de pjsip, comprobaremos que la carga es correcta y que, por tanto, el driver de canal pjsip se ha instalado correctamente.

pjsip reload

En estos momentos ya se puede configurar el fichero pjsip.conf para definir las diversas extensiones y los trunk con otros sistemas Asterisk o con un operador de VoIP. Es de señalar que esta configuración, tanto para las extensiones como para los trunk o enlaces, es muy diferente y notablemente más compleja que la empleada en el fichero sip.conf del driver de canal chan_sip. 

Nota: Para la realización de esta entrada se ha consultado en especial el artículo acerca de la instalación de Asterisk 16 disponible en la web de Sinologic: 

Instalación de Asterisk 16 en la web de Sinologic

Esta entrada fue publicada en Telefonía IP. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada.