free switch

Click here to load reader

Post on 24-Jul-2015

419 views

Category:

Documents

3 download

Embed Size (px)

TRANSCRIPT

El primer multiplataforma escalable GRATIS Multi-Protocolo de conmutacin por software!

FreeSWITCH es una solucin escalable de cdigo abierto multiplataforma plataforma de telefona diseado para la ruta y la interconexin de protocolos populares de comunicacin con audio, vdeo, texto o cualquier otra forma de medios de comunicacin. Fue creado en 2006 para llenar el vaco dejado por las soluciones propietarias comerciales. FreeSWITCH tambin proporciona una plataforma de telefona estable, en el que muchas aplicaciones de telefona se pueden desarrollar utilizando una amplia gama de herramientas gratuitas.

Cmo se compara con FreeSWITCH Asterisk?Cmo se compara con FreeSWITCH Asterisk? Por qu empezar de nuevo con una nueva aplicacin? Estas son preguntas que he estado escuchando mucho ltimamente, as que decidi que se lo explique a todos los profesionales de la telefona y aficionados que estn interesados en saber cmo las dos aplicaciones de comparacin y contraste entre s. Tengo una gran cantidad de experiencia con las dos aplicaciones con cerca de 3 aos de hacer el desarrollo de un asterisco en mi haber, y as, ser el autor de FreeSWITCH. En primer lugar voy a dar un poco de historia y mi experiencia con Asterisk, entonces voy a tratar de explicar las motivaciones y el enfoque diferente que tom con FreeSWITCH.

La primera vez que trat de Asterisk en el 2003. Fue pre siguen 1,0 y VoIP todava era muy nuevo para m. He descargado e instalado, y en unos minutos me hizo cosquillas rosa sobre el emisor de tono de llamada desde el telfono conectado a la parte de atrs de mi equipo. Pas los prximos das a jugar con mi plan de marcado y devanando los sesos para pensar en cosas interesantes que podra hacer con un telfono que estaba conectado a un PC con Linux. Puesto que yo haba hecho una gran cantidad de desarrollo web en mi vida pasada tuve todo tipo de ideas ingeniosas, como que coincida con el identificador de llamadas al nmero de cuenta del cliente y tratando de adivinar por qu se les llama, etc Tambin quera seguir adelante en mi lnea plan basado en la coincidencia de patrn y empez a hackear mi primer mdulo. Antes de darme cuenta que haba hecho el primer corte de app_perl, ahora res_perl donde haba incrustado un intrprete Perl5 en Asterisk. Ahora que tena que sacarlo de mi sistema, comenc a desarrollar una infraestructura basada en Asterisk va a utilizar para nuestras colas de llamadas entrantes. Lo prototipo utilizando

app_queue y la interfaz Manager ahora orgullosamente denominada "AMI" (las iniciales de siempre hacer las cosas ms fresco de sonido). Fue realmente magnfico! Usted puede llamar desde un nmero PSTN ms de un T1 y unirse a una cola de llamadas, donde nuestros agentes, que tambin podra servir de llamado de las llamadas. "Esto rocas!", Pens para mis adentros mientras observaba desde mi pgina web de fantasa que muestra todas las colas y que estaba logado, incluso actualizar en forma peridica por s mismo que era por eso que se sorprendi cuando el pequeo icono en la esquina de mi navegador era sigue girando durante bastante tiempo. Fue entonces cuando escuch por primera vez. Esa palabra. El que nunca se puede olvidar, callejn sin salida. Esa fue la primera vez, pero no fue el ltimo. Yo aprend todo sobre el depurador de GNU ese da y fue slo el primero de muchos incidentes. Punto muerto en la aplicacin de cola. Punto muerto en el administrador, evitar interbloqueo en mi consola. Estaba empezando a llegar a m un poco, pero segu adelante. En ese momento yo tambin estaba muy familiarizado con la falla de segmentacin plazo de otro enemigo de la promotora equipo. Despus de cerca de lucha de un ao con los insectos, me encontr mucho ms versados en el lenguaje de programacin C que llegu a imaginar, y cerca de las habilidades Jedi calibre de depuracin. Yo tena una plataforma de trabajo ejecutando varios servicios en un valor de DS3 de canales TDM repartidas en 7 cajas de asterisco y me haba dado toneladas de cdigo al proyecto, incluyendo algunos archivos completos sobre el que tienen los derechos de autor. http://www.cluecon.com / anthm.html Para el ao 2005, yo tena una buena reputacin como desarrollador de asterisco. Incluso me dio las gracias, tanto en el archivo de crditos y en el libro, Asterisk, el futuro de la telefona. No slo tena un montn de aplicaciones para el asterisco en el rbol, tuve mi propia coleccin de cdigo que no necesita o desea en mi propio sitio. (An hoy disponible en http://www.freeswitch.org/node/50 ) A pesar de todo esto, no pudo escapar completamente a los callejones sin salida y se bloquea. Me escond bien el problema con los scripts de reinicio y 7 grupos de mquinas, pero no pude ver una manera de ampliar mi plataforma mucho ms. Tuve que abandonar algunas de las caractersticas, ya que simplemente no funcionan bien por la forma en Asterisk fue diseado. Asterisk utiliza un diseo modular, donde se carga un ncleo central de los objetos compartidos para extender la funcionalidad con los bits de cdigo conocidos como "mdulos". Los mdulos se usan para implementar los protocolos especficos, tales como SIP, agregar aplicaciones, tales como IVR personalizados y corbata en otras interfaces externas, tales como la interfaz del Administrador. El ncleo de Asterisk es un modelo de subprocesos, pero uno muy conservador. Slo los canales de originacin y los canales de la ejecucin de una aplicacin tienen las discusiones. La pierna B, de cualquier llamada operar slo dentro de la misma rosca que la pierna A y cuando ocurre algo como una transferencia de llamada el primer canal debe ser transferido a un modo roscado que muchas veces incluye una prctica llamada canal mascarada, un proceso donde todas las partes internas de un canal son arrancados de un objeto de memoria dinmica y se coloca en otro. Una prctica que una vez fue descrito en los comentarios de cdigo como ser "desagradable". Lo mismo sucedi con la operacin inversa se descart el hilo por la clonacin del canal y dejar el original de

colgar, que tambin es necesario hackear la estructura cdr para evitar verlo como una nueva llamada. A menudo se ven 3 o 4 canales para una sola llamada durante una transferencia de llamada debido a esto. / * XXX Este es un serio wacked a cabo la operacin. Estamos poniendo en esencia las entraas de el canal de clon en el canal original. Comience por matar a la original backend canal. No estoy seguro de que vamos a mantener esta funcin, ya que mientras que las caractersticas son buenas, el costo es muy alto en trminos de pura maldad. XXX * / Esto se convirti en la forma de facto, para tirar de un canal de salida de las garras de otro hilo y la fuente de muchos dolores de cabeza para los desarrolladores de aplicaciones. Este esquema de enhebrado seguro fue uno de los factores que motivan a una reescritura. Asterisk utiliza las listas vinculadas a la gestin de sus canales abiertos. Una lista enlazada es una serie de memoria dinmica encadenados mediante el uso de una estructura que tiene un puntero a su propio tipo, como uno de los miembros que le permite sin fin de objetos de la cadena y realizar un seguimiento de ellos. De hecho, son una prctica de programacin til, pero cuando se utiliza en una aplicacin de rosca llegar a ser muy difcil de manejar. Hay que usar mutexes, una especie de semforo para las discusiones para asegurarse de que slo 1 hilo cada vez tiene acceso de escritura a la lista o se arriesga a romper un hilo un enlace de una lista, mientras que otro se la recorre. Esto tambin conduce a situaciones horribles en que un hilo se puede destruir o enmascaramiento de un canal, mientras que otro tiene acceso a ella lo que resultar en un fallo de segmentacin, que es un error grave en el programa y hace que se detenga de inmediato que, por supuesto, significa en la mayora de los casos todas las llamadas se pierden. Todos hemos visto el infame "Evitar estancamiento inicial" mensaje de que en esencia es un intento de bloquear un canal de 10 veces y si an no se bloquea, slo seguir adelante y olvidarse de la cerradura. La interfaz del administrador o IAM tiene un concepto en el que se aprob la toma de corriente para conectar el cliente hacia abajo en las aplicaciones de dejar que el mdulo tiene acceso directo a ella y, esencialmente, escriba los datos que desee a que se toma en forma de Gerente de Eventos que no son muy estructurado y por lo tanto el protocolo es muy difcil de analizar. Ncleo de Asterisk ha vincular las dependencias de algunos de sus mdulos de lo que significa que la aplicacin no se iniciar si un mdulo determinado no est presente porque el ncleo est hecho con una parte del cdigo binario del objeto mdulo compartido directamente. Para realizar una llamada de asterisco en al menos la versin 1.2 no tiene ms remedio que utilizar app_dial y res_features porque el cdigo en realidad vive en esos mdulos. La lgica para establecer una llamada y hacer las cosas como una lnea bifurcada en realidad residen en app_dial no el ncleo, y res_features en realidad contiene la funcin de nivel superior que los puentes de audio.

Asterisk no tiene proteccin de su API. La mayora de las funciones y estructuras de datos son pblicos y fcilmente puede ser mal utilizada o anuladas. El ncleo es la anarqua con las hiptesis acerca de los canales que tienen un descriptor de archivo, que no siempre es necesario en la realidad, pero es obligatorio para cualquier canal de asterisco. Muchos algoritmos se repiten en todo el cdigo en formas completamente diferentes, con todas las aplicaciones de hacer algo diferente en las operaciones aparentemente idnticos. Esto es slo un breve resumen de los temas principales que tuve con Asterisk. Yo don mi tiempo como un codificador, mis servidores para alojar el repositorio CVS y sirvi como mariscal de error y mantenedor. Yo organic una conferencia telefnica semanal para planificar el futuro y hacer frente a algunas de las cuestiones que he descrito anteriormente. El problema fue, cu