DetermineRoamingFromHlr is responsible for reading subscriber location data from the HLR and writing it into Sentinel session state variable fields.

The data it reads from the HLR is accessed through the AnyTimeInterrogation MAP operation. The Application Context used is anyTimeInfoEnquiryContext_v3_ac

Feature cheat sheet

B2BUA Instance SAS Support Originating / Terminating Point(s) in Session Plan Network Operator Data Subscriber Data Stateful or Stateless POJO Feature or SBB Feature Other notes

MMTel

Yes

Originating, Forwarding, and Terminating

SipAccess_SessionCheck, and SipAccess_PartyResponse

Yes

Yes

Stateless

POJO

Prerequisite features

  • SubscriberDetermination

  • FetchCMSISDN

  • DetermineChargeMode (only required when using CAP charging)

Source Code

This feature’s source code is available in the Sentinel VoLTE SDK in the volte-determine-roaming-from-hlr module pack. It can be viewed by using the create-module command in the SDK with that module pack, for example:

> create-module new-hlr-module opencloud#volte-determine-roaming-from-hlr#volte/4.0.0;4.0.0.0

This command will prompt you for information needed to create the new module; once completed the original source for the feature can be found in the new module.

The module-pack consists of a single module, volte-determine-roaming-from-hlr, containing the feature’s code. It does rely on the volte-map-event-handler which contains the shared event handler for MAP features and also publishes a module pack, however the event handler will not require modification unless a new feature name is introduced.

Session state input variables

Attribute Name Type
Subscriber

String

CMSISDN

String

ChargeMode

Enum

Session state output variables

Attribute Name Type Description
RoamingStatus

Enum

UNKNOWN, NATIONAL or INTERNATIONAL

RoamingIndicator

boolean

false if not roaming, true otherwise

AttemptedATI

boolean

true if an AnyTimeInterrogation has been attempted by the feature, false otherwise

DiscoveredAccessNetworkInformation

String

3GPP-GERAN;cgi-3gpp=<mnc><mcc><lac><ci>;network-provided, where <ci> defaults to 0000 when not provided in the ATI response

SubscriberLocationMscAddress

AddressString

MSC Address extracted from MAPLocationInformation returned by AnyTimeInterrogation response.

Note: The default values for both RoamingStatus and RoamingIndicator are UNKNOWN and false respectively. If this feature is unable to determine the roaming status for any reason, it will leave the pre-set values.

Configuration

Statistics

DetermineRoamingFromHlr statistics are tracked by the DetermineRoamingFromHlr feature and can be found under the following parameter set:
SLEE-Usage ▶ sentinel.volte.sip service ID ▶ sentinel.volte.sip SBB ID ▶ DetermineRoamingFromHlr.

Name Type Description
Started

Counter

Incremented each time the feature runs

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

RequestSent

Counter

Incremented when the feature receives subscriber data from the HLR

RequestSuccessful

Counter

Incremented after the feature successfully processes the data it received, and loads it into session state fields

RequestFailed

Counter

Incremented when absent configuration data prevents the feature from running

ResponseLatency

Sampled

Records elapsed time between sending the request to the HLR and getting a response (in milliseconds).

InternationalRoaming

Counter

Incremented when the feature determines that the subscriber is roaming internationally

NotRoaming

Counter

Incremented when the feature determines that the subscriber is not roaming

NationalRoaming

Counter

Incremented when the feature determines that the subscriber is national roaming

RoamingDataMissingFromHlrResponse

Counter

Incremented whenever an ATI result comes back from Hlr with missing or invalid location information

DialogOpenRefuseEvent

Counter

Incremented whenever the ATI fails due to a dialog open refuse

DialogUserAbortEvent

Counter

Incremented whenever the ATI fails due to a dialog user abort

DialogProviderAbortEvent

Counter

Incremented whenever the ATI fails due to a dialog provider abort

OperationErrorEvent

Counter

Incremented whenever the ATI fails due to an operation error

Behaviour

This feature uses the CGIN MAP RA to query the HLR with an ATI for subscriber location information.

Each time the feature is invoked, it checks the call type and determines the subscriber number that it should use to query the HLR.

When invoked on a SIP response the feature checks whether a request to the HLR has not already been made and whether there is an OC-Terminating-Domain present in the SIP responses with value CS. If either is not the case then the feature finishes execution.

The feature attempts to extract "phone number digits" from the CMSISDN session state field set by FetchCMSISDN, and if it cannot, from the Subscriber field set by SubscriberDetermination. If the feature cannot form a MSISDN it raises a Feature Error and finishes execution.

The feature then requests subscriber location info by sending a AnyTimeInterrogation request to the configured HLR.

In order to form the ATI request the feature:

  1. sets the GSM SCF address to the SentinelSCCPAddress configuration value

  2. sets the destination SCCP address to the HlrSCCPAddress configuration value

  3. sets the RequestedInfo indicator field to request Location Information

If a successful result is received, it retrieves location information from the ATI result. The location information can be in either of the CellGlobalIdOrServiceAreaIdFixedLength or LaiFixedLength fields. If neither field is present, the feature increments the RoamingDataMissingFromHlrResponse stat. It will then check whether the MAPLocationInformation contains an MSC number, and if so, it will write this to the session state field SubscriberLocationMscAddress.

If the location information is found, the MCC and MNC are evaluated using the PLMN ID Analyser Component to determine whether the subscriber is roaming or not. If the fallbackToISOCCRoamingIdentification field of the Determine International and Roaming Status Configuration table is set to true and the PLMN ID Analyser finds that the MCC does not match the home MCC, then the feature falls back to an ISO CC comparison. If the home and visited ISO CCs match then the RoamingStatus is set to NATIONAL and the RoamingIndicator is set to false. If the ISO CCs do not match then the RoamingStatus is set to INTERNATIONAL and the RoamingIndicator is set to true. If the fallbackToISOCCRoamingIdentification field is set to false then mismatching MCCs immediately sets RoamingStatus to INTERNATIONAL. When the MCCs do match the MNCs are compared by the PLMN ID Analyser Component and the RoamingStatus and RoamingIndicator session state fields are set accordingly. The default values of RoamingStatus and RoamingIndicator in the case of incomplete information or feature failure are UNKNOWN and false respectively.

If found, the location information is also used to generate a discovered network access information. If no other access network information is available, this will be used in charging content AVPs. The format for the generated information is 3GPP-GERAN;cgi-3gpp=<cgi>;network-provided, where <cgi> is the Cell Global ID, made up of the MCC, MNC, Location Area Code (in hex) and Cell Id (in hex) concatenated. If the Cell Id is not provided by the HLR, it will default to 0000.

OC-Roaming-Status Header

If the feature is running on a terminating MMTel instance, and CAP charging is enabled, it will attempt to add an OC-Roaming-Status header to the outbound request. The value of the header will be set to match the value of RoamingStatus.

Previous page Next page
Sentinel VoLTE Version 4.0.0