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 IM-SSF should send charging requests to.
The OC-Replication-Information
header contains instructions on how the IM-SSF should handle session tracking and replication.
The OC-VLR-Number
header contains the VLR number of the subscriber.
The OC-MCC
and OC-MNC
headers contain the MCC and MNC of the subscriber. These headers are optional and only injected if CapChargingConfigProfile.GenerateCellGlobalIdWithMccMnc is set to true.
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.
It also reads the RefreshPeriod
in the SessionRefresh configuration profile table to determine the refresh period to include on the OC-Replication-Information
header when replication is enabled.
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. |
GenerateCellGlobalIdWithMccMnc |
boolean |
false |
When true, the feature will add the |
UnknownMccMnc |
String |
null |
The MCC to use when the subscriber’s MCC is unknown (only in conjunction with |
UnknownMnc |
String |
null |
The MNC to use when the subscriber’s MNC is unknown (only in conjunction with |
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 |
SessionUACLegReplicationTrigger |
Enum |
Used to determine if replication should be indicated as enabled on the |
SessionUASLegReplicationTrigger |
Enum |
Used to determine if replication should be indicated as enabled on 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=4.1].SbbID[name=sentinel.volte.sip,vendor=OpenCloud,version=4.1].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 |
SetOCReplicationInformation |
Counter |
Incremented when an |
SetOCVLRNumber |
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.
The feature sets the OC-Replication-Information
as described below in the Replication Information section.
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. Additionally, in the PS case, the feature sets the OC-VLR-Number
header to the VLR Number retrieved by FetchMSRN.
The feature sets the OC-IM-TDP
header to the value stored in session state by the FetchIMCSI
feature.
The feature sets the OC-Replication-Information
as described below in the Replication Information section.
Generating Charging GTs
The feature uses the CAP Charging Component to generate Charging GTs based on location data.
Replication Information
The feature includes an OC-Replication-Information
header on the request towards the IM-SSF which indicates whether replication behaviour is required.
The header value is determined based on the values of the SessionUASLegReplicationTrigger
and SessionUACLegReplicationTrigger
session input fields.
If either of the fields indicated DISABLED
then the the header value will be set to disabled
, otherwise it will be set ot enabled
.
When the header value is set to enabled
, a refreshPeriod
parameter will be added as well.
This parameter is used to determine the TTL value the IM-SSF should use for session ownership records when doing session tracking.
It is set equal to the value of the RefreshPeriod
field in the SessionRefresh configuration profile table.