Problema de selección de codecs Asterisk 11.7

1,112 views
Skip to first unread message

Miguel Alberto Sanz Pardo

unread,
Jun 27, 2014, 6:23:28 AM6/27/14
to aster...@googlegroups.com
Hola buenos días,

Tenía en mente:
 - usar el codec de audio G729 (del cual tenemos por ahora un par de licencias) para llamadas salientes por proveedores VOIP 
 - usar el codec de audio ALAW para llamadas internas y para llamadas salientes por troncales Analógicos y BRI


Mis terminales están configurados de esta manera:
...
disallow=all
allow=alaw
allow=g729


Mis proveedores VOIP están configurados de esta manera:
...
disallow=all
allow=g729
allow=alaw


Si trato de salir hacia el exterior a través del troncal de VOIP intenta usar el codec alaw.

Estuve investigando y vi que había gente a la que supuestamente le valía hacer algo de este estilo en el dialplan:
exten=>_000.,1,Set(__SIP_CODEC=g729) 
same => n,Dial(SIP/voipdiscount-salientes/${EXTEN:1},30)
same => n,Hangup()

He probado y es como si no le hiciera caso.


Ya consulté las listas y vi que había un bug en el sistema de negociado de codecs(desde los comienzos de Asterisk) y que era un dolor de muelas, mi pregunta es ¿Sigue el bug en la versón 11.7 de Asterisk? Yo pensaba que ya no pero por lo visto me da que la cosa sigue igual de mal.


¿Se os ocurre alguna solución decente(o al menos alguna solución...XD)?


PD:
Pensé en la guarrada de poner los terminales con esta configuración:
...
disallow=all
allow=g729
allow=alaw

Y los proveedores dejarlos igual:
...
disallow=all
allow=g729
allow=alaw


Y después en el dialplan cuando fuera necesario usar el Set(__SIP_CODEC=alaw) pero tampoco hace caso al Set(__SIP_CODEC=....) :(

Ricardo Peironcely

unread,
Jun 27, 2014, 6:43:54 AM6/27/14
to aster...@googlegroups.com
¿Y si en el proveedor pones únicamente?

disallow=all
allow=g729

Tendrás problemas si la llamada es descolgada antes de ser pasada al proveedor, ya que asterisk tendrá que recodificar y solo tienes 2 licencias. Si se negocia al salir hacia el proveedor, ambas patas negociarán en g729.

Un saludo / Best regards / С уважением

Ricardo Peironcely


--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Raúl Alexis Betancor Santana

unread,
Jun 27, 2014, 9:16:35 AM6/27/14
to Ricardo Peironcely, aster...@googlegroups.com

Salvo que lo hayan corregido ... Cosa que dudo ... Si fuerzas el códec en el operador, pero no en la extensión... Asterisk hará siempre transcoding.

Saludos

Miguel Alberto Sanz Pardo

unread,
Jun 27, 2014, 11:33:39 AM6/27/14
to aster...@googlegroups.com, ricardo.p...@gmail.com
Os cuento mis experiencias:

1) CASO A
En caso de poner en el proveedor 
disallow=all
allow=g729

Y en el terminal
disallow=all
allow=alaw
allow=g729

me aparece este mensaje por el CLI
 WARNING[15057][C-00000024]: channel.c:5309 set_format: Unable to find a codec translation path from (g729) to (slin)
pero puedo realizar una comunicación saliente

Y si además trato de realizar una segunda llamada a la vez a través del mismo proveedor VOIP (u otro configurado de la misma manera) mediante otro terminal me dice:
 WARNING[15188][C-0000002a]: chan_sip.c:6370 sip_call: No audio format found to offer. Cancelling call to 976682118
y no me deja establecer una segunda llamada, entiendo que porque sólo tengo una licencia.

Si trato de realizar una segunda llamada por un troncal analógico/digital a la vez que hago una llamada por el de VOIP no tengo ningún problema, ya que uso el codec alaw y las tarjetas analógicas/digtales son compatibles con alaw.


2) CASO B
Si en el terminal y en el proveedor tengo:
disallow=all
allow=g729

o incluso si tengo en ambos
disallow=all
allow=g729
allow=alaw

Puedo realizar más de una llamada a la vez a través del mismo o de diferentes proveedores VOIP.

Si trato de salir a través de un troncal RDSI o analógico(a través de una tarjeta) me aparece este mensaje, ya que las tarjetas no son capaces de transcodear/funcionar con g729(o eso creo)
 WARNING[15238][C-00000048]: channel.c:5309 set_format: Unable to find a codec translation path from (g729) to (slin)
 WARNING[15238][C-00000048]: indications.c:157 playtones_alloc: Unable to set 'SIP/194-00000087' to signed linear format (write)
 WARNING[15238][C-00000048]: channel.c:4630 ast_indicate_data: Unable to handle indication 3 for 'SIP/194-00000087'
WARNING[15239][C-00000049]: channel.c:5907 ast_request: No translator path exists for channel type DAHDI (native (ulaw|alaw|slin)) to (g729)
 WARNING[15239][C-00000049]: app_dial.c:2437 dial_exec_full: Unable to create channel of type 'DAHDI' (cause 58 - Bearer capability not available)
  == Everyone is busy/congested at this time (1:0/0/1)

Si tuviera gateways FXO y BRI (con licencia con codec G729) supongo que este problema no me aparecería


3)CASO C
Si en el terminal y en el proveedor tengo:
disallow=all
allow=alaw
allow=729

Se comunican en alaw y no hay ningún problema y permite más de una llamada sea por donde sea(troncal analógico, digital ol VOIP)



Por cierto sólo tengo una licencia, pensaba que había comprado 2 pero sólo tengo 1, aunque creo que acabaremos comprando 3 más al menos.

Sea cómo sea no consigo hacer lo que quería, ya que me interesaba usar el alaw para llamadas internas y para saliente por troncales no IP y el g729 para troncales IP

¿Por qué Asterisk no es capaz de distinguir? :-( Si funcionara lo de Set(__SIP_CODEC=g729) al menos...



Tengo la sensación que la mejor solución va a ser usar G729 sin transcodear en la medida de lo posible y comprar un gateway BRI, un gateway con dos puertos FXO que tengan G729 y varias licencias para cuando toque transcodear por la razón que sea...en fin que rollo...si se os ocurre algo os lo agradeceré etérnamente.

Ricardo Peironcely

unread,
Jun 27, 2014, 1:18:29 PM6/27/14
to Miguel Alberto Sanz Pardo, aster...@googlegroups.com
¿Tus teléfonos tienen g729?

Un saludo / Best regards / С уважением

Ricardo Peironcely


Miguel Alberto Sanz Pardo

unread,
Jun 27, 2014, 4:26:04 PM6/27/14
to aster...@googlegroups.com, miguels...@gmail.com
Yes, tanto mis teléfonos VOIP como mi gateway FXS tienen G729 ¿Se te ocurre qué hacer?

Ricardo Peironcely

unread,
Jun 28, 2014, 3:28:35 AM6/28/14
to aster...@googlegroups.com, Miguel Alberto Sanz Pardo
si debug peer tanto para el teléfono como para el gateway y ven que ofrece cada uno.


Un saludo / Best regards / С уважением

Ricardo Peironcely


ra...@dimension-virtual.com

unread,
Jun 29, 2014, 9:27:42 AM6/29/14
to aster...@googlegroups.com
> Os cuento mis experiencias:
>
> 1) CASO A
> En caso de poner en el proveedor
> disallow=all
> allow=g729
>
> Y en el terminal
> disallow=all
> allow=alaw
> allow=g729

Con esa configuración ... y 'grácias' al super-algoritmo de selección de codecs
de Asterisk (en todas sus versiones ... a cual peor), te pasará SIEMPRE esto:

a) Llamadas originadas en el terminal y que salen por el proveedor:
- Siempre serán Alaw entre el terminal y Asterisk y G729 entre Asterisk y el
proveedor, haciendo Asterisk transcoding. ¡Ojo, que también influye el codec
order que tengas configurado en el terminal IP!

b) Llamadas originadas en el proveedor que acaban en el terminal:
- La llamada será siempre G729 entre proveedor y Asterisk y G729 entre
Asterisk y terminal IP

> Y si además trato de realizar una segunda llamada a la vez a través del
> mismo proveedor VOIP (u otro configurado de la misma manera) mediante otro
> terminal me dice:
> WARNING[15188][C-0000002a]: chan_sip.c:6370 sip_call: No audio format
> found to offer. Cancelling call to 976682118
> y no me deja establecer una segunda llamada, entiendo que porque sólo tengo
> una licencia.

¡Enorabuena!, te has dado de bruces con una de las mayores cagadas de Asterisk
... cuando se queda sin licencias, no te deja establecer las llamadas, a pesar
de que lo pueda hacer con otra combinación de codecs.

> Si trato de realizar una segunda llamada por un troncal analógico/digital a
> la vez que hago una llamada por el de VOIP no tengo ningún problema, ya que
> uso el codec alaw y las tarjetas analógicas/digtales son compatibles con
> alaw.

Umm ... a las tarjetas les importa un carajo el codec ... es Asterisk quien hace
la conversión de lo que sea que negocia con el terminal y el formato de la
tarjeta (alaw/ulaw para las RDSI y PRI y slin para las analógicas)

> 2) CASO B
> Si en el terminal y en el proveedor tengo:
> disallow=all
> allow=g729
>
> o incluso si tengo en ambos
> disallow=all
> allow=g729
> allow=alaw
>
> Puedo realizar más de una llamada a la vez a través del mismo o de
> diferentes proveedores VOIP.
>
> Si trato de salir a través de un troncal RDSI o analógico(a través de una
> tarjeta) me aparece este mensaje, ya que las tarjetas no son capaces de
> transcodear/funcionar con g729(o eso creo)
> WARNING[15238][C-00000048]: channel.c:5309 set_format: Unable to find a
> codec translation path from (g729) to (slin)

Te estás equivocando de lleno ... vuelvo y te repito, que a la tarjeta le
importa un carajo el asunto del codec, ese mensaje de warning (que no error), te
sale porque tienes mal configurados los codecs en asterisk, no te quedan
licencias de g729 libres o no has cargado los módulos.
Una tarjeta RDSI no hace transcoding de G729 ... NO LO ENTIENDE ... una RDSI
solo entiende ALAW y ULAW (depende del país), el transcoding lo hace Asterisk y
es ahí donde te está diciendo que no puede. Otra cosa es averiguar porqué.

> Si tuviera gateways FXO y BRI (con licencia con codec G729) supongo que
> este problema no me aparecería

Obvio. El GW ya se encargaría de negociar y hacer transcoding.

> 3)CASO C
> Si en el terminal y en el proveedor tengo:
> disallow=all
> allow=alaw
> allow=729
>
> Se comunican en alaw y no hay ningún problema y permite más de una llamada
> sea por donde sea(troncal analógico, digital ol VOIP)

Porque probablemente tu problema REAL, es la cantidad de canales G729 que
asterisk soporta (licencias) ... y porque tienes configurado el Asterisk para
que trabaje como un B2BUA Topo-Hidding ... lo que hace que TODO el tráfico RTP
tenga que pasar por 'huevos' por Asterisk y encima haciendo transcoding, por lo
que agotas las licencias.

> Por cierto sólo tengo una licencia, pensaba que había comprado 2 pero sólo
> tengo 1, aunque creo que acabaremos comprando 3 más al menos.

¿Sabes que solo necesitas licencias si vas a montar un IVR o dar locuciones
desde el Asterisk? ... para comunicar un terminal SIP con un proveedor SIP a
través de Asterisk, no necesitas licencias de G729 en el Asterisk, en absoluto.

> Sea cómo sea no consigo hacer lo que quería, ya que me interesaba usar el
> alaw para llamadas internas y para saliente por troncales no IP y el g729
> para troncales IP
>
> ¿Por qué Asterisk no es capaz de distinguir? :-( Si funcionara lo de
> Set(__SIP_CODEC=g729) al menos...

Lo del Set ... funciona ... solo que no entiendes como ;) ... eso solo cambia
el codec de la pata SALIENTE, osea si llamas desde un terminal a un número
externo, pasando por el Asterisk, y tienes esa llamada en el dialplan, SOLO
cambiará el CODEC (a través de un REINVITE) en la parte de Asterisk->Proveedor
IP ... no en la parte de Terminal -> Asterisk ... que si tienes puesto en el
terminal como primera opción alaw y en el asterisk tienes alaw,g729 ... esa pata
seguirá en alaw y Asterisk tendrá que hacer transcoding, consumiendo licencia.

> Tengo la sensación que la mejor solución va a ser usar G729 sin transcodear
> en la medida de lo posible y comprar un gateway BRI, un gateway con dos
> puertos FXO que tengan G729 y varias licencias para cuando toque
> transcodear por la razón que sea...en fin que rollo...si se os ocurre algo
> os lo agradeceré etérnamente.

La solución es un poco radical ... pero .... Deja de usar Asterisk ... sobre
todo si pretendes que la negociación de codecs funcione ... no lo han arreglado
en 13 años y no lo van a hacer ahora.

Ahora volviendo al mundo real, donde por narices tienes que usar el Asterisk ...
y como por ahora no hay solución para el problema de negociación de codecs, sin
que te metas a meterle mano al código de Asterisk (algo harto no recomendable,
si quieres conservar la cordura) o que te montes un B2BUA con SEMS y uses los
módulos DSM para 'arreglar' el tema de los codecs, tus mejores opciones son:

- Configura el codec preference order de los terminales, poniendo el g729 primero
- Dile a Asterisk que use solo G729 y configuralo para que no se 'trage' todo el
tráfico RTP, de forma que las extensiones se comuniquen directamente de forma
REAL.

Saludos

Miguel Alberto Sanz Pardo

unread,
Jun 30, 2014, 5:32:56 AM6/30/14
to aster...@googlegroups.com, miguels...@gmail.com
Por una parte tengo dos gateway 24xFXS con teléfonos analógicos y por otra teléfonos VOIP pero actualmente las pruebas las estamos realizando sólo con el gateway.

Cuando pueda hago un debug aunque creo que Raúl ha respondido a todo :)


un saludo 

Miguel Sanz

Miguel Alberto Sanz Pardo

unread,
Jun 30, 2014, 7:04:42 AM6/30/14
to aster...@googlegroups.com
Te cuento Raúl,


- Los módulos en principio los tengo todos cargados con un autoload=yes, de hecho debería de pensar en desactivar alguno. 

- Cuando me dices que configure el preference order de los terminales a g729 te refieres tanto en el SIP.conf como en el propio  terminal ¿no?
Actualmente en mis terminales VOIP(en este caso en concreto en mi gateway FXS) como primera opción de codec de audio tengo el alaw, así que si esto afecta a pesar de que en el SIP.conf le diga que la primera opción sea el g729 lo cambiaré en el propio gateway

- En cuanto al tráfico sí que tengo a Asterisk para que se lo trague todo él con un directmedia=no, ¿No puede dar problemas si pongo directmedia=yes a la hora de intentar salir  través de hacer llamadas salientes?
Creo que anteriormente tuve problemas con el canreinvite (lo que viene a ser ahora el directmedia si no me confundo) con respecto a las llamadas salientes.
Mis proveedores los tengo configurados así:
[voipdiscount-salientes]
type = peer
secret = 
username = 
fromuser = 
dtmfmode=rfc2833
insecure = invite
canreinvite=no
nat = no
qualify = no
disallow=all
allow=g729
allow=alaw


[adamvozip-salientes]
type=peer
secret= 
username=
fromuser=
fromdomain=adamvozip.es
insecure=port,invite
canreinvite=no
nat=force_rport,comedia
dtmfmode=rfc2833
qualify = no
disallow=all
allow=g729
allow=alaw


Y mis extensiones internas así:
secret=
type=friend
context=outgoing
dtmfmode=rfc2833
host=dynamic
language = es
disallow=all
allow=alaw
allow=g729
qualify=yes
canreinvite=no
nat=no


- En cuanto al uso de licencias g729 entiendo que si la comunicación es directa entre dos terminales no hay transcoding de ningún tipo a través de Asterisk y por tanto la licencia no se usa. Y en caso de que la comunicación sea a través de Asterisk si ambos terminales tienen g729 y en su contexto usan como primera opción g729 tampoco habría ningún problema de transcoding.
Si actualmente trato de salir a través de una tarjeta RDSI o analógica ahí entiendo que Asterisk deberá de hacer un transcoding  porque no hay más remedio ¿No? En caso de tener gateways BRI o FXO supongo que este problema se solucionaría. En tal caso, el problema sólo aparecería si entra más de una persona a la vez al IVR ¿no? Cada vez que entra 1 persona habría que hacer un transcoding y por tanto se usaría una licencia. En principio el proveedor de VOIP sólo es usado para llamadas salientes, para llamadas entrantes usamos el proveedor de telefonía normal y corriente (RDSI y analógico, tenemos líneas de ambos tipos)

- Pensando en la putadita de los codecs me surgen un par de dudas:
A)En la empresa disponemos dos contextos:
*Telefonía interna
*Pruebas fábrica
Para las pruebas de fábrica  se usa el g711 sí o sí
Para la telefonía interna quería usar el g711 para llamadas internas y el g729 para salientes por VOIP
Si en telefonía interna dejo como primer codec el g729  y quiero llamar de telefonía interna a fábrica o viceversa habrá transcoding en caso de que la comunicación sea a través de Asterisk ¿No? No me quedaría más remedio que evitar que el tráfico pasara a través de Asterisk en caso de llamadas internas si unos terminales trabajan bajo g711 y otros trabajan bajo g729 con opción de g711


B)Si trato de hacer un paging o una conferencia necesitaré una licencia por cada usuario al que realizo el paging o por cada usuario que entra enla conferencia ¿No?

ra...@dimension-virtual.com

unread,
Jun 30, 2014, 8:09:28 AM6/30/14
to aster...@googlegroups.com
> Te cuento Raúl,
>
>
> - Los módulos en principio los tengo todos cargados con un autoload=yes, de
> hecho debería de pensar en desactivar alguno.

Siempre es preferible tener cargado solo lo que se usa, mas que nada, porque hay
varios módulos que per-sé están cascados ... ya ni te cuento los que no se
llevan bien entre ellos.

> - Cuando me dices que configure el preference order de los terminales a
> g729 te refieres tanto en el SIP.conf como en el propio terminal ¿no?
> Actualmente en mis terminales VOIP(en este caso en concreto en mi gateway
> FXS) como primera opción de codec de audio tengo el alaw, así que si esto
> afecta a pesar de que en el SIP.conf le diga que la primera opción sea el
> g729 lo cambiaré en el propio gateway.

A ver si soy capaz de explicarte lo de los codecs en Asterisk de una forma
simplificada ...

En Asterisk NO FUNCIONA la selección de codecs ... ¿suficientemente simple?

Bien ... ahora ... partiendo de el anterior axioma, verdad universal en el
multiverso de versiones de Asterisk (1.0, 1.2, 1.4, 1.6, 1.8, 10, 11, 12, etc.),
vamos a ver como intentar lidiar con ello ...

Pongamos primero el caso de una extensión, terminal SIP, aquí tienes 'dos listas
de codecs' ... la que configuras en el terminal y la que configuras en la
'definición' del terminal en Asterisk. Bien ... ahora toma como axiomas
irrefutables las siguientes afirmaciones:

- Cualquier comunicación iniciada por el terminal SIP, usará como codec de la
comunicación EL PRIMERO de los codecs que sea compatible con la lista de la
definición de la extensión en el Asterisk.
Ejemplo:
- En el terminal: G729, G711u, G711a, iLBC
- En la definición de la extensión en Asterisk: G711a, G711u, iLBC, G729

En este escenario, CUALQUIER comunicación iniciada por el terminal hacia
Asterisk (ya sea llamar a otra extensión o lo que sea), usará G729
En este mismo escenario, CUALQUIER comunicación iniciada por Asterisk hacia el
terminal, usará G711a, A NO SER, que el terminal sea muy listo, y renegocie,
porque su codec preference order ... y acabe en G729, pero eso solo lo hacen
terminales tipo los SNOM

- Ahora ... con este escenario de comportamiento de Asterisk explicado ...
imagínate lo que pasa cuando un terminal tiene G729,G711a,G711u ... y otro
G711u,G729,G711a ... y líalo un poco más añadiendo sip-trunks, etc., que al fin
y al cabo para Asterisk no son más que SIP-EndPoints

Todo esto que he comentado ... no tiene en cuenta la pila PJSIP, ya que no sé,
ni tengo ganas ni tiempo ... de averiguar si la integración de PJSIP ha
arreglado el pésimo comportamiento de Asterisk en este asunto de los codecs.

> - En cuanto al tráfico sí que tengo a Asterisk para que se lo trague todo
> él con un directmedia=no, ¿No puede dar problemas si pongo directmedia=yes
> a la hora de intentar salir través de hacer llamadas salientes?

No, si le dices que el sip-trunk saliente no admite directmedia ... ;), a veces
las torpezas de asterisk se pueden usar mediante 'reducción al absurdo', para
conseguir lo que uno quiere.

> Creo que anteriormente tuve problemas con el canreinvite (lo que viene a
> ser ahora el directmedia si no me confundo) con respecto a las llamadas
> salientes.

De la época en que me peleaba con Asterisk ... siempre seguíamos la misma regla:

- Las extensiones se configuran con directmedia = yes, los sip-trunks con
directmedia = no, de esta manera, el tráfico RTP de las comunicaciones entre
extensiones, no pasaba por el Asterisk (susceptible de sufrir otro tipo de
problemas debido a ello), y cuando vamos o venimos a un proveedor ... que el
tráfico pase por Asterisk. De esta manera, se evitaba otro bug-chungo de
asterisk, solo visible cuando Asterisk tiene la IP pública y las extensiones
estan en una red privada, pero eso es otra película.

> - En cuanto al uso de licencias g729 entiendo que si la comunicación es
> directa entre dos terminales no hay transcoding de ningún tipo a través de
> Asterisk y por tanto la licencia no se usa. Y en caso de que la
> comunicación sea a través de Asterisk si ambos terminales tienen g729 y en
> su contexto usan como primera opción g729 tampoco habría ningún problema de
> transcoding.

Te voy a dar una mala noticia ... si el RTP pasa por Asterisk, da igual que la
comunicación sea G729-G729 ... SIEMPRE hay transcoding.

> Si actualmente trato de salir a través de una tarjeta RDSI o analógica ahí
> entiendo que Asterisk deberá de hacer un transcoding porque no hay más
> remedio ¿No?

Exacto.

> En caso de tener gateways BRI o FXO supongo que este problema
> se solucionaría.

No se soluciona si sigues mandando el RTP a través del Asterisk, ya te lo he
comentado más arriba.

> En tal caso, el problema sólo aparecería si entra más de
> una persona a la vez al IVR ¿no? Cada vez que entra 1 persona habría que
> hacer un transcoding y por tanto se usaría una licencia. En principio el
> proveedor de VOIP sólo es usado para llamadas salientes, para llamadas
> entrantes usamos el proveedor de telefonía normal y corriente (RDSI y
> analógico, tenemos líneas de ambos tipos)

Ten en cuenta, que una mal nombrada 'llamada', son 2 canales, uno que sube y
otro que baja ... te pongo el peor caso, que además creo que es el que te está
pasando por los logs y los comentarios que has puesto en el hilo.

Terminal -> G729 -> Asterisk -> G729 -> Proveedor

¿Cuantas licencias crees que estas usando en ese caso? ... Respuesta: 2, siempre
en el supuesto que el RTP lo tienes forzado a través de Asterisk.

Terminal -> G729 -> Asterisk -> G729 -> Terminal B

¿Cuantas? ... Respuesta: 2

Terminal -> G729 -> Asterisk IVR

¿Cuantas? ... Respuesta: 1

Recuerda siempre que Asterisk es un B2BUA

> - Pensando en la putadita de los codecs me surgen un par de dudas:
> A)En la empresa disponemos dos contextos:
> *Telefonía interna
> *Pruebas fábrica
> Para las pruebas de fábrica se usa el g711 sí o sí
> Para la telefonía interna quería usar el g711 para llamadas internas y el
> g729 para salientes por VOIP
> Si en telefonía interna dejo como primer codec el g729 y quiero llamar de
> telefonía interna a fábrica o viceversa habrá transcoding en caso de que la
> comunicación sea a través de Asterisk ¿No? No me quedaría más remedio que
> evitar que el tráfico pasara a través de Asterisk en caso de llamadas
> internas si unos terminales trabajan bajo g711 y otros trabajan bajo g729
> con opción de g711

Con la salvedad de que no se establece el codec por 'contexto' ... sino por
SIP-EndPoint ... pues sí ...

> B)Si trato de hacer un paging o una conferencia necesitaré una licencia por
> cada usuario al que realizo el paging o por cada usuario que entra enla
> conferencia ¿No?

Exacto.

Saludos

Miguel Alberto Sanz Pardo

unread,
Jun 30, 2014, 12:10:24 PM6/30/14
to aster...@googlegroups.com
Muchísimas gracias por tu ayuda Raúl, ahora entiendo mucho mejor según que aspectos del funcionamiento de Asterisk.

En serio, muchas gracias, lo has explicado muy bien(mira que he leído artículos y páginas web referidas a Asterisk, pero en unos minutos me has dejado aclaradas bastantes cosas que no alcanzaba a entender hasta ahora), espero que les sirva a otras personas como me ha servido a mí ;)

Ahora a ver si compramos en la empresa alguna licencia más del g729 y a ver si pillamos algunos gateways BRI y FXO y quitamos las tarjetas de una vez. La putada de las licencias es que en breves pondremos en otro pc más nuevo la centralita Asterisk y habrá que comprar más licencias o pasar las de un pc al otro.


un saludo

Miguel Sanz

Miguel Alberto Sanz Pardo

unread,
Jun 30, 2014, 12:37:54 PM6/30/14
to aster...@googlegroups.com
Acabo de hacer una prueba de esta manera:

 - En los terminales:  G729, G711a
 - En la definición de las extensiones en Asterisk: G711a, G729

Y al llamar del terminal 1 al terminal 2(ambos con dichas configuraciones)

192.168.7.x    153              474372603-5060-  (alaw)           No       Rx: ACK                    153       
192.168.7.x    194              2e6b21420e113ce  (alaw)           No       Tx: ACK                    194       

¿No debería estar usando el terminal 1(153) como codec el g729?

En este caso tengo directmedia=no, aún no lo he puesto a yes


un saludo

Miguel Sanz


Raúl Alexis Betancor Santana

unread,
Jun 30, 2014, 2:15:55 PM6/30/14
to aster...@googlegroups.com
Sin tener un trace a mano ... vamos a simular ...

Terminal 1 -> Asterisk

INVITE sip:term2@asterisk SIP/2.0
...
a=rtpmap:18 G729/8000
a=rtpmap:8 PCMA/8000
...

Llega al Asterisk ... este abre un SIP Dialog nuevo hacia term2

Asterisk -> Terminal 2

INVITE sip:term2@asterisk SIP/2.0
...
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
...

Term2 -> Asterisk

200 OK
...
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000

Asterisk envía 200 OK a term1 (este 200 OK es de la sesión que Term1
abrió, recordemos que Asterisk es B2BUA)


Asterisk -> Term 1
200 OK
...
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000

Term 1 -> Asterisk

ACK ...

Como ves, Asterisk la ha liado parda, como uso y costumbre, los
terminales no se quejan porque ambos aceptan ambos codecs ... y se
supone que en la respuesta (el 200 OK), destino te está diciendo si
acepta o nó tu oferta.

Haz la misma prueba, haciendo que en el terminal 2 (ojo, en el
terminal, no en su configuración en Asterisk), solo acepte G729 ...
para que veas el pitorreo que se monta Asterisk.


Ya te digo, el algoritmo de selección de codecs ... NO FUNCIONA, no
respeta las preferencias de los SIP-EndPoint.

Según las preferencias de los SIP-EndPoints ... esa llamada tenía que
haber sido G729a.

Saludos

Miguel Alberto Sanz Pardo

unread,
Jul 1, 2014, 7:41:42 AM7/1/14
to aster...@googlegroups.com
Hola de nuevo,

Pues nada, después de mucho probar y darle vueltas al coco creo que haré algo de este estilo:

La definición de las extensiones internas las dejaré de tal manera que:
- 1ª opcion codec audio --> ALAW
- 2ª opcion codec audio --> G729

Por ahora las llamadas entrantes sólo vienen a través de troncales analógicos, digitales y GSM, pero no por VOIP(y en principio sólo vamos a usar VOIP para llamadas salientes, ya veremos más adelante)
De tal manera el único transcoding se hará al salir por el troncal VOIP, en cuya definición del proveedor tan sólo dispone de la opción el g729. 
Al tener  tan sólo una licencia (de la forma que tenía diseñado el dialplan) podía realizar una llamada con g729 y la segunda llamada era rechazada.
Si ponía en la definición del proveedor como primera opción g729 y como segunda alaw, al llamar trataba de salir por alaw, ya que en la definición de la extensión de Asterisk de mis terminales tenía alaw y Asterisk no es capaz de negociar como ya sabemos...


Por tanto se me ha ocurrido esta "SOLUCION":

En el Sip.conf
Creo un troncal para voipdiscount con tan sólo el codec g729 
Creo otro troncal para voipdiscount con tan sólo el codec g711a

En el Dialplan hago algo de este estilo:
; Salida elegida por el usuario: Troncal VOIP (VoIPDiscount)
exten=>_701.,1,Answer()
same => n,Dial(SIP/voipdiscount-salientes/${EXTEN:3},30)
same => n,Dial(SIP/voipdiscount-salientes-alaw/${EXTEN:3},30)
same => n,Hangup()

De tal manera, si gasto una licencia en la primera llamada a través del proveedor de VOIP, podré realizar una segunda llamada a través del proveedor al menos a través de g711a. Así que compraré 3 licencias
más, ya que más de 4 llamadas internacionales no creo que hagan a la vez en mi empresa(queremos usar el servicio de VOIP para hacer llamadas internacionales y disminuir costes sobre todo)
Por otra parte, ni las llamadas internas(en caso de dirigirlas a través de Asterisk), ni las llamadas entrantes ni las locuciones me darán problemas de licencias. Y al realizar llamadas entrantes/salientes por troncales que no sean VOIP no habrá transcoding de ningún tipo y tampoco necesitaré licencias.

Como curiosidad probé a usar un LINKSYS SPA922 y ese teléfono VOIP sí que hacía caso de la selección de codecs que había en el propio terminal frente a los parámetros que hay e la definición de la extensión de Asterisk(al realizar llamadas), a diferecia del gateway Grandstream GXW4224, que hace caso omiso de la selección de codecs que hay en el propio terminal(al realizar llamadas). Al recibirlas actúa conforme a la definición de la extensión, al igual que el gateway.


un saludo y gracias de nuevo

Miguel Sanz

Sir Brain Colward

unread,
Jul 12, 2014, 12:20:49 PM7/12/14
to asterisk-es
Un pequeño apunte: una llamada G729-G729 no consume recursos de transcoding. Si n, a estas alturas ya habría hecho rico a Digium con el pago de licencias... ;)


--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Raúl Alexis Betancor Santana

unread,
Jul 13, 2014, 6:47:02 AM7/13/14
to aster...@googlegroups.com
On Sat, Jul 12, 2014 at 06:20:43PM +0200, Sir Brain Colward wrote:
> Un pequeño apunte: una llamada G729-G729 no consume recursos de
> transcoding. Si n, a estas alturas ya habría hecho rico a Digium con el
> pago de licencias... ;)

Si fuerzas que el RTP pase por asterisk, una llamada G729-G729,
consume licencias ... ;), aunque no haya transcoding, a no ser que
algún alma piadosa haya arreblado el bug garrafal que había en la pila
SIP de asterisk al respecto ... cosa que dudo.

Saludos

Sir Brain Colward

unread,
Jul 13, 2014, 10:06:40 AM7/13/14
to asterisk-es

Yo creo que depende del dial plan. Ya te digo, yo lo tengo forzado el RTP a que pase por el asterisk y en los peers sólo permito G729 (tal vez la otra razón).  Lo que sí es cierto es que no hago un answer, sino que hago un dial al destino directamente. Lo tengo tanto en Asterisk 1.6 como 1.8.

Saludos,
Sir Brain Colward

ra...@dimension-virtual.com

unread,
Jul 14, 2014, 3:31:17 AM7/14/14
to aster...@googlegroups.com
> Yo creo que depende del dial plan. Ya te digo, yo lo tengo forzado el RTP a
> que pase por el asterisk y en los peers sólo permito G729 (tal vez la otra
> razón). Lo que sí es cierto es que no hago un answer, sino que hago un
> dial al destino directamente. Lo tengo tanto en Asterisk 1.6 como 1.8.

Son varios escenarios los que producen la 'consumisión' de la licencia ... la
manía de meter un Answer() ... es uno de ellos.

Te hablo de Asterisk 1.2 a 1.8 ... que fué la última con la que trabajé.

Saludos

Miguel Alberto Sanz Pardo

unread,
Jul 14, 2014, 3:31:25 AM7/14/14
to aster...@googlegroups.com
Yo estos días que estuve haciendo pruebas (usando Asterisk 11.7) juraría que forzando el RTP a que pase por el asterisk y en los peers sólo permitiendo G729 no llegaba a consumir licencias.

Si mal no recuerdo me dejaba realizar más de una llamada a la vez usando g729 teniendo tan sólo una licencia


un saludo

Miguel Sanz
Reply all
Reply to author
Forward
0 new messages