此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍Cisco Prime Access Registrar(CPAR)身份验证、授权和记帐(AAA)配置的过程。
此过程适用于使用NEWTON版本的OpenStack环境,其中ESC不管理CPAR,CPAR直接安装在OpenStack上部署的VM上。
Ultra-M是预打包和验证的虚拟化移动数据包核心解决方案,旨在简化VNF的部署。OpenStack是Ultra-M的虚拟化基础设施管理器(VIM),由以下节点类型组成:
此图中描述了Ultra-M的高级体系结构和涉及的组件:
注意:为了定义本文档中的步骤,我们考虑了Ultra M 5.1.x版本。
Diameter全局配置应配置适当的值,如Application-ID和源主机IP地址、领域等。
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必须用要解析的相应IP地址更新,以便传输管理中使用的AAA身份完全限定域名(FQDN)和要解析的主机名
客户端配置应使用接收流量的Diameter对等体(在本例中为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用于根据特定条件在运行时映射相应的服务,该条件基于属性值对(AVP)及其值在直径消息中显示,如果没有匹配的快速规则,则选择默认服务。
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/
如果上述FastRules均不匹配,则根据默认服务处理数据包。
Cd /Radius/ DefaultAuthenticationService~ = encrypted-imsi-service DefaultAuthorizationService~ = 3gpp-auth
服务配置是根据身份验证和授权要求定义服务的位置:
CD /RADIUS/Services/
Encrypted-IMSI-Service用于EAP-AKA身份验证,并与IMSI加密用于Apple设备。如果不需要,请将EncryptedIMSI参数设置为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
介质代理服务用于选择远程服务器并可定义对等体策略,当有多个远程对等体并且要对其进行分组时,GroupFailover选项用作MultiplePeerPolicy。此外,将GroupTimeOutPolicy定义为故障切换到多个组
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
上述服务器组在/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
S6b服务用于处理S6b上的PGW更新过程。
s6b/ Name = s6b Description = Type = 3gpp-authorization Protocol = diameter IncomingScript~ = OutgoingScript~ = SessionManager = DiameterProxyService = dia-proxy FetchLocationInformation = False
3gpp-reverse用于HSS发起的待处理消息。
3gpp-reverse/ Name = 3gpp-reverse Description = Type = 3gpp-reverse-authorization IncomingScript~ = AAARTRCheck OutgoingScript~ = SessionManager = sm1 TranslationService =
查询服务在重新授权过程中使用,其中根据从HSS接收的PPR直接从缓存获取更新的配置文件。
query/ Name = query Description = Type = diameter-query IncomingScript~ = OutgoingScript~ = removeuserdataquery UpdateSessionLastAccessTime = False SessionManagersToBeQueried/ 1. sm1 AttributesToBeReturned/ 1. Non-3GPP-User-Data 2. Service-Selection
空服务是仅对S6b终止进程成功进行应答,因为没有通过S6b缓存的会话。
null/ Name = null Description = Type = null IncomingScript~ = OutgoingScript~ =
远程服务器是使用远程对等体定义的,数据包从AAA(如HSS)发送到远程对等体。如果使用DRA,则在客户端和远程服务器中定义相同的DRA信息;
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 =
会话管理器用于定义有关会话缓存的信息,它与资源管理器配合使用。会话管理器在3gpp-auth、3gpp-reverse和查询服务中引用;
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
资源管理器被定义为分配资源并映射到会话管理器。
使用这三个资源管理器。
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/
此表显示了数据包处理期间使用的所有脚本。
名称 |
脚本文件 |
入口点 |
描述 |
客户端 |
test.tcl |
clid |
查找Application-Id 16777264和Diameter-Command Code 268,获取用户名值,并从到达的请求将其复制到calling-station-ID属性中。 此脚本在Radius传入脚本点中引用 |
rmserver |
test.tcl |
rm_server |
查找Server-Assignment-Type属性(如果存在),从传入请求中删除Remote-Server字段。 此脚本在dia-proxy服务传入脚本点中引用 |
删除用户数据 |
libremoveuserdata.so |
removeUserData |
Rex脚本用于首先检查从HSS接收的信息,特别是“Non-3GPP-IP-Access”和“Non-3GPP-IP-Access-APN”,两者的值都应为“NON_3GPP_SUBSCRIPTION_ALLOWED(0)”和“Non_3GPP_GP_GPP_A_AP_AP_AP_AP_APNS_AP_APN_AP_AP_A0),否则将失败授权。然后,将从SWm DER消息(服务选择AVP)接收的APN名称与从HSS下载的APN配置进行简单比较,如果存在匹配,则仅复制特定APN详细信息并删除不需要的AVP,并准备面向ePDG的最终DEA。如果没有匹配授权失败,并且DER中没有服务选择AVP,则所有APN信息将作为外部AVP发送。 此脚本在3gpp-auth传出脚本点中引用 |
removeuserdataquery |
libremoveuserdataquery.so |
removeUserData |
Rex脚本用于首先检查从HSS接收的信息,尤其是Non-3GPP-IP-Access和Non-3GPP-IP-Access-APN,两者的值应为NON_3GPP_SUBSCRIPTION_ALLOWED(0)和Non_3GPP_GPP_GPP_APAPNS_ENABLE(0),否则它将失败授权。然后,将从SWm DER消息(服务选择AVP)接收的APN名称与从HSS下载的APN配置进行简单比较,如果存在匹配,则仅复制特定APN详细信息并删除不需要的AVP,并准备面向ePDG的最终DEA。如果没有匹配授权失败,并且DER中没有服务选择AVP,则所有APN信息将作为外部AVP发送。 此脚本在查询服务传出脚本点中引用 |
外出 |
test.tcl |
newsessionState |
Dia代理服务传入脚本 — 用于为已处理的消息取消设置粘滞。例如:如果从DRA1收到MAR/MAA,则后续用户SAR将使用相同的DRA1,如果它不可用且粘滞保持不变,则不进行故障切换。为了故障切换到备用DRA,将删除此粘滞。该脚本用于删除指向S6b SAR(PGW_update)HSS的已访问网络标识符。 |
rmdh |
test.tcl |
rmdh |
删除DiameterCode为301和303的数据包中的DestinationHost AVP。 |
rmvnid |
test.tcl |
rmvnid |
删除DiameterCode为256且Server-Assignment-Type为13的数据包中的Visited-Network-Identifier AVP。 |
AAAReplaceResultCode |
test.tcl |
replaceResultCode |
将结果代码AVP替换为“Test”(测试)(在包中为DiameterCode 274)和结果代码“Diameter-Unknown-Session-Id”(Diameter-Code 274) |
AAARTRCheck |
librexblockRTR.so |
AAARTRCheck |
当收到同一会话的多个RTR时,将删除并记录重复的RTR。 |
某些脚本在更高版本中可能不需要,列出的脚本将用于CPAR版本7.3.0.3
所有脚本都位于路径/opt/CSCOar/scripts/radius/中。
文件夹/opt/CSCOar/logs存储所有应用程序日志。文件name_radius_1_log注册所有已丢弃和已拒绝的请求,因此存储此文件以用于故障排除。
CPAR允许非常灵活的配置根据您的需求存储此日志。根据要求,可以定义此值,此处保留最新的20个日志文件,每个文件的大小为5 Mb。
要启用此特定日志记录,必须在aregcmd模式下配置2个参数:
/Radius/Advanced
LogFileSize = "5 MB"
LogFileCount = 20
日志命名约定遵循下表中指定的规则:
描述 |
日志文件的名称 |
最新日志 |
name_radius_1_log |
第2个到最新日志 |
name_radius_1_log.01 |
第3个日志 |
name_radius_1_log.02 |
... |
... |
第20个日志到最新日志 |
name_radius_1_log.19 |
表 2 日志编号。
CPAR具有服务器可配置超时。当前设置具有以下配置:
位于/Radius/Advanced中的常规超时
位于/Radius/Clients/<client_name>中的客户端超时
位于/Radius/RemoteServers/<remote_server_name>中的远程服务器超时
本文档介绍Diameter Packet size命令的含义以及促使您将此参数保持为值4096的原因。
如上图所述,CPAR预期接收的最大直径数据包大小为4096字节。此值在/Radius/Advanced/Diameter/TransportManagement目录中的DiameterPacketSize变量下配置。不符合此值的所有数据包都将被丢弃。总数据包大小是在添加会话缓存属性的大小加上收到的直径数据包的大小后得到的。
例如,我们假设PPR数据包大小为4000字节,在该消息中,Non-3GPP-User-Data的大小为3800字节。如果会话已缓存某些属性且缓存的数据大小为297字节,则会话大小超过4096字节,CPAR会丢弃该消息。
在项目过程中,对大于4096的数据包进行了分析。结果表明,平均每天有36个大于4096的数据包(SAA)到达每个CPAR实例。这些数据包数量非常小,因此没有意义。
此参数是可配置的,如果需要,可以增加。但是,4096年以后的价值会增加,这也会带来一些缺点:
下图显示了DiameterPacketSize配置为4096的实例中top命令输出的示例:
如果DiameterPackerSize参数增加到6000,则top命令的输出如下所示:
建议将此参数保持为4096,因为已确定大于4096的数据包数量可以忽略,而且缺点会造成不必要的行为。
CPAR中唯一用于监控会话数的机制是通过本文档中介绍的方法。没有OID可以通过包含此信息的SNMP检索。
CPAR能够管理会话,使用/opt/CSCOar/bin/aregcmd输入CPAR CLI,并使用管理员凭证登录。
使用count-sessions /r all CPAR命令可显示当时连接到它的所有会话。
要查看会话的详细信息,CPAR使用命令query-sessions /r all,该命令提供与CPAR连接的所有会话的信息。
要仅显示特定会话的信息,可以更改命令并使用USER值,即:query-sessions /r with-User 310310990007655
此列表包含query-sessions命令的所有可能过滤器:
最后,要从CPAR分离会话,请使用命令release-sessions /r all,并且与该时刻连接的所有会话都将分离。
可以应用过滤器来分离特定会话。
Prime Access Registrar支持会话管理器中可用于查询数据的属性缓存。此Diameter查询服务包含要从中查询的会话管理器列表,以及响应DIAMETER查询请求在Access-Accept数据包中返回的(缓存的)属性列表。通过扩展点脚本或通过规则和策略引擎启动,方法是将其设置为名为Query-Service的新环境变量。
DIAMETER查询服务应通过扩展点脚本或通过规则和策略引擎进行选择,方法是将其设置为名为Query-Service的新环境变量。原因是DIAMETER查询请求作为访问请求传入,而服务器无法知道它是DIAMETER查询请求还是普通身份验证请求。设置Query-Service环境变量会告知Prime Access Registrar服务器该请求是DIAMETER查询请求,因此Prime Access Registrar服务器可以处理在Query-Service环境变量中设置的diameter-query服务的请求。
当选择DIAMETER查询服务处理访问请求时,它会使用在这些会话管理器下引用的会话缓存资源管理器中配置的QueryKey值作为密钥查询已配置的会话管理器列表以查找匹配记录。如果找到匹配记录,则包含匹配记录中存在的缓存属性列表(基于配置)的Access-Accept将发回客户端。如果会话缓存包含多值属性,则该属性的所有值在响应中作为多值属性返回。如果没有匹配的记录,则会向客户端发送Access-Reject数据包。
Prime Access Registrar引入了会话管理器级别的脚本点以及自动可编程接口(API),以访问会话记录中存在的缓存信息。您可以使用这些脚本点和API编写扩展点脚本以修改缓存的信息。
目前,我们的部署没有书面脚本或使用可编程API访问此类数据,但有此选项。
我们的会话管理器目前存储的属性有:
硬编码位于/radius/resourcemanagers/swmcache/AttributesToBeCached:
默认情况下:
当在CLI上使用此命令query-sessions时,每个会话都可看到此类属性。
当前没有可用于此配置的验证过程。
目前没有针对此配置的故障排除信息。