4 Configuration

This chapter explains how to configure the Oracle Communications Convergent Charging Controller application.

Configuration Overview

This section provides a high level overview of how the DCD interface is configured.

There are configuration options which are added to the configuration files that are not explained in this chapter. These configuration options are required by the application and should not be changed.

Configuration Components

The Diameter Charging Driver is configured by the following components:

Table 4-1 Diameter Charging Driver Components

Component Locations Description Further Information
eserv.config all SLC machines DCD is configured by the Diameter section of eserv.config. eserv.config Configuration
eserv.config all SLC machines The WalletInformation cache is configured in the CCS section of eserv.config. CCS eserv.config Configuration
SLEE.cfg all SLC machines The SLEE interface is configured to include the DCD service. SLEE.cfg Configuration and the SLEE Technical Guide
acs.conf all SLC machines Configures the diamActions library. acs.conf Configuration
oracleConfig.xsd SMS Defines acceptable structure for XML. Not applicable
oracleConfigWorking.xml SMS The editable configuration. Configuration Management
oracleConfigMaster.xml SMS The deployed (live) configuration used to generate the eserv.config. Configuration Management

Note:

The .xsd and .xml files are present only when the Configuration Management editor is installed.

eserv.config Configuration

The eserv.config file is a shared configuration file, from which many Oracle Communications Convergent Charging Controller applications read their configuration. Each Convergent Charging Controller machine (SMS, SLC, and VWS) has its own version of this configuration file, containing configuration relevant to that machine. The eserv.config file contains different sections; each application reads the sections of the file that contains data relevant to it.

The eserv.config file is located in the /IN/service_packages/ directory.

The eserv.config file format uses hierarchical groupings, and most applications make use of this to divide the options into logical groupings.

Configuration File Format

To organize the configuration data within the eserv.config file, some sections are nested within other sections. Configuration details are opened and closed using either { } or [ ].

  • Groups of parameters are enclosed with curly brackets: { }
  • An array of parameters is enclosed in square brackets: [ ]
  • Comments are prefaced with a # at the beginning of the line

To list things within a group or an array, elements must be separated by at least one comma or at least one line break. Any of the following formats can be used, as in this example:

{ name="route6", id = 3, prefixes = [ "00000148", "0000473"]
}{ name="route7", id = 4, prefixes = [ "000001049" ] }

or

{ name="route6"id = 3prefixes = [ "00000148""0000473" ] }{
name="route7"id = 4prefixes = [ "000001049" ] }

or

{ name="route6"id = 3prefixes = [ "00000148", "0000473" ] }{
name="route7", id = 4prefixes = [ "000001049" ] }

eserv.config Files Delivered

Most applications come with an example eserv.config file named eserv.config.example. The example file for DCD is:

/IN/service_packages/DCD/etc/eserv.config.dcd.example

Editing the File

You can edit the eserv.config file by using one of the following:

  • The Configuration Management editor
  • A text editor

WARNING:

If you are using the Configuration Management editor, you cannot use a text editor to edit the DCD section.

Text Editor

Open the configuration file on your system using a standard text editor. Do not use text editors, such as Microsoft Word, that attach control characters. These can be, for example, Microsoft DOS or Windows line termination characters (for example, ^M), which are not visible to the user, at the end of each row. This causes file errors when the application tries to read the configuration file.

Always keep a backup of your file before making any changes to it. This ensures you have a working copy to which you can return.

Loading eserv.config Changes

If you change the configuration file, you must restart the appropriate parts of the service to enable the new options to take effect.

Diameter eserv.config Configuration

The eserv.config file must be configured to enable the DCD to work. Most of the necessary DCD configuration in eserv.config is done at installation time by the configuration script. However, realms and hosts need to be configured.

Note:

The DCD configuration options in eserv.config are explained in the section on the diameterBeClient background process.

CCS eserv.config Configuration

DCD maintains a WalletInformation cache. To enable updates to the WalletInformation cache, the service handles for the services using DCD must be mapped to the libdcdCcsSvcExtra.so library. You will need to configure the mapping in the CCS.ccsServiceLibaray.ccsPluginExtend of eserv.config.

ccsServiceLibrary Configuration

Here is an example of the ccsServiceLibrary configuration for DCD in the CCS section of eserv.config.

ccsServiceLibrary = {ccsPluginExtend =
[{library="libdcdCcsSvcExtra.so"}]}

RAR Configuration

You enable processing of re-authorization requests (RARs) in Diameter Control Agent (DCA).

For information about enabling RAR processing in DCA, see the RAR configuration section in Diameter Control Agent Technical Guide.

When RAR processing is enabled, DCA marks the first INITIAL_REQUEST as RAR enabled to allow DCD to process any subsequent RARs. You can specify the amount of time DCD should wait for a response to an RAR sent to the Diameter client via DCA by configuring the rarSleeTimeout parameter in the DIAMETER section of the eserv.config file:

DIAMETER = { DCD = {rarSleeTimeout = seconds }}

where seconds is the amount of time in seconds that the DCD will wait for a response to an RAR sent to the Diameter client via DCA.

After this timeout lapses, DCD responds to the Diameter server with a re-authorization acknowledgement (RAA) containing the DIAMETER_UNABLE_TO_DELIVER (3002) result code. If the DCA responds after the DCD has sent an RAA, the DCA response is ignored.

Note:

The rarSleeTimeout value must be greater than 0 (zero), and is set to 10 by default. You are recommended to set the value of the rarSleeTimeout greater than the value of the rarClientTimeout in the DCAInstances section of eserv.config.

To disable the timeout, set rarSleeTimeout to 0 (zero). A value of 0 (zero) means that no SLEE timeout will be used.

Note:

If RAR processing is not enabled in DCA, then DCD will respond to the diameter server with an RAA containing the corresponding result code set in the rarResultCode.

SLEE.cfg Configuration

The SLEE.cfg file must be configured to enable the DCD to work. All necessary SLEE configuration is done at installation time by the configuration script.

The SLEE configuration file is located at /IN/service_packages/SLEE/etc/SLEE.cfg.

See SLEE Technical Guide for details about SLEE configuration.

DCD SLEE Configuration

On installation, the following line is added to the SLEE.cfg file.

INTERFACE=dcdBeClient diameterBeClient.sh
/IN/service_packages/DCD/bin EVENT

Note:

It is essential for the correct operation of this application that the SLEE Interface type is always set to EVENT.

PeerSchemes Configuration Section

Example PeerSchemes

Here is a high-level structure of the configuration of a scheme in the PeerSchemes section.

Note:

The PeersSchemes or Peers section is mandatory.

PeerSchemes = [{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{Peer_Host2_Parameters}]} # End of Scheme A{schemeName =
"SchemeB"Peers = [Parameters_for_SchemeB_peers]} # End of Scheme B]
# End of PeerSchemes sectionschemeName
Syntax: schemeName = "name"
Description: The name identifying the scheme.
Type: String
Optionality: Mandatory
Example: schemeName = "SchemeA"

Peer Host Parameters

The following parameters are used for a peer host. They are found within the Peers section.

Note:

The PeerSchemes or Peers section is mandatory.

The available parameters are:

{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

Note:

All the peer configuration items from "transport" on down can also have global defaults set in the DIAMETER.DCD section. See DCD .

connectionTimeout
Syntax: connectionTimeout = timeout
Description: The timeout for re-establishing connections (RFC 3588 Tc).
Type: Integer
Optionality: Optional
Allowed: In seconds
Default: 30
Example: connectionTimeout = 30
inBufferSize
Syntax: inBufferSize = size
Description: The size of the socket receive buffer.
Type: Integer
Optionality: Mandatory
Allowed: in bytes
Default: 0 (means to use the OS default)
Example: inBufferSize = 0
initiation
Syntax: initiation = "action"
Description: How to start the connection.
Type: String
Optionality: Mandatory
Allowed:
  • listen = listen for incoming connections
  • connect = connect an outgoing connection.
Example: initiation = "connect"
name
Syntax: name = "name"
Description: The name identifying either peer or group of peers.
Type: String
Optionality: Mandatory
Example: name = "host1"
netmaskBits
Syntax: netmaskBits = bits
Description: The number of bits for netmask.
Type: Integer
Optionality: Mandatory
Default: 32 (bits for netmask, that is, a single machine (/32))
Example: netmaskBits = 32
netmask6Bits
Syntax: netmask6Bits = bits
Description: The number of bits for the IP version 6 prefix
Type: Integer
Optionality: Mandatory
Default: 128 (bits for the address prefix, that is, a single machine (/128))
Example: netmask6Bits = 128
outBufferSize
Syntax: outBufferSize = size
Description: The size of the socket send buffer.
Type: Integer
Optionality: Mandatory
Allowed: in bytes
Default: 0 (means to use the OS default)
Example: outBufferSize = 0
peer_group
Syntax: peer_group = "name"
Description:

The peer group that the peer host connects to. If multiple peer hosts belong to the peer group, only one peer host is connected.

The peer group works in failover mode only; it does not support round-robin mode.

Type: String
Optionality: Optional
Default: Defaults to the value specified by the name parameter. For example, if the name parameter is set to "host1", peer_group defaults to "host1".
Example: peer_group = "host1"
permittedInstances
Syntax: permittedInstances = number
Description: The number of permitted instances.
Type: Integer
Optionality: Mandatory
Notes: If set to 0 then allow all.
Example: permittedInstances = 0
permittedOriginHosts
Syntax: permittedOriginHosts = ["host"]
Description: The list of peer names that will be checked against the OriginHost AVP during the capabilities exchange.
Type: String
Optionality: Mandatory
Notes: This parameter accepts at least one host and will accept any one of them when it gets the Capabilities Exchange Answer. These are the hosts allowed to talk to this client.
Example:

permittedOriginHosts = [

"host1.realm1.oracle.com"

"host2.realm1.oracle.com"

]

remote_port
Syntax: remote_port = number
Description: The remote post number.
Type: Integer
Optionality: Optional
Default: Defaults to the RFC specified 3868
Example: remote_port = 3868
RemoteAddresses
Syntax: remoteAddresses = ["ipaddress"]
Description: The list of remote IP addresses.
Type: Array of string parameters
Optionality: Mandatory
Notes: If an address becomes unavailable the list will be cycled through.
Example:

remoteAddresses = [

"192.168.1.10"

]

reqSctpInboundStreams
Syntax: reqSctpInboundStreams = number
Description: The number of requested inbound sctp streams.
Type: Integer
Optionality: Mandatory
Notes: There is no guarantee you will actually get these.
Example: reqSctpInboundStreams = 8
reqSctpOutboundStreams
Syntax: reqSctpOutboundStreams = number
Description: The number of requested outbound sctp streams.
Type: Integer
Optionality: Mandatory
Notes: There is no guarantee you will actually get these.
Example: reqSctpOutboundStreams = 8
scheme
Syntax: scheme = [ "scheme", "scheme"]
Description: The list of schemes to which you have limited the peer.
Type: Array of strings
Optionality: If using PeerSchemes this is mandatory.
Allowed: Names of configured schemes.
Example: scheme = [ "scheme1", "scheme2" ]
sctp_hbinterval
Syntax: sctp_hbinterval = interval
Description: The interval for sctp heartbeats.
Type: Integer
Optionality: Optional
Allowed: in milliseconds
Default: 1000
Example: sctp_hbinterval = 1000
transport
Syntax: transport = "type"
Description: The protocol for this host peer.
Type: String
Optionality: Optional
Allowed:
  • sctp
  • tcp
Default: If not specified, then it uses the one from the global DCD section.
Example: transport = "tcp"
watchdogPeriod
Syntax: watchdogPeriod =period
Description: The quiet period before sending a DWR. (RFC 3588 Tw).
Type: Integer
Optionality: Mandatory
Allowed: in seconds
Default: 30
Example: watchdogPeriod = 30

acs.conf Configuration

The acs.conf file must be configured to enable the application to work. All necessary configuration is done at installation time by the configuration script; this section is for information only.

The ACS configuration file is located at /IN/service_packages/ACS/etc/acs.conf.

Refer to ACS Technical Guide for details on ACS configuration.

DCD acs.conf Configuration

On installation, the following line is added to the acs.conf.

ChassisPlugin diamActions.so

DCD

The DCD section holds global configuration for the DCD application.

Note:

This section is optional.

DCD Parameters

Here are the parameters for the DCD section.

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 =
300

statsCollection = false NotificationFilter = {CollectiveNotice = truePerPeerNotice = {initial_request = trueupdate_request = truetermination_request = trueevent_request = trueunknown_request = truetotal_request = truerequest_timeout = truenon_request_type_result_codes = true}}}

You may also set defaults for peer connection settings here. See Peer Host Parameters for details of the available options.

Auth-Application-Id
Syntax: Auth-Application-Id = ID
Description: This AVP value is set to the Credit-Control as DCD uses Credit-Control capability by default.
Type: Integer
Optionality: Optional (not sent if not set).
Allowed:  
Default: Not sent
Notes:
  • This AVP can be configured as a sub-AVP to support Vendor-Specific-Application-Id .
  • In case of vendor specific configuration, this value should NOT be set globally.
Example: Auth-Application-Id = 4
Acct-Application-Id
Syntax: Acct-Application-Id = ID
Description: This AVP value is configured as a sub-AVP to support Vendor-Specific-Application-Id .
Type: Integer
Optionality: Optional (not sent if not set).
Allowed:  
Default: Not sent
Notes: Either one, or both of Auth-Application-Id or Acct-Application-Id should be set in order to support Vendor-Specific-Application-Id .
Example: Acct-Application-Id = 12300
diameterMessageLength
Syntax: diameterMessageLength = size
Description: Maximum size of CCA packet received.
Type: Integer
Optionality: Optional (default used if not set)
Allowed:  
Default: 8192
Notes:  
Example: diameterMessageLength = 32768
checkDefinedAvpFlags
Syntax: checkDefinedAvpFlags = true|false
Description: Whether to check incoming AVPs for flags that are defined in the base Diameter protocol, or in any of the Diameter application specifications, so that unknown mandatory AVPs can be excluded.
Type: Boolean
Optionality: Optional (default used if not set)
Allowed:

true – Check flags of incoming AVPs.

false – Do not check flags of incoming AVPs.

Default: true
Example: checkDefinedAvpFlags = false
databaseCacheValiditySeconds
Syntax: databaseCacheValiditySeconds = seconds
Description: Defines how long to keep data from the database after loading it.
Type: Integer
Optionality: Optional
Allowed: Seconds
Default: 18000 seconds (5 hours)
Example: databaseCacheValiditySeconds = 18000
enableDraft8
Syntax: enableDraft8 = true|false
Description: Indicates if Draft 8 version of the Diameter base protocol should be used. This is required to support the enableScap parameter.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: false
Notes:  
Example: enableDraft8 = false
enableDraft8
Syntax: excludeWhenEmpty = true|false
Description: Causes DCD to not send a parent Attribute-Value Pair (AVP) if all its child AVPs are empty.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: false
Notes:  
Example: excludeWhenEmpty = true
honour_disconnect
Syntax: honour_disconnect = true|false
Description: This is whether to use the RFC 3588 disconnect logic.
Type: Boolean
Optionality: Optional
Allowed: true, false
Default: false
Notes: By default the RFC3588 disconnect logic is enabled. If your server incorrectly sends DPR messages, then disable this by setting to false.
Example: honour_disconnect = true
loggedInvalidPeriod
Syntax: loggedInvalidPeriod = period
Description: This is how often to announce the number of invalid messages.
Type: Integer
Optionality: Optional
Allowed: Seconds
Default: 300
Example: loggedInvalidPeriod = 300
loggedNotificationPeriod
Syntax: loggedNotificationPeriod = period
Description: This is how often to announce the number of recent message parse errors.
Type: Integer
Optionality: Optional
Allowed: Seconds
Default: 300
Example: loggedNotificationPeriod = 300
NotificationFilter
Syntax:

NotificationFilter = {

CollectiveNotice =

PerPeerNotice = {}

}

Description: This section sets flags allowing the appropriate notification to be enabled or suppressed.
Type: Section of boolean parameters
Optionality: Optional, default used if not set
Default: All values default to true (that is, statistics recording in DCD alarm log enabled).
Notes: Settings are only applicable to statistics that are recorded in the DCD alarm log.
Example:
NotificationFilter = {CollectiveNotice =
truePerPeerNotice = {initial_request = trueupdate_request =
truetermination_request = trueevent_request = trueunknown_request =
truetotal_request = truerequest_timeout =
truenon_request_type_result_codes = true}}
CollectiveNotice
Syntax: collectiveNotice = true|false
Description: Enables or suppresses the recording of CCR request type statistics.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed:
  • true – Enable CCR request type statistics
  • false – Suppress CCR request type statistics
Default: true
Notes: Counts are collective across all peers and not separated on a per peer basis.
Example: collectiveNotice = true
PerPeerNotice
Syntax: PerPeerNotice =
{request_type 
=
true|false> list} 
Description: Enables/suppresses statistic counts per peer for both CCR and CCA for the listed CC_Request_types.
Type: Section of boolean parameters
Optionality: Optional (default used if not set).
Allowed:

Each request type can be set to:

  • true (statistic enabled)
  • false (statistic suppressed)

See example for list of request types.

Default: All values default to true (statistic enabled).
Notes:  
Example:

PerPeerNotice =

{ initial_request = trueupdate_request =
truetermination_request = trueevent_request = trueunknown_request =
truetotal_request = truerequest_timeout =
truenon_request_type_result_codes = true

}

Origin-Host
Syntax: Origin-Host = "diameterId"
Description: The Diameter AVP Origin-Host - fully qualified domain name.
Type: String
Optionality: Optional
Notes: May be specified for each host. See HostSpecificData Parameters .
Example: Origin-Host = "ocpc.oracle.com"
Origin-Realm
Syntax: Origin-Realm = "diameterId"
Description: The Diameter AVP Origin-Realm.
Type: String
Optionality: Optional
Notes: May be specified for each host. See HostSpecificData Parameters .
Example: Origin-Realm = "ocpc.oracle.com"
Product-Name
Syntax: Product-Name = "name"
Description: The Product name for CER/CEA.
Type: String
Optionality: Optional
Default: empty
Example: Product-Name = ""
rarResultCode
Syntax: rarResultCode= integer
Description: What happens when diameterBeClient receives a Re-Auth-Request
Type: Integer
Optionality: Optional (default used if not set)
Allowed: Any integer
Default:
rarResultCode = 3001,
DIAMETER_COMMAND_UNSUPPORTED
Notes:

When diameterBeClient receives a RAR:

  • If the value is omitted or specified as 3001, it logs an error message and responds with Re-Auth-Answer (Result-Code=3001).
  • If a value other than 3001 is specified, it does not log an error message and responds with Re-Auth-Answer (Result-Code=the specified rarResultCode).

diameterBeClient takes no further action and does not send the Re-Auth-Request to slee_acs.

Example: rarResultCode = 3001
rarsleeTimeout
Syntax: rarSLEETimeout =int
Description: The number of seconds DCD will wait for a response from a RAR sent to the Diameter client via DCA
Type: Integer
Optionality: Optional (default used if not set)
Allowed: >=0
Default: 10
scheme
Syntax: scheme= "type"
Description: The global scheme to use.
Type: String
Optionality: If you use the peerSchemes section, then this is mandatory.
Example: scheme = "schemeA"
serviceDomainInterfaceName
Syntax: serviceDomainInterfaceName = "name"
Description: The interface name of the Diameter BE client (in SLEE.cfg).
Type: String
Optionality: Optional
Default: dcdBeClient
Example: serviceDomainInterfaceName = "dcdBeClient"
serviceContextID
Syntax: erviceContextID = "ContextID"
Description: The Diameter AVP Service-Context-Id.
Type: String
Optionality: Mandatory
Example: serviceContextID = "ocpc@oracle.com"
statistics_interval
Syntax: statistics_interval = seconds
Description: This is how often to record aggregate (average, min, max) latency statistics.
Type: Integer
Optionality: Mandatory
Allowed: In seconds.
Default: 300 (that is, 5 minutes)
Example: statistics_interval = 300
statsCollection
Syntax: statsCollection = true|false
Description: Whether to collect statistics in DCD.
Type: Boolean
Optionality: Optional (default used if not set)
Allowed:

true – Enable statistics collection.

false – Disable statistics collection.

Default: true
Example: statsCollection = false
timeout_x
Syntax: timeout_x =timer
Description: The RFC 4006 Tx timer.
Type: Integer
Optionality: Optional
Allowed: In microseconds
Default: 30000000
Example: timeout_x = 30000000
trace_debug_flags
Syntax: trace_debug_flags = "flags"
Description: The debug flags to turn on if tracing (in the client) is requested by the actions library.
Type: String
Optionality: Optional
Default: "all"
Example: trace_debug_flags = "all"
transmit_limit
Syntax: transmit_limit = limit
Description: The maximum number of retransmits (including the original transmission) allowed for a message.
Type: Integer
Optionality: Optional
Example: transmit_limit = 2
Vendor-Id
Syntax: Vendor-Id = ID
Description: The Vendor ID for CER/CEA.
Type: Integer
Optionality: Optional
Default: 16247 (the Oracle Vendor-Id)
Notes:
  • This AVP can be configured as a sub-AVP to support Vendor-Specific-Application-Id .
  • It is mandatory to specify vendorId when configuring vendor specific AVPs for SCAP.
Example: Vendor-Id = 16247
Vendor-Specific-Application-Id
Syntax:
Vendor-Specific-Application-Id = [{Vendor-Id =
int#Auth-Application-Id = intAcct-Application-Id =
int}]
Description: Lists the Vendor specific AVPs required for enabling SCAP.
Type: Parameter array
Optionality: Optional (default used if not set).
Allowed:  
Default: Parameter array is not specified.
Notes: Do NOT set the global Auth-Application-Id if configuring this parameter array.
Example:
Vendor-Specific-Application-Id = [{Vendor-Id =
123Acct-Application-Id = 12345}]

DomainTypes

The DomainTypes section lists all DCD domain types and the associated configuration.

Note:

This section is mandatory, and it must include one domain type, with a name and scheme defined.

DomainTypes Parameters

Here is an example high-level structure showing the parameters for the DomainTypes section.

DomainTypes = [{name = "DIAMETER"schemeName =
"SchemeA"routing = "Round Robin" voidUnusedReservation =
falsereleaseOnLowCredit = falsedefaultSessionFailover =
0defaultEventFailover = 0defaultFailureHandling =
0balanceEnquiryMethod = "balanceCheck"includeDcdCdrFields =
falsedefaultFixedCostDuration = 86400conversionScale = 1enableScap
= falseoverwriteZeroCallAnswerTime = falseDomains =
[{First_Domain}{Next_Domain}]AVPs =
[{First_AVP}{Next_AVP}{...}]}
balanceEnquiryMethod
Syntax: balanceEnquiryMethod = "method"
Description: The method to use to allow balance queries.
Type: String
Optionality: Optional (default used if not set)
Allowed:
  • "balanceCheck" uses a Balance Check message with a Service Identifier set to "Information" to trigger the query, or
  • "reqActionViewBalance" uses a special Requested-Action AVP with a value of VIEW_BALANCE(5) to trigger the query
Default: "balanceCheck"
Notes:  
Example: balanceEnquiryMethod = "balanceCheck"
defaultEventFailover
Syntax: defaultEventFailover = failover
Description: The default event failover.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:

The failover corresponds to the values defined for Credit Control Failure Handling AVP in RFC 4006:

  • 0 – Terminate
  • 1 – Continue
  • 2 – Retry and Terminate
Default: 0 (Failover not supported)
Notes: Until the BE responds for the event, the failover behavior is determined by this and the defaultSessionFailover parameter.
Example: defaultEventFailover = 0
defaultFailureHandling
Syntax: defaultFailureHandling = number
Description: How to behave until a Credit-Control-Failure-Handling AVP (as defined in RFC 4006) is received from the server.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
  • 0 – Terminate
  • 1 – Continue
  • 2 – Retry and Terminate
Default: 0 (Terminate)
Notes:  
Example: defaultFailureHandling = 0
defaultFixedCostDuration
Syntax: defaultFixedCostDuration = duration
Description: The default time to use for free and fixed cost calls.
Type: Integer
Optionality: Optional (default used if not set).
Allowed: In seconds. May be any positive value.
Default: 86400 (one day)
Notes:  
Example: defaultFixedCostDuration = 86400
defaultSessionFailover
Syntax: defaultSessionFailover = failover
Description: The default session failover.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:

Corresponds to the values defined for Credit Control Failure Handling AVP in RFC 4006:

  • 0 – Terminate
  • 1 – Continue
  • 2 – Retry and Terminate
Default: 0 (Failover not supported)
Notes: Until the BE responds in a session, the failover behavior for a CC session is determined by this.
Example: defaultSessionFailover = 0
enableScap
Syntax: enableScap = true|false
Description: If set to true, support for Ericsson SCAP (Service Charging Application Protocol) to DCD is enabled. This ensures SCAP type accounting messages are used for credit control, rather than CCR/CCA.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed:
  • true – Enabled for SCAP compliance
  • false – Disabled for SCAP compliance
Default: false
Notes:  
Example: enableScap = false
forceWalletReload
Syntax: forceWalletReload = true|false
Description: Defines whether or not the cache may be used for balance inquiries.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: false
Notes:  
Example: forceWalletReload = true
includeDcdCdrFields
Syntax: includeDcdCdrFields = true|false
Description: Whether or not to record the Result-Code in call EDRs.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed: true, false
Default: false
Notes: See DCD EDR Tags for the list of DCD tags.
Example: includeDcdCdrFields = false
insufficientFundsDropCallResultCodes
Syntax:
insufficientFundsDropCallResultCodes=
[
Integer
Integer
]
Description: Indicates a call drop immediately without granting any further time reservation including the withheld ones without sending back a CCR-T.
Type: Integer
Optionality: Optional
Allowed: Any predefined value
Default: None
Notes: insufficientFundsDropCallResultCodes parameter values are only enabled when voidUnusedReservation is set to false. If voidUnusedReservation set to true, insufficientFundsDropCallResultCodes parameter values are ignored and the default result codes, 4010 and 4012 are used.
Example:

insufficientFundsDropCallResultCodes = [

4013

4014

]

name
Syntax: name = "type"
Description: The name of the Domain Type as defined in Prepaid Charging.
Type: String
Optionality: Mandatory
Allowed: Defined in Prepaid Charging from available DIAMETER domain types on the Domain tab of the Service Management screen. Refer to CCS User's Guide.
Example: name = "DIAMETER"
overwriteZeroCallAnswerTime
Syntax: overwriteZeroCallAnswerTime = true|false
Description: Enables overwriting of Charging-Start-Timestamp using the EventTimestamp.
Type: Boolean
Optionality: Optional (default used if not set).
Allowed:
  • true – Overwrite the charging start time.
  • false – If a call is not answered (that is, CallAnswerTime is zero), set the charging start timestamp AVP to 'Jan 1, 1970 00:00:00.0000 UTC'.
Default: false
Notes:  
Example: overwriteZeroCallAnswerTime = false
releaseOnLowCredit
Syntax: releaseOnLowCredit = true|false
Description:

Whether to terminate a session after the expiry of the initial reservation when the reservation length is less than or equal to the low credit buffer. When releaseOnLowCredit is set to:

  • true – DCD terminates sessions after the expiry of the initial reservation.
  • false – DCD does not terminate the session.
Type: Boolean
Optionality: Required
Allowed: true, false
Default: false
Notes:

When a call session using DCD with the UATB feature node is approaching a credit threshold, the UATB node needs enough usage units to provide an insufficient funds message. You should set releaseOnLowCredit to false if you have configured Diameter servers to assume that unused units are still available for the client. Otherwise, set releaseOnLowCredit to true to ensure that the client has enough unused units reserved for the unsufficient funds message.

The releaseOnLowCredit parameter should be placed immediately after the voidUnusedReservation parameter in the eserv.config file.

Example: releaseOnLowCredit = false
routing
Syntax: routing = "name"
Description: The algorithm to use when picking domains within the domain type.
Type: String
Optionality: Optional
Allowed:
  • "Round Robin" (a weighted round robin algorithm)
  • "Failover"
Default: "Round Robin"
Example: routing = "Round Robin"
schemeName
Syntax: schemeName = "name"
Description: The name of the peer scheme to use with this domain type.
Type: String
Optionality: Mandatory
Example: schemeName = "SchemeA"
voidUnusedReservation
Syntax: voidUnusedReservation = true|false
Description: Whether or not to void unused reservations.
Type: Boolean
Optionality: Optional
Allowed: true, false
Default: false
Notes: Diameter states that the server and client should consider any previously reserved, but unused, time in a subsequent reservation as no longer reserved. This is counter to most telephony models, so is disabled by default. To enable (for this domain type), set this parameter to true.
Example: voidUnusedReservation = false

dynamicWalletReload

The dynamicWalletReload section defines the profile to use to determine whether to dynamically force wallet reloads. A wallet reload is forced when the profileFormat value is one of the following:

  • "INTEGER" and the data in the profile is 1 (stored as 4-bytes)
  • "BOOLEAN" and the data in the profile is 1 (stored as a single byte)
  • "STRING" and the data in the profile is one of:
  • "true"
  • "yes"
  • "y"
  • "1"

The parameters are defined in the ContextCopy Parameters section.

Note:

  • Only the profile formats listed here are supported; all other values are ignored.
  • The forceWalletReload parameter must be set to false (or not specified).

Example dynamicWalletReload

Here are the example parameters:

dynamicWalletReload = {profileBlock = 17profileTag =
6357900profileFormat = "INTEGER"}

Domains Parameters

Here is an example of the Domains section.

Domains = [{name = "myDomainA"routing = "Round Robin"
realmFailureWaitSeconds = 20weighting = 1}{name =
"myDomainB"routing = "Failover"realmFailureWaitSeconds =
20weighting = 1}]name
Syntax: name = "name"
Description: The name of the domain as defined in Prepaid Charging.
Type: String
Optionality: Mandatory
Allowed: Defined in Prepaid Charging from available DIAMETER domains on the Domain tab of the Service Management screen. Refer to CCS User's Guide.
Example: name = "myDomainA"
realmFailureWaitSeconds
Syntax: ArraySize = as
Description: How long we wait for a Realm that has had a failure before retrying it.
Type: Integer
Optionality: optional
Allowed: in seconds
Default: 30
Example: realmFailureWaitSeconds = 20
routing
Syntax: routing = "type"
Description: The routing type to use when picking Realms within this Domain.
Type: String
Optionality: Optional
Allowed:
  • "Round Robin" (a weighted round robin algorithm)
  • "Failover"
Default: "Round Robin"
Example: routing = "Round Robin"
weighting
Syntax: weighting = weight
Description: The domain's weighting, if our Domain Type is using Round Robin routing.
Type: Integer
Optionality: Optional
Allowed:  
Default: 1
Notes:

The weighting determines how many times the domain is used. The weightings of all the active domains are added together and the domain receives its percentage of usage.

For example:

  • myDomainA has a weighting of 1
  • myDomainB a weighting of 1
  • myDomainC a weighting of 2

myDomainA has 25% of the total usage. If myDomainC becomes unavailable, then myDomainA will have 50%.

Example: weighting = 1

AVPs

The AVPs section defines (as a tree-like structure) the configurable AVP part of the message for every action that uses Diameter requests and responses.

An example is provided in the eserv.config.default file.

The actions for which configuration is required are:

  • BadPINRequest, BadPINResponse
  • ConfirmNamedEventReservationRequest, ConfirmNamedEventReservationResponse
  • ConfirmTimeReservationRequest, ConfirmTimeReservationResponse
  • CreateEDRRequest, CreateEDRResponse
  • DirectNamedEventRequest, DirectNamedEventResponse
  • DirectTimeChargeRequest, DirectTimeChargeReponse
  • ExtendTimeReservationRequest, ExtendTimeReservationReponse
  • GetNamedEventRatesRequest, GetNamedEventRatesReponse
  • InitialTimeReservationRequest, InitialTimeReservationReponse
  • NamedEventReservationRequest, NamedEventReservationReponse
  • RevokeNamedEventReservationRequest, RevokeNamedEventReservationReponse
  • RevokeTimeReservationRequest, RevokeTimeReservationReponse
  • WalletRechargeRequest, WalletRechargeResponse
  • WalletInfoRequest, WalletInfoReponse

AVP Parameters

Here is an example of the AVPs section.

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}{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 = 445 

name = "Unit-Value-Topup" 

type = "GroupedUnitValue" 

ccsConcept = "voucherInfoValue" 

conversionScale = -100 

signInversion = true 

mandatoryContents = [ "Value-Digits-Topup" ] 

optionalContents =
[ "Exponent-Outgoing" ] } { avpCode =
447 name = "Value-Digits-Topup" type =
"Integer64" } 

{ avpCode = 429 name = "Exponent-Outgoing" type =
"Integer32" literal = "1" }  {name =
"Topup-Value-Digits"avpCode = 50020vendorId = 581 # IntecccsConcept
= "walletInfoBalanceSystemValue"type = "Integer32"} { name =
"Topup-Exponent" avpCode = 50199 # the ICD doesn't define this but
it's not an issue for testing vendorId = 581 # Intec type =
"Integer32"} {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}]}]
avpCode
Syntax: avpCode = code
Description: The numeric tag code that is to be set whenever an AVP of this type is created (for example, added to a request message). It can also be used to ascertain the type of AVP unpacked from a response message.
Type: Integer
Optionality: Mandatory
Example: avpCode = 888005
ccsConcept
Syntax: ccsConcept = "concept"
Description: The “CCS concept” to which the AVP directly relates.
Type: String
Optionality: Optional. Used by some, though not all AVPs.
Allowed: The value is a string value, associated in the code with an enumeration. See ccsConcepts .
Notes: The AVPs are ultimately filled out from available "ccsConcepts". These represent variables available to the DCD actions library at the time of sending the message.
Example: ccsConcept = "acsProfile"
cdrTag
Syntax: cdrTag = "tag_name"
Description: The EDR tag name to amend the EDR record with, depending on the cdrOperation parameter value.
Type: String
Optionality: Optional
Allowed: Alphanumeric characters only, plus underscore.
Default: None
Notes:
  • cdrTag is optional, but if cdrOperation is specified then cdrTag must also be specified.
  • For an AVP you can just specify cdrTag, then cdrOperation will default to "replace".
  • The tag name should refer to a DCD tag, not one of the pre-defined ACS tags. Otherwise the operation will have no effect.
Example: cdrTag = "CMX_EN"
cdrOperation
Syntax: cdrOperation = "operation"
Description: The operation to perform on the cdrTag value in the EDR record.
Type: String
Optionality: Optional – only referred to if cdrTag is non-blank.
Allowed:
  • replace
  • leave
  • append

Not case sensitive, for example Replace = REPLACE = replace

Default: replace
Notes:
  • If cdrOperation is specified, cdrTag must also be specified.
  • replace – If this tag is present, all instances are removed from the EDR and then append this instance to the EDR.
  • leave – If this tag already exists, do nothing. Otherwise, append this instance to the EDR.
  • append – Regardless of existence or not of this tag, append this instance to the EDR.
Example: cdrOperation = "replace"
conditionProfileBlock
Syntax: conditionProfileBlock = block_number
Description: The profile block to use for conditional AVP filling.
Type: Integer
Optionality: Optional (when omitted no condition checking is performed).
Allowed: Any valid profile block number.
Default: None
Notes: If both the block and tag are specified, and there is no data in the location, then condition checking will fail and the AVP will not be populated.
Example: conditionProfileBlock = 17
conditionProfileTag - 1.0.4 -
94934
Syntax: conditionProfileTag = tag_number
Description: The profile block field to use for conditional AVP filling.
Type: Integer
Optionality: Optional (missing then no condition checking is performed).
Allowed: Any valid profile field number.
Default: None
Notes: If both the block and tag are specified, and there is no data in the location, then condition checking will fail and the AVP will not be populated.
Example: conditionProfileTag = 2009
conditionValue
Syntax: conditionValue = condition
Description: The value to use to determine if AVP filling is to be performed.
Type: Integer
Optionality: Optional (default used if omitted).
Allowed: Any positive integer.
Default: 1
Notes: This example populates the AVP if and only if profile block/tag contains value 14.
Example: conditionValue = 14
conversion
Syntax: conversion = [mapping]
Description:

An array of integer values, defining a mapping from the Oracle enumeration to the billing vendor's equivalent enumeration value.

The serviceProvider array parameter is optional, and it allows you to limit a conversion to a single service provider.

Type: Integer
Optionality: Mandatory
Notes:
  • It is used if the AVP type is any of the integer types (including enumeration). This mapping is performed regardless of the ccsConcept, and is the responsibility of the AVP traverser, not the ccsConcept helper functions.
  • For AVPs associated with Balance Type concepts, do not include in the conversion array any balance types that are specified in the Balance Type Mapping tab of the SMS Service Management screen. Otherwise, the conversions from both sources could be applied.
Example:
conversion = [{esg = 880vendor = 880880serviceProvider =
1}{esg = 890vendor = 890890serviceProvider = 2}]
esg
Syntax: esg = int
Description: The integer value in the conversion array that indicates which equivalent value should be used by the billing vendor.
Type: Integer
Optionality: Mandatory
Allowed:  
Default:  
Notes:

This value differs based on the AVP that uses it.

For example, see ACS Action handler for esg values defined for the Termination-Cause AVP in the configuration.

Example: esg = 3
vendor
Syntax: vendor = int
Description: The billing vendor's integer value in the conversion array that maps to the equivalent esg value.
Type: Integer
Optionality: Mandatory
Allowed:  
Default:  
Notes:

This value differs based on the AVP that uses it.

For example, the vendor values defined for the Termination-Cause AVP in the configuration are as follows:

For more information, see the table below.
Example: vendor = 6
Integer Reason Comment
1 DIAMETER_LOGOUT The user initiated a disconnect
2 DIAMETER_SERVICE_NOT_PROVIDED

This value is used when the user disconnected prior to the receipt

of the authorization answer message.

3 DIAMETER_BAD_ANSWER

This value indicates that the authorization answer received by the

access device was not processed successfully.

4 DIAMETER_ADMINISTRATIVE

The user was not granted access, or was disconnected, due to

administrative reasons, such as the receipt of a Abort-Session-Request message.

5 DIAMETER_LINK_BROKEN The communication to the user was abruptly disconnected.
6 DIAMETER_AUTH_EXPIRED The user’s access was terminated since its authorized session time has expired.
7 DIAMETER_USER_MOVED The user is receiving services from another access device.
8 DIAMETER_SESSION_TIMEOUT The user’s session has timed out, and service has been terminated.
serviceProvider
Syntax: serviceProvider = int
Description: If mentioned, the conversion is limited to the specific service provider.
Type: Integer
Optionality: Optional
Allowed:  
Default:  
Notes:  
Example: serviceProvider = 2
conversionScale
Syntax: conversionScale = scale
Description: Defines a conversion factor of esg values to calculate server values.
Type: Integer
Optionality: Optional
Allowed:
  • 0 – Applies the scale factor specified in the Balance Type Mapping tab of the SMS Service Management screen. If the Balance Type Mapping tab does not contain an applicable mapping, DCD applies a scale factor of 1. For more information, see CCS User's Guide.
  • Any non-zero integer – Applies the scale factor to all instances of the AVP in request and response messages. For example, if you set conversionScale to 100, DCD multiplies the values by 100 for all balance type AVPs.
Default: 1
Notes:
  • For request AVPs – Positive means multiply, negative means divide.
  • For response AVPs – Positive means divide, negative means multiply.

All conversion rules are applied before scaling is applied.

Example:

conversionScale = -10

This example multiplies incoming Diameter values by 10.

conversionRounding
Syntax: conversionRounding = "rounding_type"
Description: The conversion method used between internal and server numeric values.
Type: String
Optionality: Optional (default used if not set).
Allowed:
  • floor – Drop any fractions.
  • ceiling – Round up fractional parts.
  • round – Round to the nearest whole number. That is, x.5 or higher is rounded up and others are rounded down.
Default: floor
Notes:
  • If an AVP has the conversionScale parameter set, conversionRounding can also be set.
  • For GroupedUnitValue AVP types, use the conversionRounding parameter to specify the type of rounding applied after applying an exponent value.
Example: conversionRounding = "round"
excludeIf
Syntax: excludeIf = true|false
Description: DCD outgoing messages will exclude AVP values that match this rule.
Type: Boolean
Optionality: Optional.
Allowed: true, false
Default: N/A
Notes:

The AVP type should be set to "Integer32".

If includeIf is also defined then DCD logs a warning that the configuration is inconsistent. Depending on which parameter appears first in the configuration file DCD will load either excludeIf or includeIf, but not both.

Example: excludeIf = false
excludeIfMatches
Syntax: excludeIfMatches = "search_string"
Description: DCD outgoing messages will exclude AVP values that match this rule. The AVP type should be set to "UTF8String".
Type: String
Optionality: Optional
Allowed:

"search_string" : Check for the specified search string anywhere in the string.

"^search_string$" : Check the specified search string matches the whole string.

"^search_string" : Check for the specified search string at the beginning of the string.

"search_string$" : Check for the specified search string at the end of the string

Default: N/A
Notes: If includeIfMatches is also defined then DCD logs a warning that the configuration is inconsistent. Depending on which parameter appears first in the configuration file DCD will load either excludeIfMatches or includeIfMatches, but not both.
Example: excludeIfMatches = "f006$"
excludeWhenIn
Syntax: excludeWhenIn = "range|list"
Description: DCD outgoing messages will exclude AVP values that match this rule.
Type: Integer
Optionality: Optional .
Allowed:

delimited range (numbers from x to y) : "x..y"

greater than or equal to x : ">=x"

less than or equal to x : "<=x"

any of the listed numbers x, y or z (list may be any length) : "x,y,z"

a single number x : "x"

Default: N/A
Notes:

The AVP type should be set to "Integer32".

If includeWhenIn is also defined then DCD logs a warning that the configuration is inconsistent. Depending on which parameter appears first in the configuration file DCD will load either excludeWhenIn or includeWhenIn, but not both.

Example: excludeWhenIn = "1..99"
flags
Syntax: flags = number
Description: What flags to override in the AVP header (as octet value). For example, for M, V bits: flags = 192
Type: Integer
Optionality: Optional (default used if not set).
Allowed:  
Default: 0
Notes: If the vendorID parameter value is greater than zero, then V-bit will be set regardless.
Example: flags = 192
includeIf
Syntax: includeIf = true|false
Description: DCD outgoing messages will include AVP values that match this rule.
Type: Boolean
Optionality: Optional.
Allowed: true, false
Default:  
Notes:

The AVP type should be set to "Integer32".

If excludeIf is also defined then DCD logs a warning that the configuration is inconsistent. Depending on which parameter appears first in the configuration file DCD will load either excludeIf or includeIf, but not both.

Example: includeIf = true
includeIfMatches
Syntax: includeIfMatches = "search_string"
Description: DCD outgoing messages will include AVP values that match this rule.
Type: Integer
Optionality: Optional .
Allowed:

"search_string" : Check for the specified search string anywhere in the string.

"^search_string$" : Check the specified search string matches the whole string.

"^search_string" : Check for the specified search string at the beginning of the string.

"search_string$" : Check for the specified search string at the end of the string

Default: N/A
Notes:

The AVP type should be set to "UTF8String".

If excludeIfMatches is also defined then DCD logs a warning that the configuration is inconsistent. Depending on which parameter appears first in the configuration file DCD will load either excludeIfMatches or includeIfMatches, but not both.

Example: includeIfMatches = "^f003"
includeWhenIn
Syntax: includeWhenIn = "range|list"
Description: DCD outgoing messages will include AVP values that match this rule.
Type: Integer
Optionality: Optional.
Allowed:

delimited range (numbers from x to y) : "x..y"

greater than or equal to x : ">=x"

less than or equal to x : "<=x"

any of the listed numbers x, y or z (list may be any length) : "x,y,z"

a single number x : "x"

Default: N/A
Notes: If includeWhenIn is also defined, then DCD logs a warning that the configuration is inconsistent. Depending on which parameter appears first in the configuration file DCD will load either excludeWhenIn or includeWhenIn, but not both.
Example: includeWhenIn = "12,14,16,-18,20,22"
interpretBase
Syntax: interpretBase = number
Description: Defines the base to use when interpreting numbers that are stored as strings.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:
  • 0 – See notes
  • 8 – Octal
  • 10 – Decimal
  • 16 – Hexadecimal
Default: 10 (decimal)
Notes:

If the configured value is 0, strings are interpreted in the order of decimal constant, octal constant, or hexadecimal constant. Any of these may be preceded by a + or a – sign.

  • Decimal constant – Begins with a non-zero digit and consists of a sequence of decimal digits.
  • Octal constant – Begins with a 0 (zero) followed by a sequence of the digits 0 to 7.
  • Hexadecimal constant – Begins with a 0x or 0X followed by a sequence of the decimal digits and letters a (or A) to f (or F).
Example: interpretBase = 10
literal
Syntax: literal = "value"
Description: A literal value.
Type: String
Optionality: Optional
Default: empty
Notes:
  • In some cases where we use the AVP definition to create a request message, we may wish to simply specify a literal value rather than obtain the information from a ccsConcept field. In these cases we specify the value here, in string form, and it will be converted to the required type when requested from the configuration AVP object.
  • This parameter was previously "value".
Example: literal = "1"
mandatoryContents
Syntax: mandatoryContents = "avps"
Description: A simple string array, applicable to AVPs of type “Grouped” and those with no type, specifying the AVPs (by name) that must be included in this AVP
Type: String array
Optionality: Optional
Default: empty
Example:
mandatoryContents =
["Subscription-Id-Type""Subscription-Id-Data"]
maxOccurrences
Syntax: maxOccurrences = value
Description:

The number of repeating AVPs (whether a group or an individual field).

It does not actually limit how many AVPs can be processed; it limits how the AVP is physically 'unloaded' into a contiguous range of profile variables.

Type: Integer
Optionality: Optional (default used if not set).
Allowed:  
Default: 0 – The default value means that all AVP values are unloaded into the same configured profile block/tag (admittedly not very useful, but this ensures backwards compatibility).
Notes:

To unload an array of AVPs into a *series* of profile tag variables maxOccurrences is set to the number of different values to be captured.

The first will be unloaded into the profile tag configured for the AVP.

The second will be unloaded into that tag+1, and so on.

Note: When unloading a repeating group the specially-defined variable 'index' can be obtained by coding an AVP with variable="index". This takes the value of the current loop index.

Example: maxOccurrences = 10
name
Syntax: name = "name"
Description: The name of the AVP, which can be used by the code for direct retrieval, as well as logging and debug messages.
Type: String
Optionality: Mandatory
Example: name = "CC-Money"
octetLength
Syntax: octetLength = value
Description: How many bytes to use for integer quantities, if the type is "OctetString".
Type: Integer
Optionality: Optional
Allowed: Should be a number 0 through 4.
Notes: 0 is a special case meaning encode the value as an ASCII string, and determine the number of bytes from the string size. For responses the values 1-4 simply mean treat as integer encoded, and use the number of bytes given.
Example: octetLength = 0
optionalContents
Syntax: optionalContents = "avps"
Description: A simple string array, applicable to AVPs of type “Grouped” and those with no type, specifying the AVPs (by name) that may be included in this AVP
Type: String
Optionality: Optional
Default: empty
Example:
optionalContents =
["Service-Identifier""Requested-Service-Unit""Subscription-Id"]
profileBlock
Syntax: profileBlock =num
Description: The profile block
Type: Integer
Optionality: Used only if the ccsConcept field is a profile variable.
Allowed: The value given for this is a number, and must be valid for a profile block (that is, in the range 0 through 18).
Notes: This parameter is used to identify the profile block it will be stored into/retrieved from. See also the related parameters, profileTag and profileFormat.
Example: profileBlock = 9
profileFormat
Syntax: profileFormat = "format"
Description: The format of the profile.
Type: String
Optionality: Used only if the ccsConcept field is a profile variable.
Allowed:

The value given for this must be one of the valid storage formats for ACS profile fields. The allowable values for this parameter are:

  • STRING
  • NSTRING
  • LNSTRING
  • INTEGER
  • UNSIGNED64
  • RAW
  • TIME
  • BOOLEAN
  • ARRAY
Default: INTEGER
Notes: This parameter is used to identify its storage format. See also the related parameters, profileBlock and profileTag.
Example: profileFormat = "LNSTRING"
profileTag
Syntax: profileTag = num
Description: The profile tag.
Type: Integer
Optionality: Used only if the ccsConcept field is a profile variable.
Notes: This parameter is used to identify the profile tag it will be stored into/retrieved from. See also the related parameters, profileBlock and profileFormat.
Example: profileTag = 999
repeating
Syntax: repeating = true|false
Description: Allows the configuration-driven code to recognize that there may be a number of repeating instances of this AVP in its containing group, not just one.
Type: Boolean
Optionality: Mandatory
Allowed: true, false
Notes: In the building of a request, repeating AVPs are added until the getConcept call indicates no more concept data is available. In the unpacking of a response, repeating AVPs are extracted (and setConcept calls made) until the Diameter stack indicates there are no more to retrieve.
Example: repeating = true
signInversion
Syntax: signInversion = true | false
Description:

When this parameter is true it converts the value from positive to negative and vice versa for AVP types of Integer32 and Integer64. If this parameter is true for an AVP then:

  • An outbound positive DCD concept value will be converted to a negative value in the AVP.
  • An outbound negative DCD concept value will be converted to positive value in the AVP.
  • An inbound positive AVP value will be converted to a negative DCD concept value.
  • An inbound negative AVP value will be converted to a positive DCD concept value.
Type: Boolean
Optionality: Optional (default used if not set)
Allowed: true, false
Default: false
Notes:  
Example: signInversion = true
type
Syntax: type = "type"
Description: The type of AVP.
Type: String
Optionality: Optional. When defining the AVPs that make up a request message, you can list them as mandatory or optional contents in an AVP that has no other information. This means the contents should be directly placed into the request message without (for example) an intervening group.
Allowed:

If specified, this string value must be the name of any previously defined AVP in the configuration, or one of the following base types that are described in the Diameter RFC 3588 specification:

  • OctetString
  • Integer32
  • Integer64
  • Unsigned32
  • Unsigned64
  • Grouped
  • GroupedUnitValue
  • Address
  • Time
  • UTF8String
  • DiameterIdentity
  • DiameterURI
  • Enumerated

Note: Float32 and Float64, although defined in RFC 3588, are not supported because CCS does not use floating point values.

Notes: Specify the name of a previously defined AVP when you want to relate two CCS concept fields to the same base type without having to repeat the full definition of that base type. All the attributes of the base type are inherited except the base type name, repeating attribute and ccsConcept value.
Example: type = "Grouped"
vendorId
Syntax: vendorId = ID
Description: A number that identifies the vendor ID of the corresponding Diameter AVP.
Type: Integer
Optionality: Optional
Default: 0
Notes: It will be used whenever we have to insert this AVP into a request message.
Example: vendorId = 0

Example Configuration for an AVP Type of GroupedUnitValue

This section shows how DCD converts balance-related AVPs with a type of GroupedUnitValue. For more information, see type .

Example Configuration for Request Messages:

The following example configuration specifies to perform the following for outgoing request messages with an AVP type of GroupedUnitValue:

  • Divide the value by 100
  • Apply sign inversion
{ avpCode = 445 name = "Unit-Value-Topup" type =
"GroupedUnitValue" ccsConcept = "voucherInfoValue" conversionScale
= -100 signInversion = true mandatoryContents = [
"Value-Digits-Topup" ] optionalContents = [ "Exponent-Outgoing" ] }
{ avpCode = 447 name = "Value-Digits-Topup" type = "Integer64" } {
avpCode = 429 name = "Exponent-Outgoing" type = "Integer32" literal
= "1" }

For example, if a voucher top-up in Convergent Charging Controller has a value of -2000, DCD converts it to 20 after applying scaling and sign inversion. In this case, the GroupedUnitValue AVP in the outgoing request message to the third-party application would have Value-Digits set to 2 and Exponent set to 1.

Note:

An exponent is always sent for GroupedUnitValue AVPs. If the literal parameter is not defined, it defaults to 0.

Example Configuration for Response Messages:

The following example configuration specifies to apply sign inversion to incoming response messages with an AVP type of GroupedUnitValue:

{ avpCode = 252 name = "ORA-Credit-Floor" vendorId = 3512
type = "GroupedUnitValue" ccsConcept = "walletInfoBalanceMaxCredit"
signInversion = true mandatoryContents = [
"Value-Digits-Credit-Floor" ] optionalContents = [
"Exponent-Incoming" ] } { avpCode = 447 name =
"Value-Digits-Credit-Floor" type = "Integer64" } { avpCode = 429
name = "Exponent-Incoming" type = "Integer32" }

For example, if an incoming response message from a third-party application contains a GroupedUnitValue AVP with Value-Digits set to 5 and Exponent set to 3, DCD converts the credit floor value to -5000 after applying sign inversion.

Note:

If the exponent is not supplied in the incoming answer message, DCD applies an exponent of 0 to meet RFC 4006 guidelines.

Example cdrTag/Operation Configuration

The cdrTag and cdrOperation parameters can be used by any AVP/ccsConcepts pairing.

The following is just an example of how to configure these parameters.

{# This 'AVP' simply defines the list of AVPs for a direct
named event reservation.# Give this AVP a position in the
configuration 'tree'. This is just# a label to allow representation
of the tree to the actions library.name =
"DirectNamedEventRequest"# Define the list of AVPs (by name) for
this node. Note that the AVPs are at the# sibling level for this
node if there are no type or avpCode parameters for this node.# An
error will occur if mandatory contents are not available, but
non-present optional# contents are silently
ignored.mandatoryContents =
["Service-Identifier""ChargingMaxEventClassAndEventName"]optionalContents
= []}{avpCode = 13000name = "ChargingMaxEventClassAndEventName"type
= "Grouped"mandatoryContents =
["CMX-eventClass""CMX-eventName""DIA-Service-Identifier"]optionalContents
= []}{avpCode = 13001name = "CMX-eventClass"ccsConcept =
"eventClass"type = "UTF8String"cdrTag = "CMX_EC"cdrOperation =
"append"}{avpCode = 13002name = "CMX-eventName"ccsConcept =
"eventName"type = "UTF8String"cdrTag = "CMX_EN"cdrOperation =
"leave"}{# This 'AVP' represents the RFC 4006
Service-Identifier.avpCode = 439name = "DIA-Service-Identifier"type
= "Unsigned32"ccsConcept = "eventType"cdrTag = "DIA_SI"cdrOperation
= "replace"}...

ContextCopy Parameters

The ContextCopy section defines the profiles in which DCD call context data can be copied during call time. This is normally for the purposes of control plan branching.

Example ContextCopy Section

Here is an example of the ContextCopy section.

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"}]contextItem
Syntax: contextItem = "name"
Description: The name of the DCD context item from the allowed list.
Type: String
Optionality: Optional
Allowed:
  • "scpActionSupervise"
  • "scpActionDoNotSupervise"
  • "scpActionRelease"
  • "scpActionSendMessage"
  • "scpActionPlayAnnouncement"
  • "scpActionSuperviseWithoutControlling"
  • "callState"
  • "sendCount"
  • "preCallAnnouncementId"
  • "preCallLowBalance"
Default:  
Notes: All the supported context items are listed in the example.
Example: contextItem = "scpActionSupervise"
profileBlock
Syntax: profileBlock = val
Description: The profile block to use.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:  
Default:  
Notes: Examples all use 17 (temporary storage)
Example: profileBlock = 17
profileFormat
Syntax: profileFormat = "format"
Description: The profile tag format
Type: String
Optionality: Optional (default used if not set).
Allowed:

"INTEGER"

"STRING"

"TIME"

Default:  
Notes:  
Example: profileFormat = "INTEGER"
profileTag
Syntax: profileTag = decival
Description: The profile tag in which to store data.
Type: Integer
Optionality: Optional (default used if not set).
Allowed:  
Default:  
Notes:

Example tag values are all in the DCD range (0x0061nnnn), but will need to be configured in ACS and Prepaid Charging before they are available for use.

In the example, 6356992 is value of Hex 0x00610000

Example: profileTag = 6356992

TimeIn and TimeOut

Use TimeIn and TimeOut to copy a timestamp at the beginning of a call (TimeIn) and to record elapsed time during a call (TimeOut). If present, the timestamps are stored in the configured profile fields.

  • TimeIn: The time the CCA was received by the SLC from the VWS.
  • TimeOut: The time the CCR was sent from the SLC to the VWS.

These parameters are optional. If these parameters are omitted, no timestamps are recorded.

Example tag values are all in the DCD range (0x0061nnnn), but will need to be configured in ACS and Prepaid Charging before they are available for use.

The parameters are defined in the ContextCopy Parameters section.

Example TimeIn and TimeOut

Here are the example parameters.

TimeIn = {profileBlock = 17profileTag = 6357002 # Hex
0x006100a, continuing from example ContextCopy valuesprofileFormat
= "TIME"}TimeOut = {profileBlock = 17 profileTag = 6357003 # Hex
0x006100bprofileFormat = "TIME"}

Routes

The Routes section is used to specify the routing configuration for the BeClient, that is, how to select a peer of the realm.

Routes Parameters

Here is an example routes section of the DIAMETER section of the eserv.config file.

routes = [{realm = "FirstRealm" host =
"host1.realm1.oracle.com" priority = 1round_robin = 0direct =
true}]
direct
Syntax: direct = true|false
Description: Whether this is a direct server connection, or if a proxy/agent is used.
Type: Boolean
Optionality: Optional
Allowed: true, false
Default: true
Notes: May be specified for each host. See HostSpecificData Parameters .
Example: direct = true
host
Syntax: host = "permitted_origin_host"
Description: The host name of the next-hop as configured in DCD.Peers.permittedOriginHosts for the relevant peer.
Type: String
Optionality: Mandatory
Allowed:

This is the permittedOriginHosts value of the peer.

May be specified for each host. See HostSpecificData Parameters .

Example: host = "host1.realm1.oracle.com"
priority
Syntax: priority = priority
Description: The priority of the route.
Type: Integer
Optionality: Optional
Notes:

Only those routes with the lowest priority are used.

May be specified for each host. See HostSpecificData Parameters .

Example: priority = 1
realm
Syntax: realm = name
Description: The Realm identity.
Type: String
Optionality: Mandatory
Allowed:

As configured in the Domain tab of the Service Management screen. Refer to CCS User's Guide for details.

May be specified for each host. See HostSpecificData Parameters .

Example: realm = "FirstRealm"
round_robin
Syntax: round_robin = weight
Description: The weight for round_robin selection.
Type: Integer
Optionality: Optional
Default: 0
Notes:

Zero indicates a failover type selection. See routing for details.

May be specified for each host. See HostSpecificData Parameters .

Example: round_robin = 0

HostSpecificData

The following is an optional section, with members defined according to hostname. The purpose is to represent data specific to particular hosts. This permits a common configuration file to be deployed to multiple machines.

Settings here should override global settings, for the specified host only. See DCD Parameters and Routes Parameters for global settings of these parameters.

HostSpecificData Parameters

Here is an example of the HostSpecificData parameters.

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}]}]
direct
Syntax: direct = true|false
Description: Whether this is a direct server connection, or if a proxy/agent is used.
Type: Boolean
Optionality: Optional
Allowed: true, false
Default: true
Notes: See Routes Parameters for the global setting.
Example: direct = true
host
Syntax: host = "name"
Description: This is the host name of the next-hop.
Type: String
Optionality: Mandatory
Allowed: This is the permittedOriginHosts value of the peer.
Notes: See Routes Parameters for the global setting.
Example: host = "host1.realm1.oracle.com"
name
Syntax: name = hostname
Description: The identifier correlating to machine hostname (SLC node).
Type: String
Optionality: Mandatory if the optional HostSpecificData section is defined.
Allowed:  
Default:  
Notes:  
Example: name = "ocpc.oracle.com"
Origin-Host
Syntax: Origin-Host = "diameterId"
Description: The Diameter AVP Origin-Host - fully qualified domain name.
Type: String
Optionality: Optional (default used if not set).
Allowed:  
Default:  
Notes: See DCD Parameters for the global setting.
Example: Origin-Host = "ocpc.oracle.com"
Origin-Realm
Syntax: Origin-Realm = "diameterId"
Description: The Diameter AVP Origin-Realm.
Type: String
Optionality: Optional (default used if not set).
Allowed:  
Default:  
Notes: See DCD Parameters for the global setting.
Example: Origin-Realm = "ocpc.oracle.com"
priority
Syntax: priority = priority
Description: This is the priority of the route.
Type: Integer
Optionality: Optional
Notes:

Only those routes with the lowest priority are used.

See Routes Parameters for the global setting.

Example: priority = 1
realm
Syntax: realm = "realmname"
Description: The realm name, as configured in the Prepaid Charging screens.
Type: String
Optionality: Mandatory
Allowed:  
Default:  
Notes: See Routes Parameters for the global setting.
Example: realm = "myDomainA"
round_robin
Syntax: round_robin = weight
Description: This is the weight for round_robin selection.
Type: Integer
Optionality: Optional
Default: 0
Notes:

Zero indicates a failover type selection. See routing for details.

See Routes Parameters for the global setting.

Example: round_robin = 0

NamedEventTypes

The NamedEventTypes section is used to define a mapping from the Prepaid Charging descriptor of a named event (the eventClass and eventName) to a single integer (eventType) for availability to the Service-Identifier AVP.

NamedEventTypes Parameters

Here is an example of the NamedEventTypes section.

NamedEventTypes = [{eventClass = "abc"eventName =
"def"eventType = 123isDebit = true}{eventClass = "ghi"eventName =
"jkl"eventType = 456}]
eventClass
Syntax: eventClass = "class"
Description: The event class.
Type: String
Optionality: Optional
Allowed: Defined on the Named Event tab on the Rating Management screen. Refer to CCS User's Guide for details.
Example: eventClass = "abc"
eventName
Syntax: eventName = "name"
Description: The event name.
Type: String
Optionality: Optional
Allowed: Defined on the Named Event tab on the Rating Management screen. Refer to CCS User's Guide for details.
Example: eventClass = "def"
eventType
Syntax: eventType = type
Description: The event type for availability to the Service-Identifier AVP.
Type: integer
Optionality: Optional
Allowed: Mapping to agreed event type with server vendor.
Example: eventType = 123
isDebit
Syntax: isDebit = true|false
Description: Whether this named event represents a debit or credit for the subscriber.
Type: Boolean
Optionality: Optional
Allowed: true, false
Default: true
Example: isDebit = true