[Kamailio-Users-ES] SIP/TCP a SIP/UDP

Iñaki Baz Castillo ibc at aliax.net
Wed Feb 4 15:58:26 CET 2009


El día 4 de febrero de 2009 15:43, Robert Contreras
<talfli64 at gmail.com> escribió:
> Gracias por su pronta respuesta, sin embargo sigo obteniendo el mismo error,
> ejecutando el enrutamiento de ambas formas. Segun veo las 3 maneras de
> enviar la llamada ya las probé. El problema me parece es que no esta
> cambiando el transporte a UDP. (Cuando cambio en eyebeam el transporte a UDP
> todo funciona perfecto)

El problema está en que el eyeBeam manda el RURI con el parámetro
";transport=tcp":

  T 2009/02/04 09:24:51.008047 192.168.1.112:4398 -> 192.168.1.80:5070 [AP]
  INVITE sip:5000 at 192.168.1.80:5070;transport=tcp SIP/2.0

La elección del transporte a usar en un proxy se hace así:
- Primero se mira si el request que entra tiene un "Route".
- Si lo tiene y la URI de dicho Route no tiene parámetro "transport"
(o es "udp") entonces envía el request a dicha URI por UDP. Si tiene
"transport=tcp" lo envía por TCP.
- Si no tiene Route se mira el URI del Request Line.
- Si  no tiene parámetro "transport" (o es "udp") entonces envía el
request a dicha URI por UDP. Si tiene "transport=tcp" lo envía por
TCP.

Kamailio respeta esto a rajatabla, así que si quieres forzar el
transporte de salida debes eliminar dicho parámetro del RURI.
Las soluciones que te habíamos dado antes de ver la traza no valían ya
que sólo cambiaban el host y port del RURI, dejando intactos los
posibles parámetros.
La forma sencillota de que funcione sería:

a) Usar alguna función que elimine el parámetro "transport" del RURI,
o mejor aún, que lo ponga a "udp" (no recuerdo qué función vale para
esto).

b) A lo bestia:
  $ru = "sip:" + $rU + "@" + "IP_ASTERISK" + ":" + "PORT_ASTERISK" +
";transport=udp" ;
  t_relay();


Cuando lo pruebes, asegúrate de hacer otra captura y comprobar que el
INVITE sale por UDP y que no tiene "transport=tcp" en el RURI.


PD: Kamailio te daba error 477 porque:
- Estabas forzando un socket UDP de salida.
- El RURI exigía transporte TCP.
- => ¡Conflicto!


Saludos.


-- 
Iñaki Baz Castillo
<ibc at aliax.net>




More information about the Users-es mailing list