This feature reads charging settings from profile configuration and the incoming request, and sets session state accordingly.
Details
Feature name |
DetermineCharging |
---|---|
Applicable contexts |
SIP service |
SAS Support |
N/A |
Prerequisite features |
None |
Session State inputs and outputs
Inputs
Name | Type | Purpose |
---|---|---|
SentinelSelectionKey |
SentinelSelectionKey |
Used to select a configuration profile to load. |
CallType |
CallType |
Used to identify Service-Identifier and Rating-Group AVP values for session. |
Outputs
Name | Type | Purpose |
---|---|---|
DisableCharging |
boolean |
Flag indicating whether charging has been disabled for the session. |
InterimCdrsEnabled |
boolean |
Flag controlling whether interim CDRs will be created for the session. |
SessionCdrsEnabled |
boolean |
Flag controlling whether a session CDR will be created at the end of the session. |
ContinueCallOnOCSFailure |
boolean |
Flag controlling whether the session is permitted to continue if there is an OCS failure. |
MonitorCallOnly |
boolean |
Flag controlling whether online charging will be skipped. |
ServiceIdentifier |
Long |
The value of the Service-Identifier AVP to use according to call type and config value. |
RatingGroup |
Long |
The value of the Rating-Group AVP to use according to call type and if configured, otherwise will be null. |
RequestUnitsSeconds |
Long |
The value of the Requested-Service-Unit AVP in Credit Control Requests if configured, otherwise will be null. |
DiameterServiceSpecificInfoConfigListConfig |
List<DiameterServiceSpecificInfoConfig> |
A list of the DiameterServiceSpecificInfoConfig objects or null if not configured. |
OCSId |
String |
The ID of the Diameter OCS server to use. |
Configuration
This feature uses profile configuration to determine how each session state field should be set.
Configuration is kept in two profile tables: DetermineChargingConfigProfileTable
and DiameterServiceSpecificInfoProfileTable
The profile table called DetermineChargingConfigProfileTable
is made up of profiles with the following fields.
Each profile is scoped by the Sentinel Selection Key.
Name | Type | Description |
---|---|---|
DisableCharging |
boolean |
If true, online charging will be disabled for sessions using this profile. |
InterimCdrsEnabled |
boolean |
If true, interim CDRs will be created while sessions using this profile are in progress. |
SessionCdrsEnabled |
boolean |
If true, session CDRs will be created at the end of sessions using this profile. |
ContinueCallOnOCSFailure |
boolean |
If true, sessions using this profile will be allowed to continue in the event of OCS failure. |
ServiceIdForMOC |
Long |
If set, overrides the default value of the Service-Identifier for AVP ('1') for Mobile Originating calls in Credit Control Requests and CDRs. |
ServiceIdForMTC |
Long |
If set, overrides the default value of the Service-Identifier for AVP ('2') for Mobile Terminating calls in Credit Control Requests and CDRs. |
ServiceIdForMFC |
Long |
If set, overrides the default value of the Service-Identifier for AVP ('3') for Mobile Forwarded calls in Credit Control Requests and CDRs. |
ServiceIdForNIC |
Long |
If set, overrides the default value of the Service-Identifier for AVP ('4') for Network Initiated calls in Credit Control Requests and CDRs. |
RatingGroupForMOC |
Long |
If set, the value of the Rating-Group AVP for Mobile Originating calls in Credit Control Requests and CDRs. |
RatingGroupForMTC |
Long |
If set, the value of the Rating-Group AVP for Mobile Terminating calls in Credit Control Requests and CDRs. |
RatingGroupForMFC |
Long |
If set, the value of the Rating-Group AVP for Mobile Forwarded calls in Credit Control Requests and CDRs. |
RatingGroupForNIC |
Long |
If set, the value of the Rating-Group AVP for Network Initiated calls in Credit Control Requests and CDRs. |
RoRequestUnitsSeconds |
Long |
If set, overrides the default value of the Requested-Service-Unit AVP ('60') in Credit Control Requests. |
The profile table called DiameterServiceSpecificInfoProfileTable
is made up with the following fields.
Each profile is not scoped by the Sentinel Selection Key and therefore will apply to all sessions.
Name | Type | Description |
---|---|---|
ServiceSpecificTypeValue |
Long |
A positive number that identifies the type of data being provided. |
ServiceSpecificDataSessionStateFieldName |
String |
A string containing either a name of the session state field, or a pipe (|) separated list of names of multiple session state fields to map into the Service-Specific-Info AVP value. When multiple fields are specified, the first non-empty field value will be used. |
Feature Statistics
DetermineCharging
statistics are tracked by the sentinel.sip
SBB and can be found under the following parameter set:
SLEE-Usage → sentinel.sip service ID → sentinel.sip SBB ID → feature.DetermineCharging
Name | Type | Description |
---|---|---|
|
Counter |
Incremented when the feature is triggered. |
|
Counter |
Incremented when the feature fails to start. |
|
Counter |
Incremented when the feature fails while executing. |
|
Counter |
Incremented when the feature issues a warning. |
|
Counter |
Incremented when the feature times out during execution. |
|
Counter |
Incremented when the feature disables charging. |
|
Counter |
Incremented when the feature retrieves the ECF address from the P-Charging-Function-Addresses header. |
|
Counter |
Incremented when the feature fails to parse the P-Charging-Function-Addresses header. |
Behaviour
This feature determines charging configuration for the session.
It does this from two main sources:
-
Most configuration is loaded from profile tables.
-
The OCS server to use is determined from the incoming SIP request.
SIP Request OCS Selection
The feature will attempt to identify the OCS to use from the P-Charging-Function-Addresses
header.
If the header has an ECF address, it will be used to set the OCSId
session state output field.
The OCSId
field is used as described here: OCS Destination Configuration.
Profile Data
When triggered this feature will attempt to retrieve a profile from the DetermineChargingConfigProfileTable
using the current Sentinel Selection Key.
If a profile is found:
-
DisableCharging
,InterimCdrsEnabled
,SessionCdrsEnabled
,ContinueCallOnOCSFailure
andRoRequestUnitsSeconds
values are mapped directly from their profile fields to their equivalent session output fields. -
Using the
CallType
identified by the Determine Call Type Feature, theServiceIdentifier
andRatingGroup
session output field values will be set using the corresponding configuration value if set.
If the feature fails to find a DetermineChargingConfigProfileTable
profile, their session output fields will not be populated.
The feature will attempt to retrieve profiles from the DiameterServiceSpecificInfoProfileTable
.
For each profile found, a DiameterServiceSpecificInfoConfig
object will be created using the configured ServiceSpecificTypeValue
and ServiceSpecificDataSessionStateFieldName
values.
All DiameterServiceSpecificInfoConfig
objects are collected into a list and put into the DiameterServiceSpecificInfoConfigList
session output field.
The effect of each field is outlined below.
Charging Enabled/Disabled
The DisableCharging
field controls whether online charging should be enabled for the session.
When it is set to true
the following behaviour is executed:
-
All reservation charging instances in the Charging Manager will be finalised.
-
The
MonitorCallOnly
session output field will be set totrue
.
When the MonitorCallOnly
session state field is true, feature execution scripts will skip over online charging features.
Interim CDRs
The InterimCdrsEnabled
field controls whether interim CDRs will be written for a session.
This is done by checking the value of the field in feature executions scripts, and only executing the Interim CDR Feature if it is true.
Session CDRs
The SessionCdrsEnabled
field controls whether a session CDR will be written when a session ends.
This is done by checking the value of the field in feature executions scripts, and only executing the appropriate AVP CDR feature if it is true.
In Sentinel Express deployments this affects execution of the AVP CDR Feature. In Sentinel VoLTE deployments this affects execution of the VoLTE SIP AVP CDR Feature.
Continue Call On OCS Failure
The ContinueCallOnOCSFailure
field determines system behaviour when there is a problem communicating with the OCS.
When it is set to true
the call will be allowed to continue in the event of an OCS failure, however:
-
No further online charging will occur for the session, even if communication with the OCS is re-established.
-
Rf and CDRs will continue to track the session.
-
OCS failure for a conference call will still result in the session ending (except for mid-session failures).
Service-Identifier AVP and Rating-Group AVPs
If set, the ServiceIdentifier
and RatingGroup
fields will be used for populating Credit Control Requests and CDRs.
If not set, Sentinel will apply the default Service-Identifier
value according to session’s callType
and will not populate the Rating-Group AVP in Credit Control Requests and CDRs.
Ro Request Units Seconds
The RoRequestUnitsSeconds
field contains the value passed in the Requested-Service-Unit AVP (60) in Credit Control Requests. If the OCS returns a value for
the Granted-Service-Units AVP (in a Credit Control Answer) greater than '60', this field can be used to ensure that subsequent Credit Control Requests for the
call are not sent unexpectedly early.
DiameterServiceSpecificInfoConfigList
The DiameterServiceSpecificInfoConfigList
is used by the mapper responsible for generating Diameter Credit Control Requests to populate Service-Specific-Info AVPs in the requests.
For each DiameterServiceSpecificInfoConfig
object in the list, the mapper will retrieve a session state field referenced in the ServiceSpecificDataSessionStateFieldNames
.
If a value is found in that field, a Service-Specific-Info AVP with the type value specified in the ServiceSpecificTypeValue
field, and the found value will be added to the request.
If multiple fields are specified in the ServiceSpecificDataSessionStateFieldNames
, the first non-empty field value will be used.