The CapLocationHeaders feature adds proprietary SIP headers to outbound INVITE requests to allow CAP charging of the session.
The OC-Charging-GT
header contains the location of the subscriber to allow roaming to be correctly charged.
The OC-IM-TDP
header contains the location of the SCP that IMSSF should send charging requests to.
Feature cheat sheet
Feature Script Name |
CapLocationHeaders |
---|---|
MMTel or SCC |
Both |
Call-Type |
Orig or Term |
Session Plan |
mmtel-orig, scc-tads-only |
Execution Points |
SipAccess_SubscriberCheck |
Network Operator Config |
Yes |
Subscriber Config |
No |
POJO or SBB |
POJO |
Feature FSMs |
None |
Feature Parameters |
None |
SAS Support |
Yes |
RA Entity Links |
None |
Network Operator Data
The CapLocationHeaders feature depends on configuration in the CapChargingConfigProfileTable
to specify how to generate the OC-Charging-GT
header.
CapChargingConfigProfileTable
Configuration is stored on a profile table called CapChargingConfigProfileTable
.
Data is scoped according to a Sentinel selection key.
Attribute Name | Type | Default | Description |
---|---|---|---|
ChargingGTFormatString |
String |
null |
The format template to use when creating Charging GTs. It must be a digit string except for tokens ('{iso}', '{mcc}', '{mnc}) which are substituted in. |
UnknownLocationChargingGT |
String |
null |
The Charging GT to use when one could not be generated because the user’s location could not be determined. |
OnlyChargeTerminatingCallsIfInternationalRoaming |
boolean |
false |
When true, terminating calls will only be charged if the served user is roaming outside of their home country. |
Session Input Variables
Variable name | Type | Comments |
---|---|---|
ChargeMode |
Enum |
The feature will only run if the charge mode is |
SentinelSelectionKey |
SentinelSelectionKey |
Affects which profiles are loaded from each configuration table. |
CallType |
Enum |
Affects whether CAP headers are added and what values are used for them. |
RoamingStatus |
Enum |
If the call is terminating and not roaming, no headers are added. |
VLRNumber |
AddressString |
If the call is CS terminating then the VLRNumber is used for the |
VMSCAddress |
AddressString |
If the call is CS terminating and there is no VLRNumber available then the VMSCAddress is used for the |
OcImTdpHeader |
String |
The value to use for the |
IsoCountryCode |
String |
The ISO country code that the subscriber is registered with. It is used for formatting the |
PaniMccMncs |
List<MccMnc> |
The MCCs and MNCs that the subscriber is registered with. They are used for formatting the |
Statistics
CapLocationHeaders statistics are tracked by the sentinel.volte.sip SBB
and can be found under the following parameter set in REM:
SLEE-Usage → sentinel.volte.sip service → sentinel.volte.sip SBB → feature → CapLocationHeaders
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.volte.sip,vendor=OpenCloud,version=2.9.0].SbbID[name=sentinel.volte.sip,vendor=OpenCloud,version=2.9.0].feature.CapLocationHeaders"
Statistic |
Type |
Description |
Started |
Counter |
Incremented when the feature is invoked. |
FailedToStart |
Counter |
Incremented when Sentinel VoLTE encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning. |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel VoLTE aborts execution. |
CapLocationHeadersNotRequired |
Counter |
Incremented when the feature determines that no CAP location headers need to be added. |
UsedVlrNumber |
Counter |
Incremented when the VLR number is used for the |
UsedVmscNumber |
Counter |
Incremented when the VMSC address is used for the |
NoVlrOrVmscNumberFound |
Counter |
Incremented when no VLR number and no VMSC address could be found. |
UsedGeneratedChargingGT |
Counter |
Incremented when a generated Charging GT is used for the |
UsedUnknownLocationChargingGT |
Counter |
Incremented when the unknown location Charging GT is used for the |
SetOCIMTDP |
Counter |
Incremented when an |
SetOCChargingGT |
Counter |
Incremented when an |
Installation
CapLocationHeaders is a GSM only feature and as such will only be deployed if GSM mode is selected in the installer.
Behaviour
The behaviour varies depending on whether the call is terminating or not.
Originating Behaviour
The feature attempts to generate a Charging GT using the ChargingGTFormatString
and sets the OC-Charging-GT
with this. If this fails, the feature uses the UnknownLocationChargingGT
for the OC-Charging-GT
header.
The feature sets the OC-IM-TDP
header to the value stored in session state by the FetchIMCSI
feature.
Terminating Behaviour
If the subscriber is not roaming the feature will check the OnlyChargeTerminatingCallsIfInternationalRoaming
configuration value to determine whether it should do anything.
If the call is forked then the following occurs for each outgoing forked leg.
If the outgoing leg is CS then the feature attempts to set the OC-Charging-GT
to the VLR Number retrieved by FetchMSRN. If there is no VLR Number in session state, the feature attempts to set the OC-Charging-GT
to the VMSC address. If that is not present in session state either then the feature returns.
If the outgoing leg is PS then the feature attempts to generate a Charging GT using the ChargingGTFormatString
and sets the OC-Charging-GT
with this. If this fails, the feature uses the UnknownLocationChargingGT
for the OC-Charging-GT
header.
The feature sets the OC-IM-TDP
header to the value stored in session state by the FetchIMCSI
feature.
Generating Charging GTs
The feature uses the CAP Charging Component to generate Charging GTs based on location data.