Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit la procédure de configuration AAA (Authentication, Authorization and Accounting) de Cisco Prime Access Registrar.
Cette procédure s'applique à un environnement Openstack utilisant la version NEWTON où ESC ne gère pas CPAR et CPAR est installé directement sur la machine virtuelle déployée sur Openstack.
Ultra-M est une solution de coeur de réseau de paquets mobiles virtualisés prépackagée et validée conçue pour simplifier le déploiement des VNF. OpenStack est le gestionnaire d'infrastructure virtualisée (VIM) pour Ultra-M et comprend les types de noeuds suivants :
L'architecture de haut niveau d'Ultra-M et les composants impliqués sont représentés dans cette image :
Note: La version Ultra M 5.1.x est prise en compte afin de définir les procédures de ce document.
La configuration globale Diamètre doit être configurée avec des valeurs appropriées, telles que l'ID d'application et l'adresse IP de l'hôte d'origine, le domaine, 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 doit être mis à jour avec l'adresse IP correspondante à résoudre pour le nom de domaine complet d'identité AAA utilisé dans la gestion du transport et le nom d'hôte à résoudre
La configuration du client doit être configurée avec les homologues de diamètre où le trafic est reçu, dans ce cas 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 est utilisé pour mapper le service correspondant au moment de l'exécution en fonction de certaines conditions, la condition est basée sur les paires de valeurs attribuées (AVP) et ses valeurs présentes dans le message de diamètre, si aucune règle rapide ne correspond, elle sélectionne le service par défaut.
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 aucune des FastRules ci-dessus ne correspond, le paquet est traité en fonction du service par défaut.
Cd /Radius/ DefaultAuthenticationService~ = encrypted-imsi-service DefaultAuthorizationService~ = 3gpp-auth
La configuration du service est l'endroit où le service est défini en fonction de l'authentification, des exigences d'autorisation :
Cd/Radius/Services/
Encryprted-IMSI-Service est utilisé pour les authentifications EAP-AKA et avec IMSI chiffré pour les appareils Apple. Si ce n'est pas nécessaire, affectez la valeur False au paramètre EncryptedIMSI
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
Le service dia-proxy est utilisé pour sélectionner le serveur distant et peut définir une stratégie d'homologue, l'option GroupFailover est utilisée comme MultiplePeerPolicy, lorsqu'il existe plusieurs homologues distants et souhaite regrouper les mêmes. Définissez également GroupTimeOutPolicy pour basculer vers plusieurs groupes
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
Les ServerGroups mentionnés ci-dessus sont définis dans /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
Le service S6b est utilisé pour traiter la procédure PGW Update sur S6b.
s6b/ Name = s6b Description = Type = 3gpp-authorization Protocol = diameter IncomingScript~ = OutgoingScript~ = SessionManager = DiameterProxyService = dia-proxy FetchLocationInformation = False
Le 3gpp-inverse est utilisé pour le traitement des messages initiés par HSS.
3gpp-reverse/ Name = 3gpp-reverse Description = Type = 3gpp-reverse-authorization IncomingScript~ = AAARTRCheck OutgoingScript~ = SessionManager = sm1 TranslationService =
Le service de requête est utilisé lors de la procédure de réautorisation où obtenir directement le profil mis à jour à partir du cache en fonction du PPR reçu 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
Le service Null doit simplement répondre avec succès pour le processus de terminaison S6b car il n'y a aucune session mise en cache sur S6b.
null/ Name = null Description = Type = null IncomingScript~ = OutgoingScript~ =
Les serveurs distants sont définis avec un homologue distant auquel les paquets sont envoyés depuis AAA comme le HSS. Si DRA est utilisé, définissez les mêmes informations DRA dans les clients et les serveurs distants ;
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 =
Le gestionnaire de sessions doit définir la mise en cache des sessions, il fonctionne conjointement avec le gestionnaire de ressources. Le gestionnaire de session est référencé dans les services 3gpp-auth, 3gpp-inverse et de requête ;
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
Les gestionnaires de ressources sont définis pour allouer les ressources et mappés aux gestionnaires de session.
Ces trois gestionnaires de ressources sont utilisés.
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/
Ce tableau affiche tous les scripts utilisés lors du traitement des paquets.
Name (nom) |
Fichier de script |
Point d'entrée |
Description |
Clip |
test.tcl |
clouer |
Recherche l'ID d'application 1677264 et le code de commande de diamètre 268, obtient la valeur de nom d'utilisateur et la copie dans l'attribut ID de station d'appel à partir de la demande entrante. Ce script est référencé dans Radius Incoming scriptinpoint |
rmserver |
test.tcl |
serveur_rm |
Recherche l'attribut Server-Assignment-Type, s'il existe, supprime le champ Remote-Server de la demande entrante. Ce script est référencé dans le point de script entrant du service dia-proxy |
removeuserdata |
libremoveuserdata.so |
removeUserData |
Le script Rex est utilisé pour vérifier d'abord les informations reçues de HSS, en particulier les valeurs ‘Non-3GPP-IP-Access’ et ‘Non-3GPP-IP-Access-APN’ doivent avoir la valeur ‘NON_3GPP_SUBSCRIPTION_ALLOWED (0)’ et ‘Non_3GPP_APNS_ENABLE (0)’ si l'autorisation échoue. Suit une simple comparaison du nom APN reçu du message SWm DER (service-selection AVP) avec la configuration APN téléchargée à partir de HSS, s'il y a correspondance, il copie uniquement les détails APN spécifiques et supprime les AVP indésirables et prépare le DEA final vers l'ePDG. Si aucune autorisation de correspondance n'échoue et s'il n'y a pas d'AVP de sélection de service dans DER, toutes les informations APN sont envoyées mais en tant qu'AVP externe. Ce script est référencé dans 3gpp-auth Outgoing scriptinpoint |
removeuserdataquerie |
libremoveuserdataquery.so |
removeUserData |
Le script Rex est utilisé pour vérifier d'abord les informations reçues de HSS, en particulier Non-3GPP-IP-Access et Non-3GPP-IP-Access-APN qui doivent avoir la valeur NON_3GPP_SUBSCRIPTION_ALLOWED (0) et Non_3GPP_APNS_ENABLE (0). Suit une simple comparaison du nom APN reçu du message SWm DER (service-selection AVP) avec la configuration APN téléchargée à partir de HSS, s'il y a correspondance, il copie uniquement les détails APN spécifiques et supprime les AVP indésirables et prépare le DEA final vers l'ePDG. Si aucune autorisation de correspondance n'échoue et s'il n'y a pas d'AVP de sélection de service dans DER, toutes les informations APN sont envoyées mais en tant qu'AVP externe. Ce script est référencé dans service de requêtePoint de script sortant |
sortir |
test.tcl |
ÉtatNouvelleSession |
Script entrant du service proxy Dia : utilisé pour dédéfinir la clé des messages déjà traités. Par ex. si MAR/MAA est reçu de DRA1, l'utilisateur SAR suivant utilisera le même DRA1 et s'il n'est pas disponible et que le sticky est maintenu, il ne bascule pas. Afin de basculer vers un DRA alternatif, ce sticky doit être supprimé. Le script est utilisé pour supprimer l'identificateur de réseau visité vers S6b SAR(PGW_update) HSS. |
rmdh |
test.tcl |
rmdh |
Supprime l'AVP DestinationHost dans les paquets avec DiameterCode 301 et 303. |
rmvnid |
test.tcl |
rmvnid |
Supprime l'AVP Visited-Network-Identifier dans les paquets avec DiameterCode 256 et le Server-Assignment-Type est 13. |
CodeRésultatPlaceAAAR |
test.tcl |
replaceResultCode |
Remplacer le code de résultat AVP par “ ” de test en paquets par DiameterCode 274 et Code de résultat “ Diameter-Unknown-Session-Id ” |
Vérification AAARTRC |
librexblockRTR.so |
Vérification AAARTRC |
Lorsque plusieurs RTR sont reçus pour une même session, les doublons sont supprimés et consignés. |
Certains scripts peuvent ne pas être requis dans la version supérieure, les scripts listés ci-dessus doivent être utilisés dans CPAR version 7.3.0.3
Tous les scripts se trouvent dans le chemin /opt/CSCOar/scripts/radius/.
Le dossier /opt/CSCOar/logs stocke tous les journaux d'application. Le fichier name_radius_1_log enregistre toutes les demandes rejetées et rejetées. Il est donc important de stocker ce fichier à des fins de dépannage.
CPAR permet une configuration très flexible pour stocker ce journal en fonction de vos besoins. En fonction des besoins, cette valeur peut être définie. Ici, les 20 derniers fichiers journaux sont conservés, chaque fichier ayant une taille de 5 Mo.
Pour activer ces paramètres de journalisation 2 spécifiques, vous devez configurer en mode aregcmd :
/Radius/Advanced
LogFileSize = « 5 mégaoctets »
NombreFichiersJournal = 20
La convention d'appellation du journal suit la règle spécifiée dans ce tableau :
Description |
Nom du fichier journal |
Dernier journal |
nom_rayon_1_log |
2e au dernier journal |
name_radius_1_log.01 |
3e au dernier journal |
name_radius_1_log.02 |
... |
... |
Journal du 20e au dernier |
name_radius_1_log.19 |
Tableau 2 Numérotation des journaux.
CPAR dispose de délais d'attente configurables par le serveur. La configuration actuelle est la suivante :
Délais d'attente généraux dans /Radius/Advanced
Délais d'expiration du client dans /Radius/Clients/<nom_client>
Délais d'attente du serveur distant situés dans /Radius/RemoteServers/<nom_serveur_distant>
Ce document traite de la signification de la commande Diameter Packet size et des raisons qui vous ont amené à maintenir ce paramètre à la valeur 4096.
Comme expliqué dans l'image ci-dessus, la taille maximale de paquet que CPAR s'attend à recevoir est de 4 096 octets. Cette valeur est configurée sous la variable DiameterPacketSize située dans le répertoire /Radius/Advanced/Diameter/TransportManagement. Tous les paquets qui ne respectent pas cette valeur seront supprimés. La taille totale du paquet est obtenue après l'ajout de la taille des attributs de session mis en cache plus la taille du paquet de diamètre reçu.
Par exemple, prenons en compte une taille de paquet PPR de 4000 octets et dans ce message Non-3GPP-User-Data a une taille de 3800 octets. Si la session a déjà mis en cache certains attributs et que la taille des données mises en cache est de 297 octets, la taille de la session dépasse 4 096 octets et le message est supprimé par CPAR.
Au cours du projet et de l'analyse de paquets de plus de 4096 a été effectuée. Les résultats indiquent que, en moyenne, 36 paquets (SAA) de plus de 4096 arrivent à chaque instance CPAR par jour. Ce nombre de paquets n'a pas de signification car il est très petit.
Ce paramètre est configurable et peut être augmenté si nécessaire. Cependant, la valeur est augmentée au-delà de 4096 comporte quelques inconvénients :
Cette image montre un exemple de sortie de la commande top dans une instance où DiameterPacketSize est configuré sur 4096 :
Si le paramètre DiameterPackerSize est porté à 6000, la sortie de la commande top ressemble à ceci :
Il est recommandé de conserver ce paramètre en tant que 4096, car il a été décidé que le nombre de paquets supérieurs à 4096 est négligeable et que les inconvénients pourraient poser un comportement indésirable.
Le seul mécanisme qui existe dans CPAR pour surveiller le nombre de sessions est la méthode expliquée dans ce document. Il n'existe aucun OID qui puisse être récupéré via SNMP qui contient ces informations.
CPAR est capable de gérer des sessions, de saisir l'interface CLI CPAR avec /opt/CSCOar/bin/aregcmd et de se connecter avec les informations d'identification de l'administrateur.
Avec la commande count-sessions /r, tout CPAR affiche toutes les sessions qui lui sont associées à ce moment.
Pour voir plus d'informations sur les sessions CPAR a la commande query-sessions /r all qui donne les informations de toutes les sessions jointes à CPAR.
Pour afficher uniquement les informations d'une session spécifique, la commande peut être modifiée et utiliser la valeur USER, c'est-à-dire : query-sessions /r avec-Utilisateur 310310990007655
Cette liste contient tous les filtres possibles pour la commande query-sessions :
Enfin, pour détacher des sessions de CPAR, utilisez la commande release-sessions /r all, et toutes les sessions attachées à ce moment sont détachées.
Un filtre peut être appliqué pour détacher une session spécifique.
Prime Access Registrar prend en charge la mise en cache des attributs dans les gestionnaires de session qui peuvent être utilisés pour interroger des données. Ce service de requête de diamètre contient une liste de gestionnaires de session à interroger et une liste d'attributs (mis en cache) à renvoyer dans le paquet Access-Accept en réponse à une requête de DIAMETER. Cette opération est initiée par un script de point d'extension ou par le moteur de règles et de stratégies en le définissant sur une nouvelle variable d'environnement nommée Query-Service.
Le service Requête DIAMETER doit être sélectionné via un script de point d'extension ou via le moteur de règles et de stratégies en le paramétrant sur une nouvelle variable d'environnement nommée Service de requête. La raison en est que la requête DIAMETER entre en tant que requête d'accès et que le serveur n'a aucun moyen de savoir s'il s'agit d'une requête DIAMETER ou d'une requête d'authentification normale. La définition de la variable d'environnement Query-Service indique au serveur Prime Access Registrar que la requête est une requête DIAMETER de sorte que le serveur Prime Access Registrar puisse traiter la requête avec le service de requête de diamètre défini dans la variable d'environnement Query-Service.
Lorsqu'un service de requête DIAMETER est sélectionné pour traiter une demande d'accès, il interroge la liste configurée des gestionnaires de session pour un enregistrement correspondant à l'aide de la valeur QueryKey configurée dans le gestionnaire de ressources de cache de session référencé sous ces gestionnaires de session en tant que clé. Si un enregistrement correspondant est trouvé, un Access-Accept contenant une liste des attributs mis en cache présents (en fonction de la configuration) dans l'enregistrement correspondant est renvoyé au client. Si le cache de session contient un attribut à valeurs multiples, toutes les valeurs de cet attribut sont retournées dans la réponse en tant qu'attribut à valeurs multiples. Si aucun enregistrement ne correspond, un paquet Access-Reject est envoyé au client.
Prime Access Registrar introduit des points de script au niveau du gestionnaire de session, ainsi que des interfaces programmables automatisées (API) pour accéder aux informations mises en cache présentes dans l'enregistrement de session. Vous pouvez utiliser ces points de script et ces API pour écrire des scripts de point d'extension pour modifier les informations mises en cache.
Pour le moment, notre déploiement n'a pas de scripts écrits ou utilise des API programmables pour accéder à ces données, mais l'option est là.
Les attributs que notre gestionnaire de session stocke actuellement sont les suivants :
Matériel codé dans /radius/resourcemanagers/swmcache/AttributesToBeCached :
Par défaut :
Ces attributs sont visibles par session lorsque cette commande query-sessions est utilisée sur l'interface de ligne de commande.
Aucune procédure de vérification n'est disponible pour cette configuration.
Il n'existe actuellement aucune information de dépannage spécifique pour cette configuration.