Asterisk con

Download Report

Transcript Asterisk con

Negociación de codecs en
Asterisk
Moisés Silva
Ingeniero / Manager de Software
[email protected]
Agenda
• Codecs de Audio
• Transcoding
• Negociación de Codecs
• Transcoding con Sangoma
© 2011 Sangoma Technologies
4/11/2011
2
Codecs de Audio
© 2011 Sangoma Confidential
4/11/2011
3
Codecs de Audio
• 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
© 2011 Sangoma Technologies
4/11/2011
4
Codecs de Audio
• 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
© 2011 Sangoma Technologies
4/11/2011
5
Codecs de Audio
• 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
© 2011 Sangoma Technologies
4/11/2011
6
Codecs de Audio
© 2011 Sangoma Technologies
4/11/2011
7
Transcoding
© 2011 Sangoma Confidential
4/11/2011
8
Transcoding
• 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)
© 2011 Sangoma Technologies
4/11/2011
9
Asterisk Transcoding
• Transcoding en una llamada de una sola pierna
© 2011 Sangoma Technologies
4/11/2011
10
Asterisk Transcoding
• Transcoding de 2 piernas SIP
© 2011 Sangoma Technologies
4/11/2011
11
Pass-thru de Codecs
• Asterisk puede hacer pass-thru del audio en algunos casos
© 2011 Sangoma Technologies
4/11/2011
12
Asterisk Translators
• 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
© 2011 Sangoma Technologies
4/11/2011
13
Asterisk Translators
© 2011 Sangoma Technologies
4/11/2011
14
Asterisk Translators
© 2011 Sangoma Technologies
4/11/2011
15
Negociación de codecs
© 2011 Sangoma Confidential
4/11/2011
16
Negociación de Codecs
• 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)
© 2011 Sangoma Technologies
4/11/2011
17
Negociación de Codecs
• 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=g729
allow=gsm
allow=alaw:20
© 2011 Sangoma Technologies
4/11/2011
18
Negociación de Codecs
• 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!
© 2011 Sangoma Technologies
4/11/2011
19
Negociación de Codecs
© 2011 Sangoma Technologies
4/11/2011
20
Formato de Audio
• 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
© 2011 Sangoma Technologies
4/11/2011
21
Modos de RTP
• 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
© 2011 Sangoma Technologies
4/11/2011
22
Asterisk con “directmedia”
© 2011 Sangoma Technologies
4/11/2011
23
Sangoma Transcoding
© 2011 Sangoma Confidential
4/11/2011
24
Sangoma Transcoding
• 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)
© 2011 Sangoma Technologies
4/11/2011
25
Implementación con Servidor Único
Asterisk
Capa de traducción
codec_sangoma
Cliente SOAP
(libsngtc-node)
Control via
conexión SOAP/TCP
Servidor SOAP
RTP
(Voice)
API
(libsng-tc)
Tarjetas detectadas
automaticamente
Driver ethernet standard
© 2011 Sangoma Technologies
4/11/2011
26
Implementación Distribuida
Servidor de Transcoding
Servidor de Aplicación
Asterisk
Capa de traducc.
sangoma_codec
Cliente SOAP
(libsngtc-node)
Control
(Conexión SOAP TCP)
RTP
(Voz)
Servidor SOAP
Servidor de Aplicación
Asterisk
API (libsng-tc)
Capa de traducc.
Driver ethernet standard
codec module
Cliente SOAP
(libsngtc-node)
RTP
(Voz)
© 2011 Sangoma Technologies
4/11/2011
27
Capacidades
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
© 2011 Sangoma Technologies
4/11/2011
28
Codecs en Asterisk por D-Series
•
•
•
•
•
•
•
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
© 2011 Sangoma Technologies
4/11/2011
29
Gracias!
© 2011 Sangoma Confidential
4/11/2011
30