La arquitectura de Asterisk es fundamentalmente simple, pero diferente de la mayoría de los productos de telefonía. Esencialmente, Asterisk actúa como un middleware50, conectando tecnologías de telefonía en los niveles inferiores a las aplicaciones de telefonía en los niveles superiores, creando un ambiente coherente para la implementación de un entorno mixto de telefonía.
Cuando Asterisk es inicializado, el Dynamic Module Loader carga e inicializa cada uno de los controladores que proveen los drivers de los canales, el archivo de formatos, los CDR backends, los codecs, aplicaciones, etc. Enlazándolo después con la adecuada API interna. Entonces, el núcleo de conmutación de la IPBX, comienza a aceptar llamadas de interfaces y a manejarlas de acuerdo con el Dialplan, utilizando el Application Launcher (Lanzador de aplicaciones) para repicar los teléfonos, la conexión al correo de voz, la marcación de troncales de salida, etc.
El núcleo también proporciona un Programador y administrador de E/s que puede ser utilizado por las aplicaciones y controladores. El traductor de Codecs de la IPBX permite a los canales que han sido comprimidos con diferentes codecs comunicarse unos con otros. La mayor parte de la utilidad y de la flexibilidad de la IPBX proviene de las aplicaciones, los codecs, los drivers de canal, los formatos de archivo, etc, que conectan en la IPBX varias interfaces de programación.
Cuatro APIs han sido definidas por módulos cargables, facilitado la abstracción del hardware y de los protocolos. Al usar este sistema de módulos
50
Middleware es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas.
cargables, el núcleo de Asterisk no tiene que preocuparse por los detalles de cómo se conecta una persona que llama, o ¿qué codecs están en uso?, etc.
Canal API
El canal API controla el tipo de conexión de una llamada que ingresa, ya sea una conexión de VoIP, RDSI, PRI, robbed bit signaling o alguna otra tecnología. Se cargan módulos dinámicos para manejar los detalles de las capas inferiores de estas conexiones.
API de aplicaciones
Permite la ejecución de varios módulos de tareas para desempeñar varias funciones, tales como, conferencias, paginación, lista de directorios, buzón de voz, transmisión de datos en línea, y cualquier otra tarea que un sistema de PBX pudiese realizar ahora o en el futuro son manejados por estos módulos separados.
API de traducción de codecs
Carga los módulos de codec para soportar varios formatos de codificación y descodificación de audio tales como GSM, Mu-Law, A-law, e incluso MP3.
API de formato de archivo
Maneja la lectura y la escritura de varios formatos de archivo para el almacenamiento de datos en el sistema de archivos.
PBX de conmutación
La esencia de Asterisk, es un sistema de conmutación de PBX, que interconecta llamadas entre varios usuarios y tareas automatizadas, el núcleo de conmutación
conecta de forma transparente las llamadas en varias interfaces de hardware y software.
Lanzador de Aplicaciones
Lanza aplicaciones, las cuales ejecutan servicios para usos tales como, buzón de voz, reproducción de archivos, y lista de directorios.
Traductor de Codecs
Utiliza módulos de codecs para la codificación y decodificación de varios formatos de compresión de audio utilizados en la industria de la telefonía. Una serie de codecs están disponibles para satisfacer las diversas necesidades y lograr el mejor equilibrio entre calidad de audio y el uso de ancho de banda.
Programador y administrador de E/s
Maneja la programación de tareas de bajo nivel y el sistema de gestión para un rendimiento óptimo en todas las condiciones de carga.
Dialplan
Un plan de numeración establece el número y el patrón de dígitos de un número de teléfono. Esto incluye los códigos de país, códigos de acceso, códigos de área y todas las combinaciones de dígitos marcados. La mayoría de PBXs apoyan planes de numeración de longitud variable que utilizan de 3 a 11 dígitos. Los planes de numeración deberán ajustarse a las redes telefónicas a las que se conectarán.
Extensiones
A diferencia de un PBX tradicional, donde las extensiones están asociadas con teléfonos, interfaces, menús y así sucesivamente, en Asterisk, una extensión se define
como una lista de comandos que se van a ejecutar. Generalmente se ejecutan los comandos en el orden definido por su etiqueta de "prioridad", pero algunos comandos tienen la capacidad para redirigirse a otra parte, dependiendo de alguna condición.
El archivo de configuración "extensions.conf" contiene el "Dialplan" de Asterisk, el plan maestro de control o de ejecución de todas sus operaciones. Controla como se manejan y enrutan las llamadas entrantes y salientes. Permite configurar el comportamiento de todas las conexiones a través de la PBX.
El contenido de "extensions.conf" está organizado en secciones o contextos. Un contexto es simplemente un grupo de extensiones. Las secciones de configuración son generales y globales y los nombres de los contextos son totalmente definidos por el administrador del sistema. Cada sección comienza en extensions.conf con el nombre de la sección que figura entre corchetes. Esto le da al archivo extensions.conf una estructura similar al tradicional formato de archivo .Ini del mundo de Windows.
Organización del sistema de archivos
La organización del sistema de archivos en Asterisk está diseñada para seguir el modelo de Linux, y está agrupada en varios directorios.
/etc/asterisk
Contiene los archivos de configuración de asterisk.
/usr/sbin
Es el directorio de binarios del sistema. Contiene los ejecutables y scripts de Asterisk.
/usr/lib/asterisk
/usr/lib/asterisk/modules
Contiene los módulos runtime para aplicaciones, drivers de canales, codecs, drivers de formato de archivos, etc.
/usr/incluye/asterisk
Contiene los archivos de cabecera requeridos para construir las aplicaciones de Asterisk, drivers de canales, y otros módulos cargables.
/var/lib/asterisk
Contiene los datos y variables utilizados por Asterisk en su operación normal.
/var/lib/asterisk/agi/bin
Contiene los scripts AGI para ser usados por la aplicación AGI en el plan de numeración.
/var/lib/asterisk/astdb
Base de datos de Asterisk. Es similar al registro de Windows. Este archivo nunca se usa directamente, pero sus contenidos pueden ser visualizados y modificados en la línea de comandos de Asterisk con el conjunto de funciones “database”.
/var/lib/asterisk/images
Área de almacenamiento para las imágenes referenciadas en el plan de numeración y las aplicaciones.
/var/lib/asterisk/keys
Área de almacenamiento para las claves públicas y privadas usadas para la autenticación RSA con Asterisk (especialmente IAX).
/var/lib/asterisk/moh/mp3
Área de almacenamiento para la música en espera en formato mp3.
/var/lib/asterisk/sounds
Área de almacenamiento para archivos de audio usados por las aplicaciones de Asterisk.
/var/run
Contiene los runtime llamados pipes y archivos PID.
/var/run/asterisk/pid
Contiene el identificador del proceso primario (PID) de los procesos en ejecución en Asterisk.
/var/run/asterisk/ct
Una llamada pipe usada por Asterisk para permitir el modo remoto de operación.
/var/spool/asterisk
Usado por los runtime para poner en cola los archivos del buzón de voz, las llamadas salientes, etc.
/var/spool/asterisk/outgoing
Monitorizado por Asterisk para las llamadas salientes. Cuando un archivo es creado en /var/spool/asterisk/outgoing , Asterisk analiza el archivo e intenta una llamada saliente y si es respondida, entonces es volcada en la PBX.
/var/spool/asterisk/vm
Comandos para Iniciar y Detener Asterisk asterisk Arrancar Asterisk
asterisk -c Inicia Asterisk y abre la consola remota
asterisk -r Ingresar a la consola remota
asterisk -rx 'comando' Ejecutar comando sin ingresar a la consola.
stop now Detener el servicio Asterisk desde la consola remota.
stop gracefully Detener el servicio Asterisk cuando todos los canales activos sean completados.
stop when convenient Detener el servicio Asterisk cuando todos los canales activos sean completados.
exit Salir de la consola remota. No detiene el servicio Asterisk.
Archivos
/etc/asterisk/extensions.conf Archivo de configuración del dialplan.
/etc/asterisk/sip.conf Archivo de configuración de los canales SIP.
/etc/asterisk/iax.conf Archivo de configuración de los canales IAX.
/etc/asterisk/voicemail.conf Archivo de configuración del sistema de correo de voz.
/var/run/asterisk Contiene datos de los procesos. /var/log/asterisk/ Contiene los archivos de bitácora.
Referencias Bibliográficas:
The Asterisk Handbook Version 2. Mark Spencer, Mack Allison, Christopher Rhodes. 2003. Huntsville, Digium.
Tomado de: www.digium.com/handbook-draft.pdf
Asterisk Architecture. Pagina Oficial de Asterisk. Disponible en: https://asterisk.org/architecture