Manejo de Medios en FreeSWITCH

42
Manejo de Medios en FreeSWITCH Moisés Silva Software Engineer / Manager [email protected]

description

Entendiendo transcoding en FreeSWITCH

Transcript of Manejo de Medios en FreeSWITCH

Page 1: Manejo de Medios en FreeSWITCH

Manejo de Medios en FreeSWITCH

Moisés SilvaSoftware Engineer / Manager

[email protected]

Page 2: Manejo de Medios en FreeSWITCH

• 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

Page 3: Manejo de Medios en FreeSWITCH

Introducción a FreeSWITCH

23/11/2011© 2011 Sangoma Confidential 3

Page 4: Manejo de Medios en FreeSWITCH

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!

Page 5: Manejo de Medios en FreeSWITCH

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

Page 6: Manejo de Medios en FreeSWITCH

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 …

Page 7: Manejo de Medios en FreeSWITCH

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)

Page 8: Manejo de Medios en FreeSWITCH

FreeSWITCH – Lenguajes

23/11/2011© 2011 Sangoma Technologies

8

• Lua

• PERL

• Ruby

• Python

• Java & .NET

• JavaScript

Page 9: Manejo de Medios en FreeSWITCH

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

Page 10: Manejo de Medios en FreeSWITCH

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

Page 11: Manejo de Medios en FreeSWITCH

FreeSWITCH – Hola Mundo

23/11/2011© 2011 Sangoma Technologies

11

Page 12: Manejo de Medios en FreeSWITCH

FreeSWITCH – Hola Mundo (LUA)

23/11/2011© 2011 Sangoma Technologies

12

Page 13: Manejo de Medios en FreeSWITCH

FreeSWITCH – Contestando SMS

23/11/2011© 2011 Sangoma Technologies

13

Page 14: Manejo de Medios en FreeSWITCH

Codecs de Audio

23/11/2011© 2011 Sangoma Confidential 14

Page 15: Manejo de Medios en FreeSWITCH

• 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

Page 16: Manejo de Medios en FreeSWITCH

• 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

Page 17: Manejo de Medios en FreeSWITCH

• 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

Page 18: Manejo de Medios en FreeSWITCH

Codecs en FreeSWITCH

23/11/2011© 2011 Sangoma Technologies

18

Page 19: Manejo de Medios en FreeSWITCH

Transcoding

23/11/2011© 2011 Sangoma Confidential 19

Page 20: Manejo de Medios en FreeSWITCH

• 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

Page 21: Manejo de Medios en FreeSWITCH

FreeSWITCH Transcoding

23/11/2011© 2011 Sangoma Technologies

21

• Transcoding en una llamada con una sola pierna SIP

Page 22: Manejo de Medios en FreeSWITCH

FreeSWITCH Transcoding

23/11/2011© 2011 Sangoma Technologies

22

• Transcoding con 2 piernas SIP

Page 23: Manejo de Medios en FreeSWITCH

FreeSWITCH codec pass-thru

23/11/2011© 2011 Sangoma Technologies

23

• Llamada sin transcoding usando un codec proprietario

Page 24: Manejo de Medios en FreeSWITCH

Negociación de Codecs

23/11/2011© 2011 Sangoma Confidential 24

Page 25: Manejo de Medios en FreeSWITCH

• 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

Page 26: Manejo de Medios en FreeSWITCH

• 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

Page 27: Manejo de Medios en FreeSWITCH

Negociación de Codecs

23/11/2011© 2011 Sangoma Technologies

27

Page 28: Manejo de Medios en FreeSWITCH

• 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

Page 29: Manejo de Medios en FreeSWITCH

23/11/2011© 2011 Sangoma Technologies

29

Negociación Temprana (early negotiation)

Page 30: Manejo de Medios en FreeSWITCH

• 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

Page 31: Manejo de Medios en FreeSWITCH

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

Page 32: Manejo de Medios en FreeSWITCH

23/11/2011© 2011 Sangoma Technologies

32

Negociación Tardía (late negotiation)

Page 33: Manejo de Medios en FreeSWITCH

Modos de Audio

23/11/2011© 2011 Sangoma Confidential 33

Page 34: Manejo de Medios en FreeSWITCH

• 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

Page 35: Manejo de Medios en FreeSWITCH

• 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

Page 36: Manejo de Medios en FreeSWITCH

Bypass Media

23/11/2011© 2011 Sangoma Technologies

36

Page 37: Manejo de Medios en FreeSWITCH

• 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

Page 38: Manejo de Medios en FreeSWITCH

• 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

Page 39: Manejo de Medios en FreeSWITCH

Proxy Media

23/11/2011© 2011 Sangoma Technologies

39

Page 40: Manejo de Medios en FreeSWITCH

Conclusión

23/11/2011© 2011 Sangoma Confidential 40

Page 41: Manejo de Medios en FreeSWITCH

• 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

Page 42: Manejo de Medios en FreeSWITCH

Gracias!

23/11/2011© 2011 Sangoma Confidential 42

[email protected]