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 |
|
Yes |
Yes |
Stateless |
POJO |
Prerequisite features
-
SubscriberDetermination
-
FetchCMSISDN
-
DetermineChargeMode (only required when using CAP charging)
Session state input variables
| Attribute Name | Type |
|---|---|
Subscriber |
String |
CMSISDN |
String |
ChargeMode |
Enum |
RetrieveHLRRoamingStatus |
Boolean |
Session state output variables
| Attribute Name | Type | Description |
|---|---|---|
RoamingStatus |
Enum |
|
RoamingIndicator |
boolean |
|
AttemptedATI |
boolean |
|
DiscoveredAccessNetworkInformation |
String |
Access network location information returned by the HLR, encoded into a form matching a P-Access-Network-Info header value. |
SubscriberLocationMscAddress |
AddressString |
MSC Address extracted from |
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
The feature uses configuration data from the HLR MAP Configuration, the SIP Sentinel Configuration and the Determine International and Roaming Status 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 a request is sent to 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 a request to the HLR fails |
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 refusal |
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 response 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 an MSISDN, it raises a Feature Error and finishes execution.
The feature then requests subscriber location info by sending an AnyTimeInterrogation request to the configured HLR.
In order to form the ATI request the feature:
-
sets the GSM SCF address to the
SentinelSCCPAddressconfiguration value -
sets the destination SCCP address to the
HlrSCCPAddressconfiguration value -
sets the
RequestedInfoindicator 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.
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.
If AdditionalRoamingParams in HLRConfigProfileTable is set to true, the feature will also include additional parameters received in ATI Result as part of the OC-Roaming-Status header. These include: vlr-Number, vmsc-Number, MCC, and MNC. These values may be later used by CAPLocationHeaders feature if they could not be determined in any other way (for example if vlr-Number is not included in the SRI Result together with the MSRN).
Location Information
The ATI response from the HLR may include area and cell location information.
If this information is present the feature will encode this information into the format of a P-Access-Network-Info header and set it in the DiscoveredAccessNetworkInformation session output for use by other features.
Additionally, if the SetTermPaniHeader config field is set to true, the encoded information will be added to the outbound SIP request in an OC-Term-P-Access-Network-Info header (unless that header is already present).
It is possible to use this feature to obtain location information without doing roaming detection by updating feature scripts to make the feature run even when the RetrieveHLRRoamingStatus is set to false by VolteLoadServiceConfig.
