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).
Este documento describe el procedimiento en 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 el que ESC no administra CPAR y CPAR se instala directamente en la VM implementada en Openstack.
Ultra-M es una solución de núcleo de paquetes móviles virtualizada validada y empaquetada previamente diseñada para simplificar la implementación de VNF. OpenStack es el Virtualized Infrastructure Manager (VIM) para Ultra-M y consta de estos tipos de nodos:
La arquitectura de alto nivel de Ultra-M y los componentes involucrados se ilustran en esta imagen:
Este documento está dirigido al personal de Cisco que está familiarizado con la plataforma Cisco Ultra-M y detalla los pasos necesarios para llevarse a cabo en OpenStack y Redhat OS.
Nota: Se considera la versión Ultra M 5.1.x para definir los procedimientos en este documento.
La configuración de Diámetro Global se debe configurar con valores adecuados, como Application-ID y la dirección IP de host de origen, rango, 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 que se resolverá para el nombre de dominio completo (FQDN) de identidad AAA utilizado en la gestión de transporte y el nombre de host para resolverse
La configuración del cliente se debe configurar con los pares Diámetro 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 determinadas condiciones, 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 reglas rápidas coincidentes, 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 FastRules 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 se define según el requisito de autenticación y autorización:
Cd /Radius/Services/
Encripted-IMSI-Service se utiliza para autenticaciones EAP-AKA y con cifrado IMSI para dispositivos 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 dia-proxy 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. También, 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 ServerGroups 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 sobre S6b.
s6b/ Name = s6b Description = Type = 3gpp-authorization Protocol = diameter IncomingScript~ = OutgoingScript~ = SessionManager = DiameterProxyService = dia-proxy FetchLocationInformation = False
El 3gpp-reverse se utiliza para que los mensajes iniciados por HSS sean procesados.
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 obtener directamente el perfil actualizado de la memoria caché basándose en el 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 al 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 Remoteservers se definen con el peer remoto al que se envían los paquetes desde AAA como el HSS. Si se utiliza DRA, defina la misma información de DRA tanto en los clientes como en los 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 sesiones se refiere a 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 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 |
Clid |
test.tcl |
clid |
Busca la Aplicación-Id 16777264 y el Código de comando Diámetro 268, obtiene el valor de nombre de usuario y lo copia en el atributo call-station-ID de la solicitud que llega. Este script se refiere a 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. Esta secuencia de comandos se refiere a dia-proxy service Incoming scriptinpoint |
removeuserdata |
libremoveuserdata.so |
removeUserData |
La secuencia de comandos Rex se utiliza en primer lugar para comprobar la información recibida de HSS, especialmente el valor "Non-3GPP-IP-Access" y "Non-3GPP-IP-Access-APN", ambos deberían tener el valor "NON_3GPP_SUBSCRIPTION_ALLOWED (0)" y "Non_3GPP_APNS_ENABLE (0)". De lo contrario, se rechazará. Seguido de una simple comparación del nombre APN recibido del mensaje SWm DER (AVP de selección de servicio) con la configuración APN descargada de HSS, si hay una coincidencia, copia solamente los detalles específicos de APN y elimina los AVP no deseados y prepara el DEA final hacia ePDG. Si no se produce un error en la autorización de coincidencia y si no hay ningún AVP de selección de servicio en DER, se envía toda la información APN, pero como AVP externo. Este script se refiere a 3gpp-auth Outgoing scriptinpoint |
removeuserdataquery |
libremoveuserdataquery.so |
removeUserData |
La secuencia de comandos Rex se utiliza en primer lugar para comprobar 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) si no se produce un error en la autorización ... Seguido de una simple comparación del nombre APN recibido del mensaje SWm DER (AVP de selección de servicio) con la configuración APN descargada de HSS, si hay una coincidencia, copia solamente los detalles específicos de APN y elimina los AVP no deseados y prepara el DEA final hacia ePDG. Si no se produce un error en la autorización de coincidencia y si no hay ningún AVP de selección de servicio en DER, se envía toda la información APN, pero como AVP externo. Este script se hace referencia en el servicio de consultaPunto de secuencia de comandos saliente |
fuera |
test.tcl |
newsessionState |
Guión entrante del servicio proxy de marcado: se utiliza para desactivar la pegajosa para los mensajes que ya se han procesado. Por ejemplo: si MAR/MAA se recibe de DRA1, el usuario SAR subsiguiente utilizará el mismo DRA1 y si no está disponible y se mantiene el protocolo sticky, no se produce un failover. Para conmutar por error a DRA alternativa, esta pegajosa debe ser eliminada. La secuencia de comandos se utiliza para quitar el identificador de red visitada hacia el SSH S6b SAR(PGW_update). |
rmdh |
test.tcl |
rmdh |
Quita DestinationHost AVP en paquetes con DiámetroCode 301 y 303. |
rmvnid |
test.tcl |
rmvnid |
Quita el AVP Visited-Network-Identifier en paquetes con DiámetroCode 256 y Server-Assignment-Type es 13. |
CódigoResultadoAAAReplace |
test.tcl |
replaceResultCode |
Reemplace Result-Code AVP por "Test" en paquetes con DiámetroCode 274 y Result-Code "Diámetro-Unknown-Session-Id" |
AAARTRCheck |
librexblockRTR.so |
AAARTRCheck |
Cuando se reciben varios RTR para la misma sesión, se eliminarán y registrarán los duplicados. |
Es posible que algunos de los scripts no sean necesarios en la versión superior, los scripts enumerados se utilizarán en la versión 7.3.0.3 del CPAR
Todos los scripts se encuentran en la ruta de acceso /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. Según el requisito, este valor se puede definir, aquí se conservan los últimos 20 archivos de registro, cada uno con un tamaño de 5 Mb.
Para habilitar estos parámetros de registro 2 específicos se deben configurar 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 |
Último registro |
name_radius_1_log |
2.º registro |
name_radius_1_log.01 |
3.ᵉʳ a último registro |
name_radius_1_log.02 |
... |
... |
20.º a último registro |
name_radius_1_log.19 |
Tabla 2 Numeración de registros.
CPAR tiene tiempos de espera configurables del servidor. La configuración actual tiene la siguiente configuración:
Tiempos de espera generales ubicados en /Radius/Advanced
Tiempos de espera 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 Diámetro Packet size y las razones que le llevaron a mantener este parámetro al valor 4096.
Como se explica en la imagen anterior, el tamaño máximo del paquete de diámetro que CPAR espera recibir es de 4096 bytes. Este valor se configura en la variable DiParameterPacketSize ubicada en el directorio /Radius/Advanced/DiParameter/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 almacenados en memoria caché de sesión 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 excede los 4096 bytes y el mensaje es descartado por CPAR.
Durante el proyecto y el análisis de paquetes mayores a 4096 se realizó. Los resultados indican que en promedio 36 paquetes (SAA) mayores a 4096 llegan a cada instancia del CPAR por día. Esta cantidad de paquetes no tiene sentido, ya que es muy pequeña.
Este parámetro es configurable y se puede aumentar si es necesario. Sin embargo, el valor se incrementa más allá de 4096 conlleva algunos inconvenientes:
Esta imagen muestra un ejemplo del resultado del comando top en una instancia donde DiámetroPacketSize se configura en 4096:
Si el parámetro DiParameterPackerSize se aumenta a 6000, el resultado del comando superior se verá de la siguiente manera:
Se recomienda mantener este parámetro como 4096, ya que se decidió que el número de paquetes mayores a 4096 es insignificante y que los inconvenientes supondrían un comportamiento no deseado.
El único mecanismo que existe en el CPAR para monitorear el número de sesiones es a través del método explicado en este documento. No hay OID del que se puede recuperar a través de SNMP que contiene esta información.
CPAR es capaz de administrar sesiones, ingrese el CPAR CLI con /opt/CSCOar/bin/aregcmd e inicie sesión con las credenciales del administrador.
Con el comando count-sessions /r todo CPAR muestra todas las sesiones que se le adjuntaron en ese momento.
Para obtener más información sobre las sesiones, el CPAR tiene el comando query-sessions /r todo lo cual proporciona la información de todas las sesiones adjuntas al CPAR.
Para mostrar simplemente 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:
Finalmente, para separar las sesiones del CPAR, utilice el comando release-sessions /r all, y todas las sesiones adjuntas a ese momento se separan.
Se puede aplicar un filtro para separar 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 Diámetro-query contiene una lista de los administradores de sesiones a los que se debe consultar y una lista de atributos (almacenados en caché) que se deben devolver en el paquete Access-Accept en respuesta a una solicitud de DIAMETER Query. Esto se inicia a través de una secuencia de comandos de punto de extensión o a través del motor de reglas y políticas al establecerla en una nueva variable de entorno denominada Query-Service.
El servicio DIAMETER Query debe seleccionarse 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. La razón de esto es que la solicitud de DIAMETER Query entra como una solicitud de acceso y el servidor no tiene forma de saber si es una solicitud de DIAMETER Query 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 DIAMETER Query para que el servidor Prime Access Registrar pueda procesar la solicitud con el servicio de consulta de diámetro establecido en la variable de entorno Query-Service.
Cuando se selecciona un servicio DIAMETER Query para procesar una solicitud de acceso, se consulta la lista configurada de administradores de sesión para un registro coincidente utilizando el valor QueryKey configurado en el Administrador de recursos de la memoria 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 almacenados en caché presentes (según la configuración) en el registro coincidente. Si la memoria caché de sesión contiene un atributo multivalor, todos los valores de ese 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 secuencias de comandos en el nivel de administrador de sesiones junto con interfaces programables automatizadas (API) para acceder a la información almacenada en memoria caché presente en el registro de sesión. Puede utilizar estos puntos de script 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 utiliza API programables para acceder a estos datos, pero la opción está ahí.
Los atributos que almacena nuestro gestor de sesiones en este momento son:
Codificado de forma rígida en /radius/resourcesemanagers/swmcache/AttributesToBeCached:
De forma predeterminada:
Estos atributos son visibles por sesión cuando este comando query-sessions se utiliza en la 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.