La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock) Moises Silva Manager de software Sangoma Technologies.

Presentaciones similares


Presentación del tema: "FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock) Moises Silva Manager de software Sangoma Technologies."— Transcripción de la presentación:

1 FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock) Moises Silva 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

6 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 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 FreeSWITCH CLI switch_api_execute() Módulo

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 Aplicación Módulo APIs del core Interfaces de los módulos

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

33 Arquitectura Básica Asterisk FreeSWITCH struct ast_channel switch_core_session_t

34 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

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

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 Clara separación de señalización, audio, dtmf etc. FreeSWITCH DTMF entrante Señalización entrante Audio saliente DTMF saliente Señalización saliente

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. 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_dahdi ast_request -> ast_call() ISDN: SETUP ast_waitfor() PBX core ISDN: CONNECT ast_bridge_call() ast_channel_bridge() Media Exchange

40 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 Handling state changes mod_openzap routing state execute state Bridge Application switch_ivr_originate() ISDN: SETUP ISDN: CONNECT Media Exchange (new thread) State machine 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.commoy@sangoma.com moises.silva@gmail.com http://www.moythreads.com/


Descargar ppt "FreeSWITCH – Asterisk con esteroides (Avoiding Deadlock) Moises Silva Manager de software Sangoma Technologies."

Presentaciones similares


Anuncios Google