Diferencia entre $ru y $du en Kamailio: Enrutamiento lógico vs físico

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.

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Diferencia entre $ru y $du en Kamailio: Enrutamiento lógico vs físico" Suscribirse a VozToVoice - Todos los comentarios