FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)
description
Transcript of FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)
![Page 1: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/1.jpg)
FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)
Moises Silva <[email protected]>
Manager de software
Sangoma Technologies
![Page 2: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/2.jpg)
Agenda
• Breve introducción a la telefonía
• Telefonía de software libre
• Qué es FreeSWITCH?
• Aplicaciones para FreeSWITCH
• El core de FreeSWITCH
![Page 3: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/3.jpg)
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?
![Page 4: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/4.jpg)
Breve Introducción a la Telefonía
![Page 5: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/5.jpg)
Breve Introducción a la Telefonía
![Page 6: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/6.jpg)
Breve Introducción a la Telefonía
• Puertos análogos (FXO/FXS)
![Page 7: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/7.jpg)
Breve Introducción a la Telefonía
• Puertos digitales
– T1/E1 ISDN, PRI, BRI, MFC-R2, SS7
![Page 8: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/8.jpg)
Me abuuuuurro!
![Page 9: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/9.jpg)
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!
![Page 10: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/10.jpg)
Telefonía con software libre
![Page 11: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/11.jpg)
Telefonía con software libre
• Solo necesitas una computadora
• Si necesitas acceso a la PSTN, una tarjeta PCI/PCIe
![Page 12: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/12.jpg)
FreeSWITCH
• No siempre uso switches, pero cuando lo hago, prefiero FreeSWITCH
![Page 13: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/13.jpg)
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!
![Page 14: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/14.jpg)
Qué es FreeSWITCH
• Poderosa habilidad de ruteo usando expresiones regulares
• No es un SIP proxy, sino un B2BUA
![Page 15: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/15.jpg)
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!
![Page 16: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/16.jpg)
Protocolos VoIP en FreeSWITCH
• SIP– UDP, TCP, TLS, SCTP, SRTP, ZRTP, IPv6 …
• Gtalk (jingle)
• Skype
• RTMP
• H.323, IAX2, Skinny …
![Page 17: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/17.jpg)
Protocolos PSTN en FreeSWITCH
• FXO/FXS
• PRI / BRI
• MFC-R2
• GSM
• SS7
• Soporte para varios proveedores de hardware (ej. Sangoma)
![Page 18: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/18.jpg)
Soporte para lenguajes
• Lua
• PERL
• Ruby
• Python
• Java & .NET
• JavaScript
![Page 19: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/19.jpg)
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
![Page 20: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/20.jpg)
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)
![Page 21: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/21.jpg)
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
![Page 22: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/22.jpg)
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
FreeSWITCH CLI
switch_api_execute() Módulo
![Page 23: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/23.jpg)
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
![Page 24: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/24.jpg)
Alta disponibilidad
![Page 25: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/25.jpg)
FreeSWITCH “hola mundo”
![Page 26: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/26.jpg)
FreeSWITCH “hola mundo” (en LUA)
![Page 27: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/27.jpg)
FreeSWITCH con Python
![Page 28: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/28.jpg)
Contestando un SMS
![Page 29: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/29.jpg)
Por qué modular?
• Componentes de construcción
• Capacidad de extender el core
• Sencilla solución de defectos
![Page 30: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/30.jpg)
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
![Page 31: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/31.jpg)
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
Aplicación Módulo
APIs del core
Interfaces de los módulos
![Page 32: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/32.jpg)
Abstracción de una llamada
• Como hacemos una abstracción de una llamada?
Incoming call
Asterisk
FreeSWITCH
![Page 33: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/33.jpg)
Arquitectura Básica
Asterisk
FreeSWITCH
struct ast_channel
switch_core_session_t
![Page 34: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/34.jpg)
Arquitectura Básica
• Pierna de una llamada en FreeSWITCH
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
![Page 35: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/35.jpg)
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
![Page 36: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/36.jpg)
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 frames (signaling, audio, dtmf, video, fax)
Asterisk Salen paquetes
![Page 37: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/37.jpg)
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
Clara separación de señalización, audio, dtmf etc.
FreeSWITCHDTMF entrante
Señalización entrante
Audio saliente
DTMF saliente
Señalización saliente
![Page 38: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/38.jpg)
Arquitectura Básica
• Como se maneja una llamada de 2 piernas?
Llamada entrante Ruteo Llamada saliente
![Page 39: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/39.jpg)
Arquitectura Básica
• Asterisk haciendo una llamada entre SIP y PRI.
chan_sip
SIP: Invite
- Allocate ast_channel- Set caller data- call ast_pbx_start()
(new thread)
(monitor thread)
PBX core
loop extensions.conf calls Dial() application
chan_dahdiast_request -> ast_call()ISDN: SETUP
ast_waitfor()
PBX core
ISDN: CONNECT
ast_bridge_call()ast_channel_bridge()
MediaExchange
![Page 40: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/40.jpg)
Arquitectura Básica
• FreeSWITCH haciendo una llamada entre SIP y PRI.
mod_sofia
SIP: Invite
- call switch_core_session_request- Set caller profile- call switch_core_session_thread_launch()
(new thread)
(monitor thread)
State machine
loop Handlingstate changes
mod_openzaprouting stateexecute stateBridge Applicationswitch_ivr_originate()
ISDN: SETUP
ISDN: CONNECT
MediaExchange
(new thread)State
machine
loop Handlingstate changes
![Page 41: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/41.jpg)
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
![Page 42: FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock)](https://reader035.fdocuments.ec/reader035/viewer/2022062314/56813e31550346895da81523/html5/thumbnails/42.jpg)
Gracias!
Preguntas y comentarios?
Contact e-mail: [email protected] [email protected] http://www.moythreads.com/