Enviado por admin el
En Kamailio hay dos variables que constantemente generan confusión: $ru y $du. Parecen hacer lo mismo, pero en realidad cumplen funciones completamente distintas. Vamos a aclarar esto de una vez.
La variable $ru: lo que dice el mensaje
$ru es la URI que aparece en el encabezado Request-URI del mensaje SIP. Es la dirección de destino visible para cualquiera que inspeccione el tráfico. Si un usuario marca 1234, verás algo así:
INVITE sip:1234@midominio.com SIP/2.0
Esa URI (sip:1234@midominio.com) es lo que contiene $ru. Todos los proxies por donde pase el mensaje pueden verla y modificarla.
La variable $du: dónde va realmente el paquete
$du (Destination URI) es completamente diferente. No aparece en ningún encabezado SIP. Es una variable interna que le dice a Kamailio: "olvida lo que dice la RequestURI, envía este paquete a esta dirección IP específica".
Por ejemplo, si haces $du = "sip:192.168.1.20:5060", el mensaje se enviará físicamente a ese servidor, aunque la Request-URI diga otra cosa.
Un ejemplo práctico
Supongamos que llega una llamada al número 123456789. Necesitas normalizarlo añadiendo el prefijo internacional (+57) y enviarlo a tu gateway en 200.100.50.10:
$ru = "sip:+57123456789@midominio.com"; $du = "sip:200.100.50.10:5060";
El gateway recibirá un mensaje con la URI ya normalizada, pero el enrutamiento físico lo controlas tú con $du.
El caso más común: Kamailio delante de Asterisk
La mayoría usa Kamailio como SBC (Session Border Controller) delante de Asterisk. En este escenario, no quieres tocar las URIs originales, solo redirigir todo el tráfico a Asterisk:
$du = "sip:192.168.1.20:5060"; route(RELAY);
Con esto, Asterisk recibe los mensajes exactamente como llegaron, pero Kamailio decide que todos van a la IP 192.168.1.20. Asterisk puede procesar su dialplan normalmente porque las URIs están intactas.
Cuándo usar cada una
Hay que modificar $ru cuando el contenido del mensaje debe cambiar: normalización de números, reescritura de dominios, implementación de alias. Todo lo que necesite aparecer en el mensaje SIP.
Hay que modificar $du para controlar el enrutamiento sin tocar el mensaje: balanceo de carga, failover, dirigir tráfico a servidores específicos en tu red. Todo lo que sea infraestructura interna.
Para recordarlo fácilmente
$ru = "¿A quién llamo?" (lógico, visible) $du = "¿Dónde pongo el paquete?" (físico, invisible)
En instalaciones típicas con Asterisk o FreeSWITCH, vas a usar mucho más $du que $ru, precisamente porque quieres mantener las URIs originales mientras controlas hacia dónde va el tráfico en tu red.
Comentarios recientes