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
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?
Breve Introducción a la Telefonía
Breve Introducción a la Telefonía
Breve Introducción a la Telefonía
•   Puertos análogos (FXO/FXS)
Breve Introducción a la Telefonía

•   Puertos digitales

    – T1/E1 ISDN, PRI, BRI, MFC-R2, SS7
Me abuuuuurro!
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!
Telefonía con software libre
Telefonía con software libre
•   Solo necesitas una computadora

•   Si necesitas acceso a la PSTN, una tarjeta PCI/PCIe
FreeSWITCH




•   No siempre uso switches, pero cuando lo hago, prefiero
    FreeSWITCH
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!
Qué es FreeSWITCH
•   Poderosa habilidad de ruteo usando expresiones regulares




•   No es un SIP proxy, sino un B2BUA
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!
Protocolos VoIP en FreeSWITCH
•   SIP
     – UDP, TCP, TLS, SCTP, SRTP, ZRTP, IPv6 …

•   Gtalk (jingle)

•   Skype

•   RTMP

•   H.323, IAX2, Skinny …
Protocolos PSTN en FreeSWITCH
•   FXO/FXS

•   PRI / BRI

•   MFC-R2

•   GSM

•   SS7

•   Soporte para varios proveedores de hardware (ej. Sangoma)
Soporte para lenguajes
•   Lua

•   PERL

•   Ruby

•   Python

•   Java & .NET

•   JavaScript
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
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)
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
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

                          switch_api_execute()        Módulo
FreeSWITCH CLI
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
Alta disponibilidad
FreeSWITCH “hola mundo”
FreeSWITCH “hola mundo” (en LUA)
FreeSWITCH con Python
Contestando un SMS
Por qué modular?
•   Componentes de construcción

•   Capacidad de extender el core

•   Sencilla solución de defectos
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
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


      Aplicación                             Módulo

                     Interfaces de los
                      módulos
Abstracción de una llamada
•   Como hacemos una abstracción de una llamada?




                                  Asterisk



         Incoming call



                                 FreeSWITCH
Arquitectura Básica




     Asterisk         struct ast_channel




                      switch_core_session_t
    FreeSWITCH
Arquitectura Básica
•   Pierna de una llamada en FreeSWITCH

                        switch_core_session_t

                        - Memory pool
                        - Owner thread
    FreeSWITCH          - 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
Arquitectura Básica
•   Pierna de una llamada en Asterisk

                         struct ast_channel

                         - No memory pool
         Asterisk        - 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.
Arquitectura Básica
•   Qué hace struct ast_frame?

•   Representa todo tipo de “media” y señalización

•   Audio y Video

•   DTMF

•   Y mas …



     Entran paquetes              Asterisk            Salen paquetes


            Asterisk frames (signaling, audio, dtmf, video, fax)
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


    DTMF entrante                                      DTMF saliente
                              FreeSWITCH

Señalización entrante                                Señalización saliente

        Clara separación de señalización, audio, dtmf etc.
Arquitectura Básica
•    Como se maneja una llamada de 2 piernas?




    Llamada entrante            Ruteo           Llamada saliente
Arquitectura Básica
•     Asterisk haciendo una llamada entre SIP y PRI.
              (monitor thread)
SIP: Invite
              chan_sip

                   - Allocate ast_channel
                   - Set caller data
                   - call ast_pbx_start()
    (new thread)

PBX core                                                              ISDN: SETUP
                   ast_request -> ast_call()            chan_dahdi

 loop
 extensions.conf calls                      ast_waitfor()            ISDN: CONNECT
 Dial() application

               Media                                 ast_bridge_call()
                                         PBX core    ast_channel_bridge()
               Exchange
Arquitectura Básica
•     FreeSWITCH haciendo una llamada entre SIP y PRI.
              (monitor thread)
SIP: Invite
              mod_sofia

                   - call switch_core_session_request
                   - Set caller profile
                   - call switch_core_session_thread_launch()
    (new thread)                                            ISDN: SETUP
                                            mod_openzap
 State             routing state
machine            execute state
                   Bridge Application                       ISDN: CONNECT
                   switch_ivr_originate()           (new thread)
loop
                                                                  State
Handling
                                                                 machine
state changes                    Media
                                                          loop
                                 Exchange                 Handling
                                                          state changes
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
Gracias!

            Preguntas y comentarios?


Contact e-mail: moy@sangoma.com
                moises.silva@gmail.com
                http://www.moythreads.com/

Más contenido relacionado

PDF
Guaranteeing Memory Safety in Rust
PPTX
Binder: Android IPC
ODP
eBPF maps 101
PPT
Gerência de processos
PDF
Component Object Model (COM, DCOM, COM+)
PPT
Astricon 2010: Scaling Asterisk installations
PDF
Deep Dive In To Redis Replication: Vishy Kasar
PPTX
DPDK (Data Plane Development Kit)
Guaranteeing Memory Safety in Rust
Binder: Android IPC
eBPF maps 101
Gerência de processos
Component Object Model (COM, DCOM, COM+)
Astricon 2010: Scaling Asterisk installations
Deep Dive In To Redis Replication: Vishy Kasar
DPDK (Data Plane Development Kit)

La actualidad más candente (20)

PPT
Introduction to Linux Kernel by Quontra Solutions
PPT
CAP, PACELC, and Determinism
ODP
Introduction To Makefile
PDF
Linux Performance Analysis and Tools
PDF
PEW PEW PEW: Designing Secure Boot Securely
PPTX
Kafka 101
PPTX
Understanding eBPF in a Hurry!
PDF
Little Gems in TYPO3 v12
PDF
LF_DPDK17_Serverless DPDK - How SmartNIC resident DPDK Accelerates Packet Pro...
PPT
Shell Scripting in Linux
PDF
TC Flower Offload
PDF
Tuning the g1gc
PDF
BPF / XDP 8월 세미나 KossLab
PPTX
Overview of Android binder IPC implementation
PPTX
The TCP/IP Stack in the Linux Kernel
PDF
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
PDF
eBPF - Rethinking the Linux Kernel
PPTX
Confluent Kafka and KSQL: Streaming Data Pipelines Made Easy
PDF
CQRS + Event Sourcing
PDF
[OPD 2019] Attacking JWT tokens
Introduction to Linux Kernel by Quontra Solutions
CAP, PACELC, and Determinism
Introduction To Makefile
Linux Performance Analysis and Tools
PEW PEW PEW: Designing Secure Boot Securely
Kafka 101
Understanding eBPF in a Hurry!
Little Gems in TYPO3 v12
LF_DPDK17_Serverless DPDK - How SmartNIC resident DPDK Accelerates Packet Pro...
Shell Scripting in Linux
TC Flower Offload
Tuning the g1gc
BPF / XDP 8월 세미나 KossLab
Overview of Android binder IPC implementation
The TCP/IP Stack in the Linux Kernel
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
eBPF - Rethinking the Linux Kernel
Confluent Kafka and KSQL: Streaming Data Pipelines Made Easy
CQRS + Event Sourcing
[OPD 2019] Attacking JWT tokens
Publicidad

Destacado (20)

PDF
FreeSWITCH para usuarios Asterisk
PDF
FreeSWITCH Monitoring
PDF
Scaling FreeSWITCH Performance
ODP
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
ODP
Soluciones SIP Carrier Class con OpenSIPS
ODP
Comunicaciones Unificadas con Software Libre
PDF
SIP: más que una moda en el Contact Center de última generación
PDF
Asterisk Rest Interface - ARI
PDF
Llamada Sip (2)
PPT
Alberto Sagredo voipnovatos- voip2day2011
PDF
Introducción a SIP y OpenSER
PPTX
Cómo crear un portal cautivo con easyhotspot
PDF
Curso de VoIP / Parte 04: Conceptos avanzados
PDF
Presentación VoIP2Day : Soluciones Ingeniosas con VoIP
PPTX
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
PDF
SIP más allá de la VoIP
ODP
Presente y futuro de las comunicaciones VoIP
PDF
Extendiendo SIP con WebRTC
PDF
Tecnicas monitoreo reportes con Asterisk
PDF
Curso de VoIP / Parte 02: SIP
FreeSWITCH para usuarios Asterisk
FreeSWITCH Monitoring
Scaling FreeSWITCH Performance
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
Soluciones SIP Carrier Class con OpenSIPS
Comunicaciones Unificadas con Software Libre
SIP: más que una moda en el Contact Center de última generación
Asterisk Rest Interface - ARI
Llamada Sip (2)
Alberto Sagredo voipnovatos- voip2day2011
Introducción a SIP y OpenSER
Cómo crear un portal cautivo con easyhotspot
Curso de VoIP / Parte 04: Conceptos avanzados
Presentación VoIP2Day : Soluciones Ingeniosas con VoIP
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
SIP más allá de la VoIP
Presente y futuro de las comunicaciones VoIP
Extendiendo SIP con WebRTC
Tecnicas monitoreo reportes con Asterisk
Curso de VoIP / Parte 02: SIP
Publicidad

Similar a FreeSWITCH: Asterisk con Esteroides (20)

PPT
Implementado Sistemas de VoIP con FOSS
PDF
Fundamentos de telefonia ip
PDF
Fundamentos20de20telefonia20ip 131006193600-phpapp02
PDF
Asterisk
PDF
Alta disponibilidad en Integración de Elastix con Centrales Legacy
PDF
Software de VOIP
DOCX
Taller - Dispositivos de red (En parejas) neuoooo.docx
PDF
01.asterisk introducción
PDF
Presentacion asterisk
DOCX
Configuración de escenarios reales con asterisk
PPT
voz ip
PDF
Proceso de señal
DOCX
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
PPTX
PFC IMS
PPTX
Tecnología IP Leccion 2
DOC
Asterisk
PDF
i-Vida Centralitas
PPSX
Ip pbx
PDF
Manual Asterisk en FreeBSD
PDF
Introducción a Asterisk
Implementado Sistemas de VoIP con FOSS
Fundamentos de telefonia ip
Fundamentos20de20telefonia20ip 131006193600-phpapp02
Asterisk
Alta disponibilidad en Integración de Elastix con Centrales Legacy
Software de VOIP
Taller - Dispositivos de red (En parejas) neuoooo.docx
01.asterisk introducción
Presentacion asterisk
Configuración de escenarios reales con asterisk
voz ip
Proceso de señal
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
PFC IMS
Tecnología IP Leccion 2
Asterisk
i-Vida Centralitas
Ip pbx
Manual Asterisk en FreeBSD
Introducción a Asterisk

Más de Moises Silva (13)

PPT
Interfaces de Scripting para librerias en C
PPT
Vulnerabilidades en Aplicaciones Web PHP
PPT
Manejo de Medios en FreeSWITCH
PPTX
Implementation Lessons using WebRTC in Asterisk
PDF
SIP Testing with FreeSWITCH
PPT
FreeSWITCH Modules for Asterisk Developers
PPT
Negociacion de Codecs en Asterisk
PDF
Sangoma en el Ecosistema Open Source
PDF
Media Handling in FreeSWITCH
PPT
FreeTDM PRI Passive Recording
PDF
Asterisk PRI Passive Call Recording
PDF
OpenR2 in Asterisk
PPTX
FreeSWITCH as a Kickass SBC
Interfaces de Scripting para librerias en C
Vulnerabilidades en Aplicaciones Web PHP
Manejo de Medios en FreeSWITCH
Implementation Lessons using WebRTC in Asterisk
SIP Testing with FreeSWITCH
FreeSWITCH Modules for Asterisk Developers
Negociacion de Codecs en Asterisk
Sangoma en el Ecosistema Open Source
Media Handling in FreeSWITCH
FreeTDM PRI Passive Recording
Asterisk PRI Passive Call Recording
OpenR2 in Asterisk
FreeSWITCH as a Kickass SBC

Último (20)

PPTX
Procesamiento-del-Lenguaje-Natural-Un-Viaje-Paso-a-Paso.pptx
PPTX
Todas las señales relativas a la seguridad en el trabajo están normalizadas, ...
PDF
1.3.4-Handling-and-Safety-Instructions-ESP-2024.pdf
PPTX
Uso responsable de la tecnología - EEST N°1
DOCX
Guía 5. Test de orientación Vocacional 2[1] (Recuperado automáticamente).docx
PDF
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
DOCX
tablas tecnologia maryuri vega 1....docx
PPTX
TICs_en_la_vida_Cotidiana_tecnologiayMas
PPTX
CLASE TEC-- SESION 7 parte 2 -- FPW -- 09 11 23.pptx
DOCX
Nombre del estudiante Gabriela Benavides
PDF
Taller tecnológico Michelle lobo Velasquez
PPTX
Presentación de la barra de acceso rapido de word
PDF
Inteligencia_Artificial,_Informática_Básica,_22_06_2025_SO_2.pdf
PPTX
Circuito de LED en paralelo mediante Switch
PPTX
VariablesExpresiones.pptx conceptos que puedes usar en c++
PPTX
PRESENTACION El PODER DE LA MENTALIDAD.pptx
PPTX
Navegación en neurocirugías y su implicación ética.pptx
PPTX
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
PPTX
libro proyecto con scratch jr pdf en la e
PPTX
TECNOLOGIAS DE INFORMACION Y COMUNICACION
Procesamiento-del-Lenguaje-Natural-Un-Viaje-Paso-a-Paso.pptx
Todas las señales relativas a la seguridad en el trabajo están normalizadas, ...
1.3.4-Handling-and-Safety-Instructions-ESP-2024.pdf
Uso responsable de la tecnología - EEST N°1
Guía 5. Test de orientación Vocacional 2[1] (Recuperado automáticamente).docx
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
tablas tecnologia maryuri vega 1....docx
TICs_en_la_vida_Cotidiana_tecnologiayMas
CLASE TEC-- SESION 7 parte 2 -- FPW -- 09 11 23.pptx
Nombre del estudiante Gabriela Benavides
Taller tecnológico Michelle lobo Velasquez
Presentación de la barra de acceso rapido de word
Inteligencia_Artificial,_Informática_Básica,_22_06_2025_SO_2.pdf
Circuito de LED en paralelo mediante Switch
VariablesExpresiones.pptx conceptos que puedes usar en c++
PRESENTACION El PODER DE LA MENTALIDAD.pptx
Navegación en neurocirugías y su implicación ética.pptx
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
libro proyecto con scratch jr pdf en la e
TECNOLOGIAS DE INFORMACION Y COMUNICACION

FreeSWITCH: Asterisk con Esteroides

  • 1. FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock) Moises Silva <[email protected]> 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
  • 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!
  • 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 switch_api_execute() Módulo 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
  • 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 Aplicación Módulo 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 switch_core_session_t FreeSWITCH
  • 34. Arquitectura Básica • Pierna de una llamada en FreeSWITCH switch_core_session_t - Memory pool - Owner thread FreeSWITCH - 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
  • 35. Arquitectura Básica • Pierna de una llamada en Asterisk struct ast_channel - No memory pool Asterisk - 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.
  • 36. Arquitectura Básica • Qué hace struct ast_frame? • Representa todo tipo de “media” y señalización • Audio y Video • DTMF • Y mas … Entran paquetes Asterisk 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 DTMF entrante DTMF saliente FreeSWITCH 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? Llamada entrante Ruteo Llamada saliente
  • 39. Arquitectura Básica • Asterisk haciendo una llamada entre SIP y PRI. (monitor thread) SIP: Invite chan_sip - Allocate ast_channel - Set caller data - call ast_pbx_start() (new thread) PBX core ISDN: SETUP ast_request -> ast_call() chan_dahdi loop extensions.conf calls ast_waitfor() ISDN: CONNECT Dial() application Media ast_bridge_call() PBX core ast_channel_bridge() Exchange
  • 40. Arquitectura Básica • FreeSWITCH haciendo una llamada entre SIP y PRI. (monitor thread) SIP: Invite mod_sofia - call switch_core_session_request - Set caller profile - call switch_core_session_thread_launch() (new thread) ISDN: SETUP mod_openzap State routing state machine execute state Bridge Application ISDN: CONNECT switch_ivr_originate() (new thread) loop State Handling machine state changes Media loop Exchange 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: [email protected] [email protected] http://www.moythreads.com/