Diferencia entre revisiones de «Introducción»

De Asterisk Wiki
Ir a la navegación Ir a la búsqueda
Línea 88: Línea 88:
 
* Registro de eventos de canales
 
* Registro de eventos de canales
 
* Drivers de canales
 
* Drivers de canales
* Traductores de Codecs
+
* Traductores de Codecs y Formatos
 
* Add-ons
 
* Add-ons
  
Línea 121: Línea 121:
  
 
El formato clásico de este tipo de módulos es '''func_<nombre>.so'''
 
El formato clásico de este tipo de módulos es '''func_<nombre>.so'''
 +
 +
==== Drivers de canales ====
 +
 +
Son los drivers específicos para cada tipo de canal disponible actualmente o en un futuro para Asterisk. Estos son los que aportan específicamente la posibilidad de volver totalmente independiente el sistema de los mismos para así poder tratarlos de forma totalmente homogénea. Son exactamente una especie de interfaz entre el núcleo de Asterisk y la parte "lógica" dentro del sistema operativo. Es exactamente un API.
 +
 +
Todos los canales mas típicos, tienen su correspondiente modulo para el driver. Ejemplos típicos son el especifico para DAHDI, SIP e IAX, que justamente son los más utilizados por la comunidad Asterisk. El resto no están 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 clásico de este tipo de módulos es '''chan_<nombre>.so'''
 +
 +
==== Traductores de Codecs y Formatos ====
 +
 +
Son la representación para los sistemas de audio y vídeo digitales de trasmisión (codecs) y almacenamiento (formatos).
 +
 +
De alguna forma, son los encargados de convertir vía software, entre un tipo y otro tipo de formato o códec de forma simultanea al curso de la llamada.
 +
 +
Por ejemplo, si una llamada, viene del canal DAHDI, con el códec G.711 (alaw o ulaw dependiendo del país) y quiere pasarse a una extensión SIP dentro de nuestro sistema Asterisk, el traductor correspondiente será el encargado de realizar esta conversión en tiempo real.
 +
 +
Por otro lado, si lo que estamos tratando son archivos, los encargados de interpretar el contenido para pasarlo a través del audio del canal correspondiente serían los traductores de Formatos. En este ámbito los mas populares son los estándares, GSM y WAV en los que están basados la mayor parte de los sonidos por defecto del sistema Asterisk (los mensajes pregrabados).
 +
 +
El formato clásico de para los módulos de codecs es '''codec_<nombre>.so''' y para los de formatos '''format_<nombre>.so'''
  
 
== Licencia  ==
 
== Licencia  ==

Revisión del 14:02 7 may 2012

Asterisk es el mayor proyecto de software libre diseñado para la integración y unificación de los sistemas de comunicaciones conocidos

Originalmente fue concebido como una plataforma para la generación de un sistema PBX, pero con el tiempo ha ido evolucionando a otro tipo de usos, como Pasarelas VoIP, sistemas integrales para call-centers, salas de conferencias, buzones de voz, y todo tipo de aplicaciones que tengan relación con las comunicaciones en tiempo real.

Comparativamente Asterisk es para el mundo de las comunicaciones lo mismo que sería Apache para el mundo de las aplicaciones web. Apache es un servidor web, y Asterisk es un servidor de comunicaciones.


Introducción

Asterisk es una plataforma de comunicaciones basada en la filosofia Open Source

Es capaz de convertir un ordenador comun en un completo servidor de comunicaciones.

¿Que es Asterisk?

Plataforma comunicaciones.jpg

Realmente esta pregunta puede ir mucho más allá de la definición común que se establece para el sistema.

Existen ciertas consideraciones que hacen a Asterisk lo que realmente es en la actualidad, y una de las principales surge de la propia naturaleza del sistema: La filosofía Open Source.

Considerando Asterisk como una plataforma integral de comunicaciones, podría considerarse la más importante, y ha resultado como única por muchos años en un entorno, donde todos los sistemas de comunicación eran totalmente privativos. Aunque con el tiempo, fueron sacando interfaces comúnmente conocidos como CTI para la integración de sistemas de terceros para cumplir funciones muy específicas, la potencia de estas interfaces era bastante limitada dado que el núcleo de los sistemas privados, permanencia cerrado al público.

Con Asterisk se sienta un precedente desde el momento que el código es de libre acceso, modificación y ampliación, dado que múltiples colectivos pudieron ampliar sus necesidades y adaptarlas a lo que venían buscando en un momento concreto, que un sistema de comunicaciones pudiera ofrecerles, dentro de sus extensivas bondades.

Historia

El desarrollo de Asterisk fue iniciado en el año 1999 por Mark Spencer. En aquel momento ya existían otros proyectos de telefonía basados en la ideología Open Source. Pero esos proyectos estaban realmente enfocados a la telefonía a nivel software, basados en la búsqueda de establecer comunicaciones entre ordenadores a través de los sistemas de audio. La diferencia de Asterisk con estos proyectos, era la idea preconcebida, de entrelazar por primera vez la red de telefonía común (PSTN) con un ordenador.

Y para ello se formó una alianza con un proyecto de telefonía llamado Zapata iniciado por Jim Dixon. La idea del proyecto Zapata, era la posibilidad de diseñar tarjetas específicas para convertir la señal analógica que provenía de la PSTN a una señal digital, y ahorrar costes en la construcción de dispositivos de telefonía y audio avanzados (y muy costosos) gracias a la tremenda reducción de costes que sufrían año tras año los procesadores. A través de estos, cada vez más potentes, y baratos, se podrían procesar una o varias señales de audio digital (DSP) sin gran dificultad y poder paralelamente construir teléfonos con ese coste reducido.

Hoy en día el proyecto Zapata, fue integrado totalmente en Asterisk, y Asterisk patrocinado por una empresa que construye dispositivos de telefonía digital, llamada Digium, y se ha acomodado como una parte más de Asterisk con un nuevo nombre: DAHDI (son las siglas de Digium Asterisk Hardware Device Interface).

La primera version estable surgio casi 5 años 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)

Para seguir la evolucion de versiones puede hacerse desde la web: Versiones Asterisk

Asterisk SCF

Asterisk SCF es un entorno todavía en vías de desarrollo que aunque originalmente no ha sido lanzado para reemplazar al sistema original Asterisk, ofrecerá una evolución en múltiples términos que supondría en un futuro su posible adaptación por la mayoría de los usuarios del mismo.

La idea intencional esta basada, en la posibilidad de ofrecer un sistema capaz de ser desplegado en Clusters, o múltiples 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. Según la definición ofrecida por los desarrolladores, "Asterisk SCF ha sido arquitectónicamente diseñado para ofrecer los máximos niveles de disponibilidad, escalabilidad, extensibilidad, tolerancia a fallos y rendimiento" [1]

Arquitectura

La arquitectura de Asterisk esta basada en un sistema modular, que depende del núcleo principal del sistema. El núcleo del sistema principalmente se basa en cuatro componentes:

  • Gestión de Módulos
  • Configuración de Lectura
  • Temporizador de Sistema
  • Gestión de Canales

La estructura de Asterisk es totalmente independiente de los dispositivos, troncales, y demás útiles externos al mismo. En la gran parte de las PBX tradicionales, es muy común observar el hecho que existen estructuras lógicas para diferenciar entre los teléfonos y otros dispositivos de telefonía como faxes, y por otro lado líneas entrantes como troncales primarios, líneas RDSI, etc. En Asterisk este concepto no existe, todo entra al sistema como un canal genérico y luego es gestionado de forma integral. Aunque sean diferenciados, todos se gestionan de la misma forma por eso, incluso recursos externos pueden llegar a ser manejados dentro de las posibilidades, de la misma forma, que una extensión SIP interna.

A priori esto puede parecer bastante obvio, pero el verdadero potencial se demuestra cuando empezamos a trabajar con estos canales dentro del plan de Marcación

Módulos

Como comentábamos antes, Asterisk esta basado en módulos independientes, los cuales pueden ser cargados y descargados a voluntad, en función de las necesidades que deseemos proveer al sistema.

Cada modulo posee una funcionalidad especifica, de tal forma que puedan tratarse todos los aspectos del sistema, pasando por los tipos de canales (SIP, IAX, DAHDI) o conexiones a otros sistemas para interactuar con Asterisk (mail, bases de datos, web, etc.).

Existe un archivo especifico para la configuración de los módulos llamado modules.conf (dentro de la ruta especifica de instalación de Asterisk típicamente /etc/asterisk).

Durante la instalación del sistema Asterisk, es posible seleccionar que módulos pretendemos instalar. En caso que instalemos una gran cantidad de modulo que tengamos intención de utilizar en un futuro avanzado, pero no a corto plazo, por motivos de seguridad es altamente recomendable señalar específicamente que no se carguen dentro del fichero de configuración utilizando la propiedad noload =>

Todas las posibilidades que nos ofrece el fichero de configuración modules.conf las podremos ver en su apartado específico.

Dentro del sistema de módulos, estos se clasifican en diferentes subapartados como vemos a continuación los más populares:

  • Aplicaciones
  • Recursos
  • Funciones del Dialplan
  • Registro del detalle llamadas
  • Registro de eventos de canales
  • Drivers de canales
  • Traductores de Codecs y Formatos
  • Add-ons

Aplicaciones

Las aplicaciones son aquellas acciones aplicables al manejo de las llamadas dentro del Plan de Marcación. Por ejemplo, la mas popular en todos los planes sería la aplicación Dial, la cual simplemente tiene como propósito lanzar una llamada a un canal en función de las propiedades que señalemos durante su ejecución. Existen otras aplicaciones comunes, como VoiceMail (encargada de la gestión del Buzón de Voz), Record (para grabar el sonido de un determinado canal), etc.

Algunas características en común de las aplicaciones son las siguientes:

  • Las acciones están exclusivamente enfocadas por y para los canales.
  • Se carga de forma dinámica
  • Se ejecutan de manera síncrona.
  • El formato clásico de este tipo de módulos es app_<nombre>.so

Recursos

La función 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 veíamos antes. Pero una de las diferencias con respecto a estas, es que se cargan de manera estática, y pueden operar simultáneamente en múltiples canales, en vez de crearse dinámicamente para cada canal en curso.

Uno de los mas comunes, es el recurso para ofrecer servicios de Música en Espera (Music ion Hold), o para realizar interconexiones con bases de datos a través de ODBC.

El formato clásico de este tipo de módulos es res_<nombre>.so

Funciones del Dialplan

La idea fundamental detrás de las Funciones es la capacidad de obtener o añadir, determinada información 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 común de ser utilizadas es a través de la Aplicación Set

Por ejemplo una función típica es la capaz de recoger el Identificador de llamada de un canal (CALLERID) para poder manejarlo dentro del plan de marcación a voluntad.

El formato clásico de este tipo de módulos es func_<nombre>.so

Drivers de canales

Son los drivers específicos para cada tipo de canal disponible actualmente o en un futuro para Asterisk. Estos son los que aportan específicamente la posibilidad de volver totalmente independiente el sistema de los mismos para así poder tratarlos de forma totalmente homogénea. Son exactamente una especie de interfaz entre el núcleo de Asterisk y la parte "lógica" dentro del sistema operativo. Es exactamente un API.

Todos los canales mas típicos, tienen su correspondiente modulo para el driver. Ejemplos típicos son el especifico para DAHDI, SIP e IAX, que justamente son los más utilizados por la comunidad Asterisk. El resto no están 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 clásico de este tipo de módulos es chan_<nombre>.so

Traductores de Codecs y Formatos

Son la representación para los sistemas de audio y vídeo digitales de trasmisión (codecs) y almacenamiento (formatos).

De alguna forma, son los encargados de convertir vía software, entre un tipo y otro tipo de formato o códec de forma simultanea al curso de la llamada.

Por ejemplo, si una llamada, viene del canal DAHDI, con el códec G.711 (alaw o ulaw dependiendo del país) y quiere pasarse a una extensión SIP dentro de nuestro sistema Asterisk, el traductor correspondiente será el encargado de realizar esta conversión en tiempo real.

Por otro lado, si lo que estamos tratando son archivos, los encargados de interpretar el contenido para pasarlo a través del audio del canal correspondiente serían los traductores de Formatos. En este ámbito los mas populares son los estándares, GSM y WAV en los que están basados la mayor parte de los sonidos por defecto del sistema Asterisk (los mensajes pregrabados).

El formato clásico de para los módulos de codecs es codec_<nombre>.so y para los de formatos format_<nombre>.so

Licencia

Asterisk esta actualmente disponible bajo licencia GNU GPL v2[2]

Referencias

  1. Asterisk SCF, Kevin P. Flemming (2010)
  2. GNU GPLv2, Free Software Foundation (1991)