本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本檔案介紹Cisco Prime Access Registrar(CPAR)驗證、授權及記帳(AAA)設定的程式。
此過程適用於使用NEWTON版本的Openstack環境,其中ESC不管理CPAR,而CPAR直接安裝在部署在Openstack上的VM上。
Ultra-M是經過預先打包和驗證的虛擬化移動資料包核心解決方案,旨在簡化VNF的部署。 OpenStack是適用於Ultra-M的Virtualized Infrastructure Manager(VIM),包含以下節點型別:
Ultra-M的高級體系結構及涉及的元件如下圖所示:
註:為定義本文檔中的過程,需要考慮Ultra M 5.1.x版本。
Diameter全域性配置將使用適當的值進行配置,如應用程式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)及其在diameter消息中的值,如果沒有與快速規則相匹配的則選擇預設服務。
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
Dia-Proxy服務用於選擇遠端伺服器,並且可以定義對等策略,當存在多個遠端對等體且希望將同一組進行分組時,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
上述ServerGroups在/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,則在Clients和RemoteServers中定義相同的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 =
Session Manager定義的是會話快取,它與Resource Manager結合使用。3gpp-auth、3gpp-reverse和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
資源管理器被定義為分配資源並對映到會話管理器。
使用這三個資源管理器。
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/
此表顯示資料包處理過程中使用的所有指令碼。
名稱 |
指令碼檔案 |
入口點 |
說明 |
Clid |
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服務傳入指令碼點中引用 |
removeuserdata |
libremoveuserdata.so |
刪除使用者資料 |
Rex指令碼用於首先檢查從HSS接收的資訊,特別是「Non-3GPP-IP-Access」和「Non-3GPP-IP-Access-APN」都應該具有值「NON_3GPP_SUBSCRIPTION_ALLOWED(0)」和「Non_3GPP_APNS_ENABLE(0)」,否則授權將失敗。然後,簡單比較從SWm DER消息接收的APN名稱(服務選擇AVP)與從HSS下載的APN配置,如果存在匹配項,則它僅複製特定APN詳細資訊並刪除不想要的AVP,並為ePDG準備最終的DEA。如果沒有匹配授權失敗並且在DER中沒有服務選擇AVP,則傳送所有APN資訊,但作為外部AVP。 此指令碼在3gpp-auth傳出指令碼點中引用 |
removeuserdataquery |
libremoveuserdataquery.so |
刪除使用者資料 |
Rex指令碼用於首先檢查從HSS接收的資訊,特別是Non-3GPP-IP-Access和Non-3GPP-IP-Access-APN都應該具有值NON_3GPP_SUBSCRIPTION_ALLOWED(0)和Non_3GPP_APNS_ENABLE(0),否則授權失敗。然後對從SWm DER消息接收的APN名稱(服務選擇AVP)與從HSS下載的APN配置進行簡單比較,如果存在匹配項,則它僅複製特定APN詳細資訊並刪除不想要的AVP,並為ePDG準備最終的DEA。如果沒有匹配授權失敗並且在DER中沒有服務選擇AVP,則傳送所有APN資訊,但作為外部AVP。 此指令碼在查詢服務傳出指令碼點中引用 |
外寄 |
test.tcl |
newsessionState |
Dia代理服務傳入指令碼 — 用於為已處理的消息取消設定粘性。例如,如果從DRA1收到MAR/MAA,後續使用者SAR將使用相同的DRA1,如果該DRA1不可用並且粘滯得到維護,則不會進行故障轉移。為了故障切換到備用DRA,將刪除此粘性。該指令碼用於刪除指向S6b SAR(PGW_update)HSS的Visited-Network-Identifier。 |
rmdh |
test.tcl |
rmdh |
刪除DiameterCode為301和303的資料包中的DestinationHost AVP。 |
rmvnid |
test.tcl |
rmvnid |
刪除DiameterCode為256且Server-Assignment-Type為13的資料包中的Visited-Network-Identifier AVP。 |
AAReplaceResultCode |
test.tcl |
replaceResultCode |
在具有DiameterCode 274和Result-Code "Diameter-Unknown-Session-Id"的資料包中,將Result-Code AVP替換為"Test" |
AARTRCheck |
librexblockRTR.so |
AARTRCheck |
當收到同一會話的多個RTR時,將刪除並記錄重複的RTR。 |
某些指令碼在更高版本中可能不是必需的,列出的指令碼將在CPAR 7.3.0.3版中使用
所有指令碼都位於路徑/opt/CSCOar/scripts/radius/中。
資料夾/opt/CSCOar/logs儲存所有應用程式日誌。name_radius_1_log檔案會註冊所有遭到捨棄和拒絕的請求,因此出於故障排除目的而儲存此檔案非常重要。
CPAR允許根據您的需求非常靈活的配置來儲存此日誌。根據要求,可以定義此值,此處將保留最新20個日誌檔案,每個檔案的大小為5 Mb。
要啟用此特定的logging 2引數,必須在aregcmd模式下配置:
/Radius/Advanced
LogFileSize = "5 Mb"
日誌檔案計數= 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變數下。所有不符合此值的封包都將被捨棄。將會話快取屬性的大小加上所接收的diameter資料包的大小後,即可獲得資料包的總大小。
例如,讓我們考慮4000位元組的PPR資料包大小,在該消息中,Non-3GPP-User-Data的大小為3800位元組。如果會話已經快取了一些屬性,並且快取的資料大小為297位元組,則會話大小超過4096位元組,消息被CPAR丟棄。
在該專案期間,對大於4096的資料包進行分析。結果表明,每天平均有36個大於4096的資料包(SAA)到達每個CPAR例項。這些封包數量沒有意義,因為它非常小。
此引數是可配置的,如果需要,可以增加此引數。然而,在4096之後增加價值會帶來一些缺陷:
此圖顯示DiameterPacketSize配置為4096的例項中top命令的輸出示例:
如果DiameterPackerSize引數增加到6000,則頂部命令的輸出如下所示:
建議將此引數維持為4096,因為已確定大於4096的資料包數量可忽略不計,而缺點會導致不需要的行為。
CPAR中存在的用於監控會話數的唯一機制是通過本文檔中說明的方法。沒有可以通過SNMP檢索的OID包含此資訊。
CPAR能夠管理會話,使用/opt/CSCOar/bin/aregcmd輸入CPAR CLI,並使用管理員憑據登入。
使用命令count-sessions /r時,所有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-query服務包含要從中查詢的會話管理器清單以及要響應DIAMETER查詢請求在Access-Accept資料包中返回的(快取的)屬性清單。這是通過擴展點指令碼或通過規則和策略引擎啟動的,方法是將其設定為名為Query-Service的新環境變數。
DIAMETER查詢服務應該通過擴展點指令碼或通過規則和策略引擎進行選擇,方法是將其設定為名為Query-Service的新環境變數。原因是DIAMETER查詢請求作為Access-Request進入,伺服器無法知道它是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時,每個會話都可以看到此類屬性。
目前沒有適用於此組態的驗證程序。
目前尚無適用於此組態的具體疑難排解資訊。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
28-Aug-2018 |
初始版本 |