Negociación de codecs en Asterisk Moisés Silva Ingeniero / Manager de Software
Codecs de Audio Transcoding Negociación de Codecs Transcoding con Sangoma Agenda 4/11/2011© 2011 Sangoma Technologies2
Codecs de Audio 4/11/2011© 2011 Sangoma Confidential3
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 Technologies4
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 Annex C – Ultra banda ancha (Ultra-wideband) –48kbps –32kHz –20ms, 40ms, 60ms Codecs de Audio 4/11/2011© 2011 Sangoma Technologies5
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 Technologies6
Codecs de Audio 4/11/2011© 2011 Sangoma Technologies7
Transcoding 4/11/2011© 2011 Sangoma Confidential8
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 Technologies9
Asterisk Transcoding 4/11/2011© 2011 Sangoma Technologies10 Transcoding en una llamada de una sola pierna
Asterisk Transcoding 4/11/2011© 2011 Sangoma Technologies11 Transcoding de 2 piernas SIP
Pass-thru de Codecs 4/11/2011© 2011 Sangoma Technologies12 Asterisk puede hacer pass-thru del audio en algunos casos
Asterisk Translators 4/11/2011© 2011 Sangoma Technologies13 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 Technologies14
Asterisk Translators 4/11/2011© 2011 Sangoma Technologies15
Negociación de codecs 4/11/2011© 2011 Sangoma Confidential16
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 Technologies17
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 Negociación de Codecs 4/11/2011© 2011 Sangoma Technologies18
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 Technologies19
Negociación de Codecs 4/11/2011© 2011 Sangoma Technologies20
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 Technologies21
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 Technologies22
Asterisk con “directmedia” 4/11/2011© 2011 Sangoma Technologies23
Sangoma Transcoding 4/11/2011© 2011 Sangoma Confidential24
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 Technologies25
Implementación con Servidor Único 4/11/2011© 2011 Sangoma Technologies26 API (libsng-tc) Asterisk Capa 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 Technologies27 API (libsng-tc) Driver ethernet standard RTP (Voz) Servidor SOAP Asterisk Capa de traducc. sangoma_codec Asterisk Capa de traducc. codec module RTP (Voz) Cliente SOAP (libsngtc-node) Servidor de Transcoding Servidor de Aplicación Cliente SOAP (libsngtc-node) Control (Conexión SOAP TCP)
Capacidades 4/11/2011© 2011 Sangoma Technologies28 Codec/P Time10 ms20 ms30 ms40 ms50 ms G.729 AB G GSM480 AMR AMR ILBC ILBC G G G PCM/U PCM/A
G.729 G G.722 G G 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 Technologies29
Gracias! 4/11/2011© 2011 Sangoma Confidential30