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 the 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 OC-MCC and OC-MNC headers to the request. Note that if UseDetailedLocationInfo is true this will be ignored and the headers will not be set.

UnknownMcc

String

null

The MCC to use when the subscriber’s MCC is unknown (only in conjunction with GenerateCellGlobalIdWithMccMnc).

UnknownMnc

String

null

The MNC to use when the subscriber’s MNC is unknown (only in conjunction with GenerateCellGlobalIdWithMccMnc).

UseDetailedLocationInfo

boolean

false

When true, the feature will add an OC-Location-Information with detailed area and cell identity information (when available).

ImsiSources

ImsiSource[]

GENERATE

A list of potential sources of the subscriber’s IMSI which will be included in an OC-IMSI header. See below for possible values.

Session Input Variables

Variable name Type Comments

ChargeMode

Enum

The feature will only run if the charge mode is CAP.

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 OC-Charging-GT. Otherwise, the VLRNumber is used for the OC-VLR-Number header.

VMSCAddress

AddressString

If the call is CS terminating and there is no VLRNumber available then the VMSCAddress is used for the OC-Charging-GT.

OcImTdpHeader

String

The value to use for the OC-IM-TDP header.

IsoCountryCode

String

The ISO country code that the subscriber is registered with. It is used for formatting the OC-Charging-GT header.

PaniMccsMncs

List<MccMnc>

The MCCs and MNCs that the subscriber is registered with. Used when populating the OC-Charging-GT, OC-MCC and OC-MNC headers.

SessionUACLegReplicationTrigger

Enum

Used to determine if replication should be indicated as enabled on the OC-Replication-Information header.

SessionUASLegReplicationTrigger

Enum

Used to determine if replication should be indicated as enabled on the OC-Replication-Information header.

DiscoveredAccessNetworkInformation

String

Used as a potential source for the value of the OC-Location-Information header when UseDetailedLocationInfo is enabled.

PaniLocations

List<LocationID>

Used as a potential source for the value of the OC-Location-Information header when UseDetailedLocationInfo is enabled.

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 OC-Charging-GT header.

UsedVmscNumber

Counter

Incremented when the VMSC address is used for the OC-Charging-GT header.

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 OC-Charging-GT header.

UsedUnknownLocationChargingGT

Counter

Incremented when the unknown location Charging GT is used for the OC-Charging-GT header.

SetOCIMTDP

Counter

Incremented when an OC-IM-TDP header is set on an outgoing request.

SetOCChargingGT

Counter

Incremented when an OC-Charging-GT header is set on an outgoing request.

SetOCReplicationInformation

Counter

Incremented when an OC-Replication-Information header is set on an outgoing request.

SetOCVLRNumber

Counter

Incremented when an OC-VLR-Number header is set on an outgoing request.

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, OC-Location-Information, and OC-IMSI headers as described below in the Other Headers 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 header will not be set.

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.

OC-Roaming-Status Header

The feature reads the proprietary OC-Roaming-Status header from the inbound INVITE on the calling party leg as a potential fallback source for the following data when it is not otherwise available in session state:

  • VLR Number

  • MSC Number

  • MCC

  • MNC

Other Populated Headers

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 indicates DISABLED then the header value will be set to disabled, otherwise it will be set to 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.

IMSI

The feature will include an OC-IMSI header on the request towards the IM-SSF if it is able to find an IMSI for the subscriber from one of the configured sources.

Sources are set in the ImsiSources config field, which has a list of any of the following, in order of most to least preferred source:

Config Value Description
IMPI

IMSI is derived from the user-part of the subscriber’s IMS private identity (IMPI) obtained from third-party registration data.

MAP_SRI

The IMSI is extracted from an SRI MAP response from the HLR. Note that configuring this will not trigger an SRI request on its own. The FetchMSRN feature can be used to generate the request.

COMPANION_DEVICE_PROVISIONING

The IMSI is obtained directly from data provisioned for a companion device in the Metaswitch-TAS-Services transparent data document. This only applies on terminating routes to a companion device.

GENERATE

This triggers a special instruction for the IM-SSF to generate a synthetic IMSI from the MCC, MNC, and MSISDN for the subscriber. This is the default behaviour and will always succeed, so it must be the last option when included in the config field list.

None of the above sources (except GENERATE) are guaranteed to have a usable IMSI value for every call. If the feature is unable to find an IMSI from any of the configured sources, the ultimate result is that no IMSI will be included in the IDP towards the charging SCP.

Location Information

If the UseDetailedLocationInfo field is set to true, the feature will attempt to include an OC-Location-Information header with the most detailed location information available. The location information will include some combination of the MCC, MNC, area ID, and/or a cell ID, with the specifics of the area and cell IDs depending on the access network technology used.

There are many possible sources of this information:

  • Access network information derived from a P-Access-Network-Info, P-Cellular-Network-Info, or Cellular-Network-Info on the inbound request, or the third-party registration data. This is obtained by the ExtractNetworkInfo feature. This is the preferred source for originating calls, and for terminating calls towards the PS network.

  • Access network information derived from the OC-Term-P-Access-Network-Info header, which is a custom header the upstream Sentinel instances can include on the inbound request. This is the preferred source for terminating calls towards the CS network. This header can be populated by the SCCCamelToIMSReOriginationSIP and DetermineRoamingFromHlr features.

  • Location information provided directly to the feature through the DiscoveredAccessNetworkInformation session input field. This field may be populated by the DetermineRoamingFromHlr feature when running on the same Sentinel instance as this feature.

When this header is present, the IM-SSF will attempt to encode the information into the appropriate location information field in the IDP sent to the charging SCP.

Previous page Next page
Sentinel VoLTE Version 4.1