capítulo 3: descripción de la solución...

22
MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 30 Capítulo 3: Descripción de la Solución Asterisk

Upload: dodang

Post on 29-Jul-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 30

Capítulo 3:

Descripción de la Solución Asterisk

Page 2: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 31

3. SOFTWARE EXISTENTE PARA VoIP: ASTERISK

3.1. Tipos de Software Una vez conocidas las características de la telefonía IP así como los elementos necesarios, y una vez seleccionado el protocolo a usar, es necesario estudiar las posibles soluciones para el desarrollo de este proyecto. A la hora de elegir el software a emplear, se presentan dos posibles soluciones, cada una de ellas con sus ventajas e inconvenientes correspondientes. Todos estos factores se estudiarán en este apartado. Según el IEEE (Instituto de Ingenieros Eléctricos y Electrónicos), en su estándar 729, software es la suma total de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de cómputo. Bajo esta definición el concepto de software va más allá de los programas de cómputo en sus distintas formas: código fuente, binario o código ejecutable, además de su documentación. Es decir, el software es todo lo intangible. Software es también conocido como programación o equipamiento lógico, esto es el conjunto de programas que puede ejecutar el hardware para la realización de las tareas de computación a las que se destina. Se trata del conjunto de instrucciones que permite la utilización del ordenador o computador (PC, personal computer). El software es la parte intangible de la computadora, es decir, programas, aplicaciones, etc.

Software Libre

El software libre es aquel que puede ser distribuido, modificado, copiado y usado; por lo tanto, debe venir acompañado del código fuente para hacer efectivas las libertades que lo caracterizan. Dentro de software libre hay, a su vez, matices que es necesario tener en cuenta. Por ejemplo, el software de dominio público significa que no está protegido por el copyright, por lo tanto, podrían generarse versiones no libres del mismo, en cambio el software libre protegido con copyleft impide a los redistribuidores incluir algún tipo de restricción a las libertades propias del software así concebido, es decir, garantiza que las modificaciones seguirán siendo software libre. También es conveniente no confundir el software libre con el software gratuito, este no cuesta nada, hecho que no lo convierte en software libre, porque no es una cuestión de precio, sino de libertad. El software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. Y se refiere especialmente a cuatro clases de libertad para los usuarios de software:

1. Libertad 0: la libertad para ejecutar el programa sea cual sea nuestro propósito.

2. Libertad 1: la libertad para estudiar el funcionamiento del programa y adaptarlo a tus necesidades -el acceso al código fuente es condición indispensable para esto-.

3. Libertad 2: la libertad para redistribuir copias y ayudar así a tu vecino. 4. Libertad 3: la libertad para mejorar el programa y luego publicarlo para el

bien de toda la comunidad -el acceso al código fuente es condición indispensable para esto.

Page 3: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 32

Software libre es cualquier programa cuyos usuarios gocen de estas libertades. De modo que deberías ser libre de redistribuir copias con o sin modificaciones, de forma gratuita o cobrando por su distribución, a cualquiera y en cualquier lugar. Gozar de esta libertad significa, entre otras cosas, no tener que pedir permiso ni pagar para ello. Asimismo, deberías ser libre para introducir modificaciones y utilizarlas de forma privada, ya sea en tu trabajo o en tu tiempo libre, sin siquiera tener que mencionar su existencia. Si se decidiera publicar estos cambios, no se debería estar obligado a notificárselo a ninguna persona ni de ninguna forma en particular. La libertad para utilizar un programa significa que cualquier individuo u organización podrán ejecutarlo desde cualquier sistema informático, con cualquier fin y sin la obligación de comunicárselo ni al desarrollador ni a ninguna entidad en concreto.

Software Propietario

El software no libre también es llamado software propietario, software privativo, software privado o software con propietario. Se refiere a cualquier programa informático en el que los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones), o que su código fuente no está disponible o el acceso a éste se encuentra restringido. En el software no libre una persona física o jurídica (por nombrar algunos: compañía, corporación, fundación) posee los derechos de autor sobre un software negando o no otorgando, al mismo tiempo, los derechos de usar el programa con cualquier propósito; de estudiar cómo funciona el programa y adaptarlo a las propias necesidades (donde el acceso al código fuente es una condición previa); de distribuir copias; o de mejorar el programa y hacer públicas las mejoras (para esto el acceso al código fuente es un requisito previo). De esta manera, un software sigue siendo no libre aún si el código fuente es hecho público, cuando se mantiene la reserva de derechos sobre el uso, modificación o distribución (por ejemplo, el programa de licencias shared source de Microsoft).

Software Semilibre

Es aquel que mantiene las mismas características que el software libre para los usuarios individuales, entidades educativas o sin ánimo de lucro, sin embargo prohíbe esas libertades para su uso comercial o empresarial. Dentro de software semilibre se puede diferenciar:

� Freeware: No tiene una definición clara y precisa, sin embargo suele usarse para clasificar al software que puede redistribuirse libremente pero no modificarse, entre otras cosas, porque no está disponible su código fuente. El freeware no es software libre.

� Shareware. Es un software que permite su redistribución, sin embargo no

viene acompañado de su código fuente y, por tanto, no puede ser modificado. Además, pasado un periodo de tiempo, normalmente es necesario pagar una licencia para continuar usándolo, luego tampoco es software libre.

� Abandonware. El abandonware es “software cuyos derechos de autor ya no

son defendido o que ya no está siendo vendido por la compañía que lo hizo”, y por eso, se dice que ha sido “abandonado”.

Page 4: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 33

� Warez. Si bien “ware” es un sufijo empleado en la jerga informática para formar términos que aluden a categorías de software, “warez” refiere a una categoría de software distinta de las anteriores. “Warez” es un término muy usado en las subculturas cracker para aludir a versiones crackeadas de software comercial, versiones en las cuales la protección de los derechos de autor ha sido quitada. Los hackers reconocen este término, pero no lo usan. Los warez son distribuciones de software sujetas a los derechos de autor, comercializadas en violación a la licencia de derechos de autor del software, en muchos casos la distribución de los warez es ilegal. Las justificación que dan los crackers para el uso de los warez incluye la alegada posibilidad de la protección de los derechos de autor y la percibida injusticia de no compartir la información con aquellos que no podrían obtenerlo de otra manera que a través de la compra.

Puesto que el software semilibre tiene poca aceptación y es muy ambiguo no se considerará como una posibilidad a estudio. Se ha detallado por motivos meramente informativos.

3.2. Comparativa entre Software Libre y Propietario

Ventajas y desventajas del software libre.

El software libre presenta una serie de ventajas sobre el software propietario por los derechos que otorga a sus usuarios. Algunas de estas ventajas pueden ser más apreciadas por los usuarios particulares, otras por las empresas, y otras por las administraciones públicas. Principales ventajas:

� Bajo costo de adquisición y libre uso. El software, como mercadería, por lo general no está a la venta. Lo que el usuario adquiere, a través de una erogación monetaria o sin ella, es una licencia respecto de los usos que puede dar a los programas en cuestión. El software no sólo cuesta un precio de adquisición de licencia. También cuesta mantenerlo, operarlo, ajustarlo. Es importante para el usuario el poder mantener estos costos bajo control, pues de lo contrario puede llegar a verse impedido de llevar a cabo sus metas, a fuerza de costes no planificados. El usuario que adquiere software libre lo hace sin ningún coste monetario o a muy bajo y ofrece un conjunto de recursos muy amplios. Cualquier persona con un ordenador y una conexión a Internet puede utilizar un software libre. Para la mayoría de usuarios individuales el software libre es una opción atractiva por las libertades que garantiza sin necesidad de verse agobiados por el precio. Sin embargo, en el caso de empresas y la Administración Pública, el costo del software es un factor importante y a veces determinante en la elección de nuevos sistemas informáticos. Cuando se analiza el precio de una solución tecnológica se suele hablar del TCO (Total Cost of Ownership), es decir, del coste total de la propiedad que tiene una determinada solución de software. Este concepto fue inventado por el Gartner Group en 1987 como herramienta de análisis exhaustiva de los costos de una solución de mercado y se convirtió en un estándar. En análisis refleja el costo del programa, la ayuda, y el mantenimiento tecnológico de la solución. Si partimos de la base que el software libre prácticamente carece de costo de licencia y por lo tanto, esta parte del presupuesto se puede invertir para mejores fines: mejorar la adaptación de los programas y el desarrollo tecnológico del

Page 5: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 34

software. La gran mayoría del software libre tiene como postulado la determinación de que el usuario no es un iletrado computacional. Parte del hecho de que confía en los conocimientos y habilidad del usuario para lograr su objetivo. Estos derechos típicamente no están disponibles con el software propietario. Usualmente en el software propietario hay que pagar una “licencia de uso” al creador (como el pago de derechos por el uso de una patente) y se está sujeto a las condiciones del fabricante. Normalmente estas condiciones no otorgan ningún derecho al usuario final. Los derechos mencionados anteriormente tienen una serie de efectos colaterales sobre el Software:

� Tiende a ser muy eficiente (porque mucha gente lo optimiza, mejora). � Tiende a ser muy robusto (mucha gente *puede* arreglarlo, no

solamente el creador o la compañía que lo produce). Mucha gente tiende a contribuir, porque es en el interés de todos mejorar esta base común.

� Tiende a ser muy diverso: la gente que contribuye tiene muchas necesidades diferentes y esto hace que el software esté adaptado a una cantidad más grande de problemas.

El éxito del software libre se debe en su mayor parte a Internet. Internet ha permitido que las personas interesadas en los varios componentes del software libre se pongan fácilmente en contacto con otras. Internet de esta manera actúa como un catalizador que acelera el desarrollo y sintetiza el conocimiento en áreas muy específicas. Hay diferentes motivaciones que impulsan a los contribuidores y desarrolladores a trabajar en el software libre, las más importantes son:

� El deseo de crear nuevo software. � El deseo de crear software más robusto. � La posibilidad de estar en control del software. Esto es importante para

aplicaciones de misión crítica donde es imperante tener un control total sobre posibles problemas en cualquier punto.

� Crear aplicaciones de bajo costo. � Reutilización del conocimiento: Esto permite que la gente reutilice el

conocimiento que se ha sintetizado en el software. En vez de empezar siempre desde cero (que es el caso de la industria de software actual) siempre se puede empezar un proyecto desde un fundamento establecido. Esto es equivalente a la manera en la que la ciencia se desarrolla: no se parte de cero, se parte de los descubrimientos previos y se innova sobre el conocimiento que ya se tiene.

� La posibilidad de adaptar el software a sus necesidades. � Aprender alguna técnica de programación.

� Innovación tecnológica. El software libre, tiene como objetivo principal

compartir la información, trabajando de manera cooperativa. Este es principalmente el modelo sobre el que la humanidad ha innovado y avanzado. La ideología de los defensores del software libre, es que el conocimiento le pertenece a la humanidad, sin hacer distingos. Por lo tanto, los usuarios tienen un destacado papel al influir decisivamente en la dirección hacia donde evolucionan los programas: votando los errores que quieren que sean corregidos, proponiendo nueva funcionalidad al programa, o contribuyendo ellos mismos en el desarrollo del software.

� Requisitos de hardware menores y durabilidad de las soluciones. Aunque

resulta imposible generalizar, si existen casos documentados que demuestran que las soluciones de software libre tienen unos requisitos de hardware menor, y por lo tanto son más baratas de implementar. Por

Page 6: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 35

ejemplo, los sistemas Linux que actúan de servidores pueden ser utilizados sin la interfaz gráfica, con la consecuente reducción de requisitos de hardware necesarios. También es importante destacar que en el software propietario el autor puede decidir en un momento dado no continuar el proyecto para una cierta plataforma, para un hardware que considera antiguo, o descontinuar el soporte para una versión de su software. En las aplicaciones de software libre, estas decisiones no pueden ser tomadas por una empresa o individuo sino por toda una comunidad, con diferentes intereses. Lo que se traduce en un mejor soporte - de manera general- para las versiones antiguas de software y de plataformas de hardware o software más minoritarias.

� Escrutinio público. El modelo de desarrollo de software libre sigue un método

a través de la cual trabajan de forma cooperativa los programadores que en gran parte son voluntarios y trabajan coordinadamente en Internet. Lógicamente, el código fuente del programa está a la vista de todo el mundo, y son frecuentes los casos en que se reportan errores que alguien ha descubierto leyendo o trabajando con ese código. El proceso de revisión pública al que está sometido el desarrollo del software libre imprime un gran dinamismo al proceso de corrección de errores. Los usuarios del programa de todo del mundo, gracias a que disponen del código fuente de dicho programa, pueden detectar sus posibles errores, corregirlos y contribuir a su desarrollo con sus mejoras. Son comunes los casos en que un error de seguridad en Linux se hace público y con él la solución al mismo. Con el software propietario la solución de los errores no llega hasta que el fabricante del programa puede asignar los recursos necesarios para solventar el problema y publicar la solución.

� Independencia del proveedor. El software libre garantiza una independencia

con respecto al proveedor gracias a la disponibilidad del código fuente. Cualquier empresa o profesional, con los conocimientos adecuados, puede seguir ofreciendo desarrollo o servicios para nuestra aplicación. En el mundo del software propietario, sólo el desarrollador de la aplicación puede ofrecer todos los servicios, con el software libre, como su denominación lo indica, su uso es libre: todo aquel que lo tiene en su poder puede usarlo cuantas veces quiera, en cuantas máquinas quiera, a los fines que quiera. De esta manera, utilizándolo, el usuario se libera de toda dependencia de un proveedor único, y puede administrar su crecimiento y operación con total autonomía, sin temor de costos ocultos ni extorsiones. Uno de los grandes problemas en la industria del software propietario es la dependencia que se crea entre el fabricante y el cliente. Este hecho se acentúa con especial gravedad cuando el fabricante no entrega el código fuente, ya que inevitablemente el cliente queda atado a él para nuevas versiones y, en general, para cualquier mejora que necesite. Si el programa usa un formato de almacenamiento estándar, entonces el usuario puede estar seguro de que en el futuro podrá seguir descifrando la información. Si, por el contrario, los datos se almacenan en un formato secreto, el usuario queda atrapado en un determinado proveedor, que es el único que puede ofrecer alguna garantía de acceso a ellos. A menudo los proveedores de software propietario se ven obligados a dejar de fabricar un producto por un cambio drástico de las condiciones del mercado, o simplemente porque consideran que ya no podrán rentabilizar la inversión. Disponiendo del código fuente, cualquier programador puede continuar su desarrollo y sus actualizaciones hasta que el cliente decida que es el momento adecuado para migrar a un nuevo sistema informático.

Page 7: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 36

� Industria local. Si el usuario está habilitado para ejecutar un programa, pero no para inspeccionarlo ni modificarlo, entonces no puede aprender de él, se vuelve dependiente de una tecnología que no sólo no comprende sino que le está expresamente vedada. Los profesionales de su entorno, que podrían ayudarlo a alcanzar sus metas, están igualmente y no es posible arreglarlo. Si bien es cierto que no existen aún soluciones libres para todas las necesidades de los usuarios; tampoco existen soluciones propietarias para todas estas necesidades. En aquellos casos en que la solución libre no existe, hay que desarrollarla, lo que significa esperar a que alguien más tropiece con la necesidad y lo desarrolle, o desarrollarlo uno mismo (o lo que es igual, pagar para que alguien lo desarrolle). La diferencia está en que en aquellos casos en que sí hay una solución libre disponible, el usuario puede utilizarla inmediatamente y sin reparos de ningún tipo, mientras que con las soluciones propietarias siempre tiene que pagar, y lo que obtiene a cambio es una “solución” cerrada y secreta, en vez de una herramienta que le permita crecer y operar con seguridad y libertad.

� Adaptación del software. El software propietario habitualmente se vende en

forma de paquete estándar, que muchas veces no se adapta a las necesidades específicas de empresas y administraciones. Una gran parte de la industria del software se basa en desarrollar proyectos donde se requiere software personalizado. El software libre permite personalizar, gracias al hecho de que disponemos del código fuente, los programas tanto como sea necesario hasta que cubran exactamente nuestra necesidad. La personalización es un área muy importante en que el software libre puede responder mucho mejor que el software de propiedad a unos costos mucho más razonables. Un gran porcentaje de uso de software en los países es de uso interno para empresas y la las dependencias de la administración pública, que requiere un alto grado de personalización y donde el software puede proporcionar desarrollos más económicos. Una de las ventajas del uso de software libre en las dependencias de la administración pública.

� Software y Estado. El Estado, por su envergadura y por su papel de

administrador de los bienes comunes, es particularmente vulnerable a los riesgos del software propietario, a la vez que está en una posición particularmente estratégica para beneficiarse con las ventajas del software libre, y también para contribuir a su desarrollo. Si para el sector privado adquirir software libre puede resultar conveniente, pensamos que para el Estado se debe volver una necesidad. El Estado administra información pública y privada acerca de los ciudadanos, y simultáneamente propiedad de los ciudadanos. Desde el punto de vista social y estratégico consideramos necesario el uso de software libre, como manera más factible de garantizar no sólo la democratización del acceso a la información y los sistemas del Estado, sino también la competitividad de la industria local de software, potencial fuente de trabajo de altísimo valor agregado.

Las desventajas del software libre son:

� La curva de aprendizaje es mayor. Si ponemos a dos personas que nunca han tocado un ordenador, probablemente tardaran lo mismo en aprender a usar software propietario por ejemplo de Microsoft, que software libre como Gnome o KDE; pero si antes los usuarios ya usaron software propietario generalmente tarda más en aprender a usar un software libre.

� El software libre no tiene garantía proveniente del autor.

Page 8: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 37

� Los contratos de software propietario no se hacen responsables por daños económicos, y de otros tipos por el uso de sus programas. El software libre se adquiere y se vende “AS IS” (tal cual) sin garantías explicitas del fabricante, sin embargo, puede haber garantías específicas para situaciones muy concretas.

� Se necesita dedicar recursos a la reparación de errores. Sin embargo en el

software propietario es imposible reparar errores, hay que esperar a que saquen a la venta otra versión.

� No existen compañías únicas que respalden toda la tecnología. � Las interfaces gráficas de usuario (GUI) la multimedia apenas se están

estabilizando. Aunque hay un número cada vez mayor de usuarios que aseguran que las interfaces gráficas más populares en el software libre (KDE, GNOME y el manejador de ventanas WindowMaker) son ya lo suficientemente estables para el uso cotidiano y lo suficientemente amigables para los neófitos de la informática.

� La mayoría de la configuración de hardware no es intuitiva. Se requieren

conocimientos previos acerca del funcionamiento del sistema operativo y fundamentos del equipo a conectar para lograr un funcionamiento adecuado. Sin embargo la documentación referente a la configuración del hardware es tan explícita y detallada que permite al usuario neófito profundizar en el conocimiento de su hardware en muy pocas horas y una vez teniendo ese conocimiento la configuración se vuelve trivial.

� Únicamente los proyectos importantes y de trayectoria tienen buen soporte,

tanto de los desarrolladores como de los usuarios. Sin embargo existen muchos proyectos más pequeños y recientes que carecen del compromiso necesario por parte de sus usuarios o desarrolladores para que sean implementados de manera confiable. Estos proyectos importantes que tienen un excelente soporte cubren más del 90% de las necesidades de cómputo del usuario promedio.

� El usuario debe tener nociones de programación. La administración del

sistema recae mucho en la automatización de tareas y esto se logra utilizando, en muchas ocasiones, lenguajes de guiones (perl, python, shell, etc). Sin embargo, existen en la actualidad muchas herramientas visuales que permiten al usuario no técnico llevar a cabo tareas de configuración del sistema de una manera gráfica muy sencilla sin la necesidad de conocimientos de programación.

� En sistemas con acceso a Internet, se deben de monitorear constantemente

las correcciones de errores de todos los programas que contengan dichos sistemas, ya que son fuentes potenciales de intrusión. En el software propietario también se deben de monitorear constantemente las correcciones de errores de todos los programas y además es imposible reparar las vulnerabilidades (que en su mayoría son reparaciones triviales) por uno mismo sino que hay que esperar a que la compañía fabricante libere la actualización y en algunos casos hay que pagar dinero extra por obtener esta.

� La diversidad de distribuciones, métodos de empaquetamiento, licencias de

uso, herramientas con un mismo fin, etc., pueden crear confusión en cierto número de personas. Hay quienes ven esto como una fortaleza porque se pueden encontrar desde distribuciones especializadas en sistemas

Page 9: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 38

embebidos con muchas limitantes de almacenamiento y dispositivos periféricos de uso especializado hasta distribuciones optimizadas para su uso en servidores de alto rendimiento con varios procesadores y gran capacidad de almacenamiento; pasando por las distribuciones diseñadas para su uso en computadoras de escritorio y entre las cuales se encuentran las diseñadas para el usuario neófito que son muy fáciles de instalar y utilizar y las diseñadas para el usuario avanzado con todas las herramientas necesarias para explotar el software libre en todo su potencial. Cabe notar que la posibilidad de crear distribuciones completamente a la medida para atacar situaciones muy específicas es una ventaja que muy pocas marcas de software propietario pueden ofrecer y que Microsoft ha sido completamente incapaz de hacer.

Ventajas y desventajas del software propietario

El software propietario ofrece gran cantidad de ventajas, sobre todo relacionadas con la calidad del servicio ofrecido. Las compañías productoras de software propietario por lo general tienen departamentos de control de calidad que llevan a cabo muchas pruebas sobre el software que producen. Además ofrece otras ventajas como:

� Recursos a la investigación. Se destina una parte importante de los recursos

a la investigación sobre los usos del producto. � Personal altamente capacitado. Se tienen contratados algunos

programadores muy capaces y con mucha experiencia. � Uso común por los usuarios. El software propietario de marca conocida ha

sido usado por muchas personas y es relativamente fácil encontrar a alguien que lo sepa usar.

� Software para aplicaciones muy específicas. Existe software propietario

diseñado para aplicaciones muy específicas que no existe en ningún otro lado más que con la compañía que lo produce.

� Difusión de publicaciones acerca del uso y aplicación del software. Existe

gran cantidad de publicaciones, ampliamente difundidas, que documentan y facilitan el uso de las tecnologías provistas por compañías de software propietario, aunque el número de publicaciones orientadas al software libre va en aumento.

Así mismo, las desventajas que se le encuentran residen precisamente en las ventajas de su gran competidor el software libres. Todos estos inconvenientes se describen a continuación:

� Cursos de aprendizaje costosos. Es difícil aprender a utilizar eficientemente el software propietario sin haber asistido a costosos cursos de capacitación.

� Secreto del código fuente. El funcionamiento del software propietario es un

secreto que guarda celosamente la compañía que lo produce. En muchos casos resulta riesgosa la utilización de un componente que es como una caja negra, cuyo funcionamiento se desconoce y cuyos resultados son impredecibles. En otros casos es imposible encontrar la causa de un resultado erróneo, producido por un componente cuyo funcionamiento se desconoce.

Page 10: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 39

� Soporte técnico ineficiente. En la mayoría de los casos el soporte técnico es insuficiente o tarda demasiado tiempo en ofrecer una respuesta satisfactoria.

� Ilegal o costosa la adaptación de un módulo del software a necesidades particulares.

� Es ilegal extender una pieza de software propietario para adaptarla a las

necesidades particulares de un problema específico. En caso de que sea vitalmente necesaria tal modificación, es necesario pagar una elevada suma de dinero a la compañía fabricante, para que sea ésta quien lleve a cabo la modificación a su propio ritmo de trabajo y sujeto a su calendario de proyectos.

� Derecho exclusivo de innovación. La innovación es derecho exclusivo de la

compañía fabricante. Si alguien tiene una idea innovadora con respecto a una aplicación propietaria, tiene que elegir entre venderle la idea a la compañía dueña de la aplicación o escribir desde cero su propia versión de una aplicación equivalente, para una vez logrado esto, poder aplicar su idea innovadora.

� Ilegalidad de copias sin licencia para el efecto. Es ilegal hacer copias del

software propietario sin antes haber contratado las licencias necesarias. � Imposibilidad de compartir. Si una dependencia de gobierno tiene

funcionando exitosamente un sistema dependiente de tecnología propietaria no lo puede compartir con otras dependencias a menos que cada una de éstas contrate todas las licencias necesarias.

� Quedar sin soporte técnico. Si la compañía fabricante del software

propietario se va a la banca rota el soporte técnico desaparece, la posibilidad de en un futuro tener versiones mejoradas de dicho software desaparece y la posibilidad de corregir los errores de dicho software también desaparece. Los clientes que contrataron licencias para el uso de ese software quedan completamente abandonados a su propia suerte.

� Descontinuación de una línea de software. Si una compañía fabricante de

software es comprada por otra más poderosa, es probable que esa línea de software quede descontinuada y nunca más en la vida vuelva a tener una modificación.

� Dependencia a proveedores. En la mayoría de los casos el gobierno se hace

dependiente de un solo proveedor.

Conclusión

Una vez analizadas las ventajas y desventajas de los dos grandes tipos de software, se decidirá cuál por sus características se adapta mejor a la solución requerida para el presente trabajo. Estudiando la topología actual del escenario donde se va a realizar el trabajo y una vez analizadas las necesidades que se requieren para ofrecer una solución satisfactoria, se opta por el uso del software libre por varios motivos:

� El presupuesto del que se dispone comprende tanto las licencias como los

equipos necesarios para el despliegue de la red. El coste nulo del uso del software libre permite libertad para reducir el coste de este proyecto y

Page 11: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 40

destinar el dinero necesario a equipos que ofrezcan unos recursos que satisfagan las necesidades del diseño adaptado a este escenario concreto.

� Independencia del proveedor y adaptación, que permiten primero la modificación del software según necesidades específicas del escenario y del momento concreto, por ejemplo una etapa donde el escenario se híbrido entre la red actual y la red VoIP diseñada como paso intermedio a la migración completa a VoIP. Además el software libre permite la independencia del mantenimiento del proveedor, permitiendo ofrecer una solución rápida ante fallo y pérdida de servicio modificando el código fuente.

� Puede crecer sin límite: un sistema puede crecer, adaptándose sin

problemas a las necesidades de crecimiento de la empresa. Desde un entorno pequeño es posible aumentar la capacidad y posibilidades sin límite, evitando situaciones como las que hacen necesario este diseño para reemplazar la antigua centralita obsoleta

A continuación se detallan las diferentes soluciones de software libre que se ofertan en el mercado.

3.3. Soluciones para VoIP en Software Libre

Como se ha visto anteriormente, el software libre es gratuito y ampliable, se puede descargar gratuitamente e incluso obtener el código fuente para modificarlo e introducir mejoras que se adapten a las necesidades concretas del escenario para el que se está trabajando. El código abierto se puede encontrar en muchas formas, tanto sistemas operativos (Linux), como servidor Web (Apache) y MySQL (motor BBDD).

Para este diseño, se requiere una aplicación de código abierto que funcione principalmente como centralita y gateway. En la se muestra un breve resumen de la oferta de software libre en el mercado que se detalla a continuación:

� Asterisk: programa de software libre (bajo licencia GPL) que proporciona funcionalidades de una central telefónica (PBX, Private Branch Exchange). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto básicos como primarios. Soporta distintos protocolos como H.323, SIP, IAX… Asterisk incluye muchas características anteriormente sólo disponibles en costosos sistemas propietarios PBX como buzón de voz, conferencias, IVR, distribución automática de llamadas…

� SipExchange: es un softswitch de código abierto que proporciona los

servicios estándar SIP como la ubicación, representación y presencia. Utilizando la aplicación SipExchange, proveedores de servicios pueden ofrecer servicios de VoIP de teléfono a sus abonados, así como otros servicios basados en voz, video y mensajería instantánea. SipExchange admite muchos de los abonados estándar de características que ofrecen las centrales telefónicas tradicionales y PBX. Además, SipExchange soportes externos capacidades de control de llamada mediante la cual los proveedores de servicio y desarrolladores de software pueden crear nuevas funciones y servicios con rapidez e introducirlas en la aplicación

Page 12: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 41

SipExchange.SipExchange funciona con teléfonos SIP estándar que se adhieren a los estándares de protocolo SIP.

� YATE (Yet Another Telephony Engine): es un motor de telefonía de última generación, actualmente se centra en Voz sobre Protocolo de Internet (VoIP) y PSTN, su poder reside en su capacidad para poder ser ampliado. Voz, vídeo, datos y mensajería instantánea pueden se unifican bajo este motor de enrutamiento flexible. Yates, maximizando la eficiencia y minimizar los costes de comunicaciones de infraestructura para las empresas. El software está escrito en C + + y es compatible con secuencias de comandos en varios lenguajes de programación (tales como PHP, Python y Perl bibliotecas), e incluso un shell de Unix. Se han desarrollado y puesto a disposición del desarrollo de esta aplicación bibliotecas PHP, Python y Perl con el fin de facilitar el desarrollo de funcionalidades externas para Yate. Es fácilmente extensible y está bajo licencia GPL.

� SER (SIP express Router): Es un servidor SIP capaz de actuar como un

proxy SIP, un registrar SIP o un servidor de redireccionamiento. Presenta un rendimiento muy eficaz, se puede configurar y modificar ya que es de código libre. SER ofrece servicios como Gateway SMS, Gateway de SIMPLE2Jabber, gestión de cuentas y autorización de acceso mediante RADIUS, supervisión del estado del servidor, seguridad, etc. Y además puede ser configurado vía Web utilizando bases de datos. Su funcionamiento le permite gestionar de forma eficaz sucesos como cortes de elementos de red, ataques, reinicios y crecimiento rápido de usuarios. Permite manejar simultáneamente Ipv4 e Ipv6 de manera transparente proporcionando conectividad entre ambos. Su funcionalidad y gestión se vuelve más fácil y recomendable cuando se usan los módulos de MySQL que permiten tener a los usuarios almacenados en una base de datos para su gestión.

� FreeSWITCH: Es una plataforma de comunicaciones de software libre / código abierto para la creación de productos de voz, chat y video. El cual está disponible bajo la Licencia Pública de Mozilla. La biblioteca principal, libfreeswitch, puede ser embebida en programas externos así como en aplicaciones independientes. FreeSWITCH es una aplicación modular y los módulos pueden extender la funcionalidad de FreeSWITCH. Además, la capa de abstracción evita a que los módulos no dependan entre sí. La meta es asegurar que el núcleo no dependa de los módulos para ser iniciado y que los módulos no dependan de otros módulos para ser cargados. FreeSWITCH incluye varios módulos que proveen aplicaciones por defecto como conferencias, XML-RPC para controlar llamadas en tiempo real, Respuesta de Voz Interactiva (IVR), Conversor texto-voz / Reconocimiento Automático de Voz (CTV/RAH), Red Telefónica Conmutada (RTC), la capacidad de interconexión con circuitos analógicos y digitales, protocolos Voz sobre IP como SIP, SCCP, H.323, XMPP, Google Talk, entre otros. El manejo de llamadas puede realizarse a través del Dialplan XML o mediante la interfaz Event Socket, la cual es una conexión socket al servidor FreeSWITCH. Cualquier lenguaje de programación o software capaz de comunicarse vía socket puede ser usado para controlar la actividad del servidor FreeSWITCH. FreeSWITCH también viene con una biblioteca para el Event Socket (ESL) o "Envoltorio de ESL" para Erlang, JavaScript, Lua, Perl, PHP, Python y Ruby. Esta biblioteca se encarga de abstraer los aspectos triviales de la programación con sockets.

Page 13: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 42

Figura 4. Proveedores de Telefonía. Software Libre

Asterisk es la mejor elección. Puede trabajar con líneas analógicas, RDSI, VoIP… así como con terminales analógicos y digitales, terminales SIP, SoftPhones,… de forma independiente o combinada. Asterisk puede dar servicio desde oficinas de pocos empleados hasta grandes sedes de varios cientos de usuarios, ofreciendo cualquier servicio asociado a la telefonía que pueda imaginar: operadora virtual, buzón de voz, parking de llamadas, grupos de llamadas, llamada en espera, envío de los mensajes del buzón de voz al email, salas de conferencia, distribución automática de llamadas entrantes, monitorización de llamadas, videoconferencia, grabación de llamadas…

Además presenta una característica que solventa uno de los principales inconvenientes del código libre, está perfectamente documentada tanto mediante libros como foros.

Hasta ahora, se ha obtenido que en el diseño de una solución que cubra las necesidades para la implantación en Persan de una red VoIP aprovechando la infraestructura actual, se va emplear una solución Open Source bajo licencia GPL7, Asterisk, que permite trabajar con el protocolo SIP (además de con otros muchos que permitirán integrar nuestra red actual con la red ya existente).

7 La Licencia Pública General de GNU o más conocida por su nombre en inglés GNU General Public License o simplemente sus siglas del inglés GNU GPL, es una licencia creada por la Free Software Foundation en 1989 (la primera versión), y está orientada principalmente a proteger la libre distribución, modificación y uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios. Existen varias licencias "hermanas" de la GPL, como la licencia de documentación libre de GNU (GFDL), la Open Audio License, para trabajos musicales, etcétera, y otras menos restrictivas, como la MGPL, o la LGPL (Lesser General Publical License, antes Library General Publical License), que permiten el enlace dinámico de aplicaciones libres a aplicaciones no libres.

Page 14: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 43

3.4. Asterisk. Definición y Características Generales. Asterisk es una aplicación con licencia GPL (General Publical License, código abierto) capaz de simular entre otras, las funciones de una PBX (Private Branch Exchange). Este proyecto fue desarrollado por el ingeniero Mark Spencer, miembro fundador de la compañía Digium, principal desarrolladora de Asterisk. Originalmente desarrollado para el sistema operativo GNU/Linux, Asterisk actualmente también se distribuye en versiones para los sistemas operativos BSD, MacOSX, Solaris y Microsoft Windows, aunque la plataforma nativa (GNU/Linux) es la mejor soportada de todas. Este diseño permite poner en funcionamiento una PBX Asterisk en equipos hardware de propósito general (Arquitectura PC), lo que le ha llevado a ser líder mundial como motor de telefonía no propietaria y herramientas para su uso. Además de la correspondiente reducción de costes, ofrece una flexibilidad sin precedentes en el mundo de las comunicaciones ya que soporta gran variedad de protocolos de comunicaciones VoIP y es compatible con la mayor parte de fabricantes del hardware empleado para telefonía IP (teléfonos, adaptadores, routers…). Asterisk facilita tanto a desarrolladores como integradores la tarea de crear soluciones avanzadas en comunicaciones de forma gratuita. Otra de las características que lo hacen especialmente atractivo es la disponibilidad para descarga (es GPL) ofreciendo constantemente la posibilidad de versiones nuevas y mejoradas. Antes de remontarse a los orígenes y detallar la transformación que ha llevado a cabo Asterisk desde su creación, se ha considerado necesario indicar el punto exacto en el que se encuentra actualmente y cuales son las principales características de la actual versión estable. Esto ayudará a seguir y comprender más fácilmente la magnitud de la evolución de este software. A día de hoy, la versión estable de Asterisk es 1.6.2 compuesto por los siguientes módulos que se describen brevemente:

� Asterisk: Ficheros base del proyecto. Incluye el directorio ‘Sounds’ que aporta sonidos y frases en diferentes idiomas.

� Dahdi: Anteriormente conocido como ‘Zaptel’, es un driver utilizado por Asterisk para integrar el hardware de telefonía. Si se dispone de éstos, es necesario su uso así como cuando se dispone de servicios dependientes de fuentes de tiempo (sincronismo).

� Libpri: Es una librería que implementa en lenguaje C los protocolos de la especificación ISDN para primarios E1, T1 y J1 (Q.931 y Q.921). Se usa si disponemos de hardware telefónico digital ISDN.

� Asterisk-Addons: Complementos y añadidos del paquete Asterisk que por una u otra razón no se incluyen en el paquete básico de distribución como son MySQL, H.323, MP3... Es opcional.

Además, cada módulo cuenta con una versión estable y una versión de desarrollo. La forma de identificar las versiones se realiza mediante la utilización de tres números separados por un punto. Teniendo desde el inicio como primer número el uno, el segundo número indica la versión, mientras que el tercero muestra la revisión liberada. En las revisiones se llevan a cabo correcciones, pero no se incluyen nuevas funcionalidades. En las versiones de desarrollo el tercer valor

Page 15: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 44

siempre es un cero, seguido de la palabra "beta" y un número, para indicar la revisión. Para conocer tanto el origen como la evolución de Asterisk, así como curiosidades sobre su creación consultar el II Historia y evolución de Asterisk. Además de las características que se describirán a continuación, se profundiza sobre otras características de Asterisk como los interfaces con que se puede conectar en el Anexo II.

3.4.1. Funcionalidad Asterisk es hoy en día una de las soluciones de telecomunicaciones más poderosa, flexible y extensible que existe en el mercado. Todos estos méritos residen en el gran número de funciones que se pueden realizar a partir de este software. Es importante destacar que en la mayoría de los escenarios dotados de cierta complejidad donde se use Asterisk, estas funcionalidades no se usarán de forma independiente, sino que se intentará aprovechar en todo momento la riqueza de las soluciones que ofrece la combinación de las mismas. A continuación se detallan los dos principales fines a los que se puede destinar Asterisk, sin embargo, una de las cualidades más importantes de Asterisk reside en su modularidad, es decir, la funcionalidad a la que está destinada, estará determinada en su parte por los módulos y los paquetes que se le añadan.

Asterisk Como Centralita IP

Asterisk fue originalmente construido como un PBX (Private Branch Exchange) y hoy representa un asombroso 18% del mercado mundial de sistemas de telefonía empresarial. Una central telefónica privada (PBX) es un dispositivo que permite conectar sus terminales de forma independiente al proveedor de telefonía. De esta forma se consigue que todas las llamadas internas de una misma empresa sean conmutadas directamente sin necesidad de salir al exterior por la red pública de telefonía. El éxito de Asterisk como PBX reside simplemente en que ofrece los mismos servicios que las centrales hardware propietarias, con las ventajas derivadas del hecho que sea GPL. Algunas de esos servicios ofrecidos son:

1. Soporta canales digitales, análogos y de VOIP de una manera nativa y funcionalidades básicas sobre llamada como:

� Transferencia Ciega � Música en espera � Timbres Distin. � Pickup de llamadas � Llamada en espera � Conferencias � Buzón de Voz � Colas de llamadas � Colas con Prioridad � Caller ID en espera

2. Funcionalidades avanzadas como IVR, ACD, voicemail, conferencia…que se

detallan a continuación.

Page 16: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 45

Figura 5. Asterisk como IP-PBX

Asterisk Como voicemail

La aplicación de correo de voz integrado de Asterisk permite sustituir los sistemas de correo de voz propietarios heredados por soluciones mucho más baratas, flexibles y personalizadas. El correo de voz de Asterisk puede ser implementado como soporte básico del sistema o puede actuar como cliente a un sistema de mensajería, el almacenamiento de mensajes utilizando es IMAP8 u ODBC9. Asterisk IVR Respuesta de Voz Interactiva (IVR, Interactive Voice Response) en un sistema telefónico capaz de recibir una llamada e interactuar con el humano a través de grabaciones de voz y el reconocimiento de respuestas simples, como "sí", "no" u otras. Es un sistema automatizado orientado a entregar y/o capturar información a través del teléfono, permitiendo el acceso a servicios de información u otras operaciones. El modo de funcionamiento es muy sencillo, el usuario realiza una llamada a un número de teléfono, el sistema de audio respuesta contesta la llamada y le presenta al usuario una serie de acciones a realizar, esto se hace mediante mensajes (menús de opciones) previamente grabados en archivos de audio (por ejemplo "Presione uno para ventas, dos para administración"). El usuario elige la 8 Internet Message Access Protocol, o su acrónimo IMAP, es un protocolo de red de acceso a mensajes electrónicos almacenados

en un servidor. Mediante IMAP se puede tener acceso al correo electrónico desde cualquier equipo que tenga una conexión a

Internet.

9 Open Database Connectivity (ODBC) es un estándar de acceso a Bases de datos desarrollado por Microsoft Corporation, el

objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué Sistema Gestor de

Bases de Datos (DBMS por sus siglas en inglés) almacene los datos, ODBC logra esto al insertar una capa intermedia llamada

manejador de Bases de Datos, entre la aplicación y el DBMS, el propósito de esta capa es traducir las consultas de datos de la

aplicación en comandos que el DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben ser compatibles

con ODBC, esto es que la aplicación debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos.

Desde la versión 2.0 el estándar soporta SAG y SQL.

Page 17: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 46

opción a realizar introduciendo un número en el teclado del teléfono y navega por los diferentes menús hasta encontrar la información solicitada o que el sistema enruta la llamada al destinatario elegido. Permite a las empresas a ahorrar dinero y elimina las tareas manuales repetitivas. Asterisk facilita la construcción de aplicaciones de IVR que responden a la pulsación de determinadas teclas o la entrada de voz de la persona que llama. El apoyo de Asterisk para el acceso a datos de ODBC a través de HTTP hace que la integración del IVR y los almacenes de datos sea simple y fiable.

Asterisk Como ACD

Los distribuidores automáticos de llamadas (ACD, Automatic Call Distributor) es un proceso por el cual se distribuyen las llamadas que llegan a los sistemas de atención y teleoperadores y permiten a los centros de llamadas la gestión de miles de llamadas simultáneas, encaminarlas según en número entrante, el número marcado y otros factores. Un sistema ACD suelen costar mucho dinero y requiere una formación especializada para instalar y operar con él. Con Asterisk se puede construir un ACD de gran alcance con el único coste del servidor y los teléfonos.

Asterisk Como Gateway

Un gateway (puerta de enlace) es un dispositivo que permite interconectar redes con protocolos y arquitecturas diferentes a todos los niveles de comunicación. Su propósito es traducir la información del protocolo utilizado en una red, al protocolo usado en la red de destino. Asterisk ejercerá como pasarela de conexión de los equipos de teléfono heredados a los modernos sistemas de VoIP (Voice over IP) y servicios. A diferencia de las anteriores pasarelas monolíticas donde se englobaba en una sola estructura todas las funciones para la conversión de señales entre los códecs correspondientes, Asterisk es modular, es decir, se divide el trabajo en módulos y se les asigna a cada uno de ellos una función especifica, pudiendo añadir módulos acorde con nuestras necesidades especificas.

Figura 6. Asterisk como Gateway

Page 18: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 47

Asterisk soporta diferentes protocolos de comunicación, tanto de las nuevas redes VoIP como de la PSTN (Public Switched Telephone Network). Esto hace que sea una herramienta poderosa para construir pasarelas y convertidores de protocolo y permite a los desarrolladores construir nuevos sistemas telefónicos para migrar de forma gradual los sistemas existentes a las nuevas tecnologías. Llegados a este punto se considera apropiado recordar qué y qué no es Asterisk. Asterisk es:

� Centralita IP que trabaja con IVR, voicemail, y puede ofrecer servicio de conferencia

� Es una pasarela modular � Es multiprotocolo

Sin embargo, Asterisk no es una plataforma escalable de comunicaciones IP y no está enfocada al usuario y sobre todo, no es un servidor Proxy Sip. Un Proxy SIP maneja el control de llamadas en nombre de otros agentes de usuario UA y no suele mantener el estado durante una llamada, por lo que nunca es el punto final de una llamada. Asterisk, como un servidor, es un registro SIP y el servidor de ubicación y también actúa como un punto final user-agent (softphone). Si se trata de "controlar" o transmisión de una llamada desde un teléfono SIP a otro teléfono SIP, que actúa simplemente como un extremo de la UA a la llamada procedente de la pierna y luego crea una nueva llamada al teléfono de recepción. Por lo tanto, se mantiene "en el centro de la llamada," mantener el estado y el control, y, opcionalmente, de transición, cada extremo remoto. Los canales de audio (RTP) pueden ir directamente desde un teléfono a otro o puede ir a través de los medios de comunicación puente de Asterisk. Asterisk es "back-to-back user agent " (B2BUA), que es también coherente con el uso del término PBX. El B2BUA es una aplicación para controlar llamadas entre usuarios SIP y se diferencia de un Proxy SIP en que este únicamente gestiona el estado de una llamada cuando se realiza, mientras que el B2BUA mantiene el estado de las llamadas y las mantiene para conseguir información valiosa en determinados entornos como facturación, redireccionamiento de llamadas en caso de caída de un proveedor SIP, etc. Asterisk es mucho más que un B2BUA ya que no únicamente controla todo esto, si no que incluso puede llegar a realizar acciones que ni un Proxy SIP ni un B2BUA pueden realizar como: grabaciones de llamadas, sistemas de buzón de voz, reproducción de locuciones, ofrecer menús IVR, reproducir música en espera, y un larguísimo etc.

3.4.2. Arquitectura y estructuración Este software está formado por un núcleo principal encargado de gestionar todo el sistema PBX. Sus funcionales principales son:

� Interconectar de forma automática cada llamada ente los usuarios participantes teniendo en cuenta el tipo de protocolo utilizado por cada terminal.

� Lanzar los servicios de valor añadido cuando sean requeridos. � Traducir y adaptar los códecs a cada terminal involucrado en la

comunicación.

Page 19: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 48

� Gestionar el sistema para que funcione de forma óptima en diversas condiciones de carga.

Para realizar estas funciones, este núcleo se apoya de un conjunto de módulos que le dotan de una gran flexibilidad y de una total abstracción de los protocolos, códecs e interfaces utilizados en cada conexión. Destacan cuatro APIs (Application Programming Interface) utilizadas por el núcleo de Asterisk.

� Channel API: encargado de gestionar y extraer la información dinámica (protocolos, interfaces y códecs) de cada conexión ya sea VoIP, RDSI, PRI…

� Application API: contiene diferentes módulos encargados de ofrecer distintos servicios de valor añadido como conferencias, lista de directorios, buzón de mensajes, transmisión de datos en línea, y cualquier otra tarea que un sistema PBX podría llevar a cabo ahora o en el futuro ya que esta estructura modular facilita la incorporación de nuevos servicios.

� Codec Translator API: permite cargar los diferentes formatos de códec de audio usados para la compresión y codificación de la señal. Al igual que las aplicaciones, estos codecs están implementados como módulos independientes.

� File Format API: permite leer y escribir ficheros para el almacenamiento de información en el sistema de archivos como por ejemplo la grabación de una conversación.

Figura 7. Arquitectura Asterisk Además en la figura anterior se pueden observar una serie de elementos que maneja el núcleo interno. Algunos de ellos son:

� PBX Switching Core: El elemento esencial de Asterisk, por supuesto, es un sistema de conmutación (PBX), que conecta las llamadas entre los distintos usuarios y las tareas automatizadas. El núcleo de conmutación conecta de forma transparente llamadas que llegan a los interfaces hardware y software.

� Application Launcher: Lanza aplicaciones que realizan servicios tales como

correo de voz, reproducción de archivos y lista de directorios…

Page 20: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 49

� Codec Translator: Utiliza módulos de codecs para la codificación y decodificación de varios formatos de compresión de audio utilizados en telefonía. Existen una serie de codecs disponibles que tratan de satisfacer las diversas necesidades y lograr el mejor equilibrio entre calidad de audio y el uso de ancho de banda.

� Scheduler and I/O Manager: 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.

Con el uso de estas API, Asterisk logra una abstracción completa entre sus funciones básicas como un sistema de servidor PBX y las tecnologías variadas existentes (o en desarrollo) en el campo de la telefonía. La forma modular, es lo que permite integrar sin problemas a Asterisk tanto en la actualidad en práctica de telefonía de conmutación de hardware y la cada vez mayor de paquetes de voz tecnologías emergentes de hoy. La capacidad de carga de módulos permite Asterisk para apoyar tanto a los códecs necesarios para la extremadamente compacta de paquetes de voz sobre conexiones lentas, como un módem de teléfono sin dejar de ofrecer alta calidad de audio a través de conexiones menos restringida. La aplicación de la API prevé para un uso flexible de módulos de aplicación para llevar a cabo cualquier función de la demanda de forma flexible, y permite el libre desarrollo de nuevas aplicaciones para satisfacer necesidades y situaciones. Además, la carga de todas las aplicaciones en forma de módulos permite un sistema flexible, proporcionando a los administradores la capacidad de diseñar la ruta más adecuada para las llamadas en el sistema PBX y modificar las rutas llame para adaptarse a las cambiantes necesidades de comunicación. A continuación se expone un ejemplo para entrar más a fondo en el esquema mostrado en la figura. Se parte de la idea que previamente se han configurado dos terminales IP, uno utiliza el protocolo SIP y codifica la señal en iLBC mientras que la segunda es un terminal IAX que utiliza el códec G.726. Si el terminal SIP se quiere comunicar con el dispositivo IAX, por ejemplo, cuando la centralita reciba la señal de llamada, antes de interconectar los dos canales consultará qué interfaz, protocolo y códec utiliza el emisor y cuáles necesita el receptor. De esta forma el núcleo una vez interconecta internamente ambas interfaces, mediante Channel API y Codec Translator API será capaz de adaptar la información en tiempo real para que pueda ser interpretada por cada terminal. Podría ser que, en el caso que el receptor no esté disponible, se ejecutara el buzón de voz a través de la Application API. Para poder almacenar el mensaje de voz en la centralita en un formato de audio, como WAVE o MP3, Asterisk se servirá de las funciones de File Format API.

Figura 8. Organización Asterisk El comportamiento del núcleo variará dependiendo de las necesidades de cada cliente. Para cambiar su configuración, Asterisk ofrece un conjunto de archivos de texto llamados scripts escritos en un lenguaje especial que sólo puede ser

Page 21: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 50

interpretado por Asterisk y le indica al núcleo aspectos como el número y tipo de dispositivos conectados a la centralita, los códecs que utiliza cada terminal, los servicios de valor añadido de que se quiere disponer, etc. También incluye una base de datos Berckeley para facilitar las labores de gestión de la centralita desde el dialplan (script de configuración principal). Además, Asterisk incorpora una consola CLI (Command Line Interface) que permite controlar y comunicarse con el demonio y un par de interfaces (AGI: Asterisk Gateway Interface y AMI: Asterisk Management Interface) que permiten añadir aplicaciones externas programadas en C, C++, Java, Perl o en cualquier otro lenguaje de programación soportado por Linux. Asterisk puede actuar de servidor y gateway. Para conectar esta IPBX a la red PSTN, a la RDSI o bien conectarle teléfonos analógicos no basta con un simple módem sino que son necesarias unas tarjetas telefónicas con puertos FXO, BRI/PRI o FXS respectivamente (de estos puertos se hablará más tarde). La comunicación entre el servidor y las tarjetas se efectúa a través de otro módulo externo, llamado tradicionalmente zaptel (en la versión usada 1.6.1 se denomina dahdi), que actúa como controlador de la tarjeta. Además si el acceso al exterior se realiza mediante puertos primarios de una red RDSI se necesita un segundo módulo complementario llamado libpri. En la Figura 9 se resume la filosofía de Asterisk como una aplicación software que requiere de dispositivos hardware en los que aplicar su funcionalidad.

Figura 9. Componentes de Asterisk En el Anexo II aparecen detallados además de los protocolos de señalización soportados por Asterisk, los interfaces posibles de interconexión así como los códecs de audio y vídeo soportados por el mismo. En cuanto a la estructura de Asterisk, esta compuesto por un conjunto de ficheros que serán configurados por el usuario del software para obtener del mismo la funcionalidad deseada. Estos ficheros distribuidos en distintos directorios que se encargan de configurar cada uno de los módulos que forman Asterisk.

Page 22: Capítulo 3: Descripción de la Solución Asteriskbibing.us.es/proyectos/abreproy/11969/fichero/Memoria%2F05... · MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP

MIGRACIÓN DE UN SISTEMA DE TELEFONÍA EN PRODUCCIÓN HACIA VOIP CON ASTERISK 51

Los directorios son:

� /etc/asterisk: directorio donde se almacenan los archivos de configuración que controlan Asterisk.

� /usr/lib/asterisk/modules: directorio donde se encuentran los modulos compilados en extension .so.

� /usr/share/asterisk: directorio donde se guardan las claves RSA, los archivos para reproducir de musica en espera, los script AGI en una instalación desde paquetera para distribuciones Debian y Ubuntu.

� /var/lib/asterisk: directorio donde se guardan las claves, la música en espera y los sonidos del sistema en una instalacion desde las fuentes.

� /var/spool/asterisk: directorio donde se guardan las conferencias salvadas por MeetMe(), los textos que son leídos por Dictate() y los mensajes de voz si no utilizamos una BD.

� /var/run/asterisk: directorio donde se encuentra el archivo PID3 de Asterisk que se esta ejecutando.

� /var/log/asterisk: en este directorio se almacenan los logs y noticaciones realizado mediante por ejemplo la aplicación Verbose() o NoOp() se encuentran aquí, aunque también son dirigidos al demonio syslog.

En estos directorios se encuentran los ficheros con los que se programará el funcionamiento específico de Asterisk como centralita, gateway… Los archivos destinados a tal fin son los almacenados en /etc/asterisk y son:

Figura 10. Directorios Asterisk

Los archivos más importantes son:

� sip.conf: Se definen los usuarios Sip correspondientes a cada una de las extensiones.

� extensions.conf: Se desarrolla el dialplan o plan de marcado que se encargará de gestionar todas las llamadas que se realicen, así como de establecer los privilegios de los que dispondrán cada uno de los usuarios. En el

Se ha hecho mención especial a estos ficheros puesto que son los que necesariamente se deberían configurar para el diseño de un escenario VoIP sencillo (la primera maqueta). Además se profundizará en todos aquellos archivos que sea necesario modificar para obtener la solución adoptada en este trabajo.