El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
En este documento se describe el procedimiento de la configuración de autenticación, autorización y contabilidad (AAA) de Cisco Prime Access Registrar (CPAR).
Este procedimiento se aplica a un entorno Openstack que utiliza la versión NEWTON en la que ESC no gestiona CPAR y CPAR se instala directamente en la máquina virtual implementada en Openstack.
Ultra-M es una solución de núcleo de paquetes móviles virtualizados previamente empaquetada y validada que se ha diseñado para simplificar la implementación de VNF. OpenStack es el Virtualized Infrastructure Manager (VIM) para Ultra-M y consta de los siguientes tipos de nodos:
La arquitectura de alto nivel de Ultra-M y los componentes implicados se muestran en esta imagen:
Nota: Se considera la versión Ultra M 5.1.x para definir los procedimientos en este documento.
La configuración de Diameter Global se debe configurar con los valores adecuados, como Application-ID’s y el origen Host IP-Address, Realm, etc.,
Cd /Radius/Advanced/Diameter/ Diameter/ IsDiameterEnabled = TRUE General/ Product = CPAR Version = 7.3.0.3 AuthApplicationIdList = 1:5:16777264:16777265:16777272:16777250 AcctApplicationIdList = 3 TransportManagement/ Identity = aaa01.aaa.epc.mncxx.mccxx.3gppnetwork.org Realm = epc.mncxx.mccxx.3gppnetwork.org WatchdogTimeout = 500 ValidateIncomingMessages = FALSE ValidateOutgoingMessages = TRUE MaximumNumberofDiameterPackets = 8192 ReserveDiameterPacketPool = 0 DiameterPacketSize = 4096 AdvertisedHostName/ 1. aaa01.aaa.epc.mncxx.mccxx.3gppnetwork.org
/etc/hosts debe actualizarse con la dirección IP correspondiente para que se resuelva el nombre de dominio completamente calificado (FQDN) de identidad AAA utilizado en la administración de transporte y el nombre de host
La configuración del cliente debe configurarse con los pares Diameter donde se recibe el tráfico, en este caso DRA.
Cd /Radius/Clients/ DRA01/ Name = DRA01 Description = Protocol = diameter HostName = x.x.x.x PeerPort = 3868 Vendor = IncomingScript~ = OutgoingScript~ = AdvertisedHostName = UserLogEnabled = FALSE AdvertisedRealm = InitialTimeout = 3000 MaxIncomingRequestRate = 0 KeepAliveTime = 0 AuthSessionStateInASR = No-State-Maintained SCTP-Enabled = FALSE TLS-Enabled = FALSE
FastRules se utiliza para asignar el servicio correspondiente en tiempo de ejecución en función de una condición determinada, la condición se basa en los pares de valores atribuidos (AVP) y sus valores presentes en el mensaje de diámetro; si no hay ninguna regla rápida coincidente, selecciona el servicio predeterminado.
Cd /Radius/FastRules/ FastRules/ RuleDefinitions/ Entries 1 to 5 from 5 total entries Current filter: <all> r1/ Name = r1 Description = Used for HSS initiated Flows Protocol = diameter Condition = "1 OR 2" Success = author(3gpp-reverse) Failure = Rule(r2) Attributes/ Entries 1 to 2 from 2 total entries Current filter: <all> 1/ Name = 1 Description = Dictionary = environment Attribute = Diameter-Command-Code Value = 304 2/ Name = 2 Description = Dictionary = environment Attribute = Diameter-Command-Code Value = 305 r2/ Name = r2 Description = Used for PGW Update procedure over S6b Protocol = diameter Condition = "1 AND 2" Success = author(s6b) Failure = Rule(r3) Attributes/ Entries 1 to 2 from 2 total entries Current filter: <all> 1/ Name = 1 Description = Dictionary = Request Attribute = Auth-Application-Id Value = 16777272 2/ Name = 2 Description = Dictionary = request Attribute = Diameter-Command-Code Value = 265 r3/ Name = r3 Description = OPTIONAL used for PGW Termination procedure Protocol = diameter Condition = "1 and 2" Success = author(null) Failure = Rule(r4) Attributes/ Entries 1 to 2 from 2 total entries Current filter: <all> 1/ Name = 1 Description = Dictionary = Request Attribute = Auth-Application-Id Value = 16777272 2/ Name = 2 Description = Dictionary = environment Attribute = Diameter-Command-Code Value = 275 r4/ Name = r4 Description = Used for SWm Termination procedure Protocol = diameter Condition = "1 and 2" Success = author(3gpp-auth) Failure = Rule(r5) Attributes/ Entries 1 to 2 from 2 total entries Current filter: <all> 1/ Name = 1 Description = Dictionary = request Attribute = Auth-Application-Id Value = 16777264 2/ Name = 2 Description = Dictionary = environment Attribute = Diameter-Command-Code Value = 275 r5/ Name = r5 Description = Used for SWm ReAuthorization Protocol = diameter Condition = "1 and 2" Success = Query(query) Failure = Attributes/ Entries 1 to 2 from 2 total entries Current filter: <all> 1/ Name = 1 Description = Dictionary = environment Attribute = Diameter-Command-Code Value = 265 2/ Name = 2 Description = Dictionary = request Attribute = Auth-Application-Id Value = 16777264 Order/ Radius/ Diameter/ 1. r1 Tacacs/
Si ninguna de las reglas rápidas anteriores coincide, el paquete se procesa según el servicio predeterminado.
Cd /Radius/ DefaultAuthenticationService~ = encrypted-imsi-service DefaultAuthorizationService~ = 3gpp-auth
La configuración del servicio es donde se definen los servicios según los requisitos de autenticación y autorización:
Cd /Radius/Services/
Encryption-IMSI-Service se utiliza para las autenticaciones EAP-AKA y con IMSI cifrado para los dispositivos de Apple. Si no es necesario, establezca el parámetro EncryptedIMSI en False
encrypted-imsi-service/ Name = encrypted-imsi-service Description = Type = eap-aka NumberOfQuintets = 1 AlwaysRequestIdentity = True EnableIdentityPrivacy = False EnableRollingPseudonymSecret = False PseudonymSecret = <encrypted> PseudonymRenewtime = "24 Hours" PseudonymLifetime = Forever NotificationService = Generate3GPPCompliantPseudonym = False EnableReauthentication = False UseOutagePolicyForReauth = False MaximumReauthentications = 16 ReauthenticationTimeout = 3600 ReauthenticationRealm = EnableEncryptedIMSI = True EncryptedIMSIDelimiter = NULL EncryptedIMSIKeyIdDelimiter = , DefaultPrivateKey = xxxxxxxxxxxxxxxxxxxxxxxx QuintetCacheTimeout = 0 AuthenticationTimeout = 120 QuintetGenerationScript~ = UseProtectedResults = False SendReAuthIDInAccept = False Subscriber_DBLookup = DiameterDB DiameterInterface = SWx ProxyService = dia-proxy The 3GPP service is used for Registration/Profiledownload from HSS over SWx; 3gpp-auth/ Name = 3gpp-auth Description = Type = 3gpp-authorization Protocol = diameter IncomingScript~ = OutgoingScript~ = removeuserdata SessionManager = sm1 DiameterProxyService = dia-proxy FetchLocationInformation = False
El servicio de proxy de marcado se utiliza para seleccionar el servidor remoto y puede definir la política de peer. La opción GroupFailover se utiliza como MultiplePeerPolicy, cuando hay varios peers remotos y desea agrupar los mismos. Además, defina GroupTimeOutPolicy para conmutar por error a varios grupos
dia-proxy/ Name = dia-proxy Description = Type = diameter IncomingScript~ = rmserver OutgoingScript~ = MultiplePeersPolicy = GroupFailover GroupTimeOutPolicy = FailOver ServerGroups/ Entries 1 to 2 from 2 total entries Current filter: <all> Group_Primary_DRA/ Name = Group_Primary_DRA Metric = 0 IsActive = TRUE Group_Secondary_DRA/ Name = Group_Secondary_DRA Metric = 1 IsActive = TRUE
Los grupos de servidores mencionados anteriormente se definen en /Radius/GroupServers/
GroupServers/ Entries 1 to 2 from 2 total entries Current filter: <all> Group_Primary_DRA/ Name = Group_Primary_DRA Description = MultiplePeersPolicy = RoundRobin PeerTimeOutPolicy = FailOver DiaRemoteServers/ Entries 1 to 2 from 2 total entries Current filter: <all> DRA01/ Name = DRA01 Metric = 0 Weight = 0 IsActive = TRUE DRA02/ Name = DRA02 Metric = 1 Weight = 0 IsActive = TRUE Group_Secondary_DRA/ Name = Group_Secondary_DRA Description = MultiplePeersPolicy = RoundRobin PeerTimeOutPolicy = FailOver DiaRemoteServers/ Entries 1 to 4 from 4 total entries Current filter: <all> DRA03/ Name = DRA03 Metric = 0 Weight = 0 IsActive = TRUE DRA04/ Name = DRA04 Metric = 2 Weight = 0 IsActive = TRUE DRA05/ Name = DRA05 Metric = 1 Weight = 0 IsActive = TRUE
El servicio S6b se utiliza para procesar el procedimiento de actualización de PGW a través de S6b.
s6b/ Name = s6b Description = Type = 3gpp-authorization Protocol = diameter IncomingScript~ = OutgoingScript~ = SessionManager = DiameterProxyService = dia-proxy FetchLocationInformation = False
3gpp-reverse se utiliza para procesar los mensajes iniciados por HSS.
3gpp-reverse/ Name = 3gpp-reverse Description = Type = 3gpp-reverse-authorization IncomingScript~ = AAARTRCheck OutgoingScript~ = SessionManager = sm1 TranslationService =
El servicio de consulta se utiliza durante el procedimiento de reautorización, donde se obtiene directamente el perfil actualizado de la memoria caché en función del PPR recibido de HSS.
query/ Name = query Description = Type = diameter-query IncomingScript~ = OutgoingScript~ = removeuserdataquery UpdateSessionLastAccessTime = False SessionManagersToBeQueried/ 1. sm1 AttributesToBeReturned/ 1. Non-3GPP-User-Data 2. Service-Selection
El servicio nulo es simplemente responder con éxito para el proceso de terminación S6b ya que no hay ninguna sesión almacenada en caché sobre S6b.
null/ Name = null Description = Type = null IncomingScript~ = OutgoingScript~ =
Los servidores remotos se definen con un peer remoto al que se envían paquetes desde AAA como el HSS. Si se utiliza DRA, defina la misma información DRA en Clientes y servidores remotos;
RemoteServers/ DRA01/ Name = DRA01 Description = Protocol = diameter HostName = 10.169.48.235 DestinationPort = 3868 DestinationRealm = epc.mnc300.mcc310.3gppnetwork.org ReactivateTimerInterval = 300000 Vendor = IncomingScript~ = AAAReplaceResultCode OutgoingScript~ = rmdh MaxTries = 3 MaxTPSLimit = 0 MaxSessionLimit = 0 InitialTimeout = 3000 LimitOutstandingRequests = FALSE MaxPendingPackets = 0 MaxOutstandingRequests = 0 DWatchDogTimeout = 2500 SCTP-Enabled = FALSE TLS-Enabled = FALSE AdvertiseHostName = AdvertiseRealm =
El Administrador de sesiones es para definir acerca del almacenamiento en caché de sesiones, funciona junto con el Administrador de recursos. El administrador de sesión se menciona en los servicios 3gpp-auth, 3gpp-reverse y query;
Cd /Radius/SessionManagers/ sm1/ Name = sm1 Description = Type = local EnableDiameter = True IncomingScript = OutgoingScript = AllowAccountingStartToCreateSession = FALSE SessionTimeOut = PhantomSessionTimeOut = SessionKey = User-Name:Session-Id SessionCreationCmdList = 268||305 SessionDeletionCmdList = 275 SessionRestorationTimeOut = 24h ResourceManagers/ 1. 3gpp 2. swmcache 3. per-user
Los administradores de recursos se definen para asignar los recursos y se asignan a los administradores de sesiones.
Se utilizan estos tres administradores de recursos.
Cd /Radius/ResourceManagers/ ResourceManagers/ 3gpp/ Name = 3gpp Description = Type = 3gpp EnableRegistrationFlow = TRUE EnableSessionTermination = false ReuseExistingSession = True HSSProxyService = dia-proxy Per-User/ Name = Per-User Description = Type = user-session-limit UserSessionLimit = 0 swmcache/ Name = swmcache Description = Type = session-cache OverwriteAttributes = FALSE QueryKey = Session-Id PendingRemovalDelay = 10 AttributesToBeCached/ 1. Non-3GPP-User-Data 2. Service-Selection QueryMappings/
Esta tabla muestra todos los scripts utilizados durante el procesamiento de paquetes.
Nombre |
Archivo de script |
Punto de entrada |
Descripción |
Frío |
test.tcl |
resfrío |
Busca el Application-Id 16777264 y el Diameter-Command Code 268, obtiene el valor de username y lo copia en el atributo calling-station-ID de la solicitud que llega. Este script se menciona en Radius Incoming scriptinpoint |
rmserver |
test.tcl |
rm_server |
Busca el atributo Server-Assignment-Type; si existe, quita el campo Remote-Server de la solicitud entrante. Este script se menciona en dia-proxy service Incoming scriptinpoint |
removeuserdata |
libremoveuserdata.so |
removeUserData |
La secuencia de comandos Rex se utiliza para comprobar en primer lugar la información recibida de HSS, especialmente las opciones "Non-3GPP-IP-Access" y "Non-3GPP-IP-Access-APN", que deben tener el valor "NON_3GPP_SUBSCRIPTION_ALLOWED (0)" y "Non_3GPP_APNS_ENABLE (0)"; de lo contrario, no se podrá realizar la autorización. Seguido de una simple comparación del nombre de APN recibido del mensaje SWm DER (AVP de selección de servicio) con la configuración de APN descargada desde HSS, si hay una coincidencia, copia solo los detalles específicos de APN y elimina los AVP no deseados y prepara el DEA final hacia el ePDG. Si no se produce un error en la autorización de coincidencia y si no hay AVP de selección de servicio en DER, se envía toda la información de APN, pero como AVP externo. Este script se menciona en 3gpp-auth Outgoing scriptinpoint |
removeuserdataquery |
libremoveuserdataquery.so |
removeUserData |
La secuencia de comandos Rex se utiliza para verificar primero la información recibida de HSS, especialmente Non-3GPP-IP-Access y Non-3GPP-IP-Access-APN, ambos deben tener el valor NON_3GPP_SUBSCRIPTION_ALLOWED (0) y Non_3GPP_APNS_ENABLE (0); de lo contrario, no se puede realizar la autorización. Seguido de una simple comparación del nombre de APN recibido del mensaje SWm DER (AVP de selección de servicio) con la configuración de APN descargada desde HSS, si hay una coincidencia, copia solo los detalles específicos de APN y elimina los AVP no deseados y prepara el DEA final hacia el ePDG. Si no se produce un error en la autorización de coincidencia y si no hay AVP de selección de servicio en DER, se envía toda la información de APN, pero como AVP externo. Este script se menciona en query serviceOutgoing scriptinpoint |
fuera |
test.tcl |
newsessionState |
Script de entrada de servicio de proxy de marcación: se utiliza para desactivar la etiqueta de los mensajes que ya se han procesado. Por ejemplo, si MAR/MAA se recibe desde DRA1, el SAR de usuario posterior utilizará el mismo DRA1 y, si no está disponible y se mantiene fijo, no conmuta por error. Para conmutar por error al DRA alternativo, se debe eliminar este sticky. La secuencia de comandos se utiliza para quitar el identificador de red visitado hacia S6b SAR(PGW_update) HSS. |
rmdh |
test.tcl |
rmdh |
Elimina DestinationHost AVP en paquetes con DiameterCode 301 y 303. |
rmvnid |
test.tcl |
rmvnid |
Quita el AVP de identificador de red visitado en paquetes con DiameterCode 256 y Server-Assignment-Type es 13. |
AAAReplaceResultCode |
test.tcl |
replaceResultCode |
Reemplace Result-Code AVP por "Test" en los paquetes con DiameterCode 274 y Result-Code "Diameter-Unknown-Session-Id" |
AAARTRCheck |
librexblockRTR.so |
AAARTRCheck |
Cuando se reciben varios RTR para la misma sesión, los duplicados se eliminarán y se registrarán. |
Es posible que algunas secuencias de comandos no sean necesarias en versiones posteriores. Las secuencias de comandos mostradas deben utilizarse en CPAR versión 7.3.0.3
Todas las secuencias de comandos se encuentran en la ruta /opt/CSCOar/scripts/radius/.
La carpeta /opt/CSCOar/logs almacena todos los registros de la aplicación. El archivo name_radius_1_log registra todas las solicitudes descartadas y rechazadas, por lo que es importante almacenar este archivo para solucionar problemas.
CPAR permite una configuración muy flexible para almacenar este registro según sus necesidades. En función de los requisitos, este valor puede definirse, donde se conservan los últimos 20 archivos de registro, cada archivo con un tamaño de 5 Mb.
Para habilitar este registro específico, se deben configurar los parámetros 2 en el modo aregcmd:
/Radius/Advanced
LogFileSize = "5 megabytes"
LogFileCount = 20
La convención de nomenclatura de registros sigue la regla especificada en esta tabla:
Descripción |
Nombre del archivo de registro |
Registro más reciente |
name_radius_1_log |
del 2º al último registro |
name_radius_1_log.01 |
Registro de 3ª a última |
name_radius_1_log.02 |
... |
... |
del 20 al último registro |
name_radius_1_log.19 |
Tabla 2 Numeración de registros.
CPAR tiene tiempos de espera configurables por el servidor. La configuración actual tiene estas configuraciones:
Límites de tiempo generales ubicados en /Radius/Advanced
Límites de tiempo del cliente ubicados en /Radius/Clients/<client_name>
Tiempos de espera del servidor remoto ubicados en /Radius/RemoteServers/<remote_server_name>
Este documento aborda el significado del comando Diameter Packet size y las razones que lo llevaron a mantener este parámetro en el valor 4096.
Como se explica en la imagen anterior, el tamaño máximo de paquete de diámetro que CPAR espera recibir es de 4096 bytes. Este valor se configura en la variable DiameterPacketSize ubicada en el directorio /Radius/Advanced/Diameter/TransportManagement. Se descartarán todos los paquetes que no cumplan con este valor. El tamaño total del paquete se obtiene después de agregar el tamaño de los atributos de sesión almacenados en caché más el tamaño del paquete de diámetro recibido.
Por ejemplo, consideremos un tamaño de paquete PPR de 4000 bytes y dentro de ese mensaje Non-3GPP-User-Data tiene un tamaño de 3800 bytes. Si la sesión ya ha almacenado en caché algunos atributos y el tamaño de los datos almacenados en caché es de 297 bytes, el tamaño de la sesión supera los 4096 bytes y CPAR elimina el mensaje.
Durante el proyecto se realizó un análisis de paquetes mayores a 4096. Los resultados indican que, en promedio, 36 paquetes (SAA) más grandes que 4096 llegan a cada instancia de CPAR al día. Este número de paquetes no es significativo ya que es muy pequeño.
Este parámetro se puede configurar y aumentar si es necesario. Sin embargo, el aumento del valor más allá de 4096 conlleva algunos inconvenientes:
Esta imagen muestra un ejemplo del resultado del comando top en una instancia donde DiameterPacketSize está configurado en 4096:
Si el parámetro DiameterPackerSize se aumenta a 6000, el resultado del comando top es similar a lo siguiente:
Se recomienda mantener este parámetro como 4096, ya que se decidió que el número de paquetes mayores que 4096 es insignificante y los inconvenientes plantearían un comportamiento no deseado.
El único mecanismo que existe en el CPAR para supervisar el número de sesiones es a través del método que se explica en este documento. No hay ningún OID que se pueda recuperar mediante SNMP que contenga esta información.
CPAR puede gestionar sesiones, introducir la CLI de CPAR con /opt/CSCOar/bin/aregcmd e iniciar sesión con credenciales de administrador.
Con el comando count-sessions /r all CPAR muestra todas las sesiones asociadas a él en ese momento.
Para ver más información de las sesiones CPAR tiene el comando query-sessions /r all que da la información de todas las sesiones adjuntas a CPAR.
Para mostrar solamente la información de una sesión específica, el comando se puede cambiar y utilizar el valor USER, es decir: query-sessions /r with-User 310310990007655
Esta lista contiene todos los filtros posibles para el comando query-sessions:
Por último, para separar sesiones de CPAR, utilice el comando release-sessions /r all, y todas las sesiones adjuntas a ese momento se separarán.
Se puede aplicar un filtro para desasociar una sesión específica.
Prime Access Registrar admite el almacenamiento en caché de atributos en los administradores de sesiones que se pueden utilizar para consultar datos. Este servicio de consulta Diameter contiene una lista de administradores de sesión desde los que se puede consultar y una lista de atributos (almacenados en caché) que se deben devolver en el paquete Access-Accept en respuesta a una solicitud DIAMETER Query. Esto se inicia a través de un script de punto de extensión o a través del motor de reglas y políticas, configurándolo en una nueva variable de entorno denominada Query-Service.
El servicio de consulta DIAMETER debe seleccionarse a través de un script de punto de extensión o a través del motor de reglas y políticas, estableciéndolo en una nueva variable de entorno denominada Query-Service. La razón de esto es que la solicitud de consulta DIAMETER viene como una solicitud de acceso y el servidor no tiene forma de saber si es una solicitud de consulta DIAMETER o una solicitud de autenticación normal. La configuración de la variable de entorno Query-Service indica al servidor Prime Access Registrar que la solicitud es una solicitud de consulta DIAMETER, de modo que el servidor Prime Access Registrar puede procesar la solicitud con el servicio de consulta de diámetro definido en la variable de entorno Query-Service.
Cuando se selecciona un servicio de consulta DIAMETER para procesar una solicitud de acceso, se consulta la lista configurada de administradores de sesión para obtener un registro coincidente utilizando el valor QueryKey configurado en el administrador de recursos de caché de sesión al que se hace referencia en estos administradores de sesión como clave. Si se encuentra un registro coincidente, se devuelve al cliente un Access-Accept que contiene una lista de atributos en caché presentes (según la configuración) en el registro coincidente. Si la caché de sesión contiene un atributo multivalor, todos los valores de dicho atributo se devuelven en la respuesta como un atributo multivalor. Si no hay un registro coincidente, se envía un paquete Access-Reject al cliente.
Prime Access Registrar introduce puntos de secuencia de comandos en el nivel de administrador de sesiones junto con interfaces programables automatizadas (API) para acceder a la información almacenada en caché presente en el registro de sesión. Puede utilizar estos puntos de secuencia de comandos y API para escribir secuencias de comandos de punto de extensión para modificar la información almacenada en caché.
En este momento, nuestra implementación no tiene scripts escritos ni hace uso de API programables para acceder a dichos datos, pero la opción está ahí.
Los atributos que nuestro gestor de sesiones almacena en este momento son:
Incluido en /radius/resourcemanagers/swmcache/AttributesToBeCached:
De forma predeterminada:
Estos atributos son visibles por sesión cuando este comando query-sessions se utiliza en CLI.
Actualmente, no hay un procedimiento de verificación disponible para esta configuración.
Actualmente, no hay información específica de troubleshooting disponible para esta configuración.
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
28-Aug-2018 |
Versión inicial |