5 Background Processes
This chapter explains the process which runs automatically as part of the Oracle Communications Convergent Charging Controller application. This process is started automatically by the SLEE.
diameterBeClient
The diameterBeClient takes SLEE messages from the diamActions library and converts them to Diameter messages. It also maintains all Diameter connections.
Startup
The diamActions library and diameterBeClient will load the configuration (from the eserv.config file and the SLC database) on startup and on receiving a SIGHUP, at which point it needs to reload the config.
Example DIAMETER Section
Here is an example DIAMETER section configuration
in the eserv.config file.
DIAMETER = {DCD = {serviceDomainInterfaceName =
"dcdBeClient"loggedNotificationPeriod = 300loggedInvalidPeriod =
300databaseCacheValiditySeconds = 18000 Origin-Host =
"ocpc.oracle.com"Origin-Realm = "ocpc.oracle.com"serviceContextID =
"ocpc@oracle.com"Auth-Application-Id =
4Vendor-Specific-Application-Id = [{Vendor-Id =
193Auth-Application-Id = 4Acct-Application-Id = 19302}]enableDraft8
= false# scheme = "SchemeA"honour_disconnect = trueVendor-Id =
16247Product-Name = ""timeout_x = 30000000transmit_limit =
2trace_debug_flags = "all"statistics_interval =
300NotificationFilter = {CollectiveNotice = truePerPeerNotice =
{initial_request = trueupdate_request = truetermination_request =
trueevent_request = trueunknown_request = truetotal_request =
truerequest_timeout = truenon_request_type_result_codes =
true}}}DomainTypes = [{name = "DIAMETER"schemeName =
"SchemeA"routing = "Round Robin" voidUnusedReservation =
falsedefaultSessionFailover = 0defaultEventFailover =
0defaultFailureHandling = 0balanceEnquiryMethod =
"balanceCheck"includeDcdCdrFields = falsedefaultFixedCostDuration =
86400enableScap = falseoverwriteZeroCallAnswerTime = falseDomains =
[{name = "myDomainA"routing = "Round Robin" realmFailureWaitSeconds
= 20weighting = 1}{name = "myDomainB"routing =
"Failover"realmFailureWaitSeconds = 20weighting = 1}]AVPs = [{name
= "ConfirmNamedEventReservationRequest" mandatoryContents =
["Subscription-Id""Service-Identifier""NE-Used-Service-Unit"]optionalContents
= []}{avpCode = 443name = "Subscription-Id"type =
"Grouped"mandatoryContents =
["Subscription-Id-Type""Subscription-Id-Data"]optionalContents =
[]}{avpCode = 450name = "Subscription-Id-Type"type =
"Enumerated"literal = "0" # END_USER_E164}{avpCode = 444name =
"Subscription-Id-Data"type = "UTF8String"ccsConcept =
"acsProfile"profileBlock =18profileTag = 327686profileFormat =
"LNSTRING"conditionProfileBlock = 17conditionProfileTag =
2009conditionValue = 14}{avpCode = 439name =
"Service-Identifier"type = "Unsigned32"ccsConcept =
"eventType"cdrTag = "DIAMETER_SERVICE_ID"cdrOperation =
"replace"}{avpCode = 446name = "NE-Used-Service-Unit"type =
"Grouped"mandatoryContents =
["CC-Service-Specific-Units-Used"]}{avpCode = 417name =
"CC-Service-Specific-Units-Used"type = "Unsigned64"ccsConcept =
"numUnitsUsed"vendorId = 0flags = 0repeating = falsemaxOccurrences
= 10conversion = [{esg = 1vendor = 2serviceProvider = 1}{esg =
3vendor = 2serviceProvider = 2}]conversionScale =
1conversionRounding = "floor"interpretBase = 10octetLength = 0}{
name = ”3GPP-MS-TimeZone” vendorId = 10415 #3GPP
avpCode = 23 ccsConcept = “callerMsTimeZone” type =
“OcterString” octetLength = 2}{avpCode = 900vendorId =
16247name = "Custom-Scp-Action"type = "Enumerated"ccsConcept =
"scpAction"repeating = true}{name = "DirectNamedEventRequest-Money
Refund"mandatoryContents =
["Subscription-Id""SOS-TopUp-RequestedAction""Charging-Start-Timestamp"]}
{name = "SOS-TopUp-RequestedAction"type = "Enumerated"value =
"5"avpCode = 436} {name = "WalletRechargeRequest"mandatoryContents
=
["Subscription-Id""TopUp-RequestedAction""Charging-Start-Timestamp""Topup-Amount""Topup-Voucher-Number""Topup-Voucher-Type""Topup-Voucher-Id""Topup-Voucher-Serial-Number""Source-System-Id"]optionalContents
=
["Voucher-Recharge_Failed-Flag""Voucher-Recharge_Failed_Date_Time""Topup-Voucher-Balance-Validity-Start""Topup-Voucher-Balance-Validity-Relative"]}{name
= "Voucher-Recharge_Failed-Flag"type = "Integer32"vendorId =
581avpCode = 50998ccsConcept =
"voucherRechargeFailureFlag"includeIf = true} {name =
"Voucher-Recharge_Failed-Date-Time"type = "Integer32"vendorId =
581avpCode = 50999ccsConcept =
"voucherRechargeFailureDateTime"excludeWhenIn = "0"} {name =
"TopUp-RequestedAction"type = "Enumerated"value = "4"avpCode = 436}
{ name = "Charging-Start-Timestamp" type = "Integer32" profileBlock
= 18 profileTag = 327999 avpCode = 12000} { name =
"Topup-Voucher-Number" avpCode = 12001 ccsConcept =
"voucherInfoVoucher" type = "Integer32"} { name = "Topup-Amount"
avpCode = 12002 type = "Grouped" mandatoryContents = [
"Value-Digits" ] optionalContents = [ "Exponent" ]} {name =
"Value-Digits"avpCode = 12003ccsConcept = "voucherInfoValue"type =
"Integer32"} {name = "Topup-Voucher-Type"avpCode = 12005ccsConcept
= "voucherTypeName"type = "UTF8String"} {name =
"Topup-Voucher-Id"vendorId = 581avpCode = 50026ccsConcept =
"voucherInfoVoucherId"type = "Integer32"}{ name =
"Topup-Voucher-Serial-Number"avpCode = 12008ccsConcept =
"voucherInfoVoucherSerialNumber"type = "Unsigned64"}{name =
"Topup-Voucher-Balance-Validity-Start"avpCode = 12009ccsConcept =
"voucherInfoBalanceValidityStart"type = "Time"}{name =
"Topup-Voucher-Balance-Validity-Relative"avpCode = 12010type =
"Grouped"optionalContents =
["Topup-Voucher-Balance-Validity-Offset""Topup-Voucher-Balance-Validity-Type]}{name
= "Topup-Voucher-Balance-Validity-Offset"avpCode = 12011ccsConcept
= "voucherInfoBalanceValidityOffset"type = "Integer32"}{name =
"Topup-Voucher-Balance-Validity-Type"avpCode = 12012ccsConcept =
"voucherInfoBalanceValidityType"type = "Enumerated"}{name =
"WalletRechargeResponse"mandatoryContents =
["Topup-Balance-Information""Topup-Receipt-Number"]} {name =
"Topup-Balance-Information"vendorId = 581 # IntecavpCode =
50030type = "Grouped"mandatoryContents =
["Topup-Balance-Type-ID"]optionalContents =
["Topup-Balance-Expire-Date""Topup-Unit-Value"]} {name =
"Topup-Balance-Type-ID"avpCode = 50020vendorId = 581 #
IntecccsConcept = "walletInfoBalanceType"type = "Integer32"}{name =
"Topup-Balance-Expire-Date"vendorId = 581 # IntecavpCode =
50032ccsConcept = "walletInfoBalanceExpiry"type = "Integer32"}
{avpCode = 445vendorId = 581name = "Topup-Unit-Value"type =
"GroupedUnitValue"ccsConcept =
"walletInfoBalanceSystemValue"conversionScale = signInversion -
truemandatoryContents = ["Topup-Value-Digits"]optionalContents =
["Topup-Exponent"]} {avpCode = 447name = "Topup-Value-Digits"type =
"Integer64"} {avpCode = 449name = "Topup-Exponent"type =
"Integer32"literal = "1"} {name = "Topup-Receipt-Number"avpCode =
50024type = "UTF8String"} {name = "CreateEDRRequest"} {name =
"CreateEDRResponse"} {name = "BadPINRequest"} {name =
"BadPINResponse"}{name = "Termination-Cause"avpCode = 295type =
"Enumerated"ccsConcept = "terminationCause"conversion = [{esg = 8 #
releasedNoFundsvendor = 6 # DIAMETER_AUTH_EXPIRED}{esg = 9 #
disconnectedLegBNoFundsvendor = 6 # DIAMETER_AUTH_EXPIRED}{esg = 14
# callingPartyDisconnectedvendor = 1 # DIAMETER_LOGOUT}{esg = 15 #
calledPartyDisconnectedvendor = 1 # DIAMETER_LOGOUT}]}]ContextCopy
= [{contextItem = "scpActionSupervise"profileBlock = 17profileTag =
6356992 # Hex 0x00610000profileFormat = "INTEGER"}{contextItem =
"scpActionDoNotSupervise"profileBlock = 17profileTag = 6356993 #
Hex 0x00610001profileFormat = "INTEGER"}{contextItem =
"scpActionRelease"profileBlock = 17profileTag = 6356994 # Hex
0x00610002profileFormat = "INTEGER"}{contextItem =
"scpActionSendMessage"profileBlock = 17profileTag = 6356995 # Hex
0x00610003profileFormat = "INTEGER"}{contextItem =
"scpActionPlayAnnouncement"profileBlock = 17profileTag = 6356996 #
Hex 0x0061004profileFormat = "INTEGER"}{contextItem =
"scpActionSuperviseWithoutControlling"profileBlock = 17profileTag =
6356997 # Hex 0x0061005profileFormat = "INTEGER"}{contextItem =
"callState"profileBlock = 17profileTag = 6356998 # Hex
0x0061006profileFormat = "INTEGER"}{contextItem =
"sendCount"profileBlock = 17profileTag = 6356999 # Hex
0x0061007profileFormat = "INTEGER"}{contextItem =
"preCallAnnouncementId"profileBlock = 17profileTag = 6357000 # Hex
0x0061008profileFormat = "INTEGER"}{contextItem =
"preCallLowBalance"profileBlock = 17profileTag = 6357001 # Hex
0x0061009profileFormat = "INTEGER"}]TimeIn = {profileBlock =
17profileTag = 6357002 # Hex 0x006100a, continuing from example
ContextCopy valuesprofileFormat = "TIME"}TimeOut = {profileBlock =
17 profileTag = 6357003 # Hex 0x006100bprofileFormat = "TIME"}}] #
End of DomainTypes arrayPeerSchemes = [{schemeName = "SchemeA"Peers
= [{name = "host1"scheme = [ "scheme1", "schmeme2"
]permittedOriginHosts = ["host1.realm1.oracle.com"]peer_group =
"host1"transport = "tcp"initiation = "connect"RemoteAddresses = [
"192.168.1.10"]remote_port = 3868netmask6Bits = 128netmaskBits =
32permittedInstances = 0reqSctpInboundStreams =
8reqSctpOutboundStreams = 8sctp_hbinterval = 1000watchdogPeriod =
30connectionTimeout = 30inBufferSize = 0outBufferSize = 0} # end of
Peer host1{name = "host2"scheme = [ "scheme1", "schmeme2"
]permittedOriginHosts = ["host1.realm1.oracle.com"]peer_group =
"host1"transport = "tcp"initiation = "connect"RemoteAddresses = [
"192.168.1.11"]remote_port = 3868netmask6Bits = 128netmaskBits =
32permittedInstances = 0reqSctpInboundStreams =
8reqSctpOutboundStreams = 8sctp_hbinterval = 1000watchdogPeriod =
30connectionTimeout = 30inBufferSize = 0outBufferSize = 0} # end of
Peer host1} # End of Scheme A{schemeName = "SchemeB"Peers = [{name
= "host1"scheme = [ "scheme1", "schmeme2" ]permittedOriginHosts =
["host1.realm1.oracle.com"]peer_group = "host1"transport =
"tcp"initiation = "connect"RemoteAddresses = [
"192.168.1.10"]remote_port = 3868netmask6Bits = 128netmaskBits =
32permittedInstances = 0reqSctpInboundStreams =
8reqSctpOutboundStreams = 8sctp_hbinterval = 1000watchdogPeriod =
30connectionTimeout = 30inBufferSize = 0outBufferSize = 0} # end of
Peer host1]} # End of Scheme B] # End of PeerSchemes sectionroutes
= [{realm = "FirstRealm" host = "host1.realm1.oracle.com" priority
= 1round_robin = 0direct = true}]NamedEventTypes = [{eventClass =
"abc"eventName = "def"eventType = 123isDebit = true}{eventClass =
"ghi"eventName = "jkl"eventType = 456}]HostSpecificData = [{name =
"ocpc.oracle.com"DCD = {Origin-Host = "ocpc.oracle.com"Origin-Realm
= "ocpc.oracle.com"}routes = [{realm = "myDomainA"host =
"host1.realm1.oracle.com"priority = 1round_robin = 0direct =
true}]}]}Statistics Logged by diameterBeClient
Diameter statistics are generated by each SLC, and then transferred at periodic intervals to the Service Management System (SMS) for permanent storage and analysis.
An existing statistics system (smsStats) provides functions for the collection of basic statistical events. This is provided in the Convergent Charging Controller SMS application. Refer to SMS Technical Guide for details.
Enabling Statistics
To enable statistics on an SCP after installing the database entries on the SMF.
-
On the Table Replication tab of the SMS Node Management screen, select the DCD replication entry:
SMS->SMF_STATISTICS_DEFN->SMF_STDEF_DCDand drag it over to the allocated Replication Groups. Refer to Configuring Table Replication in the SMS User's Guide for details.
-
After creating the config file, you need to send a HUP to the smsStatsDaemon to force a reread of the database entries:
# fuser -s 1 /IN/service_packages/SMS/bin/smsStatsDaemon
DCD Statistics
SMS statistics are logged with APPLICATION_ID = ‘DCD’ (application number 97)
The following statistics are defined:
- DIAMETER_MIN_LATENCY: Minimum Latency
- DIAMETER_MAX_LATENCY: Maximum Latency
- DIAMETER_AVERAGE_LATENCY: Average Latency
- DIAMETER_CC_TYPE_INITIAL: Initial Requests sent
- DIAMETER_CC_TYPE_UPDATE: Update Requests sent
- DIAMETER_CC_TYPE_TERMINATION: Termination Requests sent
- DIAMETER_CC_TYPE_EVENT: Event Requests sent
- DIAMETER_TIMEOUT: CCRs timed out
- DIAMETER_SUCCESS: CCAs received with success result code
- DIAMETER_FAILURE_3xxx: CCAs received, error code in range 3000 to 3999
- DIAMETER_FAILURE_4xxx: CCAs received, error code in range 4000 to 4999
- DIAMETER_FAILURE_5xxx: CCAs received, error code in range 5000 to 5999
- DIAMETER_FAILURE_1xxx: CCAs received, error code in range 1000 to 1999
- DIAMETER_FAILURE_UNKNOWN: CCAs received, error code in undefined range
- RAA_GENERATED_SENT: RAA generated from stored RAR, send to server
- RAA_NO_OUTSTANDING_RAR: Rejecting received RAA, no record of RAR
- RAA_RECEIVED: RAA received from DCA
- RAA_SENT: RAA sent to Diameter server
- RAA_SENT_WITH_ERROR: RAA sent to Diameter server, with error indication
- RAA_TIMEOUT_ALREADY_CLEARED: RAA received, but timeout already cleared
- RAA_UNKNOWN_SESSION_ID: RAA rejecting received RAA, unknown session ID
- RAR_RECEIVED: RAR received from diameter server
- RAR_SEND_FAIL: RAR failed to send RAR to DCA, no dialog etc.
- RAR_SENT: RAR sent to DCA
- RAR_TIMEOUT_RAA_SENT: RAR send timeout, and RAA reject sent to server
- TERM_REQUEST_BEFORE_RAA: Termination request before RAA received
- RAR_UNKNOWN_SESSION_ID: RAR received with unknown session ID
- RAR_NOT_ENABLED_RESPONSE: RAR received gets configured resultcode
For all statistics, the Destination-Realm or Host ID involved is put into SMF_STATISTICS.DETAIL.
Reports
The following reports are available:
- DCD System Stats
- DCD System Stats by Realm/Host
Reports are generated using the SMS Report Functions screen. Refer to SMS User's Guide for details.
Example Report
Here is an example DCD System Stats report.
DCD Statistics Listing==============================Start
Date: 15 October 2007Finish Date: 30 October 2007Report Type:
Totals24 October 2007, 21:20:12Node Name Statistics ID
Totals--------------------
------------------------------------------------
----------mtv-tst-scp10 DIAMETER_FAILURE_UNKNOWN
3mtv-tst-scp10 DIAMETER_SUCCESS
319mtv-tst-scp10 DIAMETER_FAILURE_5xxx
14mtv-tst-scp10 DIAMETER_CC_TYPE_INITIAL
214mtv-tst-scp10 DIAMETER_FAILURE_1xxx
2mtv-tst-scp10 DIAMETER_TIMEOUT
63mtv-tst-scp10 DIAMETER_CC_TYPE_UPDATE
185mtv-tst-scp10 DIAMETER_FAILURE_3xxx
8mtv-tst-scp10 DIAMETER_CC_TYPE_TERMINATION
86mtv-tst-scp10 DIAMETER_CC_TYPE_EVENT
14mtv-tst-scp10 DIAMETER_FAILURE_4xxx
39CompletedDCD EDRs
EDR Generation
EDRs are generated and processed by the slee_acs on the SLC and uploaded at regular intervals to the SMS using the cmnPushFiles process.
Diameter Charging Driver (DCD) tags are appended to the EDRs generated by the Advanced Control Services application. See Event Detail Record Reference Guide for the full list and descriptions.
DCD EDR Tags
Here are the EDR tags produced by DCD.
DIA_RC (result code)
| Description: | Number indicating diameter result-code received in CCA message. |
| Format: | Integer |
| Concept: | Result-Code |
| Notes: | |
| Example: | DIA_RC=2001
|
DIA_REQ (current session message
number)| Description: | Sequential number, indicating message within the current session. |
| Format: | Integer |
| Concept: | CC-Request-Number |
| Notes: | For Diameter event based messages, this will always be 0, and hence not recorded. |
| Example: | DIA_REQ=1
|
DIA_SID (session id)
| Description: | This is a unique value identifying the Diameter session. |
| Format: |
Of the form: DiameterIdentity;time;SLEE_CallID Where:
|
| Concept: | Session-ID |
| Notes: | The values for time and SLEE_CallID are in decimal format, but they are actually sent out in hexadecimal format. |
| Example: | DIA_SID=scp1.oracle.com;47A228C3;15459A
|
DIA_TIME (time ccr sent)
| Description: | The time the CCR was sent, in hundredths of second |
| Format: | Date - "YYYY-MM-DD-HH-MM-SSSS" |
| Concept: | Session-ID |
| Notes: | |
| Example: | DIA_TIME=2008-03-27-20-41-3831
|
Custom Tag Names
The cdrTag configuration parameter allows for an
EDR to have tag names that are customer defined.
Example EDRs
Here are some example EDRs generated by DCD.
Refer to ACS EDR Tags for the non-DCD tags.
Example 1
Whole EDR for an InitialTimeReservation and ConfirmTimeReservation:
EDR:
'VOICE_MO|CID=285222|OA=0|OTI=0|CUST=1|SN=0777666444|TN=0777666444|CGN=8888887|CLI=8888887|SK=1|TCS=20080327204138|TCE=20080327204241|LPN=|LAC=|CS=4|CPC=10|CC=|CPNI=0|PCNA=|TPNI=0|PTNA=|CGNA=|TGNA=|TFN=ST-2,SDTN-21,uatb-3,PB-22,END-14|LGID=0|CPN=uatbWcseBrch|CAET=3|CCET=60.0|CA=60777666555|RELC=17|OCPI=|CPNN=3|CGNN=3|CPPI=1|NOAT=1|CBAT=0|FATS=0|CCTS=20080327204138|HTS=20080327204138|AIDL=|DIA_SID=nzwn-test03-z2;47ec0682;45a26|DIA_REQ=0|DIA_RC=2001|DIA_TIME=2008-03-27-20-41-3831|DIA_SID=nzwn-test03-z2;47ec0682;45a26|DIA_REQ=1|DIA_RC=2001|DIA_TIME=2008-03-27-20-41-3847|FCA=60777666555|WALR=86'
Note the DCD part of the EDR. All four tags are present twice:
-
The Initial Time Reservation
DIA_SID=nzwn-test03-z2;47ec0682;45a26|DIA_REQ=0|DIA_RC=2001|DIA_TIME=2008-03-27-20-41-3831| -
The Termination Time Reservation
DIA_SID=nzwn-test03-z2;47ec0682;45a26|DIA_REQ=1|DIA_RC=2001|DIA_TIME=2008-03-27-20-41-3847|
Example 2
Whole EDR for DirectNamedEvent:
EDR:
'VOICE_MO|CID=287224|OA=0|OTI=0|CUST=1|SN=0777666444|TN=|CGN=8888887|CLI=8888887|SK=1|TCS=20080327231115|TCE=0|LPN=|LAC=|CS=1|CPC=10|CC=|CPNI=0|PCNA=|TPNI=0|PTNA=|CGNA=|TGNA=|TFN=ST-1,bevt-2,END-3|LGID=0|CPN=DirectDebit|CAET=0|CCET=0.0|CA=|RELC=31|OCPI=|CPNN=3|CGNN=3|CPPI=1|NOAT=0|CBAT=0|FATS=0|CCTS=0|HTS=0|AIDL=|DIA_SID=nzwn-test03-z2;47ec2993;461f8|DIA_RC=2001|DIA_TIME=2008-03-27-23-11-1577'
Note in the DCD part of the EDR that event based EDRs only need to receive DIA_SID, DIA_RC and DIA_TIME, that is, no DIA_REQ:
DIA_SID=nzwn-test03-z2;47ec2993;461f8|DIA_RC=2001|DIA_TIME=2008-03-27-23-11-1577'
Example 3
For cdrTag for MMM_TAG and ZZZ_TAG, the following would be an example of what the resulting EDR would look like.
CCS_BE|CID=205383|OA=0|OTI=0|CUST=1|SN=1130|TN=|CGN=0212994768|CLI=0212994768|SK=3|TCS=20091117192600|LPN=|LAC=|CS=1|CPC=10|CC=|CPNI=0|PCNA=|TPNI=0|PTNA=|CGNA=|TGNA=|TFN=ST-1,CCDR-8,CCDR-12,CCDR-14,bevt-2,DISC-3,END-7|LGID=0|CPN=ST-BE-END|OCPI=|CPNN=3|CGNN=3|CPPI=1|NOAT=0|CBAT=0|FATS=0|CCTS=0|HTS=0|AIDL=|AAA_TAG=11111|CMX_EC=CR96791|CMX_EN=BasicTest|DIA_SID=eng-host06-z6.usp.co.nz;4b02f8c8;32247|DIA_RC=2001|DIA_TIME=2009-11-17-19-26-0062|MMM_TAG=55555|ZZZ_TAG=777