30
Negociación de codecs en Asterisk Moisés Silva Ingeniero / Manager de Software [email protected]

Negociacion de Codecs en Asterisk

Embed Size (px)

Citation preview

Page 1: Negociacion de Codecs en Asterisk

Negociación de codecs en Asterisk

Moisés SilvaIngeniero / Manager de Software

[email protected]

Page 2: Negociacion de Codecs en Asterisk

• Codecs de Audio

• Transcoding

• Negociación de Codecs

• Transcoding con Sangoma

Agenda

4/11/2011© 2011 Sangoma Technologies

2

Page 3: Negociacion de Codecs en Asterisk

Codecs de Audio

4/11/2011© 2011 Sangoma Confidential 3

Page 4: Negociacion de Codecs en Asterisk

• Los codecs codifican y decodifican la voz para su transmisión por una medio digital

– Algoritmo matemático (la salsa secreta)

– Bit rate (cuantos bits en un segundo)

– Sampling rate (cuantas muestras en en un segundo)

– Paquetización (cuantos bytes por cada paquete)

• El algoritmo es la parte central del codec

• El bit rate define el ancho de banda requerido

• El “sampling rate” define la calidad (al menos parcialmente)

• La paquetización afecta la latencia y un ancho de banda extra

Codecs de Audio

4/11/2011© 2011 Sangoma Technologies

4

Page 5: Negociacion de Codecs en Asterisk

• G.711 (PCMU/PCMA, Ulaw/Alaw) – Banda angosta (Narrowband)– 64kbps (Bit rate)– 8kHz (Sampling rate)– 10ms, 20ms, 30ms, 40ms … + (Paquetización)

• G.722 – Banda ancha (Wideband)– 48kbps, 56kbps and 64kbps– 16kHz (IANA lo define a 8kHz debido a un error histórico en el

RFC1890)– 10ms, 20ms, 30ms, 40ms … +

• G.722.1 Annex C – Ultra banda ancha (Ultra-wideband)– 48kbps– 32kHz– 20ms, 40ms, 60ms

Codecs de Audio

4/11/2011© 2011 Sangoma Technologies

5

Page 6: Negociacion de Codecs en Asterisk

• Asterisk soporta una amplia gama de codecs

– Narrowband (G.711, G.726, G.723.1, G.729AB, Speex …)

– Wideband (G.722, Siren7, Speex …)

– Ultra-wideband (Siren14)

• Asterisk requiere el sonido en formato L16 (linear 16 bits)para su manipulación (mezclar audio o alterarlo)

• Los “translators” codifican y decodifican hacia/de un codec a otro (tipicamente hacia/de L16)

• Asterisk puede hacer “pass-thru” de codecs que no conoce

Codecs de Audio

4/11/2011© 2011 Sangoma Technologies

6

Page 7: Negociacion de Codecs en Asterisk

Codecs de Audio

4/11/2011© 2011 Sangoma Technologies

7

Page 8: Negociacion de Codecs en Asterisk

Transcoding

4/11/2011© 2011 Sangoma Confidential 8

Page 9: Negociacion de Codecs en Asterisk

• Requerido cuando los nodos de comunicación no tienen un codec en común

• Asterisk debe permanecer en el “path” de audio

• Incrementa el uso del CPU (particularmente si se hace en software)

• Es requerido si necesitas:– Grabación de llamadas en distinto formato – Detección de tonos, PLC etc– Mezcla de audio (ie, Conferencing with MeetMe)

Transcoding

4/11/2011© 2011 Sangoma Technologies

9

Page 10: Negociacion de Codecs en Asterisk

Asterisk Transcoding

4/11/2011© 2011 Sangoma Technologies

10

• Transcoding en una llamada de una sola pierna

Page 11: Negociacion de Codecs en Asterisk

Asterisk Transcoding

4/11/2011© 2011 Sangoma Technologies

11

• Transcoding de 2 piernas SIP

Page 12: Negociacion de Codecs en Asterisk

Pass-thru de Codecs

4/11/2011© 2011 Sangoma Technologies

12

• Asterisk puede hacer pass-thru del audio en algunos casos

Page 13: Negociacion de Codecs en Asterisk

Asterisk Translators

4/11/2011© 2011 Sangoma Technologies

13

• Traductores de Asterisk para pasar de un codec a otro

• Los módulos en codecs/codec_xxxx.so registran uno o mas traductores al ser cargados

• Cada traductor es asignado un costo dependiendo de los recursos requeridos para hacer la traducción

• Asterisk encuentra caminos de traducción basandose en estas medidas

Page 14: Negociacion de Codecs en Asterisk

Asterisk Translators

4/11/2011© 2011 Sangoma Technologies

14

Page 15: Negociacion de Codecs en Asterisk

Asterisk Translators

4/11/2011© 2011 Sangoma Technologies

15

Page 16: Negociacion de Codecs en Asterisk

Negociación de codecs

4/11/2011© 2011 Sangoma Confidential 16

Page 17: Negociacion de Codecs en Asterisk

• Son las decisiones hechas para escoger un codec para cada llamada

• Dada una lista de codecs, escoger uno!

• Varios parámetros y condiciones del sistema determinan las preferencias

• Usualmente es preferible evitar el transcoding con una configuración apropiada para cada nodo (ej, teléfono SIP)

Negociación de Codecs

4/11/2011© 2011 Sangoma Technologies

17

Page 18: Negociacion de Codecs en Asterisk

• No uses PLC nativo si quieres evitar transcoding

• En sip.conf las lineas allow=xx and disallow=xx determinan tus preferencias globales o por nodo (peer, friend)

• [darth-vader] disallow=all

allow=g729allow=gsm

allow=alaw:20

Negociación de Codecs

4/11/2011© 2011 Sangoma Technologies

18

Page 19: Negociacion de Codecs en Asterisk

• Los parámetros de los codecs son verificados y guardados al recibir SDP

• Usa las variables SIP_CODEC, SIP_INBOUND_CODEC and SIP_OUTBOUND_CODEC, para un mayor control por llamada

• Usa sip.conf “preferred_codec_only” cuando quieras controlar con precisión el codec a usar por cada nodo

• Todos los codecs anunciados en el SDP son aceptables!

Negociación de Codecs

4/11/2011© 2011 Sangoma Technologies

19

Page 20: Negociacion de Codecs en Asterisk

Negociación de Codecs

4/11/2011© 2011 Sangoma Technologies

20

Page 21: Negociacion de Codecs en Asterisk

• Usa la propiedad “audionativeformat” para encontrar el formato nativo de un canal– ${CHANNEL(audionativeformat)}

• Asterisk cambia el formato de lectura y escritura “al vuelo” si un nuevo tipo de RTP es recibido– ${CHANNEL(audioreadformat)}– ${CHANNEL(audiowriteformat)}

• El primer paquete RTP determina el codec a usar cuando existen multiples opciones

Formato de Audio

4/11/2011© 2011 Sangoma Technologies

21

Page 22: Negociacion de Codecs en Asterisk

• El parámetro “directmedia” (el viejo “canreinvite”) causa que el RTP vaya directo entre los nodos enviando un nuevo INVITE o un UPDATE

• El nuevo parámetro “directrtpsetup” permite también que ambos nodos se comuniquen directo, pero no requiere un nuevo INVITE o un UPDATE

• En ambos modos Asterisk no será capaz de hacer transcoding

Modos de RTP

4/11/2011© 2011 Sangoma Technologies

22

Page 23: Negociacion de Codecs en Asterisk

Asterisk con “directmedia”

4/11/2011© 2011 Sangoma Technologies

23

Page 24: Negociacion de Codecs en Asterisk

Sangoma Transcoding

4/11/2011© 2011 Sangoma Confidential 24

Page 25: Negociacion de Codecs en Asterisk

• El más amplio soporte de codecs en la industria

• Funcionamiento basado en Ethernet y RTP

• Interfaz SOAP para el control de transcoding

• Multiples servidores pueden usar una sola tarjeta

• Actualización de firmware en el campo de trabajo

• Licencias actualizables (desde 30 licenses hasta 400)

Sangoma Transcoding

4/11/2011© 2011 Sangoma Technologies

25

Page 26: Negociacion de Codecs en Asterisk

Implementación con Servidor Único

4/11/2011© 2011 Sangoma Technologies

26

API(libsng-tc)

AsteriskCapa de traducción

Driver ethernet standard

RTP(Voice)

codec_sangoma

Servidor SOAP

Cliente SOAP(libsngtc-node)

Control via conexión SOAP/TCP

Tarjetas detectadas automaticamente

Page 27: Negociacion de Codecs en Asterisk

Implementación Distribuida

4/11/2011© 2011 Sangoma Technologies

27

API (libsng-tc)

Driver ethernet standard

RTP(Voz)

Servidor SOAP

AsteriskCapa de traducc.

sangoma_codec

AsteriskCapa de traducc.

codec module

RTP(Voz)

Cliente SOAP(libsngtc-node)

Servidor de TranscodingServidor de Aplicación

Servidor de Aplicación

Cliente SOAP(libsngtc-node)

Control(Conexión SOAP TCP)

Page 28: Negociacion de Codecs en Asterisk

Capacidades

4/11/2011© 2011 Sangoma Technologies

28

Codec/P Time 10 ms 20 ms 30 ms 40 ms 50 ms

G.729 AB 300 440 459 462 466

G.722 290 388 410 388

GSM 480

AMR 12.20 200 226

AMR 4.75 258 281

ILBC 15.2 310 298

ILBC 13.3 273

G.723 5.3 200

G.723 6.3 200

G.726 32 310 450 480 480 480

PCM/U 310 390 420 440 460

PCM/A 310 390 420 440 460

Page 29: Negociacion de Codecs en Asterisk

• G.729• G.726-32• G.722• G.722.1• G.723.1• iLBC• AMR

– *más codecs son soportados por las tarjetas D-series pero no implementados o soportados por Asterisk

Codecs en Asterisk por D-Series

4/11/2011© 2011 Sangoma Technologies

29

Page 30: Negociacion de Codecs en Asterisk

Gracias!

4/11/2011© 2011 Sangoma Confidential 30