1 / 42

FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)

FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock). Moises Silva <moy@sangoma.com> Manager de software Sangoma Technologies. Agenda. Breve introducción a la telefonía Telefonía de software libre Qué es FreeSWITCH? Aplicaciones para FreeSWITCH El core de FreeSWITCH.

bishop
Download Presentation

FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock) Moises Silva <moy@sangoma.com> Manager de software Sangoma Technologies

  2. Agenda • Breve introducción a la telefonía • Telefonía de software libre • Qué es FreeSWITCH? • Aplicaciones para FreeSWITCH • El core de FreeSWITCH

  3. Breve Introducción a la Telefonía • Todos la hemos usado • Que pasa cuando levantas el teléfono? • Como se encuentran unos a otros? • Que hay con la red celular? • Que es un PBX? Para que sirve?

  4. Breve Introducción a la Telefonía

  5. Breve Introducción a la Telefonía

  6. Breve Introducción a la Telefonía • Puertos análogos (FXO/FXS)

  7. Breve Introducción a la Telefonía • Puertos digitales • T1/E1 ISDN, PRI, BRI, MFC-R2, SS7

  8. Me abuuuuurro!

  9. Telefonía con software libre? • Computadoras mas poderosas pueden procesar audio • DSPs especializados no son estrictamente necesarios • Hardware simple, software complejo • Asterisk, FreeSWITCH, Kamailio, OpenSIPS, Yate … • Una nueva era!

  10. Telefonía con software libre

  11. Telefonía con software libre • Solo necesitas una computadora • Si necesitas acceso a la PSTN, una tarjeta PCI/PCIe

  12. FreeSWITCH • No siempre uso switches, pero cuando lo hago, prefiero FreeSWITCH

  13. Qué es FreeSWITCH • Solución en software de telefonía • Auspiciado por el Open Source Telephony Advancement Group (OSTAG) • Licencia MPL • Escala desde soft-phone hasta softswitch clase 5 • Maneja audio, video, texto • Corre en Linux, BSD, MacOS, Windows y iOS!

  14. Qué es FreeSWITCH • Poderosa habilidad de ruteo usando expresiones regulares • No es un SIP proxy, sino un B2BUA

  15. Qué es FreeSWITCH • Surge con la idea de tener una mejor plataforma que Asterisk • Su author, Anthony Minessale, fué el mayor contribuyente a Asterisk por muchos años • Diseñado desde el principio para escalar • Altamente multi-thread • Reuso de muchos componentes (no reinventar la rueda) • Avoiding the deadlock!

  16. Protocolos VoIP en FreeSWITCH • SIP • UDP, TCP, TLS, SCTP, SRTP, ZRTP, IPv6 … • Gtalk (jingle) • Skype • RTMP • H.323, IAX2, Skinny …

  17. Protocolos PSTN en FreeSWITCH • FXO/FXS • PRI / BRI • MFC-R2 • GSM • SS7 • Soporte para varios proveedores de hardware (ej. Sangoma)

  18. Soporte para lenguajes • Lua • PERL • Ruby • Python • Java & .NET • JavaScript

  19. Aplicaciones Nativas • Voicemail • Colas para call centers • Conferencias en alta definición • Text to Speech y reconocimiento de voz • FAX, T.30 y T.38

  20. Codecs • Banda angosta, banda ancha y ultra banda ancha • CELT (32kHz y 48kHz) • G.722.1C (HD Siren) • G.729 • SILK (El codec de Skype)

  21. Eventos en FreeSWITCH • API completamente abstracta • El core y las aplicaciones disparan eventos • Los modulos pueden reservar tipos de eventos • mod_event_socket es el módulo equivalente al manager de Asterisk • Diferentes prioridades: • SWITCH_PRIORITY_NORMAL • SWITCH_PRIORITY_LOW • SWITCH_PRIORITY_HIGH

  22. Ejecución de comandos • Cada módulo registra comandos de administración • Todos los comandos pueden ser ejecutados via mod_event_socket • Puedes ejecutar comandos inclusive via HTTP mod_event_socket Módulo switch_api_execute() FreeSWITCH CLI

  23. Aplicaciones para FreeSWITCH • Softphone • VoIP gateway • PBX • Servidor de registros • Servidor de ruteo de llamadas • Servidor de transcoding • Session border controller • Servidor de conferencias • Marcador predictivo • Servidor de fax

  24. Alta disponibilidad

  25. FreeSWITCH “hola mundo”

  26. FreeSWITCH “hola mundo” (en LUA)

  27. FreeSWITCH con Python

  28. Contestando un SMS

  29. Por qué modular? • Componentes de construcción • Capacidad de extender el core • Sencilla solución de defectos

  30. Ejemplos de arquitecturas modulares • Kernel de Linux (character devices, block devices, filesystems etc) • Interpretes de PHP, Python y PERL (soportan extensiones) • Apache (loggers, generators, filters, mappers) • FreeSWITCH y Asterisk

  31. Arquitectura Modular • Registrar interfaces con el core • El core provee APIs a los escritores de módulos • El core usa las interfaces registrada para solicitar servicios APIs del core Módulo Aplicación Interfaces de los módulos

  32. Abstracción de una llamada • Como hacemos una abstracción de una llamada? Asterisk Incoming call FreeSWITCH

  33. Arquitectura Básica Asterisk struct ast_channel FreeSWITCH switch_core_session_t

  34. Arquitectura Básica • Pierna de una llamada en FreeSWITCH • switch_core_session_t • Memory pool • Owner thread • I/O event hooks • Endpoint interface • Event and message queues • Codec preferences • Channel • Direction • Event hooks • DTMF queue • Private hash • State and state handlers • Caller profile FreeSWITCH

  35. Arquitectura Básica • Pierna de una llamada en Asterisk • struct ast_channel • No memory pool • No owner thread • Just audio hooks • Tech interface • No event or message queues • Codec preferences • Direction as flag AST_FLAG_OUTGOING • No DTMF queue (generic frame queue) • Data stores instead of private hash • No generic state handlers • Extension, context and ast_callerid instead of caller profile. Asterisk

  36. Arquitectura Básica • Qué hace struct ast_frame? • Representa todo tipo de “media” y señalización • Audio y Video • DTMF • Y mas … Asterisk Entran paquetes Salen paquetes Asterisk frames (signaling, audio, dtmf, video, fax)

  37. Arquitectura Básica • FreeSWITCH tiene switch_frame_t. • switch_frame_t unicamente representa “media”. • La señalización es manejada con switch_core_session_message_t • El DTMF es manejado a través de una cola Audio entrante Audio saliente FreeSWITCH DTMF entrante DTMF saliente Señalización entrante Señalización saliente Clara separación de señalización, audio, dtmf etc.

  38. Arquitectura Básica • Como se maneja una llamada de 2 piernas? Ruteo Llamada entrante Llamada saliente

  39. Arquitectura Básica (monitor thread) • Asterisk haciendo una llamada entre SIP y PRI. SIP: Invite chan_sip • - Allocate ast_channel • Set caller data • call ast_pbx_start() (new thread) PBX core ISDN: SETUP chan_dahdi ast_request -> ast_call() loop extensions.conf calls Dial() application ast_waitfor() ISDN: CONNECT ast_bridge_call() ast_channel_bridge() Media Exchange PBX core

  40. Arquitectura Básica (monitor thread) • FreeSWITCH haciendo una llamada entre SIP y PRI. SIP: Invite mod_sofia • - call switch_core_session_request • Set caller profile • call switch_core_session_thread_launch() ISDN: SETUP (new thread) mod_openzap State machine routing state execute state Bridge Application switch_ivr_originate() ISDN: CONNECT (new thread) loop Handling state changes State machine Media Exchange loop Handling state changes

  41. Conclusión • Nos encontramos en una carrera por escalabilidad, características y adopción de la tecnología entre varios proyectos de telefonía libre • FreeSWITCH aún necesita mayor adopción y aplicaciones en su ecosistema • Asterisk necesita mas mejoras en su arquitectura para escalar • La competencia entre Asterisk y FreeSWITCH definitivamente los ha llevado a ser mejores

  42. Gracias!Preguntas y comentarios? Contact e-mail: moy@sangoma.com moises.silva@gmail.com http://www.moythreads.com/

More Related