09 Anexo02
09 Anexo02
09 Anexo02
Descripción de la
Solución Asterisk
En este apartado se repasará la historia del software Asterisk desde sus orígenes.
Es necesario mencionar tres elementos claves en la evolución de este software cuya
unión dio origen el concepto de lo que hoy se conoce como Asterisk. Estos
elementos son Mark Spencer, Proyecto Zapata y Digium.
El proyecto ZAPATA fue conducido por Jim Dixon. El es el responsable del desarrollo
del hardware de DIGIUM. Es interesante resaltar que el hardware también es
abierto y puede ser producido por cualquier empresa.
Había creado en 1999 la empresa "Linux Support Services" con el objetivo de dar
soporte a usuarios de Linux. Para ello necesitaba una centralita telefónica, pero
ante la imposibilidad de adquirirla dados sus elevados precios, decidió construir una
con un PC bajo Linux, utilizando lenguaje C. Este fue el principio del fenómeno
mundialmente conocido como Asterisk®, la centralita telefónica construida por
Mark.
Acto seguido recurrió a la búsqueda de capital, encontrando el apoyo en la empresa
Adtran cuyos miembros se ofrecieron a invertir en su compañía. En ese momento,
recibía más interés en el PBX Asterisk que por sus servicios generales de
consultoría Linux.
Paralelamente a esto, Jim Dixon experimentaba con una placa Mitel89000C “ISDN
Express Development Card” y escribía un driver para el FreeBSD. La placa ocupó
poco procesamiento de un Pentium III 600Mhz, probando que si no fuese por la
limitación de I/O (La placa trataba deforma ineficiente la I/O exigiendo muchos
wait-states) podría atender de 50 a 75 canales. En base a este descubrimiento creó
nuevo diseño de tarjeta ISA que usaba el I/O de forma eficiente. Consiguió dos T1s
(48 canales) de datos transferidos sobre el bus entre memoria y el microprocesador
y el PC.
18
Slackware Linux es la distribución Linux más antigua que tiene vigencia. Desde su primer lanzamiento
en 1993, el Proyecto Slackware Linux se ha esmerado en producir la distribución de Linux más
profesional posible. Slackware obedece a los estándares de Linux publicados.
Su primer proyecto fue construir una tarjeta T1 Open Source. Estos ingresos les
mantenían a flote pero no recibían contribuciones de nadie y el resto tan solo
cogían sus diseños y manufacturaban tarjetas que competían con las suyas.
Posteriormente "Linux Support Services" se convertiría en el año 2002 en "Digium",
redirigiendo sus objetivos al desarrollo y soporte de Asterisk. El dinero era escaso
en Digium hasta que un día un vendedor de DeltaCom (una competitiva compañía
de comercio local) entró para venderles a Mark y a Jim una T1. Después de
entender lo que Mark y Jim habían hecho el vendedor se ofreció a ayudarles. A
partir de este punto empezaron a ver un incremento en las ventas, y acabaron el
año con beneficios. Después de grandes ingresos durante largo tiempo Mark fue
capaz de hacer crecer el negoció sin recabar mucho en los beneficios.
Cuando Mark empezó con Asterisk hizo una cosa muy inteligente. Se le requería
firmar un acuerdo a cada desarrollador que contribuía en el código para que el
copyright se asignara a Asterisk y el compromiso que no hay encumbramientos en
el código contribuido. Esto le permitió sentirse confortable con su proyecto que era
completamente open source y que su compañía podría relicenciar el código a
vendedores OEM como 3COM y NTT. Digium también ha hecho las cosas bien al
mantener la versión de la comunidad con la funcionalidad completa y no crear una
escisión entre ellos y los que los apoyan.
La primera release19 fue Asterisk 0.1 (Diciembre de 1999), y el tarball20 ocupaba
tan sólo 124.3K que una vez descompactado venían a ser unos 506 KB en 96
archivos. Para correr Asterisk necesitábamos básicamente Linux y libaudiofile.
Esta primera release fue liberada en 1999 bajo licencia GPL2 pero tenia cláusulas
adicionales que indicaban que en todos los productos derivados debía constar el
nombre de Linux Support Services, LLC o Adtran Inc., también advertían sobre
códecs cubiertos por patentes de software, y la más curiosa es que si
emprendíamos acciones legales por infringir patentes en referencia a algún
software Open Source nuestro derecho a usar o distribuir el software se terminaba
de inmediato. De todos modos estas cláusulas duraron bien poco, ya que de los
primeros cambios que se hicieron para la release 0.1.1 fue aparte de arreglar
numerosos bugs revisar la licencia que pasó a ser pura GPL.
19
En la fase de desarrollo de un software una versión candidata a definitiva o candidata para el
lanzamiento (aunque más conocida por su nombre en inglés release candidate), comprende un producto
final, preparado para publicarse como versión definitiva a menos que aparezcan errores que lo impidan.
En esta fase el producto implementa todas las funciones del diseño y se encuentra libre de cualquier
error que suponga un punto muerto en el desarrollo.
20
Archivos comprimidos que se usan en Linux y UNIX con extensión“.tar.gz” o “.tar” o “.tar.bz2″.
El lanzamiento de Asterisk 1.0 (Septiembre 2004) fue anunciado por Mark durante
la Astricon21. El tarball de Asterisk 1.0.0 pesaba unos 9 MB, y ya varias compañías
daban soporte al desarrollo de Asterisk: Pilosoft, Inc. (soporte al desarrollo ADSI),
GFS (soporte al desarrollo ALSA), Telesthetic (soporte al desarrollo SIP), Paul
Bagyenda, Digital Solutions (desarrollo inicial del driver Voicetronix), entre otros
muchos desarrolladores que contribuían como Christos Ricudis que realizó
importantes aportes al código de Asterisk. Paralelamente a Asterisk fue lanzado
Zaptel 1.0.0 (Septiembre 2004), tenía soporte para udev22 (kernel Linux 2.6),
zttool tenía como dependencia a libnewt, parte del software también necesitaba la
librería Zapata.
21
Conferencias de tres días de duración que tienen como finalidad expandir el conocimiento de Asterisk.
En ella participan todos los fabricantes de hardware compatible con Asterisk.
22
Gestor de dispositivos que usa el kernel Linux en su versión 2.6. Su función es controlar los ficheros
de dispositivo en /dev. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio
/dev y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de
firmwares.
Cuando se le pregunta a Mark sobre el futuro del hardware open source no está
convencido que funcione de la misma forma que el software. Él cita la barrera para
entrar en la producción de hardware en contra del punto mucho más bajo para
entrar en el desarrollo software.
H.323
H.323 es una familia de estándares desarrollado por la ITU en 1996 con el objetivo
de ofrecer un mecanismo de transporte para servicios multimedia sobre redes que
no garantizan QoS, aunque su uso se ha extendido sobretodo al uso sobre redes IP.
Pese a que inicialmente fue definido como un protocolo de videoconferencia,
rápidamente ha ido evolucionando para cubrir todas las necesidades de la VoIP. De
hecho el protocolo VoIP generaliza los conceptos introducidos por H.323. Además
especifica aspectos basados en el sistema de señalización número 7 (SS723) para la
interconexión con la PSTN.
SIP
SIP (Session Initial Protocol) es un protocolo desarrollado por el IETF en 1999 para
el control de llamadas multimedia y la implementación de servicios telefónicos
avanzados.
SIP está basado en HTTP (HyperText Transfer Protocol) adoptando las
características más importantes de este estándar como son la sencillez de su
sintaxis y una estructura cliente/servidor basada en un modelo petición/respuesta.
Otra de las ventajas de SIP es su sistema de direccionamiento. Las direcciones SIP
tienen una estructura parecida a la de un correo electrónico dotando a sus clientes
de una alta movilidad facilitando una posible integración en comunicaciones
móviles. Cabe destacar que aunque originalmente SIP tenía como objetivo la
simplicidad, en su estado actual se ha vuelto tan complejo como H.323.
23
El sistema de señalización por canal común nº 7 es un conjunto de protocolos de señalización
telefónica empleado en la mayor parte de redes telefónicas mundiales. Su principal propósito es el
establecimiento y finalización de llamadas, si bien tiene otros usos. Entre estos se incluyen: traducción
de números, mecanismos de tarificación pre-pago y envío de mensajes cortos
Encargarse de la autentificación.
Encargarse de la calidad de una llamada telefónica.
Encargarse de las direcciones IP y puertos que se van a utilizar para enviar y
recibir las “conversaciones de voz”.
Los clientes SIP llamados peers o user agents usan el puerto 5060 en TCP
(Transmission Control Protocol) y UDP (User Datagram Protocol) para conectar con
los servidores SIP. SIP es usado simplemente para iniciar y terminar llamadas de
voz y video. Todas las comunicaciones de voz/video van sobre RTP.
MGCP-MEGACO
Media Gateway Control Protocol (MGCP) es otro estándar de señalización para VoIP
desarrollado por la IETF. MGCP está basado en un modelo maestro/esclavo donde
el Call Agent (servidor) es el encargado de controlar al gateway. De esta forma se
consigue separar la señalización de la transmisión de la información, simplificando
la integración con el protocolo SS7.
Esta importante ventaja propició la colaboración conjunta entre el IETF y la ITU
para el desarrollo de una nueva especificación basada en MGCP que fuera
complementaria a SIP y H.323. El resultado fue MEGACO aunque la ITU se refiere a
este protocolo como H.248. En definitiva, SIP y H.323 se utiliza para la señalización
en los extremos, mientras que MEGACO es óptimo para los grandes operadores de
telefonía.
IAX
Se entiende por interfaz al circuito físico que establece la conexión entre dos
sistemas permitiendo su comunicación. Las interfaces no son universales sino que
existen diferentes estándares que establecen especificaciones técnicas concretas.
Los términos FXO y FXS siempre llevan a confusión debido a que siendo conceptos
diferentes siempre van juntos.
FXS es un puerto usado por las líneas de telefonía analógica (también denominados
POTS), este puerto envía señales de timbre y tono para teléfonos analógicos. Es
decir, que emulan a una línea telefónica analógica tradicional.
FXO este puerto recibe las señales del puerto fxs. Un teléfono tienes un puerto fxo.
Este puerto no envía señales de tono o timbrado, solo recibe las señales que envía
los FXS. Funciona como terminal de línea.
Una central IP recibe una línea FXS en un puerto FXO para conectarse al servicio de
telefonía. En el caso de las tarjetas Digium, por ejemplo TDM400, se pueden
colocar módulos con estos tipos de puertos.
G.729: Se usa sobre todo en aplicaciones de Voz sobre IP por los bajos
requerimientos en ancho de banda. Opera con tasas de 8 kbps pero existen
GSM (Global System Mobile): Estándar que opera a 13 kbps con una carga
de CPU aceptable. Inicialmente fue desarrollado para la telefonía móvil.
iLBC (Internet Low Bit rate Codec): Algoritmo complejo desarrollado por
Global IP Sound (GIPS) que ofrece una buena relación ancho de
banda/calidad de voz a cambio de una mayor carga computacional. Opera a
13.3 kbps y 15.2 kbps.
Códecs de video.
A la hora de elegir un códec de video para usar con Asterisk, es importante conocer
que Asterisk (la versión 1.6.1 usada) por si mismo no soporta ningún tipo de
transcodificación de vídeo. Para activar el soporte de vídeo en Asterisk (sin
parchear) se debe de activar tan solo un códec de vídeo en sip.conf.
La posibilidad que ofrece Asterisk con el uso de los códecs, permite multitud de
combinaciones para su uso, desde la videoconferencia, pasando por la video
vigilancia a un simple video de bienvenida dentro del servidor. Todos estos videos,
pueden estar en formatos diferentes, o que sean los elementos hardware los que
por configuración solamente soporten un tipo de códec determinado.
Puesto que en este aspecto Asterisk todavía está limitado, se podría hacer uso de
programas externos que pasen de un códec a otro, salvando así no solo la
limitación de nuestro servidor sino también el hecho de que aunque Asterisk fuese
capaz de hacer transcodificación de vídeo, el consumo de recursos sería
posiblemente desmedido.