Saltar al contenido principal

Configuración Base de DRA

La Configuración Base de DRA define la identidad de OmniDRA, los oyentes de red, los tiempos de espera, la política de admisión de pares y la lista de pares Diameter a los que se conecta. Este bloque es la base para cada decisión de enrutamiento que toma el agente y se declara bajo config :dra, diameter: %{...} en config/runtime.exs.

Descripción General

Todos los ajustes base residen en un único mapa diameter. El mapa contiene un conjunto de claves de nivel superior que describen el DRA en sí, seguido de una lista peers donde cada entrada describe un par Diameter.

Estructura de Configuración

config :dra,
diameter: %{
service_name: :omnitouch_dra,
listen_ip: "127.0.0.2",
listen_port: 3868,
host: "dra01",
realm: "production.omnitouch",
product_name: "OmniDRA",
vendor_id: 10415,
request_timeout: 5000,
allow_undefined_peers_to_connect: false,
log_unauthorized_peer_connection_attempts: true,
allow_multiple_origin_host_connections: false,
peer_selection_algorithm: :random,
peers: [
# Configuraciones de pares...
]
}

Parámetros de Nivel Superior

Estas claves configuran la identidad del DRA, su oyente de red, los tiempos de espera y su política de admisión y selección de pares. Cada clave aparece exactamente una vez en el mapa diameter.

ParámetroTipoRequeridoPredeterminadoDescripción
service_nameÁtomo-Identificador interno del servicio para la instancia del servicio Diameter. Cualquier átomo único (por ejemplo :omnitouch_dra).
listen_ipCadena o Lista-Dirección(es) IP en las que el DRA escucha conexiones Diameter entrantes. Proporcione una única cadena para una dirección, o una lista de cadenas para multihoming SCTP (ver Multihoming SCTP).
listen_portEntero-Puerto en el que el DRA escucha. El puerto estándar de Diameter es 3868.
hostCadena-La etiqueta de host de la Identidad Diameter del DRA. Combinado con realm, forma el Origin-Host completamente calificado (por ejemplo dra01.production.omnitouch) que se anuncia en CER/CEA.
realmCadena-El realm Diameter del DRA, anunciado como Origin-Realm.
product_nameCadena-Nombre del producto anunciado en el intercambio de capacidades CER/CEA.
vendor_idEntero-Vendor-Id anunciado en el intercambio de capacidades según RFC 6733 Sección 5.3.3. 10415 es el identificador del proveedor 3GPP.
request_timeoutEnteroNo5000Tiempo de espera en milisegundos para un par de solicitud/respuesta. Si no se recibe respuesta dentro de este intervalo, la solicitud se considera como agotada.
allow_undefined_peers_to_connectBooleanofalseCuando es false, solo los pares listados en peers pueden establecer una conexión. Cuando es true, el DRA acepta conexiones entrantes de pares no presentes en la configuración. Mantenga esto en false en producción.
log_unauthorized_peer_connection_attemptsBooleanotrueCuando es true, se registran los intentos de conexión de pares no autorizados para el monitoreo de seguridad.
allow_multiple_origin_host_connectionsBooleanofalseCuando es false, el DRA restringe las conexiones para que un único Origin-Host mantenga una conexión por nodo. Cuando es true, esta restricción se levanta y se permiten múltiples conexiones concurrentes desde el mismo Origin-Host.
peer_selection_algorithmÁtomo-Algoritmo utilizado para elegir entre múltiples pares elegibles al enrutamiento. Ver Selección de Pares a continuación y Enrutamiento Estándar.
peer_settle_time_msEnteroNo0Milisegundos que un par recién conectado debe permanecer activo antes de que se enrute tráfico hacia él, protegiendo contra pares inestables. 0 enruta inmediatamente una vez que se completa CER/CEA. Ver Conectividad de Pares.
watchdog_timer_msEnteroNo30000Anulación opcional para el temporizador de vigilancia RFC 3539 Tw (intervalo de actividad DWR). Deje sin configurar para mantener el valor predeterminado de OTP. Ver Conectividad de Pares.
peersLista-Lista de mapas de pares. Cada entrada define una conexión de par Diameter; ver Configuración de Pares.

Tamaño del Búfer de Socket SCTP

El tamaño del búfer de socket es una clave de nivel superior :dra, configurada con config :dra, diameter_socket_buffer_size: - no es un miembro del mapa diameter:.

config :dra, diameter_socket_buffer_size: 4_194_304

config :dra,
diameter: %{
# ... configuración base ...
}
ParámetroTipoRequeridoPredeterminadoDescripción
diameter_socket_buffer_sizeEnteroNo4194304 (4 MB)Tamaño del búfer de recepción/envío de socket SCTP en bytes. Una clave de nivel superior :dra (config :dra, diameter_socket_buffer_size:), no un miembro del mapa diameter:. Solo afecta a los pares :diameter_sctp. Ver Multihoming SCTP.

Selección de Pares

Cuando más de un par configurado coincide con los criterios de enrutamiento para una solicitud, peer_selection_algorithm determina qué par la recibe. Esto afecta directamente cómo el DRA distribuye el tráfico y se comporta durante las interrupciones de pares; ver Enrutamiento Estándar para el flujo completo de decisiones de enrutamiento, y Enrutamiento Avanzado para anulaciones basadas en reglas.

ValorComportamiento
:randomSe elige un par coincidente al azar para cada solicitud, distribuyendo la carga entre todos los pares elegibles.
:failoverSe prefiere el primer par coincidente; los pares subsiguientes solo se utilizan cuando los pares de mayor prioridad no están disponibles.

Configuración de Pares

Cada entrada en la lista peers es un mapa que describe un único par Diameter: su identidad, su dirección de red, el transporte que utiliza y si el DRA marca al par o espera ser marcado.

%{
host: "diameter-benchmark-server.production.omnitouch",
realm: "production.omnitouch",
ip: "127.0.0.3",
port: 3868,
transport: :diameter_tcp,
initiate_connection: true
}

Parámetros por Par

ParámetroTipoRequeridoPredeterminadoDescripción
hostCadena-La Identidad Diameter del par (FQDN). Este valor debe coincidir exactamente (sensible a mayúsculas y minúsculas) para que se aplique el enrutamiento y las reglas de Enrutamiento Avanzado.
realmCadena-El realm Diameter del par.
ipCadena-La dirección IP principal del par utilizada para la conexión.
additional_ipsListaNo-Lista de direcciones IP para una asociación SCTP multi-homed; vuelve a ip cuando no se configura. Solo significativo con transport: :diameter_sctp. Ver Multihoming SCTP.
portEntero-El puerto Diameter del par (típicamente 3868).
transportÁtomo-Protocolo de transporte para la conexión: :diameter_tcp para TCP, o :diameter_sctp para SCTP. Ver la referencia de Transportes a continuación.
source_ipCadenaNolisten_ipDirección IP local para enlazar cuando el DRA marca a este par (solo conexiones salientes). Por defecto, se utiliza la listen_ip del servicio.
source_portEnteroNo-Puerto local para enlazar cuando el DRA marca a este par (solo conexiones salientes). Cuando no se configura, el sistema operativo asigna un puerto efímero. Establezca un valor explícito cuando dos pares compartan la misma IP y puerto de destino, para que cada conexión utilice un socket local distinto.
initiate_connectionBooleano-Cuando es true, el DRA se conecta al par (rol de cliente). Cuando es false, el DRA espera a que el par se conecte (rol de servidor). Ver Modos de Conexión.

Multihoming SCTP: los pares que utilizan :diameter_sctp pueden enlazar múltiples direcciones locales y remotas para resiliencia. La configuración de multihoming y las listas de direcciones por par se cubren en Multihoming SCTP.

Transportes

Valor de transporteProtocoloReferencia
:diameter_tcpTCPRFC 6733 (Base Diameter)
:diameter_sctpSCTPRFC 4960 (SCTP) - ver Multihoming SCTP

Modos de Conexión

Si el DRA marca a un par o espera ser marcado se controla mediante initiate_connection.

Iniciar Conexión (initiate_connection: true)

  • El DRA actúa como cliente Diameter e inicia la conexión TCP/SCTP al par.
  • Típicamente utilizado para sistemas de backend como un HSS o PCRF.
  • El DRA volverá a intentar la conexión si el par no es accesible.

Aceptar Conexión (initiate_connection: false)

  • El DRA actúa como servidor Diameter y espera a que el par se conecte.
  • Típicamente utilizado para nodos del lado de acceso como un MME, SGSN o P-GW.
  • El par debe estar presente en peers, a menos que allow_undefined_peers_to_connect esté configurado como true.
  • Los pares entrantes se diferencian por el Origin-Host que anuncian en el CER, por lo que dos nodos Diameter que comparten una IP de origen se emparejan de manera independiente siempre que cada uno presente un host distinto.

Ejemplo Completo

El siguiente ejemplo configura un DRA que acepta conexiones de un MME a través de SCTP y marca a un HSS y un PCRF a través de TCP.

config :dra,
diameter: %{
service_name: :mvno_dra,
listen_ip: "10.100.1.10",
listen_port: 3868,
host: "dra01",
realm: "mvno.example.com",
product_name: "OmniDRA",
vendor_id: 10415,
request_timeout: 5000,
allow_undefined_peers_to_connect: false,
log_unauthorized_peer_connection_attempts: true,
allow_multiple_origin_host_connections: false,
peer_selection_algorithm: :random,
peers: [
# MME - DRA espera a que el MME se conecte
%{
host: "mme01.operator.example.com",
realm: "operator.example.com",
ip: "10.100.2.15",
port: 3868,
transport: :diameter_sctp,
initiate_connection: false
},
# HSS - DRA inicia la conexión desde un puerto de origen local explícito
%{
host: "hss01.mvno.example.com",
realm: "mvno.example.com",
ip: "10.100.3.141",
port: 3868,
source_port: 13868,
transport: :diameter_tcp,
initiate_connection: true
},
# PCRF - DRA inicia la conexión
%{
host: "pcrf01.mvno.example.com",
realm: "mvno.example.com",
ip: "10.100.3.22",
port: 3868,
transport: :diameter_tcp,
initiate_connection: true
}
]
}

Notas Operativas

  • Coincidencia de Nombres de Host - Los valores de host de los pares se coinciden exactamente y son sensibles a mayúsculas y minúsculas. Las reglas en Enrutamiento Avanzado deben hacer referencia a la misma cadena host configurada aquí.
  • Intercambio de Capacidades - Al conectarse, el DRA y cada par intercambian aplicaciones e identidades soportadas a través de CER/CEA. Los valores de host, realm, product_name y vendor_id se anuncian en esta etapa.
  • Vendor-ID 10415 - Este es el Vendor-Id estándar 3GPP y es el valor esperado para las interfaces Diameter 3GPP.
  • Selección de Pares - Cuando múltiples pares coinciden con una solicitud, peer_selection_algorithm decide cuál se utiliza; ver Enrutamiento Estándar.

Consideraciones de Seguridad

  • Establezca allow_undefined_peers_to_connect: false en producción para que solo los pares conocidos puedan conectarse.
  • Habilite log_unauthorized_peer_connection_attempts: true para registrar intentos de conexión rechazados para el monitoreo de seguridad.
  • Asegúrese de que las reglas del firewall se alineen con la listen_ip y listen_port configuradas.

Documentación Relacionada

  • Multihoming SCTP - Transporte SCTP multi-homed y configuración de direcciones por par.
  • Enrutamiento Estándar - Cómo el DRA selecciona pares y enruta solicitudes, incluyendo el comportamiento de peer_selection_algorithm.
  • Enrutamiento Avanzado - Anulaciones de enrutamiento basadas en reglas basadas en valores de host de pares.