Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asterisk en
GNU/Linux
idea preconcebida, de entrelazar por primera vez la red de telefona comn (PSTN)
con un ordenador.
Y para ello se form una alianza con un proyecto de telefona llamado Zapata iniciado
por Jim Dixon. La idea del proyecto Zapata, era la posibilidad de disear tarjetas
especficas para convertir la seal analgica que provena de la PSTN a una seal
digital, y ahorrar costes en la construccin de dispositivos de telefona y audio
avanzados (y muy costosos) gracias a la tremenda reduccin de costes que sufran
ao tras ao los procesadores. A travs de estos, cada vez ms potentes, y baratos,
se podran procesar una o varias seales de audio digital (DSP) sin gran dificultad y
poder paralelamente construir telfonos con ese coste reducido.
Hoy en da el proyecto Zapata, fue integrado totalmente en Asterisk, y Asterisk
patrocinado por una empresa que construye dispositivos de telefona digital, llamada
Digium, y se ha acomodado como una parte ms de Asterisk con un nuevo nombre:
DAHDI (son las siglas de Digium Asterisk Hardware Device Interface).
La primera version estable surgio casi 5 aos despues, Asterisk 1.0. A partir de aqui el
sistema de versiones ha evolucionado de la siguiente forma:
Asterisk 1.0 2004
Asterisk 1.2 2005
Asterisk 1.4 2006
Asterisk 1.6.0 2008
Asterisk 1.6.1 2009
Asterisk 1.6.2 2009
Asterisk 1.8 2010
Asterisk 1.10 2011 (Nuevo Nombre Asterisk 10)
Asterisk SCF
Asterisk SCF es un entorno todava en vas de desarrollo que aunque originalmente
no ha sido lanzado para reemplazar al sistema original Asterisk, ofrecer una
evolucin en mltiples trminos que supondra en un futuro su posible adaptacin por
la mayora de los usuarios del mismo.
La idea intencional esta basada, en la posibilidad de ofrecer un sistema capaz de ser
desplegado en Clusters, o mltiples sistemas con total transparencia, algo que en la
actualidad el sistema Asterisk no puede ofrecer de por si, y en caso de necesitar
algun tipo de escalado, era necesario recurrir a soluciones alternativas como los
Proxies SIP como los reconocidos Opensips o Kamailio. Segn la definicin ofrecida
por los desarrolladores, Asterisk SCF ha sido arquitectnicamente diseado para
ofrecer los mximos niveles de disponibilidad, escalabilidad, extensibilidad, tolerancia
a fallos y rendimiento .
Arquitectura de Asterisk
La arquitectura de Asterisk esta basada en un sistema modular, que depende del
ncleo principal del sistema.
Recursos
La funcin especifica de los recursos es la de integrar Asterisk con los sistemas
externos. Hablamos de bases de datos, servidores web, calendarios, etc.
Tienen la capacidad de utilizar por si mismos, Aplicaciones del sistema como veamos
antes. Pero una de las diferencias con respecto a estas, es que se cargan de manera
esttica, y pueden operar simultneamente en mltiples canales, en vez de crearse
dinmicamente para cada canal en curso.
Uno de los mas comunes, es el recurso para ofrecer servicios de Msica en Espera
(Music ion Hold), o para realizar interconexiones con bases de datos a travs de
ODBC.
El formato clsico de este tipo de mdulos es res_<nombre>.so
Funciones del Dialplan
La idea fundamental detrs de las Funciones es la capacidad de obtener o aadir,
determinada informacin especifica a cada canal. Suelen ser complementarias a las
Aplicaciones y son capaces de ofrecer mejoras para determinados aspectos del
sistema que de por si pudieran ser limitados.
Por ello la forma mas comn de ser utilizadas es a travs de la Aplicacin Set
Por ejemplo una funcin tpica es la capaz de recoger el Identificador de llamada de
un canal (CALLERID) para poder manejarlo dentro del plan de marcacin a voluntad.
El formato clsico de este tipo de mdulos es func_<nombre>.so
Drivers de canales
Son los drivers especficos para cada tipo de canal disponible actualmente o en un
futuro para Asterisk. Estos son los que aportan especficamente la posibilidad de
volver totalmente independiente el sistema de los mismos para as poder tratarlos de
forma totalmente homognea. Son exactamente una especie de interfaz entre el
ncleo de Asterisk y la parte lgica dentro del sistema operativo. Es exactamente un
API.
Todos los canales mas tpicos, tienen su correspondiente modulo para el driver.
Ejemplos tpicos son el especifico para DAHDI, SIP e IAX, que justamente son los
ms utilizados por la comunidad Asterisk. El resto no estn lo suficientemente
difundidos, aunque tienen soporte y van mejorando con el tiempo, como el especifico
para tratar con estaciones Cisco, llamado como su protocolo propietario, Skinny
(SCCP).
El formato clsico de este tipo de mdulos es chan_<nombre>.so
Traductores de Codecs y Formatos
Son la representacin para los sistemas de audio y vdeo digitales de trasmisin
(codecs) y almacenamiento (formatos).
De alguna forma, son los encargados de convertir va software, entre un tipo y otro
tipo de formato o cdec de forma simultanea al curso de la llamada.
Por ejemplo, si una llamada, viene del canal DAHDI, con el cdec G.711 (alaw o ulaw
dependiendo del pas) y quiere pasarse a una extensin SIP dentro de nuestro
sistema Asterisk, el traductor correspondiente ser el encargado de realizar esta
conversin en tiempo real.
Por otro lado, si lo que estamos tratando son archivos, los encargados de interpretar
el contenido para pasarlo a travs del audio del canal correspondiente seran los
traductores de Formatos. En este mbito los mas populares son los estndares, GSM
y WAV en los que estn basados la mayor parte de los sonidos por defecto del
sistema Asterisk (los mensajes pregrabados).
El formato clsico de para los mdulos de codecs es codec_<nombre>.so y para los
de formatosformat_<nombre>.so
Interfaces
Asterisk se despliega y comunica con el entorno a travs de mltiples interfaces que
provee, tanto para trabajos de gestin y mantenimiento manuales, como para su
autogestin de forma esttica, y sistemas externos que puedan recabar datos de
forma dinmica y automtica, y finalmente pasando a ofrecer interfaces para poder
trabajar con lenguajes de programacin que provean a su vez al sistema de nuevas
funcionalidades extra que no estn construidas en su interior.
Instalacin de Asterisk
La descarga se puede realizar atraves de un navegador web como tambin desde la
Dependencias
Las dependencias son aquellos paquetes que vamos a necesitar para instalar
Asterisk. Por supuesto, ya que vamos a instalar Asterisk desde cdigo fuente, vamos
a necesitar instalar las libreras y compiladores que utiliza Asterisk, en su modo
desarrollo (developer, devel o dev) as que vamos a proceder a la instalacin. Por lo
general, podramos poner una lista gigantesca de todos los paquetes y libreras
necesarias para la compilacin, no obstante, vamos a acelerar un poco la instalacin
de estas libreras mediante un par de comandos:
cd /usr/src/asterisk/contrib/scripts
./install_prereq install
ldconfig -v
El script install_prereq hace una comprobacin de los paquetes ya instalados en tu
sistema e instala automticamente el resto de paquetes que pueden hacer falta para
una instalacin completa. Lo bueno de esta forma de instalar dependencias, es que
nos va a permitir compilar Asterisk con prcticamente todas las opciones que
podamos necesitar, todo el soporte para poder compilar cualquier mdulo, lo malo es
que, al poder compilar cualquier mdulo, tendremos que filtrar manualmente qu
mdulos queremos cargar y cuales no.
Instalacin Asterisk La instalacin de los paquetes de asterisk se debe realizar en el
siguiente orden:
Dahdi
Libpri
Asterisk
Para compilar e instalar Libpri se deben seguir los siguientes pasos como usuario
'root'.
cd /usr/src/
wget http://downloads.digium.com/pub/libpri/libpri-1.4.x.tar.gz cd /usr/src/libpri-1.4.x
Para compilar e instalar el driver DAHDI se deben seguir los siguientes pasos como
usuario 'root'.
cd /usr/src/
cd dahdi-linux-complete-2.10.1+2.10.1
Para compilar e instalar ASTERISK se deben seguir los siguientes pasos como
usuario 'root'.
cd /usr/src/
cd asterisk-1.8.32.3/
Ahora hay que comprobar que Asterisk qued correctamente instalado y se ingresa a
la consola de asterisk de la siguiente forma:
asterisk -vvvvc
El siguiente paso en nuestra instalacin es la deshabilitacin de Selinux que es un
mdulo de seguridad para el kernel Linux que proporciona el mecanismo para
soportar polticas de seguridad para el control de acceso, este se debe dejar en modo
disabled y se ejecuta el siguiente comando:
Directorios Usados
A continuacin los archivos y directorios mas importantes creados en el proceso de
instalacin.
/etc/asterisk En este directorio se encuentran todos los archivos necesarios para
configurar la gran cantidad de servicios que Asterisk provee. Revisaremos los mas
importantes.
asterisk.conf Configuraciones generales de la ubicacin de directorios de archivos de
configuracin, Mdulos compilados, voicemails etc. En general es buena idea no
modificar estas configuraciones, salvo casos especiales.
cdr.conf Configuraciones referentes al "Call Detail Record". Los CDR son sumamente
importantes para las compaas telefnicas. Modificar datos en este archivo puede
repercutir en la integridad de los CDR si no se esta seguro de lo que se hace. Si la
instalacin es nicamente de prueba, o los CDR no son materia importante, no hay
problema. codecs.conf A menos que utilices SPEEX, o quieras hacer cosas
especiales con la forma en la que los codecs se comportan, es mejor no modificar
este archivo.
extensions.conf Tal vez el archivo mas importante de Asterisk. En este archivo se
toman las decisiones de ruteo de las llamadas. Mas adelante veremos la sintaxis de
este archivo. features.conf Este archivo es tambin muy importante. Permite habilitar
y configurar servicios genricos de un PBX como la transferencia asistida y monitoreo
de llamadas.
iax.conf Importante archivo para el funcionamiento del canal chan_iax que le permite
a Asterisk interactuar con otros dispositivos IAX, incluyendo otros PBX Asterisk.
logger.conf Que nivel de verbosidad deben tener los mensajes de log y a donde
deben ser enviados.
manager.conf Configuracin del importante servicio AMI (Asterisk Manager Interface)
que permite conectarnos a un socket TCP y manejar el PBX. De cierta forma se
encuentra relacionado con el archivo http.conf, que provee de una interfaces para
mecanismo de registracin. Este mecanismo funciona como sigue: Cada usuario tiene
una direccin lgica que es invariable respecto de la ubicacin fsica del usuario. Una
direccin lgica del protocolo SIP es de la forma usuario@dominio es decir tiene la
misma forma que una direccin de correo electrnico. La direccin fsica (denominada
"direccin de contacto") es dependiente del lugar en donde el usuario est conectado
(de su direccin IP). Cuando un usuario inicializa su terminal (por ejemplo conectando
su telfono o abriendo su software de telefona SIP) el agente de usuario SIP que
reside en dicho terminal enva una peticin con el mtodo REGISTER a un Servidor
de Registro (Registrar en ingls), informando a qu direccin fsica debe asociarse la
direccin lgica del usuario. El servidor de registro realiza entonces dicha asociacin
(denominada binding). Esta asociacin tiene un perodo de vigencia y si no es
renovada, caduca. Tambin puede terminarse mediante una derregistracin. La forma
en que dicha asociacin es almacenada en la red no es determinada por el protocolo
SIP, pero es vital que los elementos de la red SIP accedan a dicha informacin.
Servidores Proxy y de Redireccin Un conjunto de usuarios que pertenecen a una
compaa o proveedor de servicios de comunicaciones, conforman un dominio. Este
dominio, que se indica en una direccin SIP despus del caracter "@" es
normalmente atendido por un servidor (o ms de uno). Este servidor recibe las
peticiones hacia sus usuarios. Este servidor ser el encargado de determinar la
direccin fsica del usuario llamado y puede actuar de dos maneras: Como Proxy, o
Como Redirector (Redirect). Al actuar como Proxy el servidor determina la ubicacin
del usuario llamado y enva la peticin original a la direccin fsica del usuario
llamado. Las respuestas del agente de usuario llamado tambin son enviadas al proxy
que las remite hacia el originante. Al actuar como Redirector el servidor genera una
respuesta que indica al originante la direccin fsica del usuario que busca para que
este pueda realizar una peticin y enviarla a la direccin fsica del usuario deseado.
Un mismo servidor puede actuar como Redirector o como Proxy dependiendo de la
situacin. Un servidor que recibe las peticiones destinadas a un dominio especfico es
denominado servidor entrante (Inbound Server). Es habitual tambin, que exista un
servidor que reciba las peticiones originadas por los usuarios de un dominio hacia
otros dominios. Este recibe el nombre de Servidor Saliente (Outbound Server). Un
agente de usuario normalmente encamina todos sus pedidos hacia un servidor de su
propio dominio. Es este quien determina (por sus propios medios o valindose de
otros servidores) las ubicaciones de los usuarios que son llamados por el agente de
usuario en cuestin.
Canales SIP
Los canales SIP (Session Initiation Protocol) son los canales utilizados por los
dispositivos IP que usan este protocolo, aadir nuevos usuarios o conectar con
proveedores SIP. La configuracin para estos canales se encuentra en el el archivo
'sip.conf' ubicado en el directorio '/etc/aserisk/' el cual deber ser editado como
usuario 'root'. El archivo de configuracin 'sip.conf' se lee de forma secuencial desde
En general los servidores SIP escuchan en el puerto 5060 UDP. Por tanto
configuramos port=5060.
En algunos casos, por ejemplo si utilizamos SER (Sip Express Router) con Asterisk
debemos cambiar este puerto. DNS es una forma de configurar una direccin lgica
para que pueda ser resuelta. Esto permite que las llamadas sean enviadas a
diferentes lugares sin necesidad de cambiar la direccin lgica. Usando el DNS SRV
se ganan las ventajas del DNS mientras que deshabilitandolo no es posible enrutar