O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve o procedimento na configuração de autenticação, autorização e contabilização (AAA) do Cisco Prime Access Registrar (CPAR).
Este procedimento aplica-se a um ambiente Openstack usando a versão NEWTON em que o ESC não está gerenciando o CPAR e o CPAR está instalado diretamente na VM implantada no Openstack.
O Ultra-M é uma solução de núcleo de pacotes móveis virtualizados pré-embalada e validada, projetada para simplificar a implantação de VNFs. O OpenStack é o Virtualized Infrastructure Manager (VIM) para Ultra-M e consiste nos seguintes tipos de nó:
A arquitetura de alto nível da Ultra-M e os componentes envolvidos estão descritos nesta imagem:
Note: A versão Ultra M 5.1.x é considerada para definir os procedimentos neste documento.
A configuração global do diâmetro deve ser configurada com valores apropriados, como o Application-ID e o endereço IP do host de origem, território 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 precisa ser atualizado com o endereço IP correspondente a ser resolvido para que o nome de domínio totalmente qualificado da identidade AAA (FQDN) usado no gerenciamento de transporte e no nome do host seja resolvido
A configuração do cliente deve ser configurada com os peers de Diâmetro onde o tráfego é recebido, nesse 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 é usado para mapear o serviço correspondente em tempo de execução com base em determinada condição, a condição é baseada nos Pares de Valor Atribuído (AVP - Attributed Value Pairs) e seus valores presentes na mensagem de diâmetro, se nenhuma regra rápida correspondida seleciona o serviço Padrão.
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/
Se nenhuma das FastRules acima coincidiu, o pacote é processado como por serviço padrão.
Cd /Radius/ DefaultAuthenticationService~ = encrypted-imsi-service DefaultAuthorizationService~ = 3gpp-auth
A configuração do serviço é onde o serviço é definido como por autenticação, requisito de autorização:
Cd /Radius/Services/
O Encryted-IMSI-Service é usado para autenticações EAP-AKA e com IMSI criptografado para dispositivos Apple. Se não for necessário, defina o parâmetro EncryptedIMSI como 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
O serviço de proxy de dia é usado para selecionar o servidor remoto e pode definir a política de peer, a opção GroupFailover é usada como MultiplePeerPolicy, quando há vários peers remotos e deseja agrupar o mesmo. Além disso, defina GroupTimeOutPolicy como Failover para vários 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
Os ServerGroups mencionados acima estão definidos em /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
O serviço S6b é usado para processar o procedimento de Atualização PGW sobre S6b.
s6b/ Name = s6b Description = Type = 3gpp-authorization Protocol = diameter IncomingScript~ = OutgoingScript~ = SessionManager = DiameterProxyService = dia-proxy FetchLocationInformation = False
O inverso 3gpp é usado para que mensagens iniciadas pelo HSS sejam processadas.
3gpp-reverse/ Name = 3gpp-reverse Description = Type = 3gpp-reverse-authorization IncomingScript~ = AAARTRCheck OutgoingScript~ = SessionManager = sm1 TranslationService =
O serviço de consulta é usado durante o procedimento Re-Authorization, em que o perfil atualizado do cache é diretamente obtido com base no PPR recebido do 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
O serviço nulo é apenas responder com êxito ao processo de terminação S6b, pois não há sessão armazenada em cache sobre S6b.
null/ Name = null Description = Type = null IncomingScript~ = OutgoingScript~ =
Remoteservers são definidos com peer remoto para o qual os pacotes são enviados do AAA, como o HSS. Se o DRA for usado, defina as mesmas informações de DRA em Clients e em RemoteServers;
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 =
O Gerenciador de Sessão deve definir sobre o cache de sessão, que funciona em conjunto com o Gerenciador de Recursos. O gerenciador de sessões é chamado nos serviços 3gpp-auth, 3gpp-reverse e 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
Os gerentes de recursos são definidos para alocar os recursos e mapeados para gerentes de sessão.
Esses três gerenciadores de recursos são usados.
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 tabela exibe todos os scripts usados durante o processamento dos pacotes.
Nome |
Arquivo de script |
Ponto de entrada |
Descrição |
Clipe |
test.tcl |
clid |
Procura o Application-Id 16777264 e o Diameter-Command Code 268, obtém o valor do nome de usuário e o copia no atributo call-station-ID da solicitação de chegada. Este script é chamado de ponto de script de entrada de RADIUS |
rmserver |
test.tcl |
rm_server |
Procura o atributo Server-Assignment-Type, se existir, remove o campo Remote-Server da solicitação de entrada. Este script é chamado de ponto de script de entrada de serviço de proxy de dia |
removeuserdados |
libremove userdata.so |
removerDadosUsuário |
O script Rex é usado para verificar primeiro as informações recebidas do HSS, especialmente ‘Non-3GPP-IP-Access’ e ‘Non-3GPP-IP-Access-APN’ ambos devem ter o valor ‘NON_3GPP_SUBSCRIPTION_ALLOWED (0)’ e ‘Non_3GPP_APNS_ENABLE (0)’, caso contrário, falhará na autorização. Seguida de uma simples comparação do nome da APN recebido da mensagem SWm DER (AVP de seleção de serviço) com a configuração da APN baixada do HSS, se houver correspondência, ela copia somente os detalhes específicos da APN e remove os AVPs indesejados e prepara o DEA final para o ePDG. Se não houver autorização de correspondência falhar e se não houver AVP de seleção de serviço no DER, todas as informações do APN serão enviadas, mas como AVP externo. Este script é chamado de ponto de script de saída 3gpp-auth |
removeuserdataquery |
libremove userdataquery.so |
removerDadosUsuário |
O script Rex é usado para verificar primeiro as informações recebidas do HSS, especialmente o Non-3GPP-IP-Access e o Non-3GPP-IP-Access-APN ambos devem ter o valor NON_3GPP_SUBSCRIPTION_ALLOWED (0) e Non_3GPP_APNS_ENABLE (0) falha na autorização. Seguida de uma simples comparação do nome da APN recebido da mensagem SWm DER (AVP de seleção de serviço) com a configuração da APN baixada do HSS, se houver correspondência, ela copia somente os detalhes específicos da APN e remove os AVPs indesejados e prepara o DEA final para o ePDG. Se não houver autorização de correspondência falhar e se não houver AVP de seleção de serviço no DER, todas as informações do APN serão enviadas, mas como AVP externo. Este script é referenciado em serviço de consultaPonto de script de saída |
out |
test.tcl |
newsessionState |
Script de entrada do serviço de proxy do dia - usado para desdefinir o sticky para as mensagens que já foram processadas. Para ex; se MAR/MAA for recebido do DRA1, o SAR de usuário subsequente usará o mesmo DRA1 e, se não estiver disponível e for mantido sticky, não realizará failover. Para fazer failover para DRA alternativo, esse sticky deve ser removido. O script é usado para remover o Identificador de Rede Visitado em direção ao S6b SAR(PGW_update) HSS. |
rmdh |
test.tcl |
rmdh |
Remove o DestinationHost AVP em pacotes com DiameterCode 301 e 303. |
rmvnid |
test.tcl |
rmvnid |
Remove o Identificador de Rede Visitado AVP em pacotes com DiameterCode 256 e Server-Assignment-Type é 13. |
AAReplaceResultCode |
test.tcl |
replaceResultCode |
Substituir o código de resultado AVP por "Teste" em pacotes com DiameterCode 274 e Result-Code "Diameter-Unknown-Session-Id" |
AAARTRCheck |
librexblockRTR.so |
AAARTRCheck |
Quando vários RTR são recebidos para a mesma sessão, os duplicados serão excluídos e registrados. |
Alguns dos scripts podem não ser necessários em versões mais recentes, os scripts listados devem ser usados no CPAR versão 7.3.0.3
Todos os scripts estão localizados no caminho /opt/CSCOar/scripts/radius/.
A pasta /opt/CSCOar/logs armazena todos os logs do aplicativo. O arquivo name_radius_1_log registra todas as solicitações descartadas e rejeitadas, portanto, é importante armazenar esse arquivo para fins de solução de problemas.
O CPAR permite uma configuração muito flexível para armazenar esse log de acordo com suas necessidades. Com base no requisito, esse valor pode ser definido, aqui os últimos 20 arquivos de log são mantidos, cada arquivo com um tamanho de 5 Mb.
Para habilitar este parâmetro de registro 2 específico deve ser configurado no modo aregcmd:
/Radius/Advanced
LogFileSize = "5 Megabytes"
LogFileCount = 20
A convenção de nomenclatura de log segue a regra especificada nesta tabela:
Descrição |
Nome do arquivo de log |
Último log |
name_radius_1_log |
2º ao registro mais recente |
name_radius_1_log.01 |
3º para o último log |
name_radius_1_log.02 |
... |
... |
20 para o último log |
name_radius_1_log.19 |
Tabela 2 Numeração do registro.
O CPAR tem tempos limite configuráveis do servidor. A configuração atual tem estas configurações:
Intervalos gerais localizados em /Radius/Advanced
Os tempos limite do cliente estão localizados em /Radius/Clients/<client_name>
Tempo limite do servidor remoto localizado em /Radius/RemoteServers/<remote_server_name>
Este documento aborda o significado do comando Diameter Packet size e os motivos que o levaram a manter esse parâmetro no valor 4096.
Como explicado na imagem acima, o tamanho máximo do pacote de diâmetro que o CPAR espera receber é de 4.096 bytes. Esse valor é configurado na variável DiameterPacketSize localizada no diretório /Radius/Advanced/Diameter/TransportManagement. Todos os pacotes que não estiverem em conformidade com esse valor serão descartados. O tamanho total do pacote é obtido após a adição do tamanho dos atributos em cache da sessão mais o tamanho do pacote de diâmetro recebido.
Por exemplo, vamos considerar um tamanho de pacote PPR de 4000 bytes e dentro dessa mensagem Non-3GPP-User-Data tem tamanho de 3800 bytes. Se a sessão já tiver colocado em cache alguns atributos e o tamanho dos dados em cache for de 297 bytes, o tamanho da sessão excederá 4.096 bytes e a mensagem será removida pelo CPAR.
Durante o projeto e a análise de pacotes maiores que 4096 foram realizados. Os resultados indicam que, em média, 36 pacotes (SAA) maiores que 4096 chegam a cada instância de CPAR por dia. Esse número de pacotes não é significativo, pois é muito pequeno.
Esse parâmetro é configurável e pode ser aumentado se necessário. No entanto, o valor é aumentado para além de 4096, o que implica algumas desvantagens:
Esta imagem mostra um exemplo da saída do comando top em uma instância onde DiameterPacketSize está configurado como 4096:
Se o parâmetro DiameterPackerSize for aumentado para 6000, a saída do comando superior será semelhante a esta:
Recomenda-se manter esse parâmetro como 4096, já que foi decidido que o número de pacotes maiores que 4096 são insignificantes e as desvantagens representariam um comportamento indesejado.
O único mecanismo que existe no CPAR para monitorar o número de sessões é pelo método explicado neste documento. Não há OID que possa ser recuperado via SNMP que contenha essas informações.
O CPAR é capaz de gerenciar sessões, insira o CPAR CLI com /opt/CSCOar/bin/aregcmd e faça login com credenciais de administrador.
Com o comando count-sessions /r, todo CPAR mostra todas as sessões anexadas a ele naquele momento.
Para ver mais informações sobre a(s) sessão(s), o CPAR tem o comando query-sessions /r all que fornece as informações de todas as sessões anexadas ao CPAR.
Para apenas mostrar as informações de uma sessão específica, o comando pode ser alterado e usar o valor de usuário, ou seja: query-sessions /r com usuário 310310990007655
Esta lista contém todos os filtros possíveis para o comando query-sessions:
Finalmente, para desconectar sessões do CPAR, use o comando release-sessions /r all, e todas as sessões anexadas a esse momento são desconectadas.
Um filtro pode ser aplicado para desanexar uma sessão específica.
O Prime Access Registrar suporta o cache de atributos em Session Managers que podem ser usados para consultar dados. Este serviço de consulta Diameter contém uma lista de gerentes de sessão a serem consultados e uma lista de atributos (armazenados em cache) a serem devolvidos no pacote Access-Accept em resposta a uma solicitação de consulta DIAMETER. Isso é iniciado por meio de um script de ponto de extensão ou pelo Mecanismo de regra e política, configurando-o em uma nova variável de ambiente denominada Serviço de consulta.
O serviço Consulta DIAMETER deve ser selecionado através de um script de ponto de extensão ou através do Mecanismo de Regra e Política, definindo-o para uma nova variável de ambiente denominada Serviço de Consulta. A razão para isso é que a solicitação de consulta DIAMETER vem como uma solicitação de acesso e o servidor não tem como saber se é uma solicitação de consulta DIAMETER ou uma solicitação de autenticação normal. A definição da variável de ambiente Query-Service informa ao servidor Prime Access Registrar que a solicitação é uma solicitação DIAMETER Query para que o servidor Prime Access Registrar possa processar a solicitação com o serviço de consulta de diâmetro definido na variável de ambiente Query-Service.
Quando um serviço de consulta DIAMETER é selecionado para processar uma solicitação de acesso, ele consulta a lista configurada de gerentes de sessão para um registro correspondente usando o valor QueryKey configurado no Gerenciador de recursos do cache de sessão mencionado nesses gerentes de sessão como chave. Se um registro correspondente for encontrado, um Access-Accept contendo uma lista de atributos em cache presentes (com base na configuração) no registro correspondente será enviado de volta ao cliente. Se o cache de sessão contiver um atributo com vários valores, todos os valores desse atributo serão retornados na resposta como um atributo com vários valores. Se não houver registro correspondente, um pacote Access-Reject será enviado ao cliente.
O Prime Access Registrar apresenta pontos de script no nível do Session Manager, juntamente com interfaces programáveis (APIs) automáticas para acessar informações em cache presentes no registro da sessão. Você pode usar esses pontos de script e APIs para gravar scripts de ponto de extensão para modificar as informações em cache.
No momento, nossa implantação não tem scripts escritos ou usa APIs programáveis para acessar esses dados, mas a opção está lá.
Os atributos que nosso gerente de sessão armazena no momento são:
Codificado com hardware em /radius/resourcemanagers/swmcache/AttributesToBeCached:
Por padrão:
Tais atributos são visíveis por sessão quando este comando query-sessions é usado na CLI.
No momento, não há procedimento de verificação disponível para esta configuração.
Atualmente, não existem informações disponíveis específicas sobre Troubleshooting para esta configuração.