[Kamailio-Users-ES] Fallo al transferir llamadas externas

Iñaki Baz Castillo ibc at aliax.net
Thu Oct 2 21:59:45 CEST 2008


El Jueves, 2 de Octubre de 2008, Jose Fernandez escribió:
> Muchas gracias por responder Iñaki.
>
> Supongo que con "no está bien definido" te refieres a que he soltado
> demasiado rollo para explicar el problema. La intención era dar los
> mayores detalles posibles, por lo mismo que he incluido toda la traza
> sip. Intento simplificar:

Hola, realmente adjuntar la traza SIP es perfecto (en mi opinión), lo que 
echaba en falta era un poco más de explicación previa, para saber qué buscar 
en la traza SIP ;)

Pero ahora ya está más o menos claro.


>     * Escenario: GW FXO, Openser 1.1 y varios teléfonos IP. Llamada
>       entrante que vía FXO (canal registrado como 9873) suena
>       directamente en el teléfono IP 43, y una vez atendida,
>       transferencia de esa llamada al teléfono IP 42.
>     * Problema: Se corta esa transferencia perdiéndose la comunicación
>       entre todos los puntos.

He notado que hay retransmisiones (INVITE's repetidos que llegan al UAS). Esto 
provoca que al aceptarse uno el proxy envíe un CANCEL para cancelar el otro, 
el UAS recive dicho CANCEL y cancela la primera llamada (aunque no debería 
pues ya fue contestada) y envía un BYE (no debería).

Una pregunta, ¿usas "t_relay" en el script de OpenSer? Tienes que 
usar "t_relay" para evitar las retransmisiones, o sea, que si el UAC envía un 
INVITE, llega a OpenSer, pasa un poco de tiempo sin recibir respuesta y el 
UAC repite el INVITE, entonces OpenSer debe absorver dicho INVITE repetido, 
pero para ello debe haber creado una transacción. Al rutar un mensaje 
con "t_relay" se crea la transacción, pero también la puedes hacer antes 
ejectutando "t_newtran" cuando empiezas a procesar el mensaje.


> No entiendo muy bien por qué aparece un CANCEL del FXO al 42 después de
> recibir el FXO un 200 OK de 42 al INVITE previo, ni el "no such call" al
> BYE de la 43 al FXO.

> No tengo demasiada experiencia y no tengo claro si la secuencia es
> correcta en una transferencia de llamada SIP. ¿La secuencia en una
> transferencia correcta sería la misma?

La secuencia es más o menos correcta, yo creo que el UAS se comporta mal al 
recibir 2 INVITE's iguales (retransmisiones) y un CANCEL.


Yo lo que te recomiendo es que te asegures de que OpenSer absorbe las 
retransmisiones, es decir, el INVITE puede llegar varias veces a OpenSer, 
pero sólo debe salir una vez de OpenSer y absorber las repeticiones. 
Compruébalo haciendo más trazas SIP y comparando el "branch" del Via.

Y otra cosa, prueba a sustituir el teléfono 42 por otro modelo o softphone. Si 
puedes pon un Twinkle que eso no falla ;)




-- 
Iñaki Baz Castillo




More information about the Users-es mailing list