Negociación de codecs en Asterisk Moisés Silva Ingeniero / Manager de Software [email protected].
-
Upload
noelia-aragona -
Category
Documents
-
view
221 -
download
1
Transcript of Negociación de codecs en Asterisk Moisés Silva Ingeniero / Manager de Software [email protected].
• Codecs de Audio
• Transcoding
• Negociación de Codecs
• Transcoding con Sangoma
Agenda
4/11/2011© 2011 Sangoma Technologies
2
Codecs de Audio
4/11/2011© 2011 Sangoma Confidential 3
• 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
• 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
• 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
Codecs de Audio
4/11/2011© 2011 Sangoma Technologies
7
Transcoding
4/11/2011© 2011 Sangoma Confidential 8
• 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
Asterisk Transcoding
4/11/2011© 2011 Sangoma Technologies
10
• Transcoding en una llamada de una sola pierna
Asterisk Transcoding
4/11/2011© 2011 Sangoma Technologies
11
• Transcoding de 2 piernas SIP
Pass-thru de Codecs
4/11/2011© 2011 Sangoma Technologies
12
• Asterisk puede hacer pass-thru del audio en algunos casos
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
Asterisk Translators
4/11/2011© 2011 Sangoma Technologies
14
Asterisk Translators
4/11/2011© 2011 Sangoma Technologies
15
Negociación de codecs
4/11/2011© 2011 Sangoma Confidential 16
• 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
• 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
• 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
Negociación de Codecs
4/11/2011© 2011 Sangoma Technologies
20
• 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
• 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
Asterisk con “directmedia”
4/11/2011© 2011 Sangoma Technologies
23
Sangoma Transcoding
4/11/2011© 2011 Sangoma Confidential 24
• 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
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
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)
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
• 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
Gracias!
4/11/2011© 2011 Sangoma Confidential 30