From the spec

Here’s what 3GPP 24.611 says:

international: This condition evaluates to true when the request URI of the outgoing SIP request:

  • corresponds to a telephone number, i.e. a SIP URI with a “user” URI parameter set to “phone” or a tel URI; and

  • does not point to a destination served by a network within the country where the originating user is located when initiating the call.

international-exHC: This condition for international barring, excluding the home country, evaluates to true when the request URI of the outgoing SIP request:

  • corresponds to a telephone number, i.e. a SIP URI with a “user” URI parameter set to “phone” or a tel URI;

  • does not point to a destination served by a network within the country where the originating user is located when initiating the call; and

  • does not point to a destination served within the served users home network._corresponds

Feature cheat sheet

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

MMTEL

Both

Any PreCreditCheck

Yes

No

Stateless

POJO

Prerequisite features

Sentinel-SIP:

  • SIP Determine Network Operator

  • SND:Determine Call Type Feature

  • SIP Extract Network Info

  • SIP Normalization (recommended)

VoLTE:

Source Code

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

> create-module new-diar-module opencloud#volte-determine-international-and-roaming-status#volte/2.7.0;2.7.0.0

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

The module-pack includes the following modules:

Module Name Description

volte-determine-international-and-roaming-status

Group module for the feature that includes all of the modules listed below.

volte-determine-international-and-roaming-status-address-list

Contains the profile specification for the feature address list profile table.

volte-determine-international-and-roaming-status-profile

Contains the profile specification for the feature configuration profile table.

volte-determine-international-and-roaming-status-feature

Contains the feature itself.

Behaviour

Get the address string to use in address analysis

The DetermineInternationalAndRoamingStatus feature analyses a digit string that corresponds to the destination (or called) party. Digit strings may be in a Tel URL, or the user part of a SIP URI.

If the number retrieved from the Tel URI or SIP URI user part contains a + sign, the + sign is removed to leave just the digits.

The DetermineInternationalAndRoamingStatus feature uses different properties of the initial INVITE request for originating and terminating treatment:

  • If the session is originating, then it checks the request-uri and To address.

  • If the session is terminating, then it checks the P-Asserted-Identity address, the From address, and the Referred-By address.

Otherwise, the feature execution ends.

If a digit string is not found, then the feature will respond to the sentinel-core with featureCannotStart, and end.

Determine if address international and roaming status should be skipped

The DetermineInternationalAndRoamingStatus feature may decide to not handle the address if either:

  • The address is shorter than the configured MinLength defined in DetermineInternationalAndRoamingStatusConfigProfileTable

  • The address matches an entry in the SkipDIRSAddressList

This allows for short codes and specific longer length numbers to avoid DetermineInternationalAndRoamingStatus. The SkipDIRSAddressList is a configurable address list scoped by the Sentinel selection key; it is only given to the component when used by the SIP normalization component.

Get the visited Mobile Country Code and Mobile Network Code

The visited MCC and MNCs are retrieved from session state field previously populated by the ExtractNetworkInfo feature. Those values will be used when determining the roaming and international statuses.

Get the visited-network-id for the served user

The feature check first if the session state IMSInformation contains a valid IMS Visited Network Identifier populated by Diameter Per Leg Info Feature.

If no value is present, it extracts the visited network id for the served user as follows:

  • If the session is originating, the P-Visited-Network-Id header is checked in the incoming request.

    • If this header exists, then the visited network id is set from the header value.

  • If the session is terminating, the OC-Term-P-Visited-Network-Id header is checked in the incoming request.

    • If this header exists, then the visited network id is set from the header value.

If the incoming request did not contain the visited network id, and if the served user is logged into the IMS, then Third Party Registration Data is consulted - to find the P-Visited-Network-Id at the time of IMS registration. Third Party Registration data is looked up with an access key of the default public identity for the served user. It is accessed via the Sh Cache.

If a visited network id cannot be determined, the feature checks the configuration in the DetermineInternationalAndRoamingStatusConfigProfileTable to determine if the call should proceed or not. If EndCallIfNoVisitedNetwork is false, then the feature exits without modifying session state. If EndCallIfNoVisitedNetwork is true then the call is terminated.

Get the address prefix address list

An important part of this feature is an address list of prefixes for each MCC or each visited network. Each entry in the list states whether an address with this prefix, for a subscriber of the network operator, registered with a subscriber location network, represents a visited or home network.

For a session processed by VoLTE:

  • The session is scoped to the network operator by the SIP Determine Network Operator feature (this is the subscriber’s home).

  • The MCC or visited-network-id is found as described above.

  • There is an entry for each MCC or visited network in the DetermineInternationalAndRoamingStatus_AddressListConfigurationTable profile and an address list of prefixes for each MCC or visited network stored in the DetermineInternationalAndRoamingStatus_AddressListEntryTable profiles. Both are scoped to the Network operator.

If the profile field useMCCSpecificAddressListTables is false then the feature will attempt to use the default address list named DEFAULT. If the profile field useMCCSpecificAddressListTables is true the feature will attempt to use an address list named after the MCC. The feature will use a visited-network-id prefix address list if no MCC could be found or if no address list for the MCC could be found.

If no such address list is found, the feature will respond to the sentinel-core with featureFailedToExecute, and end.

Determine international and international-exHC status

The DetermineInternationalAndRoamingStatus feature does a longest-prefix search of the prefix address list with the address string (extracted in step #1).

If a match is found, then the address starts with a prefix of significance within the scope of the MCC or visited network. The feature can set the International session state field in two ways: * If an MCC has been determined for the served user and there is an MCC present in the prefix address list entry then 'International' is set to 'true' if the MCCs are different. * If either MCC could not be found then 'International' is set to not networkPrefixListEntry.isVisitedNetwork(). The internationalExHC session state field is set to International and not networkPrefixListEntry.isHomeNetwork().

If a prefix address list match is not found, then it must be an international call; so the feature sets the International session state field to true and the internationalExHC session state field to false.

Using MCC specific prefix address lists

The DetermineInternationalAndRoamingStatus feature uses a single prefix address list named DEFAULT unless useMCCSpecificAddressListTables is configured as true in the feature’s profile.

MCC specific prefix address list tables may be needed for more advanced scenarios where different MCCs are desired to not be treated as international.

Determine roaming status

The SIP Sentinel SipSentinelConfiguration profile (scoped on the Sentinel selection key) defines the home Mobile Country Code (MCC), the Mobile Network Codes (MNCs) and the home network ids for the network operator. The home network ids define the home network for the subscriber.

If the feature found a non empty MCC for the visited network, it compares that value with the home MCC present in SipSentinelConfiguration profile.

If they are different the feature sets the RoamingStatus to INTERNATIONAL and the RoamingIndicator session state field is set to true.

If they are equal and the visited MNC is present in the home MNCs, the feature sets the RoamingStatus to NOT_ROAMING and the RoamingIndicator session state field is set to false.

If they are equal and the visited MNC is not present in the home MNCs, the feature sets the RoamingStatus to NATIONAL and the RoamingIndicator session state field is set to false.

If no MCC is present then the feature do the roaming analysis based on the visited-network-id. If the visited-network-id is not a member of the set of home network ids, the RoamingIndicator session state field is set to true.

If they are no visited MNC and no visited network was found, the feature sets the RoamingStatus to UNKNOWN.

Session state inputs and outputs

Inputs

Name Type Format Description Behaviour if null/invalid

SentinelSelectionKey

com.opencloud. sentinel.common.SentinelSelectionKey

selection key (for example, <platform>:<network>:::)

For selecting configuration data

Report featureCannotStart, featureHasFinished if the network operator field is not set.

CallType

com.opencloud.sentinel.common.CallType

One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall

Session type of this call

Report featureCannotStart, featureHasFinished

IMSDefaultPublicID

java.lang.String

tel URL or SIP URI

the default-public-id (set by IMSIDLookup)

Increment statistic SubscriberNotLoggedIn and report featureHasFinished

ImsInformation. ImsVisitedNetworkIdentifier

java.lang.String

recommended format is epc.ims.mnc<MNC>.mcc<MCC>.3gppnetwork.org according to IR65

the visited network id extracted from the Invite request or from the registration data by the Diameter Leg Info feature

try to extract from the triggered request

PaniMccsMncs

List<MccMnc>

MCC and MNC as String

a list of MCC and MNC extracted from P-Access-Network-Info header from the request or from the registration data by the Diameter Leg Info feature

try to extract from the session state PvniMccMnc

PvniMccMnc

com.opencloud.sentinel.common.MccMnc

MCC and MNC as String

a list of MCC and MNC extracted from P-Visited-Network-Id header from the request or from the registration data by the Diameter Leg Info feature

use the visited-network-id as fall back

Outputs

Name Type Format Description

International

boolean

true or false

the international condition as defined by 3GPP 24.611

InternationalExHC

boolean

true or false

the international-exHC condition as defined by 3GPP 24.611

RoamingIndicator

boolean

true or false

true, if the subscriber is roaming

RoamingStatus

enum

NOT_ROAMING, NATIONAL, INTERNATIONAL, UNKNOWN

  • NOT_ROAMING if served user is in home network.

  • NATIONAL if served user is in home country but not in the home mobile network.

  • INTERNATIONAL if served user is not in his home country.

  • UNKNOWN if there were not enough information to assert roaming.

Error scenarios

These scenarios trigger the following reports.

Scenario Report

Sessionstate SentinelSelectionKey network operator field is not set

featureCannotStart

Sessionstate CallType is null

featureCannotStart

No Called Party Leg available from the LegManager

featureCannotStart

Cannot determine a digit String to analyse in originating case

featureIssuedWarning

Cannot determine a digit String to analyse in terminating case

featureIssuedWarning

There is no prefix address list for a visited-network-id

featureFailedToExecute

No registration data found for default-public-id

featureFailedToExecute

Registration data fetched for default-public-id indicates this id is not a default-public-id

featureFailedToExecute

Statistics

DetermineInternationalAndRoamingStatus statistics are tracked by the volte.sentinel.sip SBB and can be found under the following parameter set in REM:
SLEE-Usage → volte.sentinel.sip service → volte.sentinel.sip SBB → feature → DetermineInternationalAndRoamingStatus
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=volte.sentinel.sip,vendor=OpenCloud,version=2.7.0].SbbID[name=volte.sentinel.sip,vendor=OpenCloud,version=2.7.0].feature.DetermineInternationalAndRoamingStatus"

Parameter Type Description
Started

Counter

Incremented each time the feature runs

FailedToStart

Counter

Incremented when a fatal error occurs before feature execution

IssuedWarning

Counter

Incremented when a non-fatal error occurs during feature execution

FailedDuringExecution

Counter

Incremented when a fatal error occurs during feature execution

TimedOut

Counter

Incremented when feature execution does not complete within a reasonable time frame

VisitedNetworkHeaderFound

Counter

Incremented when the requestURI identity is in RegistrationRecords list of public identities.

AccessNetworkMccFound

Counter

Incremented when the mobile-Country-Code is found in the P-Access-Network-Info header.

DeterminedInternationalUsingAccessNetworkMcc

Counter

Incremented when the MCC prefix address list is used to determine whether the call is international.

DeterminedInternationalUsingVisitedNetworkId

Counter

Incremented when the visited-network-id prefix address list is used to determine whether the call is international.

CouldNotGetPVisitedNetworkID

Counter

Incremented when no visited network ID information could be found.

HomeNetworkIdSetForNetworkOperatorIsEmpty

Counter

Incremented when the Sentinel SIP configuration for the network operator has an empty home-network-id set (the feature cannot determine if the subscriber is roaming).

InternationalRoaming

Counter

Incremented when the feature determines that the served user is roaming in a foreign country.

NationalRoaming

Counter

Incremented when the feature determines that the served user is roaming in their home country.

NotRoaming

Counter

Incremented when the feature determines that the served user is on their home network.

UnknownRoaming

Counter

Incremented when the feature is unable to determine the served user’s roaming status.

AddressNotMinimumLength

Counter

Incremented when destination address is less than the configured minimum length.

AddressOnBlackList

Counter

Incremented when destination address matches an entry in the SkipDIRSAddressList.

Previous page Next page
Sentinel VoLTE Public Version 2.7.0