目錄

簡介

背景資訊

CPAR配置

全域性配置

客戶端配置

快速規則配置

服務配置

遠端伺服器配置

作業階段管理員

資源管理器

指令碼

CPAR日誌記錄配置

超時值

Diameter資料包大小

在CPAR中管理會話

在CPAR AAA上為使用者會話快取的屬性(AVP)

驗證

疑難排解

簡介

本檔案介紹Cisco Prime Access Registrar(CPAR)驗證、授權及記帳(AAA)設定的程式。

此過程適用於使用NEWTON版本的Openstack環境，其中ESC不管理CPAR，而CPAR直接安裝在部署在Openstack上的VM上。

背景資訊

Ultra-M是經過預先打包和驗證的虛擬化移動資料包核心解決方案，旨在簡化VNF的部署。 OpenStack是適用於Ultra-M的Virtualized Infrastructure Manager(VIM)，包含以下節點型別：

- 計算

- 對象儲存磁碟 — 計算（OSD — 計算）

- 控制器

- OpenStack平台 — 導向器(OSPD)

Ultra-M的高級體系結構及涉及的元件如下圖所示：

本文檔面向熟悉Cisco Ultra-M平台的思科人員，詳細說明了在OpenStack和Redhat作業系統上執行的步驟。

註：為定義本文檔中的過程，需要考慮Ultra M 5.1.x版本。

CPAR配置

全域性配置

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/中。

CPAR日誌記錄配置

資料夾/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中的常規超時

- DiameterStaleConnectionDeletionTimeOut 300000(ms)此計時器指示在CPAR將其標籤為關閉之前，直徑連線可以處於非活動狀態的時間。

位於/Radius/Clients/<client_name>中的客戶端超時

- InitialTimeout 3000(ms)等待來自DRA的回覆的時間，CPAR認為無法到達該回應。

位於/Radius/RemoteServers/<remote_server_name>中的遠端伺服器超時

- InitialTimeout 3000(ms)等待來自DRA的回覆的時間，CPAR認為無法到達該回應。

- DWatchDogTimeout 2500(ms)等待來自DRA的重播DiamaterWatchDog資料包的時間，然後CPAR會認為該資料包不可達。

- ReactivateTimerInterval 300000(ms)CPAR在重試與直徑對等體建立連線之前等待的時間。

Diameter資料包大小

本文說明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增加到5KB，CPAR將接受大於4096位元組的SAA資料包。但是，如果為同一使用者會話啟動PPR，由於Non-3GPP-User-Data的大小為4260位元組，會話更新將失敗，並導致使用者註銷。

- DiameterPacketSize直接影響分配給radius進程的啟動記憶體。DiameterPacketSize越大，在CPAR啟動時分配給Radius進程的RES記憶體量就越多。

此圖顯示DiameterPacketSize配置為4096的例項中top命令的輸出示例：

如果DiameterPackerSize引數增加到6000，則頂部命令的輸出如下所示：

- 除了啟動記憶體分配外，一旦系統處於使用狀態，內部動態記憶體緩衝區會隨著到達CPAR的資料包數量而增長。例如，如果1000個資料包在一點上命中CPAR，則CPAR會在緩衝區1000中內部分配值DiameterPacketSize的記憶體，而不管各個資料包的大小（CPAR知道DiameterPacketSize指示最大資料包大小）。如果DiameterPacketSize遞增，此記憶體緩衝區會分配更多的記憶體；如果遞減，則記憶體會更少。

建議將此引數維持為4096，因為已確定大於4096的資料包數量可忽略不計，而缺點會導致不需要的行為。

在CPAR中管理會話

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命令的所有可能的篩選器：

- All

- with-ID

- with-NAS

- 與使用者

- with-Key

- with-Age+

- with-Attribute。

最後，要從CPAR分離會話，請使用命令release-sessions /r all，此時附加的所有會話都將分離。

可以應用過濾器來分離特定會話。

在CPAR AAA上為使用者會話快取的屬性(AVP)

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:

- 非3GPP-User-Data

- Service-Selection

預設情況下：

- 使用者名稱(IMSI)

- 原始主機

- Auth-Application-Id

- 原始領域

- Session-Id

在CLI上使用此命令query-sessions時，每個會話都可以看到此類屬性。

驗證

目前沒有適用於此組態的驗證程序。

疑難排解

目前尚無適用於此組態的具體疑難排解資訊。