Post on 09-Jun-2015
description
transcript
Manejo de Medios en FreeSWITCH
Moisés SilvaSoftware Engineer / Manager
moy@sangoma.com
• Introducción a FreeSWITCH• Codecs de Audio • Transcoding• Negociación de Codecs• Bypass Media• Proxy Media• Conclusion
Agenda
23/11/2011© 2011 Sangoma Technologies
2
Introducción a FreeSWITCH
23/11/2011© 2011 Sangoma Confidential 3
FreeSWITCH (avoiding deadlock!)
23/11/2011© 2011 Sangoma Technologies
4
• 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 hasta iOS!
FreeSWITCH
23/11/2011© 2011 Sangoma Technologies
5
• 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)
• Poderosa habilidad de ruteo usando expresiones regulares
FreeSWITCH – Protocolos VoIP
23/11/2011© 2011 Sangoma Technologies
6
• SIP– UDP, TCP, TLS, SCTP, SRTP, ZRTP, IPv6 …
• Gtalk (jingle)
• Skype
• RTMP
• H.323, Skinny y más …
FreeSWITCH – Protocolos PSTN
23/11/2011© 2011 Sangoma Technologies
7
• FXO / FXS
• PRI / BRI
• MFC-R2
• GSM
• SS7
• Soporte para varios proveedores de hardware (ej. Sangoma, Digium, Kohmp e incluso algo de PIKA)
FreeSWITCH – Lenguajes
23/11/2011© 2011 Sangoma Technologies
8
• Lua
• PERL
• Ruby
• Python
• Java & .NET
• JavaScript
FreeSWITCH – Aplicaciones Nativas
23/11/2011© 2011 Sangoma Technologies
9
• Voicemail
• Colas para call centers
• Conferencias en alta definición
• Text to Speech y reconocimiento de voz
• FAX, T.30 y T.38
FreeSWITCH – Aplicaciones
23/11/2011© 2011 Sangoma Technologies
10
• 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
FreeSWITCH – Hola Mundo
23/11/2011© 2011 Sangoma Technologies
11
FreeSWITCH – Hola Mundo (LUA)
23/11/2011© 2011 Sangoma Technologies
12
FreeSWITCH – Contestando SMS
23/11/2011© 2011 Sangoma Technologies
13
Codecs de Audio
23/11/2011© 2011 Sangoma Confidential 14
• Los codecs codifican y decodifican la voz para su transmisión en la red.
– Algoritmo (technología de compresión)
– Bit rate
– Sampling rate
– Paquetización
• El algoritmo es el alma del codec (la salsa secreta!)
• El bit rate define el ancho de banda requerido (cuantos bits por segundo)
• El sampling rate define la calidad (parcialmente)
• La paquetización afecta la latencia y el consumo de ancho de banda
Codecs de Audio
23/11/2011© 2011 Sangoma Technologies
15
• G.711 (PCMU/PCMA, Ulaw/Alaw) – Narrowband (banda angosta)– 64kbps (Bit rate) – 64 mil bits por segundo son transferidos– 8kHz (Sampling rate) – 8 mil muestras de audio por segundo– 10ms, 20ms, 30ms, 40ms … + (paquetización) cada cuanto se
transmite un paquete de audio
• G.722 – Wideband (banda ancha)– 48kbps, 56kbps and 64kbps– 16kHz (IANA lo especifica a 8kHz debido a un error histórico en
el RFC1890)– 10ms, 20ms, 30ms, 40ms … +
• G.722.1 Annex C - Ultra-wideband (ultra banda ancha)– 48kbps (Nota que son menos bits por segundo que PCMU!)– 32kHz (Cada vez mas cerca a la calidad de audio de un CD)– 20ms, 40ms, 60ms
Codecs de Audio
23/11/2011© 2011 Sangoma Technologies
16
• FreeSWITCH soporta una amplia gama de codecs
– Narrowband (G.711, G.726, G.723.1, G.729AB, Speex …)
– Wideband (G.722, G.722.1, G.722.2, Speex …)
– Ultra-wideband (G.722.1C, Speex)
– CD-quality (CELT)
• El core de FreeSWITCH requiere el audio en formato L16 (signed linear) para su manipulación (mezcla, detección de tonos, etc)
• Los módulos de codec hacen transcoding de/hacia el formato L16
• Los módulos de codec “pass-thru” no hacen transcoding (mod_g729, mod_g723_1)
Codecs en FreeSWITCH
23/11/2011© 2011 Sangoma Technologies
17
Codecs en FreeSWITCH
23/11/2011© 2011 Sangoma Technologies
18
Transcoding
23/11/2011© 2011 Sangoma Confidential 19
• Requerido cuando los nodos no tienen codec en común
• FreeSWITCH debe permanecer en el path del audio
• Incrementa sustancialmente el uso del CPU si se hace en software (posible hacerlo en hardware)
• Es tipicamente necesario para:– Grabación de llamadas– Detección de tonos– Conferencias
Transcoding
23/11/2011© 2011 Sangoma Technologies
20
FreeSWITCH Transcoding
23/11/2011© 2011 Sangoma Technologies
21
• Transcoding en una llamada con una sola pierna SIP
FreeSWITCH Transcoding
23/11/2011© 2011 Sangoma Technologies
22
• Transcoding con 2 piernas SIP
FreeSWITCH codec pass-thru
23/11/2011© 2011 Sangoma Technologies
23
• Llamada sin transcoding usando un codec proprietario
Negociación de Codecs
23/11/2011© 2011 Sangoma Confidential 24
• Decisiones tomadas para elegir codecs compatibles en una llamada
• De una lista de codecs, escoge al menos uno!
• FreeSWITCH te permite elegir cuando (negociación temprana vs tardía)
• “Early” sucede antes de que la llamada llegue al plan de marcado
• “Late” sucede cuando la pierna necesita audio
Negociación de Codecs
23/11/2011© 2011 Sangoma Technologies
25
• 3 algoritmos de negociación– Generoso (generous)– Ambicioso (greedy)– Scrooge (Bah HUMBUG!)
• Escoge usando inbound-codec-negotiation en tu configuración SIP
• Usa la variable sip_codec_negotiation para alterar la negociación desde el plan de marcado
Negociación de Codecs
23/11/2011© 2011 Sangoma Technologies
26
Negociación de Codecs
23/11/2011© 2011 Sangoma Technologies
27
• El modo por defecto en FreeSWITCH
• El codec a usar es seleccionado comparando el SDP contra “inbound-codec-prefs” en la configuración SIP
• “disable-transcoding” ofrece el mismo codec seleccionado para la pierna entrante a la pierna de salida
• “absolute_codec_str” forza la oferta del codec a la lista especificada (incluso si es un codec no soportado!)
Negociación Temprana (early negotiation)
23/11/2011© 2011 Sangoma Technologies
28
23/11/2011© 2011 Sangoma Technologies
29
Negociación Temprana (early negotiation)
• Negociación de codecs de forma “más inteligente”
• “inbound-late-negotiation” debe ser “true” en la configuración SIP
• La llamada se recibe en el plan de marcado sin revisar los codecs
• La negociación ocurre cuando se necesita el audio
Negociación Tardía (late negotiation)
23/11/2011© 2011 Sangoma Technologies
30
• Puedes examinar el SDP entrante y reescribirlo para ajustarlo a tus necesidades
• La variable “inherit_codec” está disponible para usar el codec seleccionado en la pierna saliente para la pierna entrante
• La variable “ep_codec_string” contiene los codecs ofrecidos por el nodo entrante
23/11/2011© 2011 Sangoma Technologies
31
Negociación Tardía (late negotiation)
23/11/2011© 2011 Sangoma Technologies
32
Negociación Tardía (late negotiation)
Modos de Audio
23/11/2011© 2011 Sangoma Confidential 33
• El audio pasa alrededor de FreeSWITCH (no a través) directamente entre los nodos
• La señalización SIP permanece en FreeSWITCH
• Habilitado usando la variable “bypass_media=true” antes de ejecutar la aplicación “bridge”
• Usa “inbound-no-media” or “inbound-bypass-media” en la configuracón SIP si deseas hacerlo para todas las llamadas
Bypass Media
23/11/2011© 2011 Sangoma Technologies
34
• Puedes reproducir archivos de audio! (uuid_broadcast)
• uuid_media [off] puede re-invitar a FreeSWITCH dentro y fuera del path de audio
• Grabación de llamadas fallará a menos de que pongas a FreeSWITCH de nuevo en el path de audio manualmente
Bypass Media
23/11/2011© 2011 Sangoma Technologies
35
Bypass Media
23/11/2011© 2011 Sangoma Technologies
36
• También conocido como “transparent proxy mode”para el RTP
• Ninguna manipulación del RTP está habilitada
• Solo el atributo “c=” en el SDP is modificado
• Permite que FreeSWITCH pase audio en codecs que no soporta
Proxy Media
23/11/2011© 2011 Sangoma Technologies
37
• Usa la variable “proxy_media=true” antes de ejecutar “bridge”
• Usa el parámetro “inbound-proxy-media” en la configuración SIP si deseas hacerlo en todas las llamadas
• En la mayoría de los casos querras habilitar tambien “late negotiation”
Proxy Media
23/11/2011© 2011 Sangoma Technologies
38
Proxy Media
23/11/2011© 2011 Sangoma Technologies
39
Conclusión
23/11/2011© 2011 Sangoma Confidential 40
• La flexibilidad de FreeSWITCH en manejo de audio y señalización en muy amplia
• FreeSWITCH soporta virtualmente cualquier codec de la industria (y agregar nuevos codecs es un proceso simple)
• FreeSWITCH tiene la capacidad de transportar formatos de audio desconocidos
• El transcoding puede ser efectuado en software o hardware
Conclusión
23/11/2011© 2011 Sangoma Technologies
41