SlideShare uma empresa Scribd logo
1 de 42
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/

Mais conteúdo relacionado

Mais procurados

Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm
 
Pay Shield9000 Vs Hsm8000 Compet V7
Pay Shield9000 Vs Hsm8000 Compet V7Pay Shield9000 Vs Hsm8000 Compet V7
Pay Shield9000 Vs Hsm8000 Compet V7Eugene Sushchenko
 
Composants et fonctionnement d'un Switch Cisco
Composants et fonctionnement d'un Switch Cisco Composants et fonctionnement d'un Switch Cisco
Composants et fonctionnement d'un Switch Cisco DJENNA AMIR
 
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트월간 IT 슬라이드
 
Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...
Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...
Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...Simon Vostry
 
EclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling FrameworkEclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling FrameworkDave Steinberg
 
UVM: Basic Sequences
UVM: Basic SequencesUVM: Basic Sequences
UVM: Basic SequencesArrow Devices
 
Alphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentielAlphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentielAlphorm
 
Hypervisor seminar
Hypervisor seminarHypervisor seminar
Hypervisor seminar용환 노
 
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
 

Mais procurados (20)

SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
 
Pay Shield9000 Vs Hsm8000 Compet V7
Pay Shield9000 Vs Hsm8000 Compet V7Pay Shield9000 Vs Hsm8000 Compet V7
Pay Shield9000 Vs Hsm8000 Compet V7
 
Composants et fonctionnement d'un Switch Cisco
Composants et fonctionnement d'un Switch Cisco Composants et fonctionnement d'un Switch Cisco
Composants et fonctionnement d'un Switch Cisco
 
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
 
Linux I2C
Linux I2CLinux I2C
Linux I2C
 
Microcontroller part 1
Microcontroller part 1Microcontroller part 1
Microcontroller part 1
 
Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
 
Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...
Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...
Cisco SPAN-based and SPAN-less recording - comparison and advantages of both ...
 
SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
EclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling FrameworkEclipseCon 2007: Effective Use of the Eclipse Modeling Framework
EclipseCon 2007: Effective Use of the Eclipse Modeling Framework
 
PCIe
PCIePCIe
PCIe
 
UVM: Basic Sequences
UVM: Basic SequencesUVM: Basic Sequences
UVM: Basic Sequences
 
Arquitectura risc
Arquitectura riscArquitectura risc
Arquitectura risc
 
Configuración básica de la vlan
Configuración básica de la vlanConfiguración básica de la vlan
Configuración básica de la vlan
 
AUToSAR introduction
AUToSAR introductionAUToSAR introduction
AUToSAR introduction
 
Alphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentielAlphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentiel
 
Hypervisor seminar
Hypervisor seminarHypervisor seminar
Hypervisor seminar
 
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
 
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
 

Destaque

FreeSWITCH para usuarios Asterisk
FreeSWITCH para usuarios AsteriskFreeSWITCH para usuarios Asterisk
FreeSWITCH para usuarios AsteriskPaloSanto Solutions
 
FreeSWITCH Monitoring
FreeSWITCH MonitoringFreeSWITCH Monitoring
FreeSWITCH MonitoringMoises Silva
 
Scaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceScaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceMoises Silva
 
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)Iñaki Baz Castillo
 
Soluciones SIP Carrier Class con OpenSIPS
Soluciones SIP Carrier Class con OpenSIPSSoluciones SIP Carrier Class con OpenSIPS
Soluciones SIP Carrier Class con OpenSIPSAlejandro Rios Peña
 
Comunicaciones Unificadas con Software Libre
Comunicaciones Unificadas con Software LibreComunicaciones Unificadas con Software Libre
Comunicaciones Unificadas con Software LibreAlejandro Rios Peña
 
SIP: más que una moda en el Contact Center de última generación
SIP: más que una moda en el Contact Center de última generaciónSIP: más que una moda en el Contact Center de última generación
SIP: más que una moda en el Contact Center de última generaciónMundo Contact
 
Asterisk Rest Interface - ARI
Asterisk Rest Interface - ARIAsterisk Rest Interface - ARI
Asterisk Rest Interface - ARIDavid Muñoz
 
Llamada Sip (2)
Llamada Sip (2)Llamada Sip (2)
Llamada Sip (2)Abasota
 
Alberto Sagredo voipnovatos- voip2day2011
Alberto Sagredo  voipnovatos- voip2day2011Alberto Sagredo  voipnovatos- voip2day2011
Alberto Sagredo voipnovatos- voip2day2011Alberto Sagredo Castro
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosIrontec
 
Presentación VoIP2Day : Soluciones Ingeniosas con VoIP
Presentación VoIP2Day : Soluciones Ingeniosas con VoIPPresentación VoIP2Day : Soluciones Ingeniosas con VoIP
Presentación VoIP2Day : Soluciones Ingeniosas con VoIPAlberto Sagredo Castro
 
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...PaloSanto Solutions
 
Presente y futuro de las comunicaciones VoIP
Presente y futuro de las comunicaciones VoIPPresente y futuro de las comunicaciones VoIP
Presente y futuro de las comunicaciones VoIPSaúl Ibarra Corretgé
 
Tecnicas monitoreo reportes con Asterisk
Tecnicas monitoreo reportes con AsteriskTecnicas monitoreo reportes con Asterisk
Tecnicas monitoreo reportes con AsteriskNicolás Gudiño
 
Curso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPCurso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPIrontec
 

Destaque (20)

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

Semelhante a FreeSWITCH: Asterisk con Esteroides

Implementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSSImplementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSSGabriel Astudillo
 
Fundamentos de telefonia ip
Fundamentos de telefonia ipFundamentos de telefonia ip
Fundamentos de telefonia ipJose Luis Chauca
 
Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02myconta
 
Asterisk
AsteriskAsterisk
Asteriskyuqui
 
Alta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales LegacyAlta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales LegacyPaloSanto Solutions
 
Taller - Dispositivos de red (En parejas) neuoooo.docx
Taller - Dispositivos de red (En parejas)   neuoooo.docxTaller - Dispositivos de red (En parejas)   neuoooo.docx
Taller - Dispositivos de red (En parejas) neuoooo.docxridercastroperez
 
01.asterisk introducción
01.asterisk introducción01.asterisk introducción
01.asterisk introduccióncarlosperu01
 
Presentacion asterisk
Presentacion asteriskPresentacion asterisk
Presentacion asteriskarchimd
 
Configuración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskConfiguración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskDiego Llanes
 
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02leonardo miranda
 
Asterisk
AsteriskAsterisk
Asteriskyuqui
 
i-Vida Centralitas
i-Vida Centralitasi-Vida Centralitas
i-Vida Centralitasi-Vida
 
Manual Asterisk en FreeBSD
Manual Asterisk en FreeBSDManual Asterisk en FreeBSD
Manual Asterisk en FreeBSDERy Chan
 

Semelhante a FreeSWITCH: Asterisk con Esteroides (20)

Implementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSSImplementado Sistemas de VoIP con FOSS
Implementado Sistemas de VoIP con FOSS
 
Fundamentos de telefonia ip
Fundamentos de telefonia ipFundamentos de telefonia ip
Fundamentos de telefonia ip
 
Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02
 
Asterisk
AsteriskAsterisk
Asterisk
 
Alta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales LegacyAlta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales Legacy
 
Software de VOIP
Software de VOIPSoftware de VOIP
Software de VOIP
 
Taller - Dispositivos de red (En parejas) neuoooo.docx
Taller - Dispositivos de red (En parejas)   neuoooo.docxTaller - Dispositivos de red (En parejas)   neuoooo.docx
Taller - Dispositivos de red (En parejas) neuoooo.docx
 
01.asterisk introducción
01.asterisk introducción01.asterisk introducción
01.asterisk introducción
 
Presentacion asterisk
Presentacion asteriskPresentacion asterisk
Presentacion asterisk
 
Configuración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskConfiguración de escenarios reales con asterisk
Configuración de escenarios reales con asterisk
 
voz ip
voz ipvoz ip
voz ip
 
Proceso de señal
Proceso de señalProceso de señal
Proceso de señal
 
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
 
PFC IMS
PFC IMSPFC IMS
PFC IMS
 
Tecnología IP Leccion 2
Tecnología IP Leccion 2Tecnología IP Leccion 2
Tecnología IP Leccion 2
 
Asterisk
AsteriskAsterisk
Asterisk
 
i-Vida Centralitas
i-Vida Centralitasi-Vida Centralitas
i-Vida Centralitas
 
Ip pbx
Ip pbxIp pbx
Ip pbx
 
Manual Asterisk en FreeBSD
Manual Asterisk en FreeBSDManual Asterisk en FreeBSD
Manual Asterisk en FreeBSD
 
Introducción a Asterisk
Introducción a AsteriskIntroducción a Asterisk
Introducción a Asterisk
 

Mais de Moises Silva

Interfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CInterfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CMoises Silva
 
Vulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPVulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPMoises Silva
 
Manejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHManejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHMoises Silva
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskMoises Silva
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHMoises Silva
 
FreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk DevelopersFreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk DevelopersMoises Silva
 
Negociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskNegociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskMoises Silva
 
Sangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceSangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceMoises Silva
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCHMoises Silva
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingMoises Silva
 
Asterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingAsterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingMoises Silva
 
OpenR2 in Asterisk
OpenR2 in AsteriskOpenR2 in Asterisk
OpenR2 in AsteriskMoises Silva
 
FreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCFreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCMoises Silva
 

Mais de Moises Silva (13)

Interfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CInterfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en C
 
Vulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPVulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHP
 
Manejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHManejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCH
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in Asterisk
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCH
 
FreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk DevelopersFreeSWITCH Modules for Asterisk Developers
FreeSWITCH Modules for Asterisk Developers
 
Negociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskNegociacion de Codecs en Asterisk
Negociacion de Codecs en Asterisk
 
Sangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceSangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open Source
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCH
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive Recording
 
Asterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingAsterisk PRI Passive Call Recording
Asterisk PRI Passive Call Recording
 
OpenR2 in Asterisk
OpenR2 in AsteriskOpenR2 in Asterisk
OpenR2 in Asterisk
 
FreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCFreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBC
 

Último

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 

Último (10)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

FreeSWITCH: Asterisk con Esteroides

  • 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
  • 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: moy@sangoma.com moises.silva@gmail.com http://www.moythreads.com/