Dirección de Roaming (SoR)
La Dirección de Roaming (SoR) permite que el HPLMN influya en qué VPLMN se conecta un suscriptor de roaming. Cuando un suscriptor intenta registrarse a través de un VPLMN no preferido, el DRA intercepta la S6a Update-Location-Request (ULR). Rechaza la ULR con DIAMETER_ERROR_ROAMING_NOT_ALLOWED (5004). Esto provoca que el UE se desasocie y vuelva a asociarse. El UE selecciona un VPLMN preferido si está disponible.
Si la cobertura preferida no está disponible y el suscriptor regresa al mismo VPLMN no preferido, el módulo permite la solicitud en el siguiente intento.
3GPP TS 29.272 Sección 5.2.1.1 y 3GPP TS 23.122 definen SoR.
Cómo Funciona
El módulo opera dentro de la tubería de procesamiento de solicitudes del DRA. Se ejecuta antes del Enrutamiento Avanzado. El módulo evalúa solo las S6a Update-Location-Requests (Application-Id 16777251, Command-Code 316). Todos los demás mensajes de Diameter pasan sin modificar.
Secuencia: Primer Intento (Rechazado)
Secuencia: Segundo Intento (Permitido)
Posición en la Tubería
La Dirección de Roaming se ejecuta antes del Enrutamiento Avanzado en la tubería de procesamiento de solicitudes. Si SoR rechaza una solicitud, ese mensaje nunca llega al Enrutamiento Avanzado.
Seguimiento de Suscriptores
El módulo rastrea cada suscriptor rechazado por IMSI. Cada registro incluye un conteo de rechazos y una marca de tiempo. El módulo limpia automáticamente los registros después de que expira el TTL configurado.
Cuando un IMSI rastreado alcanza el umbral de max_rejections y envía otra ULR, el módulo permite la solicitud. Luego elimina el registro de seguimiento.
Si no llega ninguna ULR adicional dentro de la ventana TTL, el registro expira. El siguiente ciclo de limpieza lo elimina. El módulo trata una ULR posterior del mismo IMSI como un primer intento y lo rechaza nuevamente.
Configuración
Configure el módulo bajo module_roaming_steering en config/runtime.exs.
module_roaming_steering: %{
# Habilitar o deshabilitar el módulo
enabled: false,
# Número de rechazos antes de permitir el paso
max_rejections: 1,
# Tiempo en segundos antes de que expire un registro de IMSI rastreado
rejection_ttl_seconds: 300,
# Código de Resultado de Diameter devuelto en la respuesta de rechazo
rejection_result_code: 5004,
# Lista de valores de Origin-Realm considerados VPLMNs preferidos
# Las ULR de estos reinos siempre se permiten pasar
preferred_vplmns: [
"epc.mnc001.mcc001.3gppnetwork.org",
"epc.mnc002.mcc001.3gppnetwork.org"
]
}
Parámetros
| Parámetro | Tipo | Requerido | Predeterminado | Descripción |
|---|---|---|---|---|
enabled | Booleano | Sí | false | Habilitar o deshabilitar el módulo de Dirección de Roaming. Cuando false, todas las solicitudes pasan sin modificar. |
children | Lista | No | [] | Procesos que el supervisor del DRA inicia cuando está habilitado. Establezca esto en [DRA.Router.Modules.RoamingSteering] para que el proceso de seguimiento de IMSI se ejecute. |
max_rejections | Entero | No | 1 | Número de veces que rechazar a un suscriptor antes de que el módulo lo permita. Con el valor predeterminado de 1, el módulo rechaza la primera ULR y permite la segunda. |
rejection_ttl_seconds | Entero | No | 300 | Tiempo en segundos antes de que expire un registro de IMSI rastreado. La limpieza luego lo elimina. Si el suscriptor no vuelve a intentar dentro de esta ventana, el módulo trata el siguiente intento como un primer intento. Este valor también controla el intervalo de limpieza. |
rejection_result_code | Entero | No | 5004 | Código de Resultado de Diameter en la respuesta de rechazo. 5004 corresponde a DIAMETER_ERROR_ROAMING_NOT_ALLOWED según 3GPP TS 29.272 Sección 7.4.4. |
preferred_vplmns | Lista | No | [] | Lista de cadenas de Origin-Realm que identifican VPLMNs preferidos. El módulo siempre permite una ULR de un par con un Origin-Realm coincidente sin evaluación. |
Ejemplos de Configuración
Rechazar Una Vez, Luego Permitir
Este es el comportamiento predeterminado. El módulo rechaza a un suscriptor en un VPLMN no preferido una vez. Si el suscriptor regresa, el módulo reenvía la ULR al HSS.
module_roaming_steering: %{
enabled: true,
max_rejections: 1,
rejection_ttl_seconds: 300,
rejection_result_code: 5004,
preferred_vplmns: [
"epc.mnc001.mcc310.3gppnetwork.org",
"epc.mnc002.mcc310.3gppnetwork.org"
]
}
Cómo funciona: Una ULR llega de un MME en epc.mnc003.mcc310.3gppnetwork.org, que no está en la lista preferida. El módulo lo rechaza con el Código de Resultado 5004. El UE se desasocia y trata de encontrar una red preferida. Si regresa al mismo VPLMN no preferido dentro de 300 segundos, el módulo reenvía la ULR normalmente.
Caso de uso: Dirección de roaming estándar. El operador tiene acuerdos de roaming preferidos con redes asociadas específicas.
Múltiples Rechazos Antes de Permitir
Utilice esto cuando el operador quiera que el UE realice múltiples intentos antes de volver a un VPLMN no preferido.
module_roaming_steering: %{
enabled: true,
max_rejections: 3,
rejection_ttl_seconds: 600,
rejection_result_code: 5004,
preferred_vplmns: [
"epc.mnc001.mcc310.3gppnetwork.org"
]
}
Cómo funciona: El módulo rechaza al suscriptor tres veces. Luego permite que el suscriptor pase en el cuarto intento. El TTL se extiende a 600 segundos para los ciclos de reintento adicionales.
Caso de uso: Áreas urbanas densas donde existe cobertura preferida. El UE puede necesitar múltiples intentos de conexión para adquirirla.
Métricas
Rechazos
Métrica: diameter.roaming_steering.reject.count
Tipo: Contador
Descripción: El DRA incrementa este contador cada vez que el módulo SoR rechaza una ULR.
Etiquetas:
origin_realm- Origin-Realm del VPLMN no preferidoresult_code- Código de Resultado de Diameter devuelto en el rechazoimsi- IMSI del suscriptor rechazado
Permitidos (VPLMN Preferido)
Métrica: diameter.roaming_steering.allow.count
Tipo: Contador
Descripción: El DRA incrementa este contador cuando el módulo permite pasar una ULR.
Etiquetas:
origin_realm- Origin-Realm del VPLMN de origenreason- Por qué el módulo permitió la solicitud:preferred_vplmnomax_rejections_reachedimsi- IMSI del suscriptor. Presente solo cuando la razón esmax_rejections_reached
Respuestas de Error
Métrica: diameter.roaming_steering.error.count
Tipo: Contador
Descripción: El DRA incrementa este contador cuando el procesador devuelve un mensaje de respuesta de error para un rechazo de SoR.
Etiquetas:
result_code- Código de Resultado de Diameterapplication_id- Application-Id de Diameter (numérico)cmd_code- Command-Code de Diameter (numérico)application_name- Nombre de la aplicación legible por humanoscmd_name- Nombre del comando legible por humanos
Solución de Problemas
Suscriptores Siempre Rechazados (Nunca Permitidos)
Síntomas: El módulo rechaza repetidamente a los suscriptores en VPLMNs no preferidos. Nunca se conectan con éxito.
Causas posibles:
rejection_ttl_secondses demasiado corto. El registro de seguimiento expira antes de que el suscriptor vuelva a intentar.max_rejectionses mayor que el número de reintentos que realiza el UE antes de rendirse.
Resolución:
- Aumente
rejection_ttl_secondspara adaptarse al tiempo de reintento del UE. - Confirme que
max_rejectionses un valor que el UE puede alcanzar dentro de su ciclo de reintentos.
Suscriptores en VPLMNs Preferidos Siendo Rechazados
Síntomas: El módulo rechaza ULRs de redes asociadas preferidas con 5004.
Causas posibles:
- El Origin-Realm del VPLMN preferido no está en
preferred_vplmns. - La cadena de Origin-Realm no coincide exactamente. La coincidencia es sensible a mayúsculas y minúsculas.
Resolución:
- Verifique el Origin-Realm del par en los registros del DRA en el momento de la conexión.
- Confirme que la cadena exacta de Origin-Realm esté en la lista de
preferred_vplmns.
Módulo No Efectivo
Síntomas: El módulo reenvía ULRs de VPLMNs no preferidos sin rechazo.
Causas posibles:
enabledestá configurado comofalse.- El proceso del módulo no se está ejecutando. Verifique el supervisor.
Resolución:
- Confirme
enabled: trueen la configuración. - Confirme que el DRA se reinició después del cambio de configuración.
Referencia
Códigos de Diameter
| Código | Nombre | Descripción | Referencia |
|---|---|---|---|
| 5004 | DIAMETER_ERROR_ROAMING_NOT_ALLOWED | El suscriptor no puede hacer roaming en este VPLMN | 3GPP TS 29.272 Sección 7.4.4 |
Comandos S6a
| Command-Code | Nombre | Descripción | Referencia |
|---|---|---|---|
| 316 | Update-Location-Request/Answer (ULR/ULA) | El MME envía esto al HSS durante la conexión para actualizar el nodo de servicio del suscriptor | 3GPP TS 29.272 Sección 7.2.3 |
Identificadores de Aplicación
| ID | Interfaz | Descripción | Referencia |
|---|---|---|---|
| 16777251 | S6a/S6d | Autenticación y gestión de suscripciones de MME/SGSN a HSS | 3GPP TS 29.272 |