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.
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.
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 host1Note:
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: |
|
| 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: |
|
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: |
|
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: |
|
| 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
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 =
300statsCollection = 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: |
|
| 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: |
|
| 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: | |
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: |
|
| Default: | true |
| Notes: | Counts are collective across all peers and not separated on a per peer basis. |
| Example: | collectiveNotice = true
|
PerPeerNotice
| Syntax: |
PerPeerNotice =
|
| 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:
See example for list of request types. |
| Default: | All values default to true (statistic enabled). |
| Notes: | |
| Example: |
|
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: | |
| Notes: |
When
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: |
|
| Example: | Vendor-Id = 16247
|
Vendor-Specific-Application-Id
| Syntax: | |
| 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: | |
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: |
|
| 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:
|
| 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: |
|
| 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:
|
| 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: |
|
| 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=
|
| 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: |
|
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: |
|
| 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
|
| 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 The |
| Example: | releaseOnLowCredit = false
|
routing
| Syntax: |
routing = "name"
|
| Description: | The algorithm to use when picking domains within the domain type. |
| Type: | String |
| Optionality: | Optional |
| Allowed: |
|
| 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
forceWalletReloadparameter 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: |
|
| 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 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: |
|
| 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: |
Not case sensitive, for example Replace = REPLACE = replace |
| Default: | replace |
| Notes: |
|
| 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 |
| Type: | Integer |
| Optionality: | Mandatory |
| Notes: |
|
| Example: | |
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 |
| 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 |
| 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: |
|
| Default: | 1 |
| Notes: |
All conversion rules are applied before scaling is applied. |
| Example: |
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: |
|
| Default: | floor |
| Notes: |
|
| 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 If |
| 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 If |
| 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 If |
| 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 If |
| 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: |
|
| 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.
|
| Example: | interpretBase = 10
|
literal
| Syntax: |
literal = "value" |
| Description: | A literal value. |
| Type: | String |
| Optionality: | Optional |
| Default: | empty |
| Notes: |
|
| 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: | |
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 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: | |
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:
|
| 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:
|
| 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:
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: |
|
| 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
|