Me llego una pagina de servicios en la nube, el famoso cloud computing, probando las posibilidades que ofrece instale un par de servidores linux para verificar unas ideas que traigo, y en eso se me ocurrió verificar el ancho de banda que ofrecen estos servicios y hacer una observación gráfica de diferentes codecs de audio existentes en Asterisk y en un teléfono IP Aastra que cayo en mis manos.
Después de la instalación de Debian GNU/Linux y Asterisk, creamos un sencillo dialplan con el fin de crear un contador usando los dígitos existentes en el paquete de sonidos.
[default] exten => 200,1,Goto(test,s,1) [test] exten => s,1,Answer() exten => s,n,Set(COUNT=${DB(test/count)}) exten => s,n,GotoIf($[${ISNULL(${COUNT})}]?:continue) exten => s,n,Set(DB(test/count)=1) exten => s,n,Goto(1) exten => s,n(continue),NoOp() exten => s,n,SayNumber(${COUNT}) exten => s,n,Set(COUNT=$[${COUNT} + 1]) exten => s,n,Set(DB(test/count)=${COUNT}) exten => s,n,Goto(1)
Aquí vemos la ejecución donde apreciamos que el contador ya se encuentra en el número 1760, para este caso la ejecución es en GSM sin embargo cada llamada fue realizada con el codec correspondiente y para evitar conversión de un codec a otro (transcoding) se instalaron los paquetes de sonidos de cada uno de ellos.
agua*CLI> == Using SIP RTP CoS mark 5 -- Executing [200@default:1] Goto("SIP/1000-00000013", "test,s,1") in new stack -- Goto (test,s,1) -- Executing [s@test:1] Answer("SIP/1000-00000013", "") in new stack -- Executing [s@test:2] Set("SIP/1000-00000013", "COUNT=1759") in new stack -- Executing [s@test:3] GotoIf("SIP/1000-00000013", "0?:continue") in new stack -- Goto (test,s,6) -- Executing [s@test:6] NoOp("SIP/1000-00000013", "") in new stack -- Executing [s@test:7] SayNumber("SIP/1000-00000013", "1759") in new stack -- Playing 'digits/1.gsm' (language 'en') -- Playing 'digits/thousand.gsm' (language 'en') -- Playing 'digits/7.gsm' (language 'en') -- Playing 'digits/hundred.gsm' (language 'en') -- Playing 'digits/50.gsm' (language 'en') -- Playing 'digits/9.gsm' (language 'en') -- Executing [s@test:8] Set("SIP/1000-00000013", "COUNT=1760") in new stack -- Executing [s@test:9] Set("SIP/1000-00000013", "DB(test/count)=1760") in new stack -- Executing [s@test:10] Goto("SIP/1000-00000013", "1") in new stack -- Goto (test,s,1) -- Executing [s@test:1] Answer("SIP/1000-00000013", "") in new stack -- Executing [s@test:2] Set("SIP/1000-00000013", "COUNT=1760") in new stack -- Executing [s@test:3] GotoIf("SIP/1000-00000013", "0?:continue") in new stack -- Goto (test,s,6) -- Executing [s@test:6] NoOp("SIP/1000-00000013", "") in new stack -- Executing [s@test:7] SayNumber("SIP/1000-00000013", "1760") in new stack -- Playing 'digits/1.gsm' (language 'en') -- Playing 'digits/thousand.gsm' (language 'en') -- Playing 'digits/7.gsm' (language 'en') -- Playing 'digits/hundred.gsm' (language 'en') -- Playing 'digits/60.gsm' (language 'en')
Cada imagen se obtuvo mediante el programa iftop (aptitude install iftop), para darnos una idea general del uso de ancho de banda de cada codec en un flujo constante de datos, las imágenes muestran una conexión mediante IAX2 y el ejemplo del dialplan esta en SIP sin embargo es igual para ambos caso de un modo general.
El ejemplo del contador fue tomado del libro Asterisk: The Future of Telephony.