This guide explains how to configure and provision the Sentinel framework.
Topics
-
Getting Started — describes how to get a Sentinel Express installation up and running
-
Configuring Sentinel Services — describes the configuration options for each of the Sentinel services
-
Sentinel Components — a comprehensive description of each Sentinel component
-
Provisioning — describes how to provision Sentinel using the Sentinel Element Manager
-
Sentinel Alarms — describes the alarms raised by Sentinel
-
Charging Information — describes the format and content of CDRs, and of AVPs present in the Diameter Ro interface
For more information
-
Installing the SDK has instructions on installing the Sentinel framework
-
Sentinel Overview and Concepts provides a high-level overview of Sentinel
-
Installing the Sentinel Express Provisioning Module has instructions for installing the Rhino Element manager plugin
Getting Started
This section explains how to set up a standalone version Sentinel Express on a Rhino SDK.
Preparing to Install Sentinel Express
Artifactory
This page refers to a public Artifactory instance that is no longer available. Please contact us via support if you require more information. |
Before you install Sentinel Express, you need to download the SDK package, and get other required software.
You can then either:
-
let the built-in installer install both the Rhino SDK and Sentinel Express, or
-
install and configure Rhino and the JVM manually, then use the installer to install Sentinel Express into your Rhino.
In both cases you need to get a license.
Allowing the installer to install both the Rhino SDK and Sentinel Express software is recommended for functional testing or experimentation with Sentinel Express. For production installs and/or load testing it is recommended to manually install and configure Rhino and the JVM.
Finally, if you are planning to install Sentinel Express on an existing OpenCloud Rhino installation, it makes sense to refer to other OpenCloud product dependencies
Download the Sentinel Express SDK package
To get the latest Sentinel Express SDK package go to https://repo.rhino.metaswitch.com/artifactory/opencloud-sentinel-express-3.0.0/opencloud/sentinel-pack/3.0.0/sentinel-express-sdk/ and choose the version with the highest release number.
The SDK package contains an installer, that can install Sentinel Express as an out-of-the-box system. It is also an SDK allowing customisation of the product.
You will need OpenCloud-supplied credentials to download the package. |
Get required software
You’ll need the following software to run Sentinel Express:
Software | Download Link | Documentation Link |
---|---|---|
Java JDK 7 |
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html |
|
Apache Tomcat 7.0.39 or greater (7.0.x series or 8.5.x series, not 9.x.x series) |
||
Rhino 2.6.1.0 or later - optional - to be used when installing and configuring Rhino manually |
||
Rhino Element Manager 2.6.1.0 or later |
||
Sentinel Express SDK including out of the box installer |
||
(Optional) Cassandra Database, version 2.1.17 or later version from the 2.1.x series |
Install and configure Rhino and the JVM
Optionally you can install and configure Rhino and the JVM for use with Sentinel Express. This is recommended for production deployments, and clustered setups.
Alternatively for Proof of Concept and lab functional testing it is recommended to use the Installer documented in Installing Sentinel Express Services
Install Rhino
1 |
Start by choosing a location to extract the contents of the Rhino package. We’ll refer to this directory as |
---|---|
2 |
Rhino must be started at least once to generate the necessary configuration files. To start Rhino, in the $ ./start-rhino.sh (or |
3 |
Wait until Rhino is ready. It prints the following message in its log when ready: SLEE successfully started on node(s) [101] |
4 |
Stop Rhino by executing in the $ ./stop-rhino.sh --nice |
For more about installing and configuring the Rhino TAS, please see the Rhino v2.6.1 Documentation. |
Configure Rhino and the JVM
If you want to install Sentinel Express on top of an already running Rhino then this step must be performed. If you are letting the installer configure the Rhino SDK for you, this step can be skipped.
The following settings are needed:
Setting | Configuration |
---|---|
Management database size |
For a full Sentinel Express install, the default Rhino 2.6.1 management database size is insufficient and should be increased to at least 300MB. To do this, edit <memdb> <jndi-name>ManagementDatabase</jndi-name> <message-id>10003</message-id> <group-name>rhino-db</group-name> <committed-size>300M</committed-size> <stripe-count>1</stripe-count> ... </memdb> |
JVM |
You’ll also need to configure the JVM:
All of these settings can be found in |
Socket permissions |
You will need to add the host address where the installer is running to the mlet configuration file.
<mlets> <mlet enabled="true"> <classpath> <jar-url>$${rhino.dir.base.url}/lib/jmxr-adaptor.jar</jar-url> <security-permission-spec> .... other entries permission java.net.SocketPermission "<IP ADDRESS>", "accept,resolve"; .... other entries </security-permission-spec> </classpath> </mlet> </mlets> |
Start Rhino to load the new configuration
To start Rhino, in the This applies the Rhino and JVM configuration. |
Get a license
To install Sentinel Express you need a license to run SIS, CGIN, and Sentinel Express from OpenCloud. In order to obtain a license file, please contact OpenCloud. |
If you allow the installer to install both Rhino SDK and Sentinel Express for you, it will prompt you for the location of the license file.
If you prefer to set up Rhino manually, then you need to install the license file prior to installing Sentinel Express.
To install your license file:
1 |
Make sure Rhino is started and running. |
---|---|
2 |
Go to the |
3 |
In this directory, start the Rhino Console with the |
4 |
In the Rhino Console execute, this command: installlicense [PATH_TO_LICENSE_FILE] ( |
Ports
If using the standard configuration, the following ports need to be open on the Express TAS host’s firewall.
Port | Purpose |
---|---|
5060 |
SIP traffic |
5061 |
Secure SIP traffic |
8080 |
REM GUI |
1199-1203 |
RMI Access |
If using other configuration the firewall should be configured for those non-standard ports. Other ports may be opened as needed. For example if ssh is used to administer a node, then port 22 would be opened
OpenCloud product dependencies
Sentinel Express is built on top of other OpenCloud products. The 3.0.0 series depends on the following series:
Product | Series |
---|---|
Rhino |
2.6.1.x |
REM |
2.6.1.x |
SIP |
2.6.0.x |
CGIN |
2.0.0.x |
SIS |
2.6.1.x |
SIS-EM |
2.6.1.x |
Diameter |
3.1.1.x |
CDR-RA |
2.3.0.x |
HTTP-RA |
2.4.0.x |
DB-Query-RA |
1.4.0.x |
FSM Tool |
1.2.0.x |
CQL-RA |
1.1.0.x |
Installing Sentinel Express Services
Sentinel Express is installed through the use of an installer program.
The installer can run in interactive and non-interactive modes - suitable for manual and automated installs respectively. When running in interactive mode it will prompt you for various necessary settings and save them.
The installer will offer to install the Rhino SDK for you, or allow you to specify an existing Rhino installation. Once either a new Rhino SDK install, or an existing installation is selected the installer will install Sentinel Express into your Rhino or Rhino SDK. |
The installer prepares configures for a single node Sentinel Express system.
For more advanced configurations, such as clustering, or multiple signalling peers, it is recommended the you become familiar with the Rhino platform, SIS and Sentinel Express products.
To install Sentinel Express services in interactive mode:
For further information on installation read:
1. Unzip sentinel-express-sdk.zip
To unzip sentinel-express-sdk.zip
:
1 |
Copy the downloaded SDK zip file to a machine where Rhino and Sentinel Express will run.
user@machine$ mkdir ~/sentinel-express |
||
---|---|---|---|
2 |
Unzip. user@machine$ cp ~/sentinel-express-sdk.zip ~/sentinel-express user@machine$ cd ~/sentinel-express user@machine$ unzip sentinel-express-sdk.zip |
2. Run the installer
The install program is split into several "phases".
These are:
-
initialisation of the environment
-
question and answer (in interactive mode)
-
execution of installation
the installer captures full logging from the various tools that it uses, and writes these logs into the sentinel-express-sdk/build/target/log directory. |
To run the installer:
1 |
The testuser@machine$ cd ~/sentinel-express/sentinel-express-sdk testuser@machine$ ./build/bin/installer The installer first initialises the environment. It typically shows output similar to the following Initialising the SDK ... Retrieving Installer dependencies ... done. |
---|---|
2 |
Question and answer to determine necessary settings The installer will prompt the user for various values. A value inside square brackets, if present, is the default answer for that question. When the user presses the Explanations of all of the questions the installer will ask are laid out over the next few steps. Note that some of the questions will only appear under certain circumstances, so not all of them will be seen in a given installer run. |
3 |
Taking the SDK offline The user is prompted as to whether or not they want to take the SDK offline. You can optionally take the SDK offline by creating a local repository. This will take several minutes depending on connection speed, but will make subsequent retrievals much faster and remove the need for an internet connection. Do you want to take the SDK offline? y/[N] > If the user presses the The user is then presented with progress information related to the downloading of artifacts necessary to take the SDK offline. This process can take more than 30 minutes. |
4 |
Basic SDK Questions Your organization's name, e.g. Rocket Communications Inc. sdk.component.vendor [UNSET] > This value will be used for the sdk.component.version [1.0] > This value will be used for the The name of the platform operator, e.g. Rocket. sdk.platform.operator.name [UNSET] > The name of the platform operator for the system. It is used extensively throughout configuration profiles. An Ivy organization field, recommended lower case with no whitespace e.g. "rocket". sdk.ivy.org [UNSET] > This value is used as the sdk.ivy.publish.revision [1.0.0] > This value is used as the base of the |
5 |
Install Rhino Questions You can either have the installer set up a Rhino SDK for you or point it at an existing Rhino installation, SDK or production. Note: If you want to use an existing Rhino installation it has to be running and a proper license has to be installed when finishing the installation after the configuration. Also make sure that you have adjusted the memory settings and created a tcapsim-gt-table.txt file as detailed in the documentation. Set up a Rhino SDK installation automatically? y/[N] > If you allow the installer to set up a new Rhino SDK installation, it will prompt for a license file. Enter the path to your Rhino license file > /home/testuser/Downloads/opencloud.license It then installs the Rhino SDK and starts it. If you instruct the installer to use an existing Rhino, the installer will prompt for the path to the Rhino client directory. Enter the path to your Rhino client directory > /home/testuser/rhino/2.4/client If the associated installation is a Rhino production then additional information is required to complete configuration. You can either have the installer deploy against Rhino SDK or production. Does the specified client point to a production installation? y/[N] > If you choose Yes, then the installer prompts for details of the cluster nodes and hosts. Enter your Rhino node setup. It has to be formatted like this: {nodeId,nodeId}host,{nodeId}host Examples: {101}localhost {101,102}host1,{103}host2 Node setup [{101}localhost] > {101}hostname1,{102}hostname2 |
6 |
Review settings Once all questions have been answered, the user is provided the opportunity to review and if happy, accept the settings. TIP: settings are saved to disk, so that they can be read later. Review settings *************** Basic SDK properties ==================== sdk.component.vendor: Rocket Communications Inc sdk.component.version: 1.0 sdk.platform.operator.name: Rocket sdk.ivy.org: rocket sdk.ivy.publish.revision: 1.0.0 ... edited for brevity Accept these values? [Y]/n > y Updating file {sdk-path}/sdk.properties Configuration changes written. If the user presses the |
7 |
Which product(s) to deploy The user can choose which Sentinel products to deploy as part of the installation, any combination of Sentinel SIP, Sentinel SS7 and Sentinel Diameter can be specified. This installer can be used to create deployment modules for one or more of the following Sentinel products: "diameter", "sip" and "ss7". Please enter the products you would like to deploy as a comma-separated list. Which products do you want to deploy? [sip,ss7,diameter] > For each option the user specifies, a deployment module will be created to deploy the specified product. |
8 |
Sentinel SS7 with SIS If Sentinel SS7 was one of the products selected for deployment, the user will be presented with an option to install Sentinel SS7 with SIS. Do you want to install sentinel-ss7 with SIS? y/[N] > If the user enters |
9 |
Creation of a deployment module The installer will now create the required deployment module(s). This may take several minutes. |
10 |
Execution phase Now that the installer has gathered all necessary information it provides the user with the option to install Sentinel Express immediately. Install now? [Y]/n > If the user wants to install at a later time, they can press the Installing Rhino ... done. Starting Rhino in the background ... done. Publishing deployment module deploy-sentinel-diameter ... done. Publishing deployment module deploy-sentinel-sip ... done. Publishing deployment module deploy-sentinel-ss7 ... done. Creating deployment module deploy-sentinel ... done. Publishing deployment module deploy-sentinel ... done. Deploying; this is going to take a while ... done. Binding; this is going to take a while ... done. Configuring; this is going to take a while ... done. Installation completed successfully in 8 minutes and 38 seconds. Rhino has been left running to finish applying configuration changes. The installation has now completed successfully. |
A properties file is automatically created when the interactive installer is run. This file is located in the sentinel-express-sdk directory and named install.properties . In this way an interactive installations settings are saved, and can be distributed through the install.properties file. You can later use this file for a new installation using the Non-interactive mode. |
Non-interactive mode
To run the installer in non-interactive mode a properties file must be passed to the installer program.
testuser@machine$ cd ~/sentinel-express/sentinel-express-sdk testuser@machine$ ./build/bin/installer -p my-install.properties
SIS and CGIN
During installation SIS and CGIN versions are extracted into the SDK directory structure. This is so that SIS can be configured as necessary.
The CGIN connectivity pack is extracted into the sentinel-express-sdk/cgin/cgin-connectivity-full-CGIN_VERSION
directory. The SIS is extracted into the sentinel-express-sdk/sis/SIS_VERSION
directory. Here CGIN_VERSION
and SIS_VERSION
are the release versions for each product respectively (e.g. 1.5.2.8 and 2.5.2.7)
The SIS console command is located at sentinel-express-sdk/sis/SIS_VERSION/admin/sis-console
.
Background information
The installer sits on top of the Sentinel Express SDK infrastructure
The installer works by creating "deployment modules" for the products within Sentinel Express. These modules are named "deploy-sentinel", "deploy-sentinel-sip", "deploy-sentinel-ss7" and "deploy-sentinel-diameter". They are located in the root of the Sentinel Express SDK directory.
A deployment module can be created through the use of the sdkadm create-deployment-module command.
The deployment modules are then published, and the deployer, binder and configurer are invoked in order to install/bind/configure the application in Rhino.
This means that the the installer is part of the Sentinel Express SDK, and that there is no technology difference between the SDK and an "off the shelf install". Therefore custom configurations can easily be made through modifying the deployment modules, publishing them, and running the configurer.
Installer log files
The installer captures full logging from the various tools that it uses, and writes these logs into the sentinel-express-sdk/build/target/log directory. This output is more verbose than the user sees when running the installer.
Each time an install is done, a file called installer.log
is created in this directory. If there is a previous installer.log
file, it is moved to installer_[date].log
. The value of [date]
is the time of the last write timestamp in the file.
Therefore running the installer three times results in three installer log files.
Installing the Sentinel Express Provisioning Module
Artifactory
This page refers to a public Artifactory instance that is no longer available. Please contact us via support if you require more information. |
The Sentinel Express provisioning module is distributed as a Rhino Element Manager (REM) plugin.
It requires REM 2.6.1 or compatible. REM can be installed with Jetty or Apache Tomcat. For Sentinel Express, the Apache Tomcat method is required.
To install the Sentinel Express Provisioning module you will need:
-
the REM distribution package —
rhino-element-manager-<version>.zip
; expanded to a location of your choice -
an Apache Tomcat installation — either downloaded and configured manually, or installed via a package manager; minimum supported version is
7.0.39
-
the Sentinel Express REM plugin —
sentinel-express-element-manager-<version>.em.jar
-
download for your release version from https://repo.rhino.metaswitch.com/artifactory/opencloud-sentinel-express-3.0.0/opencloud/sentinel-pack/3.0.0/sentinel-express-element-manager
-
-
(optional) the SIS REM plugin —
sis-em-<version>.em.jar
-
download for your release version from https://repo.rhino.metaswitch.com/artifactory/opencloud-sentinel-express-3.0.0/opencloud/sis-em/2.6.1/sis-em
-
Below are the procedures to:
REM restart required
After installing and configuring the plugin, you will need to restart REM, for example by restarting the Tomcat webapp it is running in: ${CATALINA_BASE}/bin/catalina.sh stop ${CATALINA_BASE}/bin/catalina.sh start |
Set up Tomcat
To set up Apache Tomcat for the Sentinel Express Provisioning module:
1 |
Follow the instructions for running REM on Apache Tomcat in the REM Guide. |
---|---|
2 |
Create the cd apache-tomcat-<version> mkdir -p rem_home/plugins |
Install the REM plugin
To install the REM plugin for the Sentinel Express Provisioning Module:
1 |
Copy cd apache-tomcat-<version> cp /full/path/to/sentinel-express-element-manager-<version>.em.jar rem_home/plugins/ |
---|---|
2 |
(Optional) Copy cd apache-tomcat-<version> cp /full/path/to/sis-em-<version>.em.jar rem_home/plugins/ |
Customize plugin logging
1 |
Unzip cd apache-tomcat-<version> mkdir rem-tmp cd rem-tmp unzip ../webapps/rem.war WEB-INF/classes/log4j2.properties |
---|---|
2 |
Edit rootLogger.level=INFO rootLogger.appenderRef.console.ref=CONSOLE rootLogger.appenderRef.file.ref=FILE appender.CONSOLE.type=Console appender.CONSOLE.name=CONSOLE appender.CONSOLE.layout.type=PatternLayout appender.CONSOLE.layout.pattern=%d{ABSOLUTE} %-5p <%t> [%c] %m%n appender.FILE.type=RollingFile appender.FILE.name=FILE appender.FILE.filename=${rem.home}/rem.log appender.FILE.layout.type=PatternLayout appender.FILE.layout.pattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p <%t> [%c] %m%n logger.rem.name=rem logger.rem.level=INFO logger.openjpa.name=openjpa logger.openjpa.level=INFO logger.wink.name=org.apache.wink logger.wink.level=INFO # Uncomment for subscriberdata cache eviction logging #logger.subscriberdatacache.name = rem.server.sentinel.subscriberdata.cache #logger.subscriberdatacache.level = TRACE logger.audit.name=sentinel.audit logger.audit.level=INFO logger.audit.additivity=false logger.audit.appenderRef.audit.ref=AUDIT appender.AUDIT.type = RollingFile appender.AUDIT.name = AUDIT appender.AUDIT.fileName = ${rem.home}/sentinel-audit.log appender.AUDIT.layout.type = PatternLayout appender.AUDIT.layout.pattern = "%d{yyyy-MM-dd HH:mm:ss,SSS}", "%c{1}", %m%n |
3 |
Replace zip ../webapps/rem.war WEB-INF/classes/log4j2.properties |
4 |
Remove temporary files: cd .. rm -rf rem-tmp |
Import Rhino trust certificate
This can also be done using the REM web UI.
1 |
Import a Rhino Trust Certificate into REM: "${JAVA_HOME}/bin/keytool" -importcert -file ${RHINO_HOME}/rhino-trust.cert -keystore "${TOMCAT_HOME}/rem_home/rhino-ems.ks" -storepass changeit -noprompt |
---|
Security considerations
Below are recommendations for securely running the Sentinel Express Provisioning Module.
Use https
Be aware that the Sentinel Express machine API uses HTTP BASIC authentication. This passes the username and password with every request.
To prevent your credentials going over the network unencrypted, run REM over https.
Set up SSL
See the Tomcat 7 - SSL How-To docs for help setting up SSL in Apache Tomcat 7.
Configuring Sentinel Services
There are configuration options for these Sentinel services:
-
Sentinel Common Configuration — Configuration data common to one or more Sentinel services.
-
Sentinel for Diameter — Configuration data related to the Sentinel Diameter-to-Diameter mediation service.
-
Sentinel for SIP — Configuration data related to the Sentinel SIP service.
-
Sentinel for SS7 — Configuration data related to the Sentinel SS7 service.
All service configuration can be managed using the Sentinel Element Manager web-based interface or the Sentinel Sentinel Provisioning REST API. |
Sentinel Common Configuration
-
Core Configuration — The Sentinel Core Configuration defines global parameters used by all services in Sentinel.
-
Mediation Layer Configuration — The Diameter Mediation Layer Configuration tables define parameters which are applicable to all service frontends using the Sentinel-internal Diameter Mediation Layer (currently SS7, SIP, Diameter services).
-
Configuration Common to SS7 and SIP Services — Configuration common to the SS7 and SIP services.
Core Configuration
Description
Configuration name |
Sentinel Core Configuration |
---|---|
Applicable contexts |
All |
The Sentinel Core Configuration defines global parameters used by all services in Sentinel.
Configuration
The Sentinel Core Configuration includes:
Parameters | Description |
---|---|
PlatformOperator |
The platform operator for this Sentinel installation |
DefaultNetworkOperator |
The default network operator for this Sentinel installation |
NetworkOperators |
The list of network operators that may be used in the configuration |
HttpParameterForHttpDetermineNetworkOperator |
The HTTP parameter that is used the HTTP Determine Network Operator feature |
DefaultOcsEntityID |
The default OCS entity ID |
MaximumCallDuration |
The maximum permitted call duration. If set to 0 the call duration is unlimited. Must be a whole multiple of the reservation time as set in the |
FeatureTimeOut |
The feature timeout in milliseconds. May be configured between -1 and 1800000. -1 turns off feature timers. Feature timeout under 1 sec (1000) is not recommended |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SentinelConfigurationTable |
Core configuration |
Fixed name |
Provisioning interfaces
The configuration is provisioned using the Sentinel Sentinel Core REST API or web interface.
Mediation Layer Configuration
The Diameter Mediation Layer Configuration tables define parameters which are applicable to all service frontends using the Sentinel-internal Diameter Mediation Layer (currently SS7, SIP, Diameter services).
-
Diameter Mediation Configuration — The DiameterMediation Configuration contains some general settings for the mediation layer.
-
OCS Configuration — The OCS Configuration contains default settings for OCS connections which are used when no specific OCS Destination Configuration has been set.
-
OCS Destination Configuration — The OCS Destination Configuration specifies connection properties and settings for specific OCSes which can be accessed by Sentinel during the course of a session.
-
TccTimer Configuration — The TccTimer configuration determines how the Sentinel-internal Tcc timer will be set when a CreditControlAnswer is received from the OCS.
Diameter Mediation Configuration
Description
Configuration name |
Diameter Mediation |
---|---|
Applicable contexts |
SS7/SIP/Diameter service |
The DiameterMediation Configuration contains some general settings for the mediation layer.
Configuration
The DiameterMediation configuration includes:
Parameters | Description |
---|---|
CloseSessionOnErrorBehaviour |
String value, either ERRORS_END_SESSION or CCR_T_ENDS_SESSION. Determines if the Diameter Mediation layer ends sessions to the OCS after receiving an update CreditControlAnswer (CCA-U) with an error code in the Result-Code AVP on command level, or leaves sessions open to be terminated explicitly via a termination CreditControlRequest (CCR-T) |
VtTimerEnabled |
Boolean value Determines if the Diameter Mediation layer performs charging refresh based on the Validity-Time |
VTTimerOffset |
Integer value Offset value used to compute Validity-Time timer expiry. timeInMs = (VT + offset) * 1000 |
CCR_T_ENDS_SESSION will only produce the expected results if the Quirks RA entity configuration property of the RA entity used to connect to the OCS is set to CONTINUE_SESSION_ON_NON_SUCCESS_UPDATE_RESULT. |
The Tcc Timer and Validity-Time timers are armed redundantly if the session is replicated. |
OCS Configuration
Description
Configuration name |
OCS Configuration |
---|---|
Applicable contexts |
SS7/SIP/Diameter service |
The OCS Configuration contains configuration for default OCS connections used when no specific OCS Destination Configuration has been set.
Whenever Sentinel has to interact with an OCS during the course of a session, it determines the connection to be used from an OCS configuration. First, it tries to find the OCS Destination Configuration referenced by the current value of the OcsId session state field. If no such OcsId is found in session state, Sentinel looks up the default OCS Configuration profile.
Configuration
The OCS configuration includes:
Parameters | Value | Description |
---|---|---|
DestinationRealm |
String |
The value to be used in the Destination-Realm-AVP for outgoing Credit-Control-Requests. |
DestinationHost |
String |
The value to be used in the Destination-Host-AVP for outgoing Credit-Control-Requests. |
OCS Destination Configuration
Description
Configuration name |
OCS Destination Configuration |
---|---|
Applicable contexts |
SS7/SIP/Diameter service |
The OCS Destination Configuration references specific OCS connections which can be used by Sentinel during the course of a session.
Whenever Sentinel has to interact with an OCS during the course of a session, it determines the connection to be used from an OCS configuration. First, it tries to find the OCS Destination Configuration referenced by the current value of the OcsId session state field. If no such OcsId is found in session state, Sentinel looks up the default OCS Configuration profile.
Configuration
The OCS Destination configuration includes:
Parameters | Value | Description |
---|---|---|
OcsId |
String |
The ID of this OCS Destination configuration. If the OcsId session state field is set and matches this field, then this OCS Destination configuration will be used when establishing the connection to the OCS. |
DestinationRealm |
String |
The value to be used in the Destination-Realm-AVP for outgoing Credit-Control-Requests to this OCS. |
DestinationHost |
String |
The value to be used in the Destination-Host-AVP for outgoing Credit-Control-Requests to this OCS. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
DiameterMediationOCSDestinationTable |
OCS Destination configuration |
SentinelSelectionKey:OcsId (for example, |
Diameter RA configuration profile
The Destination Realm and Destination Host in each OCS configuration must reference a Realm and Host defined in the diameter RA Peer and realm configuration.
TccTimer Configuration
Description
Configuration name |
Tcc Timer |
---|---|
Applicable contexts |
SS7/SIP/Diameter service |
The TccTimer configuration determines how the Sentinel-internal Tcc timer will be set when a CreditControlAnswer is received from the OCS.
Each time a CreditControlAnswer from the OCS is received by the mediation layer and subsequently passed on to the frontend layer (Diameter, SS7 or SIP service), Sentinel starts the Tcc timer which is supervising the responsiveness of the frontend/client. The duration of this timer is determined by the TccTimer configuration. It can be:
-
via a formula based on the Granted-Service-Units (GSU) AVP of the received CreditControlAnswer and configuration parameters for offsets and multipliers:
Duration = (GsuScaleFactorMultiplier * GSU)/GsuScaleFactorDivisor + GsuOffset
-
calculated via a formula based in a similar way on the Validity-Time (VT) AVP:
Duration = (VtScaleFactorMultiplier * VT)/VtScaleFactorDivisor + VtOffset
-
switched off completely
-
set to a constant value.
Configuration
The TccTimer configuration includes:
Parameters | Value | Description |
---|---|---|
DefaultTccTimeout |
Long |
The timer duration if USE_DEFAULT_TIMEOUT is set |
TccOption |
String |
one of NO_TCC, USE_DEFAULT_TIMEOUT, USE_VT, USE_GSU. Determines what option shall be used to calculate the Tcc timer duration. |
GsuScaleFactorMultiplier |
Integer |
Used when tccOption is set to USE_GSU. |
GsuScaleFactorDivisor |
Integer |
Used when tccOption is set to USE_GSU. |
GsuOffset |
Integer |
Used when tccOption is set to USE_GSU. |
VtScaleFactorMultiplier |
Integer |
Used when tccOption is set to USE_VT. |
VtScaleFactorDivisor |
Integer |
Used when tccOption is set to USE_VT. |
VtOffset |
Integer |
Used when tccOption is set to USE_VT. |
TccMinValue |
Long |
The outcome of any of the Tcc calculation options above is capped at this value; in other words, the Tcc timer duration cannot fall below this threshold value. |
The Tcc Timer is armed redundantly if the session is replicated. |
Configuration Common to SS7 and SIP Services
Configuration common to the SS7 and SIP services.
-
Activity Test Configuration — The Activity Test configuration determines when Sentinel will test for the continued liveness of a session that has had a period of inactivity.
Activity Test Configuration
Description
Configuration name |
Activity Test |
---|---|
Applicable contexts |
SS7 service, SIP service |
The Activity Test configuration determines when Sentinel will test for the continued liveness of a session that has had a period of inactivity.
Whilst a session is being monitored, Sentinel runs a timer where the duration is based on the Activity Test configuration. The timer is stopped each time Sentinel receives incoming traffic on the session. If the session is still active once the message has been processed, then the timer is restarted again. If the timer expires, Sentinel tests the activity/liveness/validity of the session using an appropriate protocol specific method. If this test fails, the session is terminated.
Configuration
The Activity Test configuration includes:
Parameters | Value | Description |
---|---|---|
TimerModeType |
String |
Either ‘chargingPeriodMultiple’ or ‘fixedDuration’. |
ChargingPeriodMultiple |
Decimal |
If the Timer Mode Type is set to ‘chargingPeriodMultiple’ and the call is chargeable, this value specifies a multiple of the charging period duration to use as the timer duration. |
FixedDuration |
Integer |
If the Timer Mode Type is set to ‘fixedDuration’, or the call is not chargeable, this value specifies a fixed timer duration in seconds. |
ActivityTestInvokeTimeout |
Integer |
Specifying the period of time to wait, in milliseconds, for a successful response to an Activity Test. If a successful response is not received within this time period, the Activity Test is regarded as failed. |
RandomPeriod |
Long |
Specifying the basis for an additional random period that will be added to the calculated duration. The concrete period added will be in the range of [0..RandomPeriod] |
Configuration Profile Naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
ActivityTestConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see Activity Test REST API.
Sentinel for Diameter
Description
Configuration name |
Diameter Sentinel |
---|---|
Applicable contexts |
Diameter service |
The Diameter Sentinel configuration contains general configuration properties for Sentinel’s Diameter-to-Diameter mediation service.
Configuration
The DiameterSentinel configuration includes:
Parameters | Value | Description |
---|---|---|
CreditFinalisationWaitingTime |
Long |
Number of milliseconds Sentinel will wait for receipt of a CCR-T after having received an ASA. If the CCR-T is not received within this timeframe Sentinel will send a synthesized CCR-T to the OCS to finalise the OCS-session and will simply terminate the client-session |
SuppressAbortSessionRequest |
Boolean |
When false, the Diameter service sends received Abort-Session-Request messages on to the Diameter CTF client peer; when true, the Diameter service responds immediately with an ASA, without sending the Abort-Session-Request to the CTF peer, closing the CTF session, and sending a final CCR-T with zero used service units. |
Sentinel for SIP
See Sentinel Common Configuration for configuration options applicable to all Sentinel services. |
-
Activity Test Configuration for SIP — Determines when Sentinel will test for the continued liveness of a SIP session that has had a period of inactivity.
-
Registrar Cassandra Subscriber Data Store Config — Configuration options for the Cassandra data store facade of the Sentinel Registrar.
-
Registrar Configuration — Configuration options for the Sentinel Registrar.
-
SDP Comparison for Rating Condition Change Determination — The SIP Sentinel SDP Media Codec Profile Table declares the codecs recognised by the SDP comparision function and the equivalence classes to which they belong.
-
SIP Sentinel Configuration — Defines the home network IDs and home country codes for a Sentinel selection key.
-
SIP Session Control Configuration — Determines how the SIP Sentinel service controls the duration of sessions.
-
SIP Third Party Call Configuration — Determines how the SIP Sentinel service behaves when initiating SIP sessions in response to a non-SIP triggering.
Activity Test Configuration for SIP
Description
Configuration name |
Activity Test |
---|---|
Applicable contexts |
SIP service |
The Activity Test configuration determines when Sentinel will test for the continued liveness of a SIP session that has had a period of inactivity.
During the active call period, Sentinel runs a timer where the duration is based on the Activity Test configuration. The timer is stopped each time Sentinel receives a message from the external SIP UAC/UAS; and if the call is still active then the timer is restarted again. If the timer expires, Sentinel sends re-Invite
messages to test that the connection to the external SIP UAC/UAS is still active. If the Activity Test fails, the session is terminated.
The configuration is in common with the SS7 service. See Activity Test Configuration. |
Registrar Cassandra Subscriber Data Store Config
Description
The major configuration table for Sentinel VoLTE Registrar is RegistrarConfigurationTable
and is scoped under Platform Operator Name
. The following table shows the major parameters to configure Sentinel Volte Registrar.
Field Name | Description |
---|---|
CassandraTTL |
The time-to-live (ms) for each row in the Cassandra database |
CassandraTracing |
Whether tracing should be enabled for Cassandra queries |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see Sentinel Registrar Cassandra Subscriber Data Store REST API.
Registrar Configuration Table
Description
The major configuration table for Sentinel VoLTE Registrar is RegistrarConfigurationTable
and is scoped under Platform Operator Name
. The following table shows the major parameters to configure Sentinel Volte Registrar.
Field Name | Description |
---|---|
AtcfUpdateTimeout |
Time (ms) to wait before we consider the ATCF update has failed. |
AtuSti |
The ATU-STI the registrar should report. |
CSRNPrefixForCorrelationMSISDN |
Prefix to strip from CSRN to get the C-MSISDN. |
ShHssDestinationHost |
HSS destination host to use in Sh requests. |
ShHssDestinationRealm |
HSS destination realm to use in Sh requests. |
ShOriginHost |
Origin host to use in Sh requests. |
ShOriginRealm |
Origin realm to use in Sh requests. |
SubscriberDataFacadeType |
Indicates the data storage type: |
WriteAuditCdr |
If audit CDRs should be written |
AuditCdrPrivateIdFilter |
A private-id for which an audit CDR should be written. This setting over-rides 'WriteAuditCdr'. Values of null or "" are ignored. |
CdrStreamName |
The cdr stream where audit CDRs are written |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see Sentinel Registrar REST API.
SDP Comparison for Rating Condition Change Determination
Description
Configuration name |
SDP Media Codec Profile Table |
---|---|
Applicable contexts |
SIP service |
The SIP Sentinel SDP Media Codec Profile Table declares the codecs recognised by the SDP comparision function and the equivalence classes to which they belong.
The table is a configurable map of encoding name to charging equivalence class. Sentinel SIP inspects the SDP rtpmap lines to provide the rtpmap encoding name for purposes of looking up the charging equivalence class by encoding name key.
Encoding names with the same equivalence class will be considered equal in terms of charging.
Configuration
The Sentinel SIP configuration includes:
Parameters | Description |
---|---|
EncodingName |
the encoding name; typically represented in an rtpmap attribute (for example, G723) |
EquivalenceClass |
the equivalance class to which this codec belongs (for example, Audio8KHzSingleChannel) |
Channels |
the number of channels for the media attribute encoding (for example, 1) |
ClockRate |
the clock rate for the media attribute encoding (for example, 8000) |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SDPMediaCodecProfileTable |
SDP Media Codec equivalance class configuration |
SentinelSelectionKey + EncodingName/ClockRate/Channels (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Service Configuration REST API.
SIP Sentinel Configuration
Description
Configuration name |
Sip Sentinel Configuration |
---|---|
Applicable contexts |
SIP service |
The SIP Sentinel Configuration defines the home network IDs and home country codes for a Sentinel selection key.
An example usage of this configuration is where the Sentinel SIP service feature DetermineIfRoamingFeature
uses the HomeNetworkID
to determine if a SIP Session is a roaming scenario.
Configuration
The Sentinel SIP configuration includes:
Parameters | Description |
---|---|
HomeNetworkIDs |
Indicates the home network IDs for a network or platform operator as defined by the Sentinel selection key. |
MaxEventDeliveryCycles |
Indicates maxinum number of event delivery cycles. Used to prevent infinite loops of local events and abort session when it is exceeded. |
IcscfUri |
Indicates the SIP URI of the I-CSCF. Used when the AS needs to communicate directly with the I-CSCF. |
ISOCode |
Indicates the ISO country code for a network or platform operator as defined by the Sentinel selection key. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SipSentinelConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Service Configuration REST API.
SIP Session Control Configuration
Description
Configuration name |
SIP Session Control |
---|---|
Applicable contexts |
SIP service |
The SIP Session Control Configuration determines how the SIP Sentinel service controls the duration of sessions.
Configuration
The default behaviour of Sentinel is to: control session duration via SLEE timers.
If the configuration is missing or invalid, Sentinel defaults to ‘notControlled’ for the SipSessionControlMethod
.
The SIP session control configuration includes:
Parameters | Description |
---|---|
SipSessionControlMethod |
Indicates how sessions should be controlled by the SIP Sentinel service. This may be set to ‘notControlled’ (if the service should not control session duration), or ‘controlViaSleeTimer’ (if session duration will be managed by SLEE timers). |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SipSessionControlMethodTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Session Control REST API.
SIP Third Party Call Configuration
Description
Configuration name |
Sip Third Party Call Configuration |
---|---|
Applicable contexts |
SIP service |
The SIP Third Party Call Configuration determines how the SIP Sentinel service behaves when initiating SIP sessions in response to a non-SIP triggering, e.g. SIP sessions set up via HTTP requests.
Configuration
The SIP Third Party Call configuration is mostly used to determine the form of the INVITEs sent when a third party SIP session is initiated.
The SIP Third Party Call configuration includes:
Parameters | Value | Description | ||
---|---|---|---|---|
ExpiresHeader |
Integer |
to use for the Expires header. |
||
MaxForwardsHeader |
Integer |
to use for the MaxForwards header. |
||
RouteHeaderURI |
String |
contains the URI to use for the Route header.
|
||
SupportedHeader |
String |
to use for the Supported header. |
||
UserAgentHeader |
String |
to use for the User Agent header. |
||
TransportAsEnum |
The Transport type to use. This may currently be ‘udp’ or ‘tcp’. |
|||
IsSipURIUsed |
Boolean |
A value determining whether the SIP URI configuration value is used. |
||
SipURIDomain |
String |
A value containing the SIP URI, if used. (See IsSipURIUsed boolean above). |
||
NoAnswerApplicationTimer |
Integer |
A value determining how long before the ‘no answer’ timer will fire. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SipThirdPartyCallConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SIP Third Party Call REST API.
Sentinel for SS7
See Sentinel Common Configuration for configuration options that are applicable to all Sentinel services. |
-
Activity Test Configuration for SS7 — The Activity Test configuration determines when Sentinel will test for the continued liveness of a dialog that has had a period of inactivity.
-
Call Information Report Configuration — The Call Information Report configuration determines if Sentinel will request Call Information Reports from the network for an SS7 first-party call and if call alerting time will be chargeable for Mobile Originating calls.
-
Relay Dialog Configuration — The Relay Dialog Configuration defines the destination SCCP address of the external network element for relayed dialogs.
-
Session Control Configuration — The Session Control Configuration determines how the charging shall be controlled during the session and whether Apply Charging Reports or Call Information Reports shall be used when the charging session to the OCS is finalised.
-
SS7 Call Configuration — The SS7 call configuration defines properties related to event requests and 3rd party call setup.
-
SS7 Diameter Configuration — The SS7 diameter configuration specifies the method used for event based charging scenarios.
Activity Test Configuration for SS7
Description
Configuration name |
Activity Test |
---|---|
Applicable contexts |
SS7 service |
The Activity Test configuration determines when Sentinel will test for the continued liveness of a dialog that has had a period of inactivity.
During the active call period, Sentinel runs a timer where the duration is based on the Activity Test configuration. The timer is stopped each time Sentinel receives a message from the MSC such as an Apply Charging Report; and if the call is still active then the timer is restarted again. If the timer expires, Sentinel sends an Activity Test operation on the dialog to test that the connection to the MSC is still active. If the Activity Test fails, the session is terminated.
The configuration is in common with the SIP service. See Activity Test Configuration. |
Call Information Report Configuration
Description
Configuration name |
Call Information Report |
---|---|
Applicable contexts |
SS7 service |
The Call Information Report configuration determines if Sentinel will request Call Information Reports from the network for an SS7 first-party call and if call alerting time will be chargeable for Mobile Originating calls. Call Information Reports can be used for more accurate charging as they’re produced directly by the MSC/SSF controlling the call and are therefore not influenced by network or external resource latencies in the service.
Any Call Information Reports received by Sentinel are also included in the CDR produced for the call.
Configuration
The default behaviour of Sentinel is:
-
to request Call Information Reports from the network for both originating and terminating call parties
-
not to charge for call alerting time.
A-party or B-party Call Information Reports can be suppressed in order to reduce network traffic. |
In the case where the terminating party report is not suppressed, Sentinel can use this report when finalising the amount of credit consumed by the subscriber. For a Mobile Originating (MO) call this report can also be used to charge the subscriber for the call alerting time.
The Call Information Report configuration includes:
Parameters | Value | Description |
---|---|---|
SuppressOriginatingPartyCallInformationReport |
Boolean |
Boolean, if true, stops Sentinel from sending a Call Information Report request for the originating call party. |
SuppressTerminatingPartyCallInformationReport |
Boolean |
Boolean, if true, stops Sentinel from sending a Call Information Report request for the terminating call party. |
CallAlertingTimeIsChargeable |
Boolean |
Boolean, if true, will cause Sentinel to also charge the subscriber for call alerting time (MO calls only). This option can only be set to true if |
CallAlertingTimePrereservationSeconds |
The number of seconds of credit to pre-reserve in the initial credit reservation if call alerting time is chargeable. This value should be set to the maximum expected alerting time. This option is only relevant if |
|
CirTimeout |
The number of milliseconds to wait for CIRp before timeout and continuing the session. May be set between range 500 - 10000, with a default of 3000. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
CallInformationReportConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see Call Information Report REST API.
Handling GSM Call Forwarding Active on MTC
Identifying GSM call forwarding active
Sentinel sets the LatestEventReportIndicatesCallForwarded
session state variable to true if tBusy is received on an MT call with ‘call forwarded’ information element included in the event report.
For more information see Noldus 4.3.2.2 Call Forwarding Not Reachable — MS Switched Off. (Refer to Noldus footnote below.) |
Handling GSM call forwarding active
The typical operator configuration is to send CAN + CUE when call forwarding is active on an MT call. To configure this behaviour in Sentinel, logic similar to the follow must be included in the EndSession feature execution point:
if session.LatestEventReportIndicatesCallForwarded { run ContinueAndClose } else { run ReleaseAndClose }
Relay Dialog Configuration
Description
Configuration name |
Relay Dialog Configuration |
---|---|
Applicable contexts |
SS7 service |
The Relay Dialog Configuration defines the destination SCCP address of the external network element for relayed dialogs.
Configuration
The Relay Dialog Configuration includes:
Parameters | Description |
---|---|
RelayDestinationSccpAddress |
The destination SCCP address string of the external network element for relayed dialogs |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
RelayDialogConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, OpenCloud::::) |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Relay Dialog ConfigurationProfile REST API.
SS7 Call Configuration
Description
Configuration name |
SS7 Call Configuration |
---|---|
Applicable contexts |
SS7 service |
The SS7 call configuration defines properties related to event requests and 3rd party call setup.
Configuration
The SS7 Call Configuration includes:
Parameters | Description |
---|---|
NoAnswerApplicationTimer |
time (seconds) to use for the No Answer application timer when requesting event reports from the MSC |
ThirdPartyCallSetupGmscAddress |
SCCP address string of the GMSC used when setting up third party calls. |
ThirdPartyCallSetupScfAddress |
(optional) SCCP address string of the SCF used when setting up third party calls. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SS7CallConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Call Configuration REST API.
SS7 Diameter Configuration
Description
Configuration name |
SS7 Diameter Configuration |
---|---|
Applicable contexts |
SS7 service |
The SS7 diameter configuration specifies the method used for event based charging scenarios.
Configuration
The SS7 Diameter Configuration includes:
Parameters | Description |
---|---|
EventChargingMethod |
One of:
|
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
DiameterConfigurationTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Diameter Configuration REST API.
Session Control Configuration
Description
Configuration name |
Session Control |
---|---|
Applicable contexts |
SS7 service |
The Session Control Configuration determines how the charging shall be controlled during the session and whether Apply Charging Reports or Call Information Reports shall be used when the charging session to the OCS is finalised.
Configuration
The default behaviour of Sentinel is to use Apply Charging Reports:
-
for controlling the charging for the duration for the session
-
when the CCR-T is sent to the OCS to finalise the credit control session.
The Session Control configuration includes:
Parameters | Description |
---|---|
SessionControlMethod |
Whether charging during the session shall be performed via internal SLEE Timer, via Apply Charging Reports from the MSC, or via Call Information Report once at the very end of the session. Valid options are:
|
PreferredEndCallChargingEvent |
Whether to use Apply Charging Report or Call Information Report for credit finalisation, in the case where both these events are available at call end. Valid options are: ‘useACR’, ‘useCIRp’. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SessionControlMethodTable |
Service configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The configuration can be provisioned using the Sentinel machine provisioning API — see SS7 Session Control REST API.
Sentinel Components
-
Resource adaptors — Sentinel comes with several resource adaptors that are used by features bundled with Sentinel and may also be used by new features added with the SDK.
-
Features — Sentinel comes with many existing features that can be used in feature execution scripts.
-
Utility components — Sentinel includes a number of utility software components that are used by features bundled with Sentinel and may also be used by new features added with the SDK.
-
Promotions — features in the mediation layer and related to promotions.
-
Mappers — Sentinel comes with many mappers that can be configured at various mapping points and scopes.
-
SLEE usage parameter sets
Resource Adaptors
In the SLEE component model, a resource adaptor (RA) provides the interface between the application and the network. It adapts the physical resource to events which the SLEE can send and receive. Sentinel makes use of a number of resource adaptors, for purposes ranging from database connections to network integration.
OpenCloud Resource Adaptors used by Sentinel
Sentinel may install various Resource Adaptors and configure RA entities. This actual RAs and RA entities installed and configured varies based on which components are used.
The Resource Adaptors Entities may include:
-
diameterro-0 — adapts outbound sessions with multiple OCSes; speaks Diameter Gy and Ro
-
diameterro-1 — adapts inbound sessions with multiple Diameter clients; speaks Diameter Gy and Ro
-
cgin — adapts inbound CAP sessions for CAMEL IN integration
-
http — adapts inbound http triggers for things such as 3rd-party call initiation
-
cdr — for writing of call detail records (or 3GPP Charging Data Records)
-
correlation-ra — maps an item of data to a unique ID for lookup; currently used for call reorigination
-
dbquery-0 — manages relational database connections through JDBC
-
hector — manages Cassandra connections
-
uid — generates unique IDs for miscellaneous use by Sentinel features and services
-
sip-sis-ra — adapts inbound SIP sessions for SIP network integration
All these RAs can be viewed and configured using the Sentinel Element Manager. Future releases of Sentinel will have resource adaptors to support other protocols, such as Diameter CCA. Customers can also add their own resource adaptors, using the Sentinel SDK. |
CGIN RA
The Sentinel SS7 service uses the CGIN RA for SS7 integration. For details on configuring the CGIN RA, see the CGIN documentation.
CDR Resource Adaptor
CDR resource adaptor entities
The Sentinel installer creates a CDR resource adaptor entity called cdr
. This resource adaptor entity is used by all Sentinel services.
CDR resource adaptor configuration
Refer to the CDR RA Documentation for more information about the CDR RA. |
The cdr
resource adaptor entity is configured to use the cdr-stream
profile of the CdrStreamConfiguration
profile table by default.
The output behaviour of the CDR resource adaptor can be customised by modifying this profile in accordance with the CDR RA Documentation.
Sentinel configuration requirements
The cdr
RA entity must be configured with CdrFileType=Binary
.
For more information about CDRs in the Sentinel platform, refer to:
-
Working with CDRs section of this administration guide to learn about the content of Sentinel CDRs.
-
Customising CDRs in the Extending Sentinel with the SDK guide to learn how to customise the format of the CDRs that Sentinel creates, as well as customising the data included in the CDRs.
CGIN Resource Adaptor
CGIN resource adaptor entities
Refer to the CGIN documentation for more information about the CGIN resource adaptor. |
There are two CGIN resource adaptor entities in Sentinel:
-
cginra
— for CAP dialogs -
cginmapra
— for MAP dialogs.
CAP CGIN RA entity (cginra
)
The cginra
RA entity is used for initiating and third party CAP dialogs.
MAP CGIN RA entity (cginmapra
)
The cginmapra
is used by features to initiate MAP dialogs.
Configuring the local-sccp-address
Inter-operator MAP requests require an SSN of 147. The local-sccp-address
of the cginmapra
RA entity must be configured with sccp address including SSN=147.
Configuring the default-activity-timeout
By default the default-activity-timeout
is set to 1800000 (30 minutes) by default. This is too long for the MAP features in Sentinel. It is recommended to set it to a shorter value in the cginmapra
RA entity.
Set default-activity-timeout
high enough so that the MAP invoke timeouts will be first, taking into account the granularity of signalware/telesys timers, but low enough that hung dialogs do not accumulate, which will cause the RA entity to run out of dialog identifiers while waiting for activity timeout to terminate the hung dialogs.
For instance, if Sentinel MAP features have a maximum invoke timeout of 5 seconds then 10 seconds (10000) would be sufficient for the default-activity-timeout
.
Customising the CGIN RA entities used by Sentinel
It may be necessary to configure multiple RA entities to address specific operator network configuration requirements. Additional CGIN RA entities may be used in Sentinel for this purpose. Sentinel has the following link binding by default:
Link name | Default Bound RA entity |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
A custom CGIN RA entity may be used by creating, configuring and binding the new RA entity.
Correlation Resource Adaptor
Correlation RA Overview
What is the Correlation RA?
There are situations where Sentinel must correlate two independent sessions. The Correlation RA allocates a correlation ID with the first session, that can then be used to process a second session. The Sentinel service may associate a blob of data with an allocated correlation ID.
The Correlation RA is used for two cases in Sentinel:
-
Playing an announcement using ETC/ARI. In this case, the Correlation RA is used to allocate the correlation ID that is included in the ETC message, which is then present in the ARI message sent on a second dialog.
-
Roaming Re-origination Feature. In this case, the Correlation RA is used to allocate a special routing address that is used in the Connect message on the initial dialog. A second re-originated dialog will be received by Sentinel for this special address. Sentinel uses the Correlation RA on the re-originated dialog to retrieve data that was associated with the special address via the first dialog. The associated data includes relevant details from the InitialDP of the initial dialog.
Below are procedures for [configuration], [monitoring], and [using].
Configuring a Correlation RA entity
A Correlation RA entity configuration consists of:
The following diagram shows the Reorigination Correlation RA entity.
The Correlation resource adaptor supports live re-configuration, so the administrator may update the configuration properties of a Correlation resource adaptor entity that has already been created. |
Correlation RA configuration properties
The Correlation RA configuration properties are:
Name |
Type |
Description |
|
String |
The SLEE profile table with an RA configuration profile for this RA entity. |
|
String |
The SLEE profile in the ConfigProfileTable with configuration for this RA entity. |
|
String |
The SLEE profile table with correlation ID pool definitions for this Correlation RA entity. |
For example, the Reorigination Correlation RA entity has the following configuration:
[Rhino@localhost (#9)] listraentityconfigproperties reorigination-correlation-ra Configuration properties for resource adaptor entity reorigination-correlation-ra: ConfigProfile (java.lang.String): ReoriginationCorrelationConfigProfile ConfigProfileTable (java.lang.String): CorrelationConfigTable CorrelationIdPoolTable (java.lang.String): ReoriginationCorrelationIdPools
Correlation RA entity configuration profile
The Correlation RA configuration profile has the following attributes:
Name |
Type |
Description |
|
Int |
The maximum time (measured in ms) the Correlation RA will spend trying to allocate a correlation ID. |
|
Int |
The maximum time (measured in ms) that an active correlation ID is considered to be still valid. |
|
Int |
How many threads the Correlation RA entity should use. |
For example, the Reorigination Correlation RA entity has the following configuration:
[Rhino@localhost (#8)] listprofileattributes CorrelationConfigTable ReoriginationCorrelationConfigProfile CorrelationIDExpiryTimerPeriod=55000 NumberOfThreadPool=5 RequestTimeout=5000
Correlation RA entity ID pools configuration
Each Correlation RA entity has one or more correlation ID pools.
-
a default ID pool (optional)
-
a set of named ID pools. Each named ID pool is identified by a set of prefixes for choosing/selecting the ID pool. From the Correlation RA standpoint, the prefixes can be any address string. The client to the RA provides an address that the RA uses via a longestPrefix match address list search to select the pool to use.
Each correlation ID pool is defined in a SLEE profile in an ID pools profile table. There is one correlation ID pools table per Correlation RA entity.
The correlation resource adaptor entity will raise an alarm if there are no correlation ID pools configured, or if there are configuration errors with the correlation ID pools. |
|
An array of address prefixes that corresponds to this pool. The default pool has an empty addressPrefixes array. |
|
An array of node IDs for which this pool has correlation IDs. |
|
If true, configure this ID pool with a pre-configured set of correlation IDs, else derive the correlation IDs. |
|
The preconfigured set of correlation IDs per node (delimited with ‘:’). |
|
The minimum correlation ID value used in the cluster. 0 to maxCorrelationIDInCluster |
|
The maximum correlation ID value used in the cluster. 0 to (10^18-1) |
|
The number of digits the correlation ID should have. Minimum of number of digits in maxCorrelationIDInCluster to 18 maximum. |
|
The number of correlation IDs that can be used for each node in the cluster. |
There are two possible configuration options for correlation ID pools.
A prescribed set of IDs for each node
Defines the prescribed correlation IDs for each node in the following way:
-
NodeIds[0]
—PreconfiguredCorrelationIdSet[0]
which is a ‘:’ separated string containing all the correlation IDs forNodeIds[0]
-
NodeIds[1]
—PreconfiguredCorrelationIdSet[1]
which is a ‘:’ separated string containing all the correlation IDs forNodeIds[1]
-
etc.
‘:’ is used as a separator and not to specify a range. For example, to specify IDs 123 , 124 , 125 and 126 use a value of 123:124:125:126 . |
A range of correlation IDs (min, max) for each node
Defines the range of values used in each node in conjunction with the NodeIds
attribute in the following way:
-
The node whose identifier is
NodeIds[i]
has a range of values ofCorrelationIDRangePerNode[i]
-
Each cluster has a range of CorrelationIDs defined by:
[MinCorrelationIDInCluster, MaxCorrelationIDInCluster]
These values are allocated to the different cluster nodes in the following way:
-
NodeIds[0]
—[MinCorrelationIDInCluster … MinCorrelationIDInCluster + CorrelationIDRangePerNode[0]]
-
NodeIds[1]
—[MinCorrelationIDInCluster + CorrelationIDRangePerNode[0] + 1 … MinCorrelationIDInCluster + +CorrelationIDRangePerNode[0] + 1 + CorrelationIDRangePerNode[1]]
-
etc.
The maximum number of correlation IDs defined in the range is 1,000,000.
Provisioning Interfaces
The Correlation RA configuration and ID pools are provisioned using the Sentinel REST API or web interface.
Monitoring Correlation RA entity statistics
Each Correlation RA entity collects the following statistics that may be monitored via the Rhino statistics client.
Counters
Name | Description |
---|---|
|
Count of correlation IDs which have been requested via |
|
Count of correlation queries which returned immediately (synchronous delivery) as the local RA had the data available. |
|
Count of correlation queries which did not return immediately (asynchronous delivery) as the local RA did not have the data available. |
|
Count of correlation queries which required delivering data to another correlation RA instance. |
|
Count of correlation queries which could not be remotely delivered as the destination RA for a correlation ID was unknown. |
The count correlationGets should equal the sum of localGets + remoteGets . |
These statistics can use used to create threshold-based alarms.
Using the Correlation RA
A feature uses the Correlation RA by invoking methods on the provider interface.
-
To store data for correlation, a feature calls either the
getNewCorrelationID(byte[] correlationData)
or thegetNewCorrelationID(String associatedAddress, byte[] correlationData)
method on theCorrelationProvider
. These methods will store the correlation data locally, and return an identifier String (the correlation ID) which can later be used to access the data from elsewhere. This operation will flag the returned ID as ‘in use’ until it is freed (on query) or expires (on timeout). -
To query the correlation data (for example, from another session) a feature calls the
getCorrelationData(String correlationId)
method on theCorrelationProvider
. This returns aCorrelationResult
which will either contain the requested data (if it is available locally), or a flag indicating that the data is not available locally. -
If the data is available locally then it can be immediately access via the [synchronous] API call CorrelationResult.getCorrelationData()
-
If the data is only available for asynchronous delivery,
CorrelationResult.isAvailableAsynchronously()
will be true, andCorrelationResult.getCorrelationData()
will return null. See the following section for how to handle [asynchronous] result delivery.
CorrelationProvider interface:
public interface CorrelationProvider { /** * Creates an activity used for async requests. * * @return * @throws StartActivityException */ public CorrelationActivity createActivity() throws StartActivityException; /** * This returns immediately and will return a CorrelationResult. This will either contain the correlation data if this is available on * this node or else will contain a flag that says this is only available on another node. In the later case you should then call an * async request to get the data. * * @param correlationId the Correlation ID * @return the CorrelationResult * @throws UnknownCorrelationIdException if the correlation id is not known in this pool * @throws NoDataFoundException if there is no data found for the correlation id specified * @throws CorrelationIDExpiredException if the correlation id has expired */ public CorrelationResult getCorrelationData(String correlationId) throws UnknownCorrelationIdException, NoDataFoundException, CorrelationIDExpiredException; /** * This will return the CorrelationResult. This method will block and only return when the CorrelationResult is available. If the data is only * available on a remote node this may take some time to return. This should only be used if synchronous behavior is required. * * @param correlationId * @return * @throws CorrelationRequestException */ public CorrelationResult getCorrelationDataSynchronously(String correlationId) throws CorrelationRequestException; /** * Request a new Correlation ID from the default pool * * @param correlationData data to be correlated * @return a new Correlation ID with a correlation name that is not being used in any other session * @throws NoAvailableEntries if there is any problem accessing data */ public String getNewCorrelationID(byte[] correlationData) throws NoAvailableEntriesException; /** * Request a new Correlation ID String from a correlation id pool associated with an address. * * @param associatedAddress an address that the correlation RA will use to select a pool from which to return a correlation id * @param correlationData data to be correlated * @return a new Correlation ID String with a correlation name that is not being used in any other session * @throws NoAvailableEntries if there is any problem accessing data */ public String getNewCorrelationID(String associatedAddress, byte[] correlationData) throws NoAvailableEntriesException; /** * Determine if an id is a correlation id we know about * @param possibleCorrelationId an id we wish to check to see if it is a correlation id * @return true iff this id is a correlation id we know about */ public boolean isValidCorrelationId(String possibleCorrelationId); }
CorrelationResult interface:
public interface CorrelationResult { /** * Contains correlation data associated with the requested correlation ID or null if the * data is only available asynchronously. * * @return */ public byte[] getCorrelationData(); /** * String containing requested correlation ID. * * @return the String containing the Correlation ID */ public String getCorrelationId(); /** * If the correlation data is not available locally but is available via an asynchronous call. * * An asynchronous call can be made by creating a CorrelationActivity with the provider and then making * the asynchronous call on the CorrelationActivity. * * @return */ public boolean isAvailableAsynchronously(); }
CorrelationActivity interface:
public interface CorrelationActivity { /** * Request the correlation data associated with the specified Correlation ID. * * The result will be fired as a {@link CorrelationResultEvent} * event on this activity. Failed queries will be fired as a {@link CorrelationFailureEvent}. * * @param correlationId The Correlation ID */ public void requestCorrelationData(String correlationId); }
Handling synchronous results
Synchronous queries occur when the RA which is queried is also storing the queried information. In these circumstances, the data is included in the returned CorrelationResult from a query. The following example demonstrates how to handle synchronous return results:
private void syncRequest(byte [] correlationData) { // // Store some data against a new correlation ID. // String correlationId; try { correlationId = corrProvider.getNewCorrelationID(correlationData); } catch (NoAvailableEntriesException e) { // ... handle exception ... return; } // ... do work until correlation data is required again. // In practice, the following will usually be done in another transaction which only knows the correlation ID. // It is done inline here for the sake of simplicity. // // Query the saved correlation data. // try { CorrelationResult result = corrProvider.getCorrelationData(correlationId); byte [] corrData = result.getCorrelationData(); if (corrData != null) { // Do something with data } else { if (result.isAvailableAsynchronously()) { // ... Here we could optionally proceed with an asynchronous correlation data query. See following example. } } } catch (UnknownCorrelationIdException e) { // ... handle exception ... return; } catch (NoDataFoundException e) { // ... handle exception ... return; } catch (CorrelationIDExpiredException e) { // ... handle exception ... return; } }
Handling asynchronous results
Asynchronous result handling is required when the correlated data for the requested ID is only available from a non-local Correlation RA (that is, on a different Rhino node). After the correlation data is requested, the result is returned in a CorrelationEvent which is delivered to the service. This CorrelationEvents must be explicitly handled with a SLEE event handler.
Requesting correlation data asynchronously is done as follows:
-
Create a new correlation activity using
CorrelationProvider.createActivity()
-
Get an
ActivityContextInterface
object for the activity. -
Attach the SBB local object to the ACI.
-
Send the request using the
requestCorrelationData(String)
method on the activity. -
Handle the result in an event handler for the
com.opencloud.slee.resources.correlation.CorrelationResultEvent
event. -
Handle failures in an event handler for the
com.opencloud.slee.resources.correlation.CorrelationFailureEvent
event.
The follow example demonstrates the handling an asynchronous correlation query:
private void asyncRequest(String correlationId) { try { CorrelationActivity corrActivity = corrProvider.createActivity(); ActivityContextInterface corrAci = corrACIFactory.getActivityContextInterface(corrActivity); corrAci.attach(getSbbLocalObject()); corrActivity.requestCorrelationData(correlationId); } catch (StartActivityException e) { // ... handle exception ... } } public void onCorrelationResult(CorrelationResultEvent result, ActivityContextInterface aci) { aci.detach(getSbbLocalObject()); byte [] corrData = result.getCorrelationData() // ... do something with the data ... } public void onCorrelationFailure(CorrelationFailureEvent failure, ActivityContextInterface aci) { aci.detach(getSbbLocalObject()); // ... handle failure ... }
Javadoc API
Javadoc for the Correlation RA is available here: Sentinel Correlation RA API 1.0.
DBQuery Resource Adaptor
DBQuery resource adaptor entities
The Sentinel installer creates a DBQuery resource adaptor entity called dbquery-0
. The dbquery-0
resource adaptor entity is configured to connect to a local relational database.
See the DBQuery RA documentation for more about the DBQuery RA. |
DBQuery database type
Before installing Sentinel, you can configure the DBQuery RA database type by adding the db.type
property to sdk.properties
or sdk.local.properties
. Valid options for this property are postgres
, oracle
, and timesten
. The Sentinel installation process compiles the DBQuery RA with the appropriate JDBC driver for that db.type
.
Many features provided with Sentinel, and new features developed with the Sentinel SDK, may use the DBQuery resource adaptor.
Features that may use the DBQuery resource adaptor
The following features provided with Sentinel may be configured to use the DBQuery resource adaptor:
-
Scripted Promotions Feature — may be configured to use a database to store the promotions buckets
-
Friends and Family Feature — may be configured to fetch friends and family data from a relation database
-
Home Zone Feature — may be configured to fetch home zone data from a relation database
-
Subscriber Data Lookup Feature — may be configured to fetch subscriber data from a relation database
See Provisioning Configuration and Provisioning Data in TimesTen for how to manage data in an external database using the Sentinel Element Manager. |
Diameter Resource Adaptor
Diameter resource adaptors
There are currently three diameter resource adaptor entities in Sentinel:
-
diameterro-0
— for OCS connections -
diameterro-1
— for client connections -
diameter-sentinel-internal
— used as a message factory by mappers in Sentinel’s Diameter mediation layer.
diameterro-1
is available only to the Sentinel Diameter service. diameterro-0
and diameter-sentinel-internal
are used by all Sentinel services.
Session timeouts
The default Sentinel configuration has a 10 minute timeout for diameterro-1
(client) and 13 minute timeout for diameterro-0
(OCS). This configuration ensures that if there are events dropped due to overload, the ActivityEndEvents fired on the RA entities will cause the client side to end first. The 3 minute gap is set to allow time for all the ActivityEndEvents on the client side to be delivered before any are fired on the OCS side due.
Diameter version configuration
The Diameter version spoken on the network to either the OCS or the Diameter client can be configured by setting two properties in the relevant resource adaptor. To change the version used in the OCS dialog, diameterro-0
should be reconfigured. Likewise, to change the version used on the client dialog (Sentinel Diameter
only), diameterro-1
should be reconfigured. The Diameter version used by diameter-sentinel-internal
should not be reconfigured, as it is tied to the internal implementation of Sentinel.
When reconfiguring the Diameter version of either of the external resource adaptors, two fields must be set - Slee3GPPVersion
and 3GPPVersion
. Slee3GPPVersion
should always be set to Vcb0
. This is the version of Diameter used by Sentinel internally. 3GPPVersion
can be set to the desired protocol version to be used over the network, ranging from V820
to Vcb0
.
Alternatively, the Diameter version spoken to the OCS can be set during installation.
OCS load balancing
Load balancing of OCS connections can be achieved using the diameterro-0
resource adaptor entity, by configuring multiple hosts within a realm and addressing messages to the realm only (not the host).
Example configuration for OCS load balancing
This example shows the diameterro-0
resource adaptor entity configured to load balance across two OCS nodes.
-
The resource adaptor entity config properties show that it is configured using a profile in the
DiameterConfig
table. -
The config profile shows that the known OCS nodes are named
diameterserver
anddiameterserver1
. -
The routing priority metric for both nodes is set to 1 to indicate equal priority, meaning that load balancing will be applied.
-
The
DiameterMediationOcsConfigurationTable
configuration profile at platform scope does not specify a host, so all outbound Diameter messages will not have the destination host set, but only the realm. This means the resource adaptor entity will round robin among all the hosts configured for the specified realm (in this caseopencloud
). However this behaviour can be overridden on a per-session basis by setting theOCSId
field in session state using, for example,SubscriberDataLookup
or a custom feature added with the SDK.
The following rhino-console
session shows the complete configuration:
[Rhino@localhost (#0)] listraentityconfigproperties diameterro-0 Configuration properties for resource adaptor entity diameterro-0: 3GPPVersion (java.lang.String): Vcb0 BaseMessageApplicationID (java.lang.Integer): 0 CertificateKeyStore (java.lang.String): CertificateKeyStorePassword (java.lang.String): CipherSuites (java.lang.String): ConfigurationProfile (java.lang.String): DiameterConfig/DiameterRoOcsProfile ConfigurationProfilePollTime (java.lang.Integer): 0 ConnectTimeout (java.lang.Long): 30000 ExtendedTransportConfiguration (java.lang.String): ExtensionAvpSet (java.lang.String): DiameterExtensions/Charging ExtensionAvpSetPollTime (java.lang.Integer): 0 ExtensionMessages (java.lang.Boolean): true FireToServiceID (java.lang.String): ForceReconnectAfterDPR (java.lang.Boolean): true IOClientWorkers (java.lang.Integer): 0 IOServerWorkers (java.lang.Integer): 0 Quirks (java.lang.String): ReconnectDelay (java.lang.Long): 5000 RequestTimeout (java.lang.Long): 2000 SSLSessionTimeout (java.lang.Integer): 0 ServiceContextId (java.lang.String): session@opencloud.com SessionTimeout (java.lang.Long): 780000 SupportedVendorIds (java.lang.String): ThreadPoolSize (java.lang.Integer): 0 TrustKeyStore (java.lang.String): TrustKeyStorePassword (java.lang.String): WatchdogTimeout (java.lang.Long): 30000 WorkQueueSize (java.lang.Integer): 0 slee-vendor:com.opencloud.rhino_max_activities (java.lang.Integer): 0 slee-vendor:com.opencloud.rhino_replicate_activities (java.lang.String): none [Rhino@localhost (#1)] listprofileattributes DiameterConfig DiameterRoOcsProfile Action=LOCAL AllowUnknownPeers=true ApplicationId=0 ApplicationVendorId=0 EnableMultiNodeConfig=false Host=diameterclient ListenAddress={null} NodeIDs={null} PeerAddress=127.0.0.1 PeerConnectAtStartup=true PeerHost=diameterserver PeerPort=3868 PeerTable=<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE peer-table PUBLIC "-//Open Cloud Ltd.//DTD Diameter Peer Table Configuration 1.1.0//EN" "http://www.opencloud.com/dtd/diameter-peer-table-1.1.0.dtd"> <peer-table allowUnknownPeers="true"> <!-- If allowUnknownPeers is true, then any peer may connect to this node. If allowUnknownPeers is not true, peers connecting to this node as clients must be defined in the Peer Table.--> <peer connectAtStartup="true"> <hostname>diameterserver</hostname> <!-- Will accept connections from this peer --> <port>3868</port> <address>127.0.0.1</address> <tls>false</tls> <option> <option-name>TCP_NODELAY</option-name> <option-type>java.lang.Boolean</option-type> <option-value>true</option-value> </option> </peer> <peer connectAtStartup="true"> <hostname>diameterserver1</hostname> <!-- Will accept connections from this peer --> <port>3868</port> <address>192.168.2.100</address> <tls>false</tls> <option> <option-name>TCP_NODELAY</option-name> <option-type>java.lang.Boolean</option-type> <option-value>true</option-value> </option> </peer> </peer-table> PeerUri={null} PerNodeHosts={null} PerNodeListenAddresses={null} PerNodePorts={null} PerNodeSecondaryAddresses={null} Port=3869 Product=OpenCloud Diameter ProductVendorId=19808 Realm=opencloud RealmTable=<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE realm-table PUBLIC "-//Open Cloud Ltd.//DTD Diameter Realm Table Configuration 1.1//EN" "http://www.opencloud.com/dtd/diameter-realm-table-1.1.dtd"> <realm-table> <realm> <realm-name>opencloud</realm-name> <application-route> <application> <application-id>4</application-id> <!-- 4=CCA --> <vendor-id>0</vendor-id> <!-- optional, default is zero --> </application> <action>LOCAL</action> <peer-ref> <hostname>diameterserver</hostname> <metric>1</metric> </peer-ref> <peer-ref> <hostname>diameterserver1</hostname> <metric>1</metric> </peer-ref> </application-route> </realm> <default-route> <peer-ref> <hostname>diameterserver</hostname> <metric>1</metric> </peer-ref> <peer-ref> <hostname>diameterserver1</hostname> <metric>1</metric> </peer-ref> </default-route> </realm-table> SecondaryAddresses={null} Transports=tcp UseTLS=false ValidDN={null} Version=1 [Rhino@localhost (#2)] listprofileattributes DiameterMediationOcsConfigurationTable UNSET:::: DestinationHost={null} DestinationRealm=opencloud TimeoutDuration=2000
SIP SIS Resource Adaptor
SIP SIS resource adaptor entity (sip-sis-ra)
Refer to the SIS documentation for more information about the SIP SIS resource adaptor. |
The sip-sis-ra
is used for initiating and third-party SIP dialogs for both the Sentinel SIP Service and the Sentinel Subscription Service.
Link name | Default Bound RA entity |
---|---|
|
|
Sentinel and SIS
The sip-sis-ra
interacts directly with the SIS, which is configured with compositions for the Sentinel SIP Service. The Sentinel SIP Service is triggered by all events from the SIP SIS RA entity. This behaviour is configurable. See the SIS documentation for more information about compositions and triggers.
Configuring SIS
Use the sis-console
or SIS REM Module to modify the default SIS and sip-sis-ra configuration properties; see the SIS administration guide and SIS REM Module user guide for more details on managing the SIS instance.
Unique ID Resource Adaptor
What is the Unique ID RA?
The Unique ID RA generates and returns guaranteed cluster-wide unique identifiers. New identifiers can be requested up to a limit of 512 per millisecond at a steady rate.
The identifiers are only guaranteed to be unique for a single Unique ID RA entity |
Usage within Sentinel
The Sentinel SS7 Service uses the Unique ID RA to generate unique call reference numbers for non-SS7 triggered calls. All Sentinel services make a Unique ID RA provider available for injection into features, including custom features developed by third-party integrators using the Sentinel SDK. Sentinel Charge users can also make use of the Unique ID RA in their services.
Configuring the Unique ID RA entity
The Unique ID RA requires no configuration of any kind as it retrieves all the resources necessary for operation from Rhino. A Unique ID RA entity is ready for operation as soon as it is activated. The name of the standard RA entity used by Sentinel is uid
.
Features
Sentinel comes with many features that can be used in feature execution scripts:
Feature category | For… |
---|---|
many networks |
|
querying network elements and sending notifications |
|
CAMEL networks |
|
SIP networks |
|
Diameter networks |
|
testing |
General Features
Sentinel includes many features that are useable in many networks:
-
Do Not Charge Session Feature — Notifies the Sentinel core to not charge the session.
-
Http Determine Network Operator Feature — Extracts the name of the Network Operator from an HTTP request.
-
OcsParameterConfiguration Feature — Sets the value of two session state fields related to determining the number of units to request from the OCS.
-
Platform Operator is Network Operator Feature — Updates the Sentinel selection key so that the network operator is the same as the configured platform operator.
-
Session Tracing Activation Feature — Used to determine if session tracing should be performed on this session or not, based on the subscriberId session state field.
-
Subscriber Data Lookup Feature — A pre-credit check feature used to query subscriber-specific information from a relational database and store it in session state, for use by Sentinel features and mappers.
-
Subscriber Validity Feature — Performs a check that a subscriber is within a validity period within two inclusive dates.
Do Not Charge Session Feature
Description
Feature name |
DoNotChargeSession |
---|---|
Applicable contexts |
SS7 Service, SIP Service |
SAS Support |
No |
Prerequisite Features |
None |
Notifies the Sentinel core to not charge the session. If Sentinel decides to let the session proceed, it will be a free session. Sentinel may still monitor the session unless another feature instructs Sentinel to not monitor the session (see DoNotMonitorSession feature). This is an initial trigger feature which can run before or after the credit check. If run before the credit check, it will prevent the credit check taking place and Sentinel will not establish a session with the OCS. If run after the credit check, it will cause Sentinel to finalize the OCS session reporting 0 used units.
Immediate Event Charging behaviour When Immediate Event Charging (IEC) is used (for example, for SMS) then running this feature post-credit-check can result in a refund being sent to the OCS if the session was previously charged. Running this feature pre-credit-check will result in no OCS interactions. Session termination methods such as ConnectAndClose and ContinueAndClose will not refund credit by default, so if a refund is required in those cases then this feature must be run post-credit-check. |
HTTP Determine Network Operator Feature
Description
Feature name |
HttpDetermineNetworkOperator |
---|---|
Applicable contexts |
SS7 Service, SIP Service, Sentinel Charge Example |
SAS Support |
No |
Prerequisite Features |
None |
Extracts the name of the Network Operator from an HTTP request. This feature searches the request URL parameters for a name-value pair with name identified in the HttpParameterForHttpDetermineNetworkOperator field of the SentinelPlatformConfiguration. The feature then attempts to map the discovered value to a network operator name by looking it up in the SentinelHttpParameterToNetworkOperatorProfileTable. If the parameter is not found in the URL or there is no mapping available in the SentinelHttpParameterToNetworkOperatorProfileTable
, a default network operator is used, as configured in the DefaultNetworkOperator
field of the SentinelPlatformConfiguration
.
For example, consider an HTTP trigger containing the following URL:
HttpDetermineNetworkOperator
will query the name of the HttpParameterForHttpDetermineNetworkOperator
in the SentinelConfigurationTable by selection key. In this case it returns “calledstationid”. The corresponding parameter value 00102 is then extracted from the URL, and the profile of the same name is retrieved from the HttpParameterToNetworkOperatorProfileTable
. From this profile, the NetworkOperator
is retrieved and stored in session state.
Session state inputs and outputs
Error scenarios
Scenario | Handling |
---|---|
Trigger is not an HTTP request |
Report featureCannotStart Finish |
Malformed name-value pair in HTTP request |
Increment CouldNotDetermineNetworkOperator stat Use SentinelConfiguration defaultNetworkOperator |
Configured name-value pair not found in request |
Increment CouldNotDetermineNetworkOperator stat Use SentinelConfiguration defaultNetworkOperator |
No configured mapping found for value in |
Increment CouldNotDetermineNetworkOperator stat Use SentinelConfiguration defaultNetworkOperator |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Trigger event must be an HttpRequest |
featureHasFinished |
feature has finished |
Configuration
The SentinelHttpParameterToNetworkOperatorProfileTable
:
Parameter | Description |
---|---|
NetworkOperator |
Network operator this profile’s name is mapped to |
Relevant fields of the SentinelPlatformConfigurationTable
:
Parameter | Description |
---|---|
HttpParameterForHttpDetermineNetworkOperator |
Name of the HTTP parameter to search for in the request URL |
DefaultNetworkOperator |
Network operator to fall back to if the HTTP parameter is not found in the request URL, or no mapping is found in the SentinelHttpParameterToNetworkOperatorProfileTable |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SentinelHttpParameterToNetworkOperatorProfileTable |
Mapping of HTTP parameter values to network operator names |
HTTP parameter value (for example, 00102) |
Provisioning interfaces
The feature is provisioned using the Sentinel HTTP Determine Network Operator REST API or web interface.
OcsParameterConfiguration Feature
Description
Feature name |
OcsParameterConfiguration |
---|---|
Applicable contexts |
SS7 Service, SIP Service, Diameter Service |
SAS Support |
No |
Prerequisite Features |
None |
Sets the value of two session state fields related to determining the number of units to request from the OCS. These values can be used by mappers which produce CCRs as output in a decentralized unit-determination scenario.
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>::::) |
For selecting configuration data |
Do not set RequestUnitsSeconds or RequestUnitsServiceSpecificReport featureHasFinished |
Outputs
Name | Type | Format | Description |
---|---|---|---|
RequestUnitsSeconds |
Long |
Positive integer |
Number of seconds to request from OCS in a decentralized unit determination scenario |
RequestUnitsServiceSpecific |
Long |
Positive integer |
Number of service-specific units to request from OCS in a decentralized unit determination scenario |
Configuration
The OcsParamConfigFeatureConfigProfileTable:
Parameter | Type | Description |
---|---|---|
RequestUnitsSeconds |
Long |
Units in seconds for Requested-Service-Unit/CC-Time Integer |
RequestUnitsServiceSpecific |
Long |
Units as defined by the service for Requested-Service-Unit/CC-Service-Specific-Units Integer |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
OcsParamConfigFeatureConfigProfileTable |
Selection of ocs parameters |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Platform Operator is Network Operator Feature
Description
Feature name |
PlatformOperatorIsNetworkOperator |
---|---|
Applicable contexts |
All Services |
SAS Support |
No |
Prerequisite Features |
None |
Updates the Sentinel selection key so that the network operator is the same as the configured platform operator. This feature is an initial trigger feature which can be used as an alternative to any of the Determine Network Operator features.
For example, upon initializing a session the selection key might look like:
Platform Operator | Network Operator | Session Type | Plan | Subscriber |
---|---|---|---|---|
OpenCloud |
Then running PlatformOperatorIsNetworkOperator will result in a selection key that looks like:
Platform Operator | Network Operator | Session Type | Plan | Subscriber |
---|---|---|---|---|
OpenCloud |
OpenCloud |
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
Selection key including platform operator (for example, |
Platform operator to copy into NetworkOperator field of key |
Runtime exception handled by feature runner |
Session Tracing Activation Feature
This feature is used to determine if session tracing should be performed on this session or not, based on the subscriberId session state field.
Description
Feature name |
SessionTracing |
---|---|
Applicable contexts |
All services |
SAS Support |
No |
Prerequisite Features |
None |
Two functions will be supported initially:
-
Prefix and exact match of the subscriber number based on Black/White lists
-
Percentage of Calls (not subscriber specific).
The subscriber number is determined by the SS7 Subscriber Determination Feature, Diameter Subscriber Determination Feature, or SIP Subscriber Determination Feature.
The address used for session tracing activation for each call type is the subscriber address associated with the call.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
Subscriber |
String |
SIP, Diameter, or SS7 Subscriber number format — see the respective Subscriber Determination features |
The subscriber address for this session |
Report featureCannotStart, featureHasFinished |
Error scenarios
Scenario | Handling |
---|---|
Missing entry in SessionTracingFeatureConfigProfileTable |
Report featureCannotStart |
Sessionstate Subscriber is null |
Report featureCannotStart |
Missing SessionTracingAddressPrefixList, addressListId, or addressList |
Do not enable tracing |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Configuration data is not found or subscriber address is not set in session state |
featureHasFinished |
feature has finished |
Configuration
General feature configuration
Parameter | Type | Description |
---|---|---|
AverageNumberOfCallsToBeTraced |
Integer |
Calls per 10,000 traced: 0(0%), 1(0.01%), 10(0.1%), 100(1%), 1000(10%) |
IsListScreeningModeUsed |
Boolean |
true/false. True selects list screening; false selects random tracing of sessions. |
For the percentage of calls, a configuration profile will be maintained with the percentage of calls to be matched.
Percentage setting:
-
0 — no calls are enabled
-
1 — 1 in 10000 (or 0.01%) of calls are enabled
-
10 — 10 in 10000 (or 0.1%) of calls enabled
-
100 — 100 in 10000 (or 1%) of calls enabled
-
1000 — 1000 in 10000 (or 10%) of calls enabled
-
No other configuration values valid
Any value above 10% of calls is out of the scope of this capability. 100% is already provided by the standard tracers. |
Address list configuration
If list screening is activated, the Session Tracing Activation Feature uses a list of subscriberIds that, if matched to a session, will switch on tracing for the session. See Address lists for information on how to configure the address list data.
Tracing output
Tracing output will be sent to the parallel session branch of the trace key tree (that is, session.sentinel rather than sentinel). The level of the session tracing is determined by the trace levels of each key in that tree.
The session tracing prefix will be set to the value of subscriberId.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SessionTracingFeatureConfigProfileTable |
Session tracing configuration parameters |
SentinelSelectionKey (for example, |
${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:SessionTracing:AddressPrefixList |
${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable |
Feature specific Address List entry table |
${SELECTIONKEY}:SessionTracing:AddressPrefixList:${ADDRESS} |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Subscriber Data Lookup Feature
The Subscriber Data Lookup feature is a pre-credit check feature used to query subscriber-specific information from a relational database and store it in session state, for use by Sentinel features and mappers.
Description
Feature script name |
SubscriberDataLookup |
---|---|
Applicable contexts |
All services |
SAS Support |
No |
Prerequisite Features |
One of SS7 Subscriber Determination Feature, SIP Subscriber Determination Feature or Diameter Subscriber Determination Feature |
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
Subscriber |
String |
SIP, Diameter, or SS7 Subscriber number format — see the respective Subscriber Determination features |
The subscriber for this session whose data is to be retrieved from the subscriber database |
Report featureCannotStart, featureHasFinished |
Error scenarios
Scenario | Handling |
---|---|
Missing lookup type configuration |
Report featureCannotStart |
Sessionstate Subscriber is null |
Report featureCannotStart |
Exception while loading subscriber data from data source |
Report featureCannotStart |
No subscriber data found or empty record |
Report featureFailedToExecute |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
invalid configuration |
featureFailedToExecute |
invalid subscriber |
featureHasFinished |
feature has finished |
Configuration
Subscriber record field configuration:
The feature is configurable to allow additional fields to be added to the subscriber record and associate the additional or existing fields with with new or existing session state fields. These field definitions are configured in the ${SELECTIONKEY}SubscriberDataLookupFieldDefinitionProfileTable
as follows:
Field | Type | Description |
---|---|---|
ColIdx |
String |
Indicates the column index of this field in a subscriber data record. Should match the profile name. |
InsertParamIdx |
int |
Indicates the column index of this field in a subscriber data record. Should match the profile name. |
ResFieldname |
String |
Name of the field when read into a result record |
SessionStateFieldname |
String |
Name of the session state field this field should be loaded into |
Type |
String |
The type of the field, both in session state and in the data source. Supported types: String, Boolean, Integer, String[], Date[], Date |
UpdateParamIdx |
int |
Indicates the column index of this field in a subscriber data record. Should match the profile name. |
The table of fields used for the mapping are scoped to the Sentinel selection key. The selection key may be configured at the following levels:
-
Platform operator
-
Network operator
-
Session type
-
The field definitions are configurable by Sentinel selection key.
The Subscriber Data Lookup feature may retrieve the subscriber record from:
-
MySQL via JDBC
-
TimesTen via JDBC
-
Oracle via JDBC
-
Cassandra database (experimental).
-
JSLEE profiles (testing purposes)
Data source configuration
The choice of data source type is configured in the SubscriberDataLookupConfigProfileTable:
Field | Type | Description |
---|---|---|
LookupType |
String |
One of dbQuery, profile, profileIms, or Cassandra |
Lookup type | Description |
---|---|
dbQuery |
Uses the dbquery-0 ra entity to perform the subscriber data query. This option is used for all the different RDBMS types such as MySQL, Oracle, and TimesTen. The type of database used and the associated settings are configured in the {{dbquery-0}}resource adaptor entity configuration. See DBQuery Resource Adaptor for further configuration information. |
profile |
Uses the ${PLATFORMOPERATOR}_SubscriberDataRecordProfileTable for the lookup. Only suitable for small sets of subscribers for testing and development purposes. |
profileIms |
Uses the ${PLATFORMOPERATOR}SubscriberDataImsPublicUserIdentityProfileTable and ${PLATFORMOPERATOR}SubscriberDataRecordProfileTable for the query. |
Cassandra |
Experimental. |
SQL statement configuration
For flexibility and ease of integration, the Subscriber Data Lookup Feature is agnostic regarding external SQL data schemas. The SQL queries for a particular network operator are stored in a configuration profile scoped by Sentinel selection key to support the correct mapping.
SubscriberDataLookupSqlConfigProfileTable:
Field | Type | Description |
---|---|---|
LoadSQL |
String |
The SQL query for loading subscriber data from the data source. For example: SELECT * FROM OpenCloud_Subscribers WHERE MSISDN = ? |
ListSQL |
String |
The SQL query for listing Subscriber Data record ids (msisdns). For example: SELECT MSISDN FROM OpenCloud_Subscribers ORDER BY MSISDN |
InsertSQL |
String |
The SQL query for inserting a new Subscriber Data record. For example: INSERT INTO OpenCloud_Subscribers (MSISDN,IMSI,FirstCall,subscriberlanguage,Account,SubscriptionType,ValidityStart, ValidityEnd,HomeZoneEnabled,HomeZoneList,ocsId,FriendsAndFamilyEnabled,FriendsAndFamilyList, ClosedUserGroupEnabled,ClosedUserGroupList,ClosedUserGroupPreferred,CUGIncomingAccessAllowed, CUGOutgoingAccessAllowed,CfBusy,CfNoReply,PromotionList,PromotionValidityStartDates, PromotionValidityEndDates) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) |
UpdateSQL |
String |
The SQL query for updating a Subscriber Data record. For example: UPDATE OpenCloud_Subscribers SET IMSI = ?,FirstCall = ?,subscriberlanguage = ?,Account = ?,SubscriptionType = ?, ValidityStart = ?,ValidityEnd = ?,HomeZoneEnabled = ?,HomeZoneList = ?,ocsId = ?, FriendsAndFamilyEnabled = ?,FriendsAndFamilyList = ?,ClosedUserGroupEnabled = ?, ClosedUserGroupList = ?,ClosedUserGroupPreferred = ?,CUGIncomingAccessAllowed = ?, CUGOutgoingAccessAllowed = ?,CfBusy = ?,CfNoReply = ?,PromotionList = ?, PromotionValidityStartDates = ?,PromotionValidityEndDates = ? WHERE MSISDN = ? |
DeleteSQL |
String |
The SQL query for deleting a Subscriber Data record. For example: DELETE FROM OpenCloud_Subscribers WHERE MSISDN = ? |
loadByImsPublicUserIdentitySQL |
String |
SQL statement for loading a subscriber data record by a subscriber’s IMS public user identity; for example: SELECT subs.* FROM @platform.operator.name@_Subscribers subs INNER JOIN @platform.operator.name@_SubscriberImsPublicUserIdentity sipids ON subs.MSISDN = sipids.SubscriberId WHERE sipids.ImsPublicUserId = ? |
listImsPublicUserIdentitiesSQL |
String |
SQL statement for listing a subscriber’s IMS public user identities based on their subscriber ID |
insertImsPublicUserIdentitySQL |
String |
SQL statement for inserting a new IMS public user identity for a subscriber |
deleteImsPublicUserIdentitySQL |
String |
SQL statement for deleting a single IMS public user identity for a subscriber |
deleteAllImsPublicUserIdentitiesForSubscriberSQL |
String |
SQL statement for deleting all of a subscriber’s IMS public user identities |
useImsPublicUserIdentities |
boolean |
Use IMS Public User Identity SQL statements? |
DatabaseRequestTimeout |
int |
The timeout period for any SQL query. Must be greater than 0 |
AsynchronousQuery |
boolean |
Uses DBQuery RA events to return result sets if true otherwise blocks the staging thread waiting for DatabaseRequestTimeout period using futures. |
Subscriber data schema
The subscriber data schema contains the following mandatory fields (i.e. a field definition for these MUST be present as part of the Subscriber Record Field configuration) for all service types:
Parameter name | Parameter type | Description |
---|---|---|
MSISDN |
String |
Identifies the subscriber record |
Language |
String |
Language code set during first call handling |
Account |
String |
Account code required by the OCS |
The default Sentinel SS7 Service configuration will include the following fields in addition to the mandatory fields:
Parameter name | Parameter type | Description |
---|---|---|
IMSI |
String |
Required by some service features |
OCSId |
String |
Id of the OCS for this subscriber |
SubscriptionType |
String |
identifes the subscription type of the subscriber |
ValidityStart |
String |
Time and timezone of subscription validity. See Subscriber Validity Feature |
ValidityEnd |
String |
Time and timezone of subscription validity. See Subscriber Validity Feature |
HomeZoneEnabled |
Boolean |
True when HomeZone feature is activated for this subscriber. See Home Zone Feature |
HomeZoneList |
String[] |
List of zones for this subscriber. See Home Zone Feature |
FriendsAndFamilyEnabled |
Boolean |
true when HomeZone feature is activated for this subscriber. See Friends and Family Feature |
FriendsAndFamilyList |
String[] |
List of zones for this subscriber. See Friends and Family Feature |
ClosedUserGroupEnabled |
Boolean |
true when HomeZone feature is activated for this subscriber. See Closed User Group Feature |
ClosedUserGroupList |
String[] |
List of zones for this subscriber. See Closed User Group Feature |
ClosedUserGroupPreferred |
Integer |
List of zones for this subscriber. See Closed User Group Feature |
CUGIncomingAccessAllowed |
Boolean |
|
CUGOutgoingAccessAllowed |
Boolean |
|
CfBusy |
String |
Forwarding number on busy. See Default Call Forwarding Feature |
CfNoReply |
String |
Forwarding number on no reply. See Default Call Forwarding Feature |
PromotionList |
String array |
Used by the |
PromotionValidityStartDates |
String[] |
Used by the |
PromotionValidityEndDates |
String[] |
Used by the |
The default Sentinel Diameter Service configuration will include the following fields in addition to the mandatory fields:
Parameter name | Parameter type | Description |
---|---|---|
CURRENTLY NONE |
In the case where a subscriber is a user of both SS7 and Diameter services, the record will contain fields from both; but the Subscriber Data Lookup feature will only load data from fields associated with the selection key.
Example:
MSISDN |
34600000001 |
---|---|
Language |
English |
Account |
6325 |
IMSI |
346000000021234 |
OCSId |
1 |
SubscriptionType |
No |
ValidityStart |
1299193200664 |
ValidityEnd |
3161070000000 |
HomeZoneEnabled |
false |
HomeZoneList |
[WgtnCBD] |
FriendsAndFamilyEnabled |
false |
FriendsAndFamilyList |
[34600000001] |
ClosedUserGroupEnabled |
false |
ClosedUserGroupList |
[CUG1Profile] |
ClosedUserGroupPreferred |
1 |
CfBusy |
34600000002 |
CfNoReply |
34600000003 |
PromotionList |
[FreeOffpeakVoice] |
PromotionValidityStartDates |
[1299193200664] |
PromotionValidityEndDates |
[3161070000000] |
IMS |
Public User Identities |
Parameter Name | Parameter type | Description |
---|---|---|
ImsPublicUserId |
String |
an IMS public user identity |
SubscriberId |
String |
subscriber ID used as key to the subscriber data table |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
${PLATFORMOPERATOR}_SubscriberDataRecordProfileTable |
Per subscriber data records — use only for very small subscriber sets |
MSISDN |
${PLATFORMOPERATOR}_SubscriberDataImsPublicUserIdentityProfileTable |
IMS public user identity to subscriber ID table — use only for very small subscriber sets |
IMS Public User Identity, for example sip:user34600000002@opencloud.com |
SubscriberDataLookupConfigProfileTableName |
Field configuration and session state mapping |
SentinelSelectionKey (for example, |
SubscriberDataLookupSqlConfigProfileTableName |
SQL statement configuration |
SentinelSelectionKey (for example, |
${SELECTIONKEY}_SubscriberDataLookupFieldDefinitionProfileTable |
Table for mapping sql columns to session state; note that the SELECTIONKEY part has ‘^’ as separator character in this case for the table name! |
Any name unique to the table |
Database schemas
Database schemas for TimesTen and Oracle are available in the Sentinel release package.
Provisioning interfaces
The SubscriberDataLookup feature subscriber records and configuration may be provisioned using the Sentinel Subscriber Data REST API or web interface for the records and feature configuration.
Subscriber Validity Feature
Description
Feature script name |
SubscriberValidity |
---|---|
Applicable contexts |
All services |
SAS Support |
No |
Prerequisite features |
The Subscriber Validity feature performs a check that a subscriber is within a validity period within two inclusive dates. If the start date is not present, all dates prior to the end date are considered valid. If the end date is not present, then all dates from the start date are considered valid.
The validity dates are set on a per-subscriber basis.
If the current date at session initiation is within the valid period for the subscriber, the feature will have no effect on the call.
If the current date at session initiation is outside the valid period for the subscriber, the feature will release the call.
OCS interface
This feature has no interaction with the OCS (except for preventing the initial credit check by releasing the session).
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
ValidityStart |
long |
The time in UTC milliseconds from the epoch |
Start of the subscriber’s validity period |
value ⇐0 implies validity until ValidityEnd |
ValidityEnd |
long |
The time in UTC milliseconds from the epoch |
End of the subscriber’s validity period |
value ⇐0 implies validity from ValidityStart |
Feature responses
Response | Reason |
---|---|
featureFailedToExecute |
invalid subscriber |
featureHasFinished |
feature has finished |
Configuration
There are no general, feature-wide configuration parameters for this feature.
The subscriber validity fields are read using the Subscriber Data Lookup Feature.
Parameter | Type | Description |
---|---|---|
ValidityStart |
String |
Time and timezone of subscription validity |
ValidityEnd |
String |
Time and timezone of subscription validity |
-
The format of these parameters must follow the ISO 8601 standard, specifically the
YYYY-MM-DDThh:mm:ss±hh:mm
format. -
ValidityEnd must be: the same day as ValidityStart or later; not set.
-
ValidityStart must be: the same day as ValidityEnd or earlier; not set.
Example:
ValidityStart |
2011-03-04T12:00:00+02:00 |
---|---|
ValidityEnd |
2070-03-04T00:00:00-08:00 |
If neither ValidityEnd nor ValidityStart are set, the session is valid.
Provisioning interfaces
The Subscriber Validity Feature is provisioned using the Subscriber Data Lookup Feature.
Query And Notification Features
Sentinel includes many features for querying network elements and sending notifications:
-
ATI Lookup Feature — Performs a MAP AnyTimeInterrogation lookup based on the address selected by a previous execution of the Determine ATI Lookup Number Feature.
-
Determine ATI Lookup Number Feature — An initial trigger feature used to configure a subsequent execution of the ATI Lookup Feature.
-
Determine MNP Lookup Number Feature — An initial trigger feature used to configure a subsequent execution of the MNP Lookup Feature.
-
Determine SRI Lookup Number Feature — An initial trigger feature used to configure a subsequent execution of the SRI for Basic Call Routing Feature.
-
Flash SMS Notification Feature — A pre-credit-check, post-credit-check, or end-session feature.
-
MNP Lookup Feature — A MAP AnyTimeInterrogation MNP lookup based on the address selected by a previous execution of the Determine MNP Lookup Number Feature.
-
SRI for Basic Call Routing Feature — Performs a MAP SendRoutingInformation lookup based on the address selected by a previous execution of the Determine SRI Lookup Number Feature.
-
USSD Push Notification Feature — A pre-credit-check, post-credit-check, or end-session feature early in the feature list.
ATI Lookup Feature
The ATI Lookup feature performs a MAP AnyTimeInterrogation lookup.
Description
Feature name |
ATILookup |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
The MAP AnyTimeInterrogation lookup is based on the address selected by a previous execution of the Determine ATI Lookup Number Feature. The ATI request contents and destination HLR are determined by the configuration associated with the feature.
The ATI response is saved in the Sentinel session state.
Feature parameters
The ATI Lookup feature supports the following parameters that may be passed in a feature execution script run statement:
Name | Description |
---|---|
configQualifier |
An additional string appended to the SentinelSelectionKey when determining the configuration profile used by the feature. For example, if the original configuration profile was |
Session State inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
See error handling for |
ATILookupNumber |
String |
MSISDN string |
Subscriber MSISDN to perform the ATI lookup for |
See error handling |
Error scenarios
Scenario | Handling |
---|---|
Missing entry in ATILookupFeatureConfigProfileTable |
Increment SendFailures stat |
Null sessionstate ATILookupNumber |
Increment SendFailures stat |
Error parsing ATILookupNumber |
Increment SendFailures stat |
Null sessionstate HLRAddress |
Increment SendFailures stat |
Null sessionstate GSMSCFAddress |
Increment SendFailures stat |
Failed to send request Increment |
SendFailures stat |
ATIResponse missing SubscriberInfo.MnpInfo |
Increment MalformedResponses and ReceivedResponses stats |
Feature responses
Response | Reason |
---|---|
featureFailedToExecute |
ATI response timeout or failed sending request |
featureHasFinished |
feature has finished |
Configuration
The ATI Lookup configuration includes:
Parameters | Type | Description |
---|---|---|
SccpOriginatingAddress |
Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null, in which case the local SCCP address configured for the platform is used. Example: |
|
InvokeTimeout |
Long |
AnyTimeInterrogation invoke timeout in milliseconds (for example, 5000). A ‘0’ value results in CGIN RA defaults being used. |
RouteOnSubscriberNumber |
Boolean |
‘true’ will route based on the selected ATILookupNumber. |
GSMSCFAddress |
Return address for responses (such as address of Sentinel) |
|
HLRAddress |
Static HLR address, or dynamic address template used when performing dynamic routing. |
|
QueryLocationInfo |
Boolean |
Whether to include location info query in the ATI request. |
QuerySubscriberState |
Boolean |
Whether to include subscriber state query in the ATI request. |
QueryIMEI |
Boolean |
Whether to include IMEI query in the ATI request. |
QueryMSClassmark |
Boolean |
Whether to include MS Classmark query in the ATI request. |
HLR routing determination
The destination HLR for the MAP AnyTimeInterrogation request is determined based on routeOnSubscriberNumber
configuration value. If true, the HLRAddress will not be considered a static address, and will instead be used as a template into which the ATILookupNumber (set by the Determine ATI Lookup Number Feature) digits are copied to determine the HLR address to route to.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
ATILookupFeatureConfigProfileTable |
Feature configuration |
SentinelSelectionKey (such as |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Determine ATI Lookup Number Feature
Description
Feature name |
DetermineATILookupNumber |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
|
The Determine ATI Lookup Number feature is an initial trigger feature used to configure a subsequent execution of the ATI Lookup Feature. The feature extracts one of the CalledPartyNumber, CallingPartyNumber, or CalledPartBCDNumber from a CAP InitialDP, or the subscriber from session state, and saves it for later use.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session |
Report |
|
CallType |
com.opencloud.sentinel.common.CallType |
Session type of this call for determining from configuration which party address to look up |
Report |
Error scenarios
Scenario | Handling |
---|---|
Missing entry in DetermineATILookupNumberConfigProfileTable |
Report featureCannotStart |
Session state InitialDPArg is null |
Report featureCannotStart |
Session state InitialDPArg not CAP |
Report featureCannotStart |
Session state CallType is null |
Report featureCannotStart |
No configured lookup party for call scenario |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
invalid or missing configuration |
featureHasFinished |
feature has finished |
Configuration
The Determine ATI Lookup Number configuration includes:
Parameters | Type | Description |
---|---|---|
MobileOriginatingParty |
LookupPartyEnum |
The party to use for the subsequent ATI Lookup (via the ATI Lookup Feature) for mobile originating calls. |
MobileTerminatingParty |
LookupPartyEnum |
The party to use for the subsequent ATI Lookup (via the ATI Lookup Feature) for mobile terminating calls. |
MobileForwardedParty |
LookupPartyEnum |
The party to use for the subsequent ATI Lookup (via the ATI Lookup Feature) for mobile forwarded calls. |
Each LookupPartyEnum property may be set to one of the following values:
Value name | Description |
---|---|
CallingPartyNumber |
Indicates to set the ATI Lookup number from the InitialDP.CallingPartyNumber |
CalledPartyNumber |
Indicates to set the ATI Lookup number from the InitialDP.CalledPartyNumber |
CalledPartyBCDNumber |
Indicates to set the ATI Lookup number from the InitialDP.CalledPartyBCDNumber |
SessionSubscriber |
Indicates to set the ATI Lookup number from the Sentinel session subscriber. |
Using this value requires a previous execution of the SS7 Subscriber Determination Feature.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
DetermineATILookupNumberConfigProfileTable |
Feature configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Determine MNP Lookup Number Feature
Description
Feature name |
DetermineMNPLookupNumber |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
|
The Determine MNP Lookup Number feature is an initial trigger feature used to configure a subsequent execution of the MNP Lookup Feature. The feature extracts one of the CalledPartyNumber, CallingPartyNumber, or CalledPartBCDNumber from a CAP InitialDP, or the subscriber from session state, and saves it for later use.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session, from which the lookup number will be read |
Report featureCannotStart |
|
CallType |
com.opencloud.sentinel.common.CallType |
Session type of this call for determining from configuration which party address to lookup |
Report featureCannotStart |
Error scenarios
Scenario | Handling |
---|---|
Missing entry in DetermineMNPLookupNumberConfigProfileTable |
Report featureCannotStart |
Sessionstate InitialDPArg is null |
Report featureCannotStart |
Sessionstate InitialDPArg not CAP |
Report featureCannotStart |
Sessionstate CallType is null |
Report featureCannotStart |
No configured lookup party for call scenario |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
invalid or missing configuration |
featureHasFinished |
feature has finished |
Configuration
The Determine MNP Lookup Number configuration includes:
Parameters | Type | Description |
---|---|---|
MobileOriginatingParty |
LookupPartyEnum |
The party to use for the subsequent ATI Lookup (via the MNP Lookup Feature) for mobile originating calls |
MobileTerminatingParty |
LookupPartyEnum |
The party to use for the subsequent ATI Lookup (via the MNP Lookup Feature) for mobile terminating calls |
MobileForwardedParty |
LookupPartyEnum |
The party to use for the subsequent ATI Lookup (via the MNP Lookup Feature) for mobile forwarded calls |
Each LookupPartyEnum property may be set to one of the following values:
Value name | Description |
---|---|
CallingPartyNumber |
Indicates to set the MNP Lookup number from the InitialDP.CallingPartyNumber |
CalledPartyNumber |
Indicates to set the MNP Lookup number from the InitialDP.CalledPartyNumber |
CalledPartyBCDNumber |
Indicates to set MNP ATI Lookup number from the InitialDP.CalledPartyBCDNumber |
SessionSubscriber |
Indicates to set the MNP Lookup number from the sentinel session subscriber. Using this value requires a previous execution of the SS7 Subscriber Determination Feature |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
DetermineMNPLookupNumberConfigProfileTable |
Feature configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Determine SRI Lookup Number Feature
Description
Feature name |
DetermineSRILookupNumber |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
|
The Determine SRI Lookup Number feature is an initial trigger feature used to configure a subsequent execution of the SRI for Basic Call Routing Feature. The feature extracts one of the CalledPartyNumber, CallingPartyNumber, or CalledPartBCDNumber from a CAP InitialDP, or the subscriber from session state, and saves it for later use.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session, from which the lookup number will be read |
Report featureCannotStart |
|
CallType |
com.opencloud.sentinel.common.CallType |
Session type of this call for determining from configuration which party address to lookup |
Report featureCannotStart |
Error scenarios
Scenario | Handling |
---|---|
Missing entry in DetermineSRILookupNumberConfigProfileTable |
Report featureCannotStart |
Sessionstate InitialDPArg is null |
Report featureCannotStart |
Sessionstate InitialDPArg not CAP |
Report featureCannotStart |
Sessionstate CallType is null |
Report featureCannotStart |
No configured lookup party for call scenario |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
invalid or missing configuration |
featureHasFinished |
feature has finished |
Configuration
The Determine SRI Lookup Number configuration includes:
Parameters | Type | Description |
---|---|---|
MobileOriginatingParty |
LookupPartyEnum |
The party to use for the subsequent SRI Lookup (via the SRI for Basic Call Routing Feature) for mobile originating calls. |
MobileTerminatingParty |
LookupPartyEnum |
The party to use for the subsequent SRI Lookup (via the SRI for Basic Call Routing Feature) for mobile terminating calls. |
MobileForwardedParty |
LookupPartyEnum |
The party to use for the subsequent SRI Lookup (via the SRI for Basic Call Routing Feature) for mobile forwarded calls. |
Each LookupPartyEnum property may be set to one of the following values:
Value name | Description |
---|---|
CallingPartyNumber |
Indicates to set the SRI Lookup number from the InitialDP.CallingPartyNumber |
CalledPartyNumber |
Indicates to set the SRI Lookup number from the InitialDP.CalledPartyNumber |
CalledPartyBCDNumber |
Indicates to set the SRI Lookup number from the InitialDP.CalledPartyBCDNumber |
SessionSubscriber |
Indicates to set the SRI Lookup number from the Sentinel session subscriber. Using this value requires a previous execution of the SS7 Subscriber Determination Feature. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
DetermineSRILookupNumberConfigProfileTable |
Feature configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Flash SMS Notification Feature
This feature is a pre-credit-check, post-credit-check, or end-session feature.
Description
Feature name |
FlashSms |
---|---|
Applicable contexts |
|
SAS Support |
No * Diameter service * SIP service |
Prerequisite features |
A feature to set the NotificationMessage and NotificationAddress session state variables |
The notification information will be accessed from the NotificationMessage session state variable which was set by a prior feature. The supported data coding schemes are GSM_7BIT and UCS2 — the message will be sent using the GSM_7BIT coding scheme if it can be represented in the 7-bit alphabet; otherwise, the UCS2 coding scheme will be used.
The notification message will be sent to (in order of precedence):
-
Address in NotificationAddress session state variable (if set)
-
Address in Subscriber session state variable.
If neither of these variables are set then the message will not be sent.
The feature checks the IMSI and MSCAddress session state fields. When both are set the feature will not perform an SendRoutingInformationForSM but use the MSCAddress session state field instead.
MTForwardSM will return success if the handset is available and message delivered. If it’s not, then a error response will be returned that the message was not deliverable (absent subscriber, and so on). As the call is either in progress or has just ended, the message will be deliverable in the vast majority of cases so no special behaviour is required in the error cases after sending MTForwardSM. Sentinel will not attempt to retry sending the message if there is an error delivering the message for any reason. |
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Increment SmsDeliveryFailures, return |
IMSI |
String |
IMSI |
The subscriber’s IMSI address, which may require an SRI lookup if null |
Perform an SRI lookup |
MSCAddress byte[] |
The subscriber’s current MSC address, which may require an SRI lookup if null |
Perform an SRI lookup |
NotificationMessage |
|
String |
Arbitrary text |
The textual content of the flash SMS |
Increment SmsDeliveryFailures, return |
NotificationAddress |
String |
MSISDN |
The flash SMS destination address |
Fall back to session state Subscriber address |
Subscriber |
Error scenarios
This table applies if an SRI is required:
Scenario | Handling |
---|---|
Null sessionstate selection key |
Increment SmsDeliveryFailures |
Missing entry in FlashSmsFeatureConfigProfileTable |
Increment SmsDeliveryFailures |
No notification address or subscriber address |
Increment SmsDeliveryFailures |
Null TemplateHlrSccpAddress in FlashSMS config |
Increment SmsDeliveryFailures |
Exception sending SRI |
Increment SmsDeliveryFailures |
OpenRefuse from HLR |
Increment HlrSS7ProviderErrors or HlrSS7UserErrors |
Abort from HLR |
Increment HlrProviderAborts or HlrUserAborts |
Timeout waiting for HLR response |
Increment HlrTimeouts |
Exception closing dialog in any HLR dialog failure scenario |
Increment SmsDeliveryFailures |
This table applies if the SRI succeeds or is not required:
Scenario | Handling |
---|---|
No notification address or subscriber address in sessionstate |
Increment SmsDeliveryFailures |
Null sessionstate MSCAddress |
Increment SmsDeliveryFailures |
Null sessionstate IMSI |
Increment SmsDeliveryFailures |
Null sessionstate NotificationMessage |
Increment SmsDeliveryFailures |
Exception sending mtForwardSM request |
Increment SmsDeliveryFailures |
MessageEncodingFailure sending mtForwardSM request |
Increment SmsDeliveryFailures |
OpenRefuse from MSC |
Increment MscSS7ProviderErrors |
Abort from MSC |
Increment MscProviderAborts or MscUserAborts |
Timeout waiting for MSC response |
Increment MscTimeouts |
Configuration
The Flash SMS Notification configuration includes:
Parameter | Type | Description |
---|---|---|
SccpOriginatingAddress |
Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: |
|
InvokeTimeout |
Long |
SRIforSM and MTForwardSM invoke timeouts in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used. |
TemplateHlrSccpAddress |
A template address that will be used to address the HLR. Global title digits in the template address will be replaced with the relevant notification address. The encoding scheme will also be updated, if relevant for the GT indicator type, to indicate BCD_ODD or BCD_EVEN, depending on the number of address digits. |
|
TemplateMscSccpAddress |
A template address that will be used to address the MSC. Global title digits in the template address will be replaced with the MSC address from session state. The encoding scheme will also be updated, if relevant for the GT indicator type, to indicate BCD_ODD or BCD_EVEN, depending on the number of address digits. |
|
SMSAddressOriginatingAddress |
Local SCCP address (for example, |
|
AddressStringServiceCentreAddress |
Service centre address (for example, |
|
ShortMsgMTApplicationContext |
The MAP application context to be used for the dialog towards the MSC. Must be one of:
|
Call flow
There are two MAP requests as party of the MTForwardSM process:
-
Obtaining the routing information from the HLR.
-
Sending the MT SMS.
The first step is performed by sending an SendRoutingInformationForSM request to the HLR to determine the routing information for the MT Forward SM. This step is not performed if the IMSI and MSCAddress session state fields are set.
The HLR SCCP Address will be based on the MSISDN of the subscriber. (See MAP SPEC Section 4 Requirements concerning the use of SCCP and TC/4.1.3.3 The Home Location Register (HLR) — refer to MAP SPEC footnote). The MSISDN will be retrieved from SessionState.NotificationAddress or SessionState.Subscriber.
hlrSccpAddress.address={SessionState.NotificationAddress or SessionState.Subscriber) hlrSccpAddress.nature=International hlrSccpAddress.numberingPlan=ISDN hlrSccpAddress.routingIndicator=(GT for extra/inter-PLMN, GT or SPC for intra-PLMN) default 0 (GT) hlrSccpAddress.GTI=0100 (Global title indicator = 0100 (Global title includes translation type, numbering plan, encoding scheme and nature of address indicator) hlrSccpAddress.type=C7 hlrSccpAddress.ssnIndicator=1 (MAP SSN always included) hrlSccpAddress.ssn=(configured per network) default 6 hrlSccpAddress.pc=(configured per network) default not set hlrSccpAddress.tt=0 (not used)
imsi = RoutingInfoForSM-Res.imsi msc-number = RoutingInfoForSM-Res.locationInfoWithLMSI.networkNode-Number IF RoutingInfoForSM-Res.locationInfoWithLMSI.gprsNodeIndicator not present OR (RoutingInfoForSM-Res.locationInfoWithLMSI.gprsNodeIndicator present AND RoutingInfoForSM-Res.LocationInfoWithLMSI.additional-Number is sgsn-Number) THEN mscAddress = RoutingInfoForSM-Res.LocationInfoWithLMSI.networkNode-Number else mscAddress = RoutingInfoForSM-Res.LocationInfoWithLMSI.additional-Number
RoutingInfoForSM-Res.locationInfoWithLMSI.networkNode-Number renamed from msc-Number between R96 and R97. The networkNode-number can also contain an sgsn-number or IP-SM-GW number or SMS Router number. |
The second step is to send the MTForwardSM:
Field | Value |
---|---|
destination SCCP address |
msc-number from the SRIforSM or MSCAddress session state field |
sm-RP-DA.imsi |
use the imsi from the SRIforSM or the IMSI session state field |
sm-RP-OA.serviceCentreAddress |
Sentinel address for response messages |
sm-RP-UI |
SMSDeliver as below |
moreMessagesToSend |
not set |
extensionContainer |
not set |
smDeliveryTimer |
not set |
smDeliveryStartTime |
not set |
SMSDeliver:
Field | Value |
---|---|
onlyHeader |
not set |
replyPath |
false |
userDataHeaderIndicator |
true |
statusReportIndication |
false |
moreMessagesToSend |
NONE |
loopPrevention |
false |
originatingAddress |
configurable address — probably some service number |
protocolId |
0 (TelematicDevice.IMPLICIT) |
dataCodingScheme |
{MessageClass=SPARE_0, MessageCoding determined by encoded text, supports GSM_7BIT or UCS2} |
serviceCentreTimeStamp |
current time |
userDataLength |
length of encoded text based on data coding scheme |
userData |
encoded text |
The SMS PDU of the message sent will be taken from the notification session state variables.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
FlashSmsFeatureConfigProfileTable |
Selection of database implementation and rating group for the feature. |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
MAP SPEC |
Digital cellular telecommunications system (Phase 2+); Mobile Application Part (MAP) specification (3GPP TS 09.02 version 5.17.0 Release 1996) |
ETSI/3GPP |
2002-03 |
ETSI |
MNP Lookup Feature
Description
Feature name |
MNPLookup |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
The MNP (Mobile Number Portability) Lookup Feature performs a MAP AnyTimeInterrogation MNP lookup based on the address selected by a previous execution of the Determine MNP Lookup Number Feature. The MNP ATI destination HLR is determined by the configuration associated with the feature. The party to look up is based on the MNPLookupNumber saved into session state by the Determine MNP Lookup Number Feature.
The MNP response is saved in the sentinel session state.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Increment SendFailures stat Report featureFailedToExecute Return |
MNPLookupNumber |
String |
MSISDN |
Address to perform the MNP lookup for |
Increment SendFailures stat Report eatureFailedToExecute Return |
Error scenarios
Scenario | Handling |
---|---|
Missing entry in MNPLookupFeatureConfigProfileTable |
Increment SendFailures stat |
Null sessionstate MNPLookupNumber |
Increment SendFailures stat |
Error parsing MNPLookupNumber |
Increment SendFailures stat |
Null MNPSRFSccpAddress configured in MNPLookupFeatureConfigProfileTable |
Increment SendFailures stat |
Null GSMSCFAddressString configured in MNPLookupFeatureConfigProfileTable |
Increment SendFailures stat |
Exception while trying to send ATIRequest |
Increment SendFailures stat |
OpenRefuse from MNP SRF |
Close dialog Increment SS7ProviderErrors or SS7UserErrors |
Abort from MNP SRF |
Close dialog |
Timeout waiting for MNP SRF response |
Close dialog |
Feature responses
Response | Reason |
---|---|
featureFailedToExecute |
Missing sessionstate or configuration data, exception while sending ATIRequest or error response from MNP SRF |
featureHasFinished |
feature has finished |
Configuration
The MNP Lookup configuration includes:
Parameters | Type | Description |
---|---|---|
OriginatingSccpAddress |
Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: |
|
InvokeTimeout |
Long |
AnyTimeInterrogation invoke timeout in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used. |
GSMSCFAddress |
Return address for responses (for example, address of Sentinel) |
|
MNPSRFSccpAddress |
Static address of an MNP SRF. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
MNPLookupFeatureConfigProfileTable |
Feature configuration |
SentinelSelectionKey (for example, |
Provisioning Interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
SRI for Basic Call Routing Feature
Description
Feature name |
SRIForBasicCallRouting |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
The SRI For Basic Call Routing feature performs a MAP SendRoutingInformation lookup based on the address selected by a previous execution of the Determine SRI Lookup Number Feature. The SRI request contents and destination HLR are determined by the configuration associated with the feature.
The SRI response is saved in the SendRoutingInfoRes field defined in the com.opencloud.sentinel.feature.common.sribasiccall.SRIForBasicCallRoutingSessionState
Sentinel session state interface.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Increment SendFailures stat Report featureFailedToExecute Report featureHasFinished Return |
SRILookupNumber |
String |
MSISDN |
Address for which to perform SRI lookup |
Return |
Error scenarios
Scenario | Handling |
---|---|
Missing profile entry in SRIForBasicCallRoutingFeatureConfigProfileTable |
Increment SendFailures stat |
Exception creating MSISDN string using sessionstate SRILookupNumber |
Report featureHasFinished |
Null HLRAddress or GsmScfAddress in config profile |
Increment SendFailures stat |
Exception sending SRI request to HLR |
Increment SendFailures stat |
OpenRefuse from HLR |
Close dialog |
Abort from HLR |
Close dialog |
Timeout waiting for HLR response |
Close dialog |
Feature responses
Response | Reason |
---|---|
featureHasFinished |
feature has finished |
featureFailedToExecute |
unclassified |
Session State interface
Uses the SRILookupNumber as the MSISDN for the query. If this is not set the feature continues without affecting the call.
The SendRoutingInfoRes result is stored in the SendRoutingInfoRes
field defined in the com.opencloud.sentinel.feature.common.sribasiccall.SRIForBasicCallRoutingSessionState session state interface
.
The IMSI from the SendRoutingInfoRes is stored in the IMSI field defined in the com.opencloud.sentinel.common.ImsiSessionState session state interface
.
Configuration
The SRI For Basic Call Routing configuration includes:
Parameters | Type | Description |
---|---|---|
SccpOriginatingAddress |
Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: |
|
InvokeTimeout |
Long |
SendingRoutingInformation invoke timeout in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used. |
Map3Supported |
Boolean |
if ‘true’ will use |
HLRAddress |
HLR address for the SRI |
|
GSMSCFAddress |
Return address for responses (e.g. Sentinel address) |
|
PrePagingSupported |
Boolean |
When true sets the Pre_pagingSupported flag in the SRI |
FailOnError |
Boolean |
When true the feature will respond on error with a featureFailedToExecute to the Sentinel core, when false the feature will continue without reporting error to the core. |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SRIForBasicCallRoutingFeatureConfigProfileTable |
Feature configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
USSD Push Notification Feature
Description
Feature name |
USSDNotification |
---|---|
Applicable contexts |
|
SAS Support |
No * Diameter Service * SIP Service |
Prerequisite features |
|
The USSD Push Notification feature is a pre-credit-check, post-credit-check, or end-session feature early in the feature list. It always allows the session to continue even in the event of a feature execution failure.
The notification information will be accessed from the NotificationMessage session state variable which was set by a prior feature. If no message has been set, the SendFailures usage stat is incremented and the feature ends.
The notification message will be sent to (in order of precedence):
-
Address in NotificationAddress session state variable (if set)
-
Address in Subscriber session state variable
If neither of these variables are set then the message will not be sent.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
Sentinel?SelectionKey |
com.?opencloud.?sentinel.?common.?Sentinel?SelectionKey |
selection key (for example, |
For selecting configuration data |
Increment SendFailures Return |
NotificationMessage |
String |
Arbitrary text |
The text content of the outgoing USSD notification |
Increment SendFailures Return |
NotificationAddress |
String |
MSISDN |
The destination address of the outgoing USSD notification |
Fall back to Subscriber session state field |
Subscriber |
String |
MSISDN |
The destination address of the outgoing USSD notification if NotificationAddress is null |
Increment SendFailures Return |
Error scenarios
Scenario | Handling |
---|---|
Missing configuration profile in USSDNotificationFeatureConfigProfileTable |
Increment SendFailures |
Null sessionstate NotificationMessage |
Increment SendFailures |
Null sessionstate NotificationAddress |
Increment SendFailures |
Could not create destination MSISDN from NotificationAddress |
Increment SendFailures |
Could not create SccpAddress from NotificationAddress |
Increment SendFailures |
USSD message encoding failed |
Increment EncodingFailures |
Failed to send unstructured SS notify request |
Increment SendFailures |
OpenRefuse from HLR |
Increment HlrProviderErrors or HlrUserErrors |
Abort from HLR Increment |
HlrAborts |
Timeout waiting for HLR response |
Increment HlrTimeouts |
Configuration
The USSD Push Notification configuration includes:
Parameters | Type | Description |
---|---|---|
SccpOriginatingAddress |
Will be used as the TCAP Calling Party Address in dialogs initiated towards the HLR and MSC. May be null in which case the local SCCP address configured for the platform will be used. Example: |
|
InvokeTimeout |
Long |
UnstructuredSS_Notify invoke timeout in milliseconds (for example, 5000). A 0 value results in CGIN RA defaults being used. |
UssdDataEncodingScheme |
Byte |
USSD data encoding scheme. Currently must be 15 (coding scheme must be 0x0f (0000 1111) GSM 7 bit language unspecified) |
WaitForConfirmation |
Boolean |
true/false, when true will wait for the response from the HLR, if false will proceed with feature execution immediately |
Call flow
The HLR SCCP Address will be based on the MSISDN of the subscriber (See MAP SPEC, Section 4, concerning the use of SCCP and TC/4.1.3.3 The Home Location Register (HLR) — refer to MAP SPEC footnote below).
hlrSccpAddress.address={SessionState.NotificationAddress or SessionState.Subscriber) hlrSccpAddress.nature=International hlrSccpAddress.numberingPlan=ISDN hlrSccpAddress.routingIndicator=(GT for extra/inter-PLMN, GT or SPC for intra-PLMN) default 0 (GT) hlrSccpAddress.GTI=0100 (Global title indicator = 0100 (Global title includes translation type, numbering plan, encoding scheme and nature of address indicator) hlrSccpAddress.type=C7 hlrSccpAddress.ssnIndicator=1 (MAP SSN always included) hrlSccpAddress.ssn=(configured per network) default 6 hrlSccpAddress.pc=(configured per network) default not set hlrSccpAddress.tt=0 (not used) The USSD String of the message sent will be taken from the notification session state variables. The ProcessUnstructuredSS_Request will include the MSISDN of the subscriber taken from the IDP.
-
In
WaitForConfirmation
true mode, the feature will immediate return continue once the notify request is sent and will not wait for the response. -
In
WaitForConfirmation
false mode, the feature will return when one of the following occurs:-
the response is received
-
a MAP error is reported
-
the invoke times out (ProviderError(NO_RESPONSE) is received
-
the dialog is aborted.
-
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
USSD?Notification?Feature?Config?Profile?Table |
Feature configuration |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
MAP SPEC |
Digital cellular telecommunications system (Phase 2+); Mobile Application Part (MAP) specification (3GPP TS 09.02 version 5.17.0 Release 1996) |
ETSI/3GPP |
2002-03 |
ETSI |
CAMEL Features
Sentinel includes many features for CAMEL networks:
-
Accept Protocol Feature — Allows the dialog processing to proceed if the application context is acceptable.
-
Call Barring Feature — A network operator barring feature.
-
Classify Call Scenario Feature — Classifies the call’s Session Type, Roaming Indicator, and Service Type, which are stored in session state variables for future features.
-
Call Forwarding Detection Feature — Analyses an MT initialdp to determine if early call forwarding applies for this call.
-
Closed User Group Feature — Indicates to the OCS any CUGs that apply to the current session, and optionally restricts a subscriber to sessions within a CUG.
-
Connect And Close Feature — An initial trigger feature which calls connectAndClose() on the feature endpoint.
-
Continue And Close Feature — An initial trigger feature which calls continueAndClose() on the feature endpoint.
-
Do Not Monitor Session Feature — An initial trigger feature which instructs Sentinel core not to monitor the call.
-
Emergency and Special Number Feature — A pre credit check feature early or first in the feature list, to allow the call to continue immediately with no further intervention from Sentinel.
-
Friends and Family Feature — Sets a special OCS tariff code if a subscriber is making a call to a number in their FnF list.
-
Home Zone Feature — Determines if the subscriber is within a defined set of home zones on originating calls.
-
Play Announcement Feature — Plays an announcement to the calling party during call establishment or after the called party disconnects.
-
Prefix and Suffix Analysis Feature — Sentinel has a set of configurable prefix and suffix lists, scoped by Sentinel selection key, which are used for number analysis.
-
Relay Dialog During Dialog Analysis Feature — Requests Sentinel core to relay the received dialog to another network element.
-
Relay Dialog During Initial Trigger Analysis Feature — Requests Sentinel core to relay the received dialog to another network element.
-
Release Call and Close Dialog Feature — A very simple feature that instructs Sentinel to release the call or SMS and close the dialog with the MSC.
-
Roaming Default Call Forwarding Feature — Defines roaming-specific forwarding addresses for Busy, No reply cases, to prevent tromboning of forwarded calls to numbers in the subscriber’s HPLMN.
-
Roaming Reorigination Feature — A way of handling triggers from roaming subscribers on networks that use CAPv1, or networks that use CAPv2 or CAPv3 but are otherwise determined to be unsupported for direct call control from the VPLMN.
-
Set User Release Cause From Latest Event Report Feature — Inspects the latest EventReportBCSM received by Sentinel and if possible sets the UserReleaseCause integer session state variable to a cause code value appropriate for that event report.
-
Short Code Feature — A pre-credit check feature early in the feature list (but always after the emergency number feature), to perform number translation on a set of short codes configured for the network.
-
SMS Normalization Feature — All features executed after this feature access the normalized numbers when accessing the idp in session state.
-
SS7 Determine Network Operator Feature — Sets the Network Operator element of the Sentinel selection key, based on the value returned by the DetermineNetworkOperator function
-
SS7 Subscriber Determination Feature — Used to determine the subscriber address, based on parameters from the InitialDP and session state.
-
SS7 Unconditional Reject Session Feature — Unconditionally refuses the dialog with refuse reason set to USER_NO_REASON_GIVEN.
-
Validate 3rd Party Call Request Feature (SS7) — Checks the received HTTP request to see if it is well formed.
-
Validate InitialDP Feature — Performs validation checks to ensure that the InitialDP has sufficient parameters to be handled correctly by Sentinel.
-
Voice Call Normalization Feature — All features executed after this feature will access the normalized numbers when accessing the idp in session state.
Accept Protocol Feature
This feature allows the dialog processing to proceed if the application context is acceptable.
Description
Feature name |
AcceptProtocol |
---|---|
Applicable contexts |
SS7 Service |
SAS Support |
No |
Prerequisite features |
None |
Dialogs with unacceptable application contexts are refused with the reason code USER_ACN_NOT_SUPPORTED.
The acceptable application contexts are:
-
cap_v1_gsmSSF_to_gsmSCF-AC
-
cap-v2-gsmSSF-to-gsmSCF-AC
-
capssf_scfGenericAC (CAP3)
-
cap3_sms_AC
This feature also sets the SessionType parameter to call
or sms
.
The feature notifies the Sentinel core if the dialog is a voice (includes data, video fax) or sms dialog.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Runtime exception handled by feature runner |
Outputs
Name | Type | Format | Description |
---|---|---|---|
SessionType |
com.opencloud.sentinel.common.SessionType |
One of: call, sms |
Session type determined from application context |
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
Updated selection key including session type determined from application context |
Protocol |
com.opencloud.sentinel.common.SentinelProtocol |
One of: cap_v1, cap_v2, cap_v3, cap_v4, etsi_inap_cs1, map_rel4, call_control |
Session protocol determined from application context |
Error scenarios
Scenario | Handling |
---|---|
Trigger not instance of DialogOpenRequestEvent |
Report featureCannotStart |
Call Barring Feature
The Call Barring feature is a network operator barring feature. That is, it is intended for barring/allowing calls to specific numbers at network and plan scope.
Description
Feature name |
CallBarring |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
It is run pre credit check, early in the feature list (but always after the emergency number feature). If the barring algorithm returns a match, then the feature returns an instruction to the Sentinel core to release the call and close with no further intervention from Sentinel.
The default release cause value is CLASS1_CALL_REJECTED. This value may be overridden by configuration.
This feature is for network operator wide barring. It is not a per subscriber barring feature. |
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>::::') |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session, from which the CalledPartyBCDNumber will be read |
Report featureCannotStart, featureHasFinished |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Barring will only be performed for mobile originating calls |
Report featureCannotStart, featureHasFinished |
Error scenarios
Scenario | Handling |
---|---|
Trigger not instance of DialogOpenRequestEvent |
Report featureCannotStart |
Null sessionstate SentinelSelectionKey |
Report featureCannotStart |
InitialDP not CAP |
Report featureCannotStart |
Null sessionstate CallType |
Report featureCannotStart |
InitialDP does not contain a CalledPartyBCDNumber |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
SessionState SentinelSelectionKey is not set, protocol is not CAP, session type has not been set, or InitialDP does not contain a CalledPartyBCDNumber |
releaseCallAndCloseDialog |
call is barred |
featureHasFinished |
feature has finished |
Determining if a call is to be barred
The Call Barring feature analyses the InitialDP to determine whether to request barring of the call:
IF call is not a mobile originating call THEN do not barr call RETURN ENDIF IF idp.calledPartyBCDNumber does not match using longest prefix match in black list THEN do not barr call RETURN ENDIF IF idp.calledPartyBCDNumber does not match using longest prefix match in white list THEN barr call RETURN ENDIF do not barr call
Triggers and application contexts
Application Contexts:
-
cap-v2-gsmSSF-to-gsmSCF-AC
-
capssf_scfGenericAC (CAP3).
The InitialDP will be triggered on DP2 (Collected_Info).
Typical call flow
-
MSC ---- OpenRequest -→ Sentinel
-
MSC ---- IDP(Cdpn=123) -→ Sentinel
-
MSC ←-- OpenAccept --- Sentinel
-
MSC ←-- Release(cause) --- Sentinel
Configuration
The CallBarring feature configuration profile includes the following attributes:
Parameters | Type | Description |
---|---|---|
ReleaseCause |
Integer |
Release cause to be set for barred calls |
The feature also maintains two Sentinel address lists: a black list and a white list containing the barring configuration. Numbers are matched using longest prefix.
-
The black list defines numbers to be barred.
-
The white list defines numbers to be allowed and overrides the black list.
The feature applies the barring configuration to all subscribers with the matching Sentinel selection key.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
CallBarringFeatureConfigProfileTable |
CallBarring feature configuration parameters |
SentinelSelectionKey (for example, |
Black and White List configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:CallBarring:BlackList or ${SELECTIONKEY}:CallBarring:WhiteList |
${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable Feature specific |
Address List entry table |
${SELECTIONKEY}:CallBarring:BlackList:${ADDRESS}, ${SELECTIONKEY}:CallBarring:WhiteList:${ADDRESS} |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Call Forwarding Detection Feature
Description
Feature script name |
CallForwardingDetection |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
The CallForwardingDetection feature analyses an MT initialdp to determine if early call forwarding applies for this call. If call forwarding is pending, the call will be allowed to continue with no charging or monitoring of the call.
This feature prevents an unnecessary credit check with the OCS and unnecessary monitoring of the call when the outcome is already determined.
IF initialdp.gsm-forwardingPending is set AND initialdp.gsm-forwardingPending is true THEN instruct call to continue with no monitoring and no charging. ELSE allow the call to proceed without any affect from this feature ENDIF If the SessionType of the call is not MobileTerminating then this feature must end without affecting the call.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
InitialDPArg |
com.opencloud.slee.resources.cgin.callcontrol.CCInitialDPArg |
InitialDP which triggered this session. |
If CAP1, the call is not eligible for forwarding detection. If CAP2 or higher, it is eligible. |
Report featureCannotStart, featureHasFinished |
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call — if MobileTerminating, the call is eligible for call forwarding detection |
Assume eligibility for call forwarding detection |
Feature responses
Response | Reason |
---|---|
doNotMonitorSession |
if call is a MT call and hasGsm_ForwardingPending is set |
doNotChargeSession |
if call is a MT call and hasGsm_ForwardingPending is set |
featureHasFinished |
feature has finished |
Interaction with call forwarding supplementary service
The gsm-forwardingPending indicator will be present when the GMSC has determined one of the following applies:
-
unconditional call forwarding or conditional call forwarding not
-
call forwarding not reachable — MS switched off
-
call forwarding not reachable — no paging response.
For more information, see Noldus 4.3.2.1 Early Call Forwarding. (Refer to Noldus footnote below.)
Classify Call Scenario Feature
Description
Feature name |
ClassifyCallScenario |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
None |
The Classify Call feature is a pre credit check feature early in the feature list (but always after the emergency number feature). The feature classifies the call’s Session Type, Roaming Indicator, and Service Type, which are stored in session state variables for future features.
Session type
The call’s session type is classified as one of:
-
MobileOriginating
-
MobileTerminating
-
MobileForwarded.
A CallType enum is defined to represent the values, and the session type is stored in session state variable CallType.
The session type is determined based on the following pseudo code:
Function DetermineSessionType(initialDP) /* make an assumption on insufficient information that originating */ IF initialDP.eventTypeBCSM not set THEN return MobileOriginating ENDIF /* Originating or terminating eventTypeBCSM? */ IF initialDP.eventTypeBCSM is one of {origAttemptAuthorized, collectedInfo, analyzedInformation, routeSelectFailure, oCalledPartyBusy, oNoAnswer, oAnswer, oMidCall,oDisconnect, oAbandon} THEN isOriginatingEventTypeBCSM = true ELSE isOriginatingEventTypeBCSM = false ENDIF IF NOT isOriginatingEventTypeBCSM THEN return MobileTerminating ENDIF IF isOriginatingEventTypeBCSM AND initialDP.redirectingPartyID is set THEN return MobileForwarded ENDIF IF isOriginatingEventTypeBCSM AND initialDP.redirectingPartyID not set THEN return MobileOriginating ENDIF return Unknown
Roaming indicator
The call’s roaming indicator is classified as one of:
-
Roaming
-
NotRoaming.
The roaming indicator is stored in session state variable RoamingIndicator as a Boolean.
The roaming indicator is determined based on the following pseudo code:
Function DetermineRoaming(initialDP) IF initialDP.LocationInformation.VLR-Number prefix in (operator VLR number prefix list) THEN return isNotRoaming ELSE return isRoaming ENDIF
In the case of an MT call, the location information may be reported; but this is dependent on an HLR setting (MAP PSI during MT processing). For MO calls, the LocationInformation relates to the calling party. For the MT case, it relates to the called party. |
The feature maintains a profile address list of home VLR numbers. If the VLR number is in this list, the call is not roaming.
Service type
The call’s service type is classified as one of:
-
Voice
-
Video
-
Data
-
Fax
A ServiceType enum is defined to represent the values, and the service type is stored in session state variable ServiceType.
The service type is determined based on the following pseudo code:
Function DetermineServiceType(initialDP) IF initialDP.ext-basicServiceCode == ext-Teleservice THEN CASE initialDP.ext-basicServiceCode.ext-Teleservice Telephony(11): EmergencyCalls(12): VoiceGroupCall(91): VoiceBroadcast(92): return VOICE Alternate speech and fax group 3(61): Automatic fax group 3(62): return FAX ENDCASE ENDIF IF initialDP.ext-basicServiceCode is ext-BearerService THEN IF initialDP.ext-basicServiceCode.ext-BearerService == Asynchronous data bearer services (30) THEN return VIDEO ELSE IF initialDP.ext-basicServiceCode.ext-BearerService == synchronous data bearer services (20) THEN return DATA ENDIF ENDIF /* assume voice if no match */ return VOICE
Session State inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session, which will be analysed to classify the session |
Report featureCannotStart, featureHasFinished |
Outputs
Name | Type | Format | Description |
---|---|---|---|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
The type of this session |
RoamingIndicator |
Boolean |
true if roaming, false if non-roaming or indeterminate |
Indicates whether this call is roaming or non-roaming |
ServiceType |
com.opencloud.sentinel.common.ServiceType |
One of: Voice, Data, Fax, Video, Unknown |
Indicates the service type of this session |
Error scenarios
Scenario | Handling |
---|---|
Null sessionstate InitialDPArg |
Report featureCannotStart |
Null sessionstate SentinelSelectionKey |
Report featureCannotStart |
InitialDPArg not CAP |
Report featureCannotStart |
Session type could not be determined |
featureFailedToExecute |
Roaming status could not be determined |
featureFailedToExecute |
Service type could not be determined |
featureFailedToExecute |
Feature responses
Response | Reason |
---|---|
featureCannotStart InitialDP has not been set in session state, SessionState Sentinel |
SelectionKey is not set or InitialDP is not CAP |
featureFailedToExecute |
unclassified error |
featureHasFinished |
feature has finished |
Configuration
The ClassifyCall feature configuration consists of the BearerService and TeleService configuration profiles.
BearerService configuration
Parameter | Type | Description |
---|---|---|
BearerServiceCode |
Integer |
The bearer service value |
BearerService |
ServiceType |
The ServiceType associated with the bearer service value |
TeleService configuration
Parameter | Type | Description |
---|---|---|
TeleServiceCode |
Integer |
The tele service value |
TeleService |
ServiceType |
The ServiceType associated with the tele service value |
Each ServiceType attribute can be one of the following: Voice, Data, Fax, Video, Unknown.
For roaming determination, Classify Call uses an address list for matching VLR addresses. See Address Lists for how to configure data for the address list.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:ClassifyCallScenario:HomeVLR |
${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable Feature specific |
Address List entry table |
${SELECTIONKEY}:ClassifyCallScenario:HomeVLR:${ADDRESS} |
BearerServiceConfigProfileTable |
BearerService configuration |
SentinelSelectionKey + ':' + BearerServiceCode (for example, |
TeleServiceConfigProfileTable |
TeleService configuration |
SentinelSelectionKey + ':' + TeleServiceCode (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Closed User Group Feature
Description
Feature script name |
ClosedUserGroup |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
|
The Closed User Group (CUG) feature indicates to the OCS any CUGs that apply to the current session, and optionally restricts a subscriber to sessions within a CUG. The subscriber can be a member of multiple groups, with the group sizes being a maximum of 1,000 entries. The feature has similar functionality to the CUG Closed User Group (CUG) Supplementary Services GSM TS 02.85.
CUG will also have the following features.
-
Supports MOC, MFC, MTC, Network-Initiated.
-
If feature is enabled for the subscriber, and there is no preferential CUG and no CUG specified, then reject the session.
-
The subscriber may provide a CUG index to select which CUG will override the preferential CUG for the session.
-
Set which AVPs and CDR fields contain the CUGs that the session matches. (AVPs presumed to be set by the mapper.)
Each CUG has the following attributes:
-
Rating group
-
Incoming Access (IA) — an arrangement which allows a member of a CUG to receive calls from outside the CUG
-
Outgoing Access (OA) — an arrangement which allows a member of a CUG to place calls outside the CUG.
The ICB and OCB capabilities of the CUG Supplementary Service are not supported:
Outgoing access |
The CUG to use for a call will be determined as follows:
IF CUGToUse is not set AND subscriber's CUGPreferred is set THEN CUG for call is CUGPreferred RETURN ENDIF IF CUGToUse is set but invalid index for subscriber's CUGList THEN reject call RETURN ENDIF CUG for call is CUGList[CUGToUse]
The algorithm to check if the session is within a CUG:
IF numberToCheck exact or longest prefix matches in CUG table THEN add CUG name to sessionState.CUGMatchedList list add Rating group to sessionState CUGMatchedRatingGroupList list ENDIF
The number to check include prefix matches:
Call type | Number to check against CUG list |
---|---|
MOC |
CalledPartyBCDNumber |
MFC |
CalledPartyNumber |
MTC |
CallingPartyNumber |
NetworkInitiated(Callback) |
Leg #4 Address |
Emergency |
N/A |
MOSMS |
DestinationSubscriberNumber |
In all cases the normalised number will be used for the check.
The CUG feature will not include any logic to determine if the CUG entries are legal. This will be the requirement of the provisioning system.
Any errors encountered during the execution of this feature, such as configuration errors or missing subscriber data, will have no effect: no tariff will be set. The call will be allowed to continue with no effect to the call. (Dependent on error — the rule above specifies rejecting the call if invalid index.)
Session State inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDPArg which triggered this session if it is a call |
Set ClosedUserGroupCall session state field to false (indicating that this is not a closed user group call) |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Determines how to perform CUG analysis |
Report featureCannotStart, featureHasFinished |
SessionType |
com.opencloud.sentinel.common.SessionType |
One of: call, sms |
For mobile originating sessions, distinguish call or sms CUG analysis |
Report featureCannotStart, featureHasFinished |
CAP3InitialDPSMSArg |
com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg |
InitialDPSMSArg which triggered this session if it is an sms |
Set ClosedUserGroupCallsession state field to false (indicating that this is not a closed user group call) |
|
ClosedUserGroupEnabled |
Boolean |
true or false |
Whether the subscriber has closed user group support enabled |
Equivalent behaviour if null or false |
ClosedUserGroupList |
String[] |
Array of closed user group names |
The closed user groups this subscriber belongs to |
Increment ClosedUserGroupNotEnabled |
ClosedUserGroupPreferred |
Integer |
Any integer from 0 — ClosedUserGroupList.length |
Indexes this subscriber’s preferred closed user group in their ClosedUserGroupList |
Set ClosedUserGroupCall session state field to false |
ClosedUserGroupToUse |
Integer |
Null or any integer from 0 — ClosedUserGroupList.length |
Index which overrides ClosedUserGroupPreferred if set |
Set ClosedUserGroupSelectedGroupName session state field to ClosedUserGroupPreferred |
Outputs
Name | Type | Format | Description |
---|---|---|---|
ClosedUserGroupCall |
Boolean |
true or false |
Indicates whether this session is a closed user group call |
ClosedUserGroupSelectedGroupName |
String |
May be null if ClosedUserGroupCall is false or CUG analysis failed |
Name of the selected closed user group |
RatingGroup |
Long |
May be null if ClosedUserGroupCall is false or CUG analysis failed |
ID of the selected rating group |
Error scenarios
Scenario | Handling |
---|---|
Null sessionstate SentinelSelectionKey |
Report featureCannotStart |
Null sessionstate CallType |
Report featureCannotStart |
Null sessionstate SessionType |
Report featureCannotStart |
Null sessionstate ClosedUserGroupPreferred |
Report featureCannotStart |
SessionState: CUG preferred id is invalid |
Set sessionstate ClosedUserGroupCall to false |
OtherPartyAddress could not be set successfully |
Set sessionstate ClosedUserGroupCall to false |
No CUG Group was selected |
Set sessionstate ClosedUserGroupCall to false |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Invalid session state or configuration |
releaseCallAndCloseDialog |
CUG preferred ID is null, CUG preferred ID is invalid, no CUG Group was selected, call not allowed, or no CUG Profile was found for group |
featureIssuedWarning |
OtherPartyAddress has not been set or no CUG Group was selected |
featureHasFinished |
feature has finished |
Configuration
Each ClosedUserGroup’s configuration includes:
a general configuration profile (1 entry):
Parameter | Type | Description |
---|---|---|
Name |
String |
Name of the the CUG |
Description |
String |
Description of the CUG |
RatingGroup |
Long |
Rating group to associate with the CUG |
RestrictIncomingAccess |
Boolean |
Global per-subscriber override to restrict incoming calls from non-CUG members |
RestrictOutgoingAccess |
Boolean |
Global per-subscriber override to restrict outgoing calls to non-CUG members |
a list of numbers (configured as address lists; 0..N entries):
Parameter | Values |
---|---|
Number |
Normalized number |
The CUG number list is provisioned in international format:
-
6421678956
-
6492324856
-
64800123456 (0800 123456)
a per-subscriber configuration (held in session state and retrieved by, for example, the Subscriber Data Lookup Feature; 1 entry):
Parameter | Type | Values |
---|---|---|
CUGEnabled |
Boolean |
true/false |
CUGPreferred |
Integer |
CUG Index (for example, 0) |
CUGList |
String[] |
List of CUG names (for example, |
CUGIncomingAccessAllowed |
Boolean |
true/false |
CUGOutgoingAccessAllowed |
Boolean |
true/false |
OCS interface
In the case of Diameter Ro, a proprietary AVP will be set to indicate:
-
the specific CUG group tariff code(s) (SessionState.CUGTariffGroup)
-
the CUG name (SessionState.CUGName)
-
type of access (SessionState.CUGAccessType with values IntraCUG, IncomingAccess, OutgoingAccess)
The AVP mapping will be determined as part of the vendor-specific integration requirements for the OCS.
Triggers and application contexts
Application Contexts:
-
cap-v2-gsmSSF-to-gsmSCF-AC
-
capssf_scfGenericAC (CAP3)
The InitialDP will be triggered on DP2 (Collected_Info).
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
ClosedUserGroupCUGsProfileTable |
CUG general configuration |
${SELECTIONKEY}:${CUGName} (for example, OpenCloud:Opencloud::::CUG1Profile) |
${PLATFORMOPERATOR}_Sentinel_AddressLisConfigurationTable |
Address list configuration |
${SELECTIONKEY}:ClosedUserGroup:${CUGName} (for example, OpenCloud:Opencloud::::ClosedUserGroup:CUG1Profile) |
${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable |
Feature specific Address List entry table |
${SELECTIONKEY}:ClosedUserGroup:${CUGName}:${ADDRESS} (for example, OpenCloud:Opencloud::::ClosedUserGroup:CUG1Profile:34600000001) |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Connect and Close Feature
Continue and Close Feature
Do Not Monitor Session Feature
Description
Feature name |
DoNotMonitorSession |
---|---|
Applicable contexts |
SS7 Service |
SAS Support |
No |
Prerequisite Features |
None |
This is an initial trigger feature which instructs Sentinel core not to monitor the call. Sentinel will send a Continue and close the dialog.
Emergency And Special Number Feature
Description
Feature name |
EmergencyAndSpecialNumber |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
None |
The Emergency and Special Number Feature is used as a pre credit check feature early or first in the feature list, to allow the call to continue immediately with no further intervention from Sentinel.
The feature will continue the call with no further intervention in the following cases:
-
MOC: initialDP.calledPartyBCDNumber is an exact match with a number in the provisioned table
-
MTC/MFC: initialDP.calledPartyNumber is an exact match with a number in the provisioned table
-
Any: initialDP.ext-basicServiceCode == ext-Teleservice AND initialDP.ext-basicServiceCode.ext-Teleservice == EmergencyCalls(0x12).
Session State inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session |
Report featureCannotStart, featureHasFinished |
Outputs
Name | Type | Format | Description |
---|---|---|---|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Call type will be overwritten as EmergencyCall if the call is to a special or emergency number, otherwise it will be left as is |
Error scenarios
Scenario | Handling |
---|---|
InitialDPArg is not CAP |
Report featureCannotStart |
Null sessionstate SentinelSelectionKey |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Protocol is not CAP or SessionState SentinelSelectionKey is not set |
continueAndCloseDialog |
is a call to a special or emergency number |
featureHasFinished |
feature has finished |
Configuration
The feature maintains a table of emergency or special numbers (using AddressLists) which are compared to the Called Party Number.
Error handling
If there are any errors attempting to execute this feature, such as a configuration error, the feature will end handling and allow Sentinel to continue handling the call as if it was NOT an emergency call.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
${PLATFORMOPERATOR}_Sentinel_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:EmergencyAndSpecialNumber:AddressList |
${PLATFORMOPERATOR}_Sentinel_AddressListEntryTable |
Feature specific Address List entry table |
${SELECTIONKEY}:EmergencyAndSpecialNumber:AddressList:${Address} |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Friends and Family Feature
Description
Feature name |
FriendsAndFamily |
---|---|
Applicable contexts |
|
SAS Support |
No * Diameter Mediation Service |
Prerequisite features |
Subscriber Data Lookup Feature
The Friends and Family (FnF) feature sets a special OCS tariff code if a subscriber is making a call to a number in their FnF list. If the other party’s number is in the FnF list, Sentinel will send the configured FnF tariff code (=rating group) while performing charging to OCS. The subscriber for the call type will have been determined using the SS7 Subscriber Determination Feature. When the MSC triggers Sentinel, the FnF list is retrieved for the subscriber. The number to check in the FnF list for the subscriber is shown in the table below:
Call type | Number to check against FnF list |
---|---|
MOC |
CalledPartyBCDNumber |
MTC |
CallingPartyNumber |
MFC |
CalledPartyNumber |
NetworkInitiated(Callback) |
Leg #4 Address |
Emergency |
N/A |
MOSMS |
DestinationSubscriberNumber |
In all cases the normalized number will be used for the check.
It is expected that a subscriber’s Friends and Family list will be limited to a small number (such as 5). No logic will be implemented in the Profile/Database or Feature to enforce this limit. Any limit required by the operator will be enforced by the system provisioning the feature.
Any errors encountered during the execution of this feature, such as configuration errors or missing subscriber data, will have no effect on the call. No tariff will be set. The call will be allowed to proceed with other features.
Session State inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Runtime exception handled by the feature runner |
FriendsAndFamilyEnabled |
Boolean |
true or false |
Indicates whether Friends and Family is enabled for this subscriber |
Runtime exception handled by the feature runner |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session if it is a call — may be null if sms |
If SessionType is call, Report featureCannotStart, featureHasFinished |
|
InitialDPSMSArg |
com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg |
InitialDPSMS which triggered this session if it is an sms — may be null if call |
If SessionType is sms, Report featureCannotStart, featureHasFinished |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Calltype used for determining which party number is the other party address |
Report featureCannotStart, featureHasFinished |
SessionType |
com.opencloud.sentinel.common.SessionType |
One of: call, sms |
Decide whether to inspect InitialDPSMSArg or InitialDPArg session state field when determining other party address |
Runtime exception handled by the feature runner |
FriendsAndFamilyList |
String[] |
Array of addresses |
List of friends and family numbers |
Set IsFriendsAndFamilyCall session state field to false |
Outputs
Name | Type | Format | Description |
---|---|---|---|
IsFriendsAndFamilyCall |
Boolean |
true or false |
Indicates whether this session is a friends and family call |
RatingGroup |
Long |
May be null if IsFriendsAndFamilyCall is false or FNF analysis failed |
ID of the selected rating group |
Error scenarios
Scenario | Handling |
---|---|
Sessionstate CallType is null |
Report featureCannotStart |
Other Party address could not be determined |
Report featureIssuedWarning |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Call type is not set in the session state |
featureIssuedWarning |
OtherPartyAddress has not been set |
featureHasFinished |
feature has finished |
OCS interface
In the case of Diameter Ro, a proprietary AVP will be set to indicate the FnF tariff code to the OCS. This will be determined as part of the vendor-specific integration requirements for the OCS.
Configuration
Friends and Family feature general configuration parameters
Parameter | Type | Description |
---|---|---|
LookupMethod |
LookupTypeEnum |
The method to be used to lookup the zone; one of: [profile,dbQuery] |
RatingGroup |
Long |
General Rating Group for FnF |
Subscriber FriendsAndFamily data (determined by, for example, the SubscriberDataLookup feature)
Parameter | Type | Values |
---|---|---|
FriendsAndFamilyEnabled |
Boolean |
true when HomeZone feature is activated for this subscriber. See Friends and Family Feature. |
FriendsAndFamilyList |
String[] |
list of numbers in normalized format (for example, 6421678956,6421345444,6421343333) |
The Friends and Family list is provisioned in normalized format, such as:
-
6421678956
-
6492324856
-
64800123456 (0800 123456)
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
FriendsAndFamilyFeatureConfigProfileTable |
Selection of database implementation and rating group for the feature |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Home Zone Feature
Description
Feature script name |
HomeZone |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
The Home Zone feature determines if the subscriber is within a defined set of home zones on originating calls.
The subscriber zones table is used to determine the list of zones that the subscriber is registered in.
The location type criteria is determined from the initialdp.locationInformation.cellGlobalIdOrServiceAreaIdOrLAI and set to one of SAI, CGI, or LAI.
Then the zones table is used to determine if the location from the initialdp is in one of the registered zones for the subscriber.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
HomeZoneEnabled |
Boolean |
true or false |
Whether the subscriber has home zone support enabled |
Runtime exception handled by the feature runner |
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
CAP-DataTypes.InitialDPArg |
InitialDP which triggered this session if it is a call |
Report featureCannotStart, featureHasFinished |
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Only mobile originating calls eligible for home zone |
Report featureCannotStart, featureHasFinished |
HomeZoneList |
String[] |
Array of zone names |
The subscriber’s home zones |
Set InHomeZone session state field to false |
Error scenarios
Scenario | Handling |
---|---|
Sessionstate |
CallType is null Set Sessionstate InHomeZone to false |
Sessionstate InitialDPArg is null |
Set Sessionstate InHomeZone to false |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Call type is not set in the session state or InitialDP Arg is not set in the session state |
featureHasFinished |
feature has finished |
Configuration
Home Zone has a single general configuration parameter:
Parameter | Type | Description |
---|---|---|
LookupMethod |
LookupTypeEnum |
The method to be used to lookup the zone; one of: [profile,dbQuery] |
The storage of zone information is as follows:
Field | Type | Description |
---|---|---|
Name |
String |
Name of the zone referenced by subscriber specific zone configuration |
LocationTypes |
LocationTypeEnum[] |
Each entry to be be one of: [SAI, CGI or LAI] |
LocationDescriptions |
String[] |
Location descriptions |
MCC |
String[] |
MCC may have values between 100 and 999 |
MNC |
String[] |
MNC may have values between 10 and 999 |
LAC |
Integer[] |
LAC may have values between 1 and 65533 (FFFD) and 65535 (FFFF) (excludes 0 and 65534 (FFFE) for which no valid LAI exists) |
CIOrSAC |
Integer[] |
CI may have values between 0 and 65535 (FFFF); SAC may have values between 0 and 65535 (FFFF) |
Example Zones Table
ZoneName | LocationType | MCC | MNC | LAC | CIorSAC | Location description |
---|---|---|---|---|---|---|
WgtnCBD |
SAI |
530 |
01 |
11 |
22 |
Vodafone NZ location |
WgtnCBD |
CGI |
530 |
01 |
01 |
01 |
Vodafone NZ location |
WgtnCBD |
LAI |
530 |
01 |
01 |
Vodafone NZ location |
|
AkldCBD |
LAI |
530 |
02 |
02 |
Vodafone NZ location |
Where LocationType=SAI or CGI then MCC, MNC, LAC, and CIorSAC are mandatory
Where LocationType=LAI then MCC, MNC, and LAC are mandatory. CIorSAC must not be set.
Subscriber Zones Table
Field | Description |
---|---|
HomeZoneEnabled |
true or false |
HomeZoneList |
List of home zones from the zones table for this subscriber |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
HomeZoneFeatureConfigProfileTable |
Feature configuration. Currently for the selection of database implementation for the zones table |
SentinelSelectionKey (for example, |
HomeZoneFeatureSqlProfileTable |
SQL statement configuration |
SentinelSelectionKey (for example, |
HomeZoneFeatureZonesProfileTable |
Zone table if profiles selected |
SentinelSelectionKey:ZoneName (for example, |
Database schemas
Database schemas for TimesTen and Oracle are available in the Sentinel release package.
Provisioning interfaces
The feature is provisioned using the Sentinel Home Zone REST API or web interface.
Play Announcement Feature
The Play Announcement feature plays an announcement to the calling party during call establishment or after the called party disconnects. The announcement is played by the MSC/GMSC gsmSRF.
Description
Feature name |
PlayAnnouncement |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
|
The id of the announcements to be played is set in the AnnouncementID
session variable. If the AnnouncementID
session variable is not set (null) or set to 0, no announcement is played and the feature returns without error or side effect to the dialog.
Another feature must be executed prior to the PlayAnnouncement
feature to set the AnnouncementID
.
All announcements which are played by the feature are appended to the PlayedAnnouncementIDs
session variable. This list of announcements is used by the standard CDR mappers and may be used in custom CDR mappers.
The announcement can be played using one of the following modes:
-
Using
ConnectToResource
only, to connect to an SRF integrated with the controlling MSC. -
Using
EstablishTemporaryConnection
and an assisting dialog to connect to a non-integrated SRF. -
Using
Connect
to redirect the call to an IVR or announcement device. When using this mode the call ceases to be controlled via Sentinel.
If desired the announcement mode can be configured based on address lists matching the global title digits in the dialog’s CallingPartyAddress, the triggering MSC address, the subscriber address (as determined by Sentinel), or the subscriber’s IMSI. Alternatively the announcement can always be played using the same announcement mode.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
AnnouncementID |
Integer |
Any integer |
ID of the announcement that is to be played |
Increment MissingAnnouncementIDs |
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
CanRelayDialog |
boolean |
true or false |
True if the assisting dialog has not been accepted yet |
Not nullable |
ResponderSccpAddress |
com.opencloud.slee.resources.cgin.SccpAddress |
The SCCP Address to use as the responding address in the Open Response instead of the address provided by the stack, or null to leave the address unchanged |
Use the address provided by the stack |
|
LatestEventReportBCSM |
com.opencloud.slee.resources.cgin.callcontrol.CCEventReportBCSMArg |
Once the first event report has been received abandon is no longer required |
Abandon will be armed |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call for determining from configuration which party address to lookup |
Report featureCannotStart, featureHasFinished |
LatestOcsAnswer |
org.jainslee.resources.diameter.ro.types.CreditControlAnswer |
Announcements can reference variables based on latest CCA see Configuration |
No action |
Error scenarios
Scenario | Handling |
---|---|
Null CorrelationProvider |
Increment ConfigurationErrors |
Sessionstate SentinelSelectionKey is null |
Increment InputParameterErrors |
ACI not provided to the announcement feature |
Increment InputParameterErrors |
No profile for selection key and AnnouncementID in AnnouncementProfileTable |
Increment InputParameterErrors |
No profile for selection key in AnnouncementConfigProfileTable |
Increment InputParameterErrors |
Null TariMillis in AnnouncementConfigProfile |
Increment InputParameterErrors |
Exception invoking RequestReportBCSM on dialog |
Increment ErrorsArmingAbandon |
Dialog object not provided to the announcement feature in the activity context interface |
Increment InputParameterErrors |
Invalid type configured for the announcement ID (Should be tone, message or messages) |
Increment InputParameterErrors |
TooManyInvokesException or ProtocolException whiling sending CTR or PlayAnnouncement |
Increment ErrorsSendingCTRAndPA |
Received SS7 Abort |
Increment Ss7Aborts |
Received SS7 Error |
Increment Ss7Errors |
Received Abandon or Disconnect |
If assisting dialog open, send DFC, close assisting dialog as prearranged end, release Correlation ID and clear Correlation ID Input |
Tari expiry |
If not useAssistingDialog, Increment TariExpiries If assisting dialog open, send DFC, close assisting dialog as prearranged end, release Correlation ID and clear Correlation ID Input |
Feature responses
Response | Reason |
---|---|
featureFailedToExecute |
ss7Error |
featureHasFinished |
feature has finished |
Configuration
Announcement configuration
Announcements are referenced by id. The configuration of each announcement id is provisioned in the following table:
Parameter | Type | Description |
---|---|---|
Description |
String |
Description of the announcement |
Id |
Integer |
Announcement ID |
AnnouncementType |
AnnouncementTypeEnum |
The announcement type, one of [message, tone, messages] |
Value |
Integer[] |
Value of the message/tone ID (or IDs if 'announcementType' is 'messages') to be played. |
ToneDuration |
Integer |
Duration of a tone announcement in seconds. Valid values: not set, 0 - 65535. Note: 0 means infinite duration. (This is an Integer4 ASN.1 type). |
NumberOfRepetitions |
Integer |
The number of times an announcement may be repeated. Valid values: 0 - 127. Note: 0 means the NumberOfRepetitions parameter is not included in the InbandInfo of the PlayAnnouncement operation. |
VariableCcaPaths |
String[] |
An array of CCA xpath expressions |
VariableTypes |
String[] |
An array of type names. Each entry has to be one of [integer, number, date, time, price] |
AllowDisconnect |
Boolean |
Determines if automatic disconnect of the gsmSRF is allowed when the announcement is complete. |
ResetTssf |
Boolean |
Indicates whether or not a ResetTimer operation will be sent before the announcement is played to reset the Tssf timer. |
InvokeTimeout |
Long |
Invoke timeout in milliseconds. In conjunction with the Tssf Reset Margin it is used to set the invoke timeout of the PlayAnnouncement operation and to determine the value to reset the Tssf timer to via the ResetTimer operation before the announcement begins (if ResetTssf is true). 1000-3600000 milliseconds. |
CtrConfig |
String |
Reference to resource configuration to use with ConnectToResource |
IvrAddressCalledPartyNumber |
The IVR address is only required if the announcement mode is CONNECT. It is specified in called party number string format, which includes comma-separated name value pairs with names one of: address, nature, numberingPlan, routingToInternalNetworkNumber. See CalledPartyNumber for more information. |
Example announcement table configuration:
ID | Description | Type | Value | ToneDuration | NumberOfRepetitions | AllowDisconnect | InvokeTimeout | CtrConfig | VariableCcaPaths | VariableTypes |
---|---|---|---|---|---|---|---|---|---|---|
1 |
Play message "You have insufficient credit to make this call" |
message |
123 |
3 |
N |
10000 |
srf1 |
|||
2 |
Play tone |
tone |
23 |
250 |
N |
1000 |
||||
3 |
Play messages "You have insufficient credit to make this call", and "Call the topup line" |
messages |
123,124 |
N |
10000 |
|||||
4 |
Play message with variable 1 assigned time granted |
message |
34 |
N |
10000 |
|
[integer] |
The Play Announcement feature may set variables based on fields from session state (latest CCA is supported). The Sentinel XPath Language Component is used to reference fields in the CCA. For example, /MultipleServicesCreditControl[ServiceId = 0]/GrantedServiceUnit/CCTime references the amount of time granted for service with id 0.
The CtrConfig is a reference to an entry in the Resource Config table with the ConnectToResource configuration.
Resource config
Parameter | Type | Description |
---|---|---|
Name |
String |
Name of this CtrConfig. It is used by the announcement configuration profile to reference this configuration. |
ResourceAddressCalledPartyNumber |
The resource address in called party number string format, which includes comma-separated name value pairs with names one of: address, nature, numberingPlan, routingToInternalNetworkNumber. See CalledPartyNumber for more information. Example resource configuration profile: |
|
Name |
ResourceAddress |
srf1 |
The ResourceAddress choice NONE is selected when the ResourceAddress is not set.
Announcement mode
The announcement mode determines how the announcement will be played:
Internally using ConnectToResource only, to connect to an SRF integrated with the controlling MSC.
Using EstablishTemporaryConnection and an assisting dialog to connect to a non-integrated SRF. There are two sub-modes of this mode:
Combined mode, where the assisting MSC address, SCF id, and correlation id are all combined into the assistingSSPIPRoutingAddress parameter of the EstablishTemporaryConnection operation argument.
Separate mode, where the assisting MSC address, SCF id, and correlation id all use separate fields in the EstablishTemporaryConnection operation argument.
Using Connect to redirect the call to an IVR or announcement device. When using this mode the call ceases to be controlled via Sentinel.
The announcement mode is determined first by address list interrogation (see table below), followed by the Sentinel Selection Key configuration if no matching address list configuration was found.
Address lists
The Play Announcement feature supports four different address lists for determining the announcement mode:
Address List Name | Default | Search Mode | Description |
---|---|---|---|
OriginatingSccpAddressList |
longest prefix match |
Uses the the global title digits of the the incoming dialog’s CallingPartyAddress. |
MscAddressList |
longest prefix match |
Uses the address string of the MSCAddress parameter of the incoming InitialDP or InitialDPSMS. |
SubscriberAddressList |
exact match |
Uses the subscriber address for the session. |
SubscriberImsiList |
exact match |
Uses the subscriber IMSI for the session. |
The address lists actually searched by the Play Announcement feature are determined by the Sentinel Selection Key configuration. The default search mode for each list can be changed via the configuration for the corresponding address list. An address list will only be searched if the feature can determine a suitable address for the lookup. For example, if the incoming dialog has no global title digits in the CallingPartyAddress then the OriginatingSccpAddressList will not be searched, even if specified in the configuration.
Sentinel selection key configuration
Various other parameters related to playing the announcement are set in a configuration that may be scoped to the Sentinel selection key:
Parameter | Type | Description |
---|---|---|
AnnouncementLists |
AnnouncementList[] |
A list of Address List names specifying which address lists to search for the announcement mode. The address lists will be searched in the order given in this list. |
Default Mode |
AnnouncementMode |
The announcement mode to use if address list lookup fails to find an announcement mode. One of [INTERNAL, ETC_COMBINED, ETC_SEPARATE, CONNECT] |
Assisting SSP IP Routing Address Generic Number |
Address of the Assisting MSC. Only required if using an ETC announcement mode. |
|
Combined Mode SCF ID |
String |
The SCF ID of Sentinel to use in ETC_COMBINED mode. Only required if using an ETC_COMBINED announcement mode. |
Separate Mode SCF ID |
Byte[] |
The SCF ID of Sentinel to use in ETC_SEPARATE mode. Only required if using an ETC_SEPARATE announcement mode. |
Use Correlation Delimiter |
Boolean |
Flag indicating if a delimiter digit (hex 'b') should be used between the assisting MSC address and the SCF ID when using the ETC_COMBINED mode. Only relevant if using this mode. |
Integer |
The number of seconds added to the announcement duration used to reset the Tssf timer using the ResetTimer operation during announcement playing. This is just a safety margin. |
|
Tari Millis |
Long |
The Tari timer value in milliseconds |
Announcement playing signalling flows
If AllowDisconnect=false or is not set or has invalid value, the PlayAnnouncement.disconnectFromIPForbidden is set to true and the announcement component will send the DFC; otherwise it will not.
The call flow to be used (AllowDisconnect=true):
MSC <---- RT ----- Sentinel MSC <---- CTR ---- Sentinel MSC <---- PA ----- Sentinel MSC <- DELIMITER - Sentinel MSC ----- SRR ---> Sentinel MSC - DELIMITER -> Sentinel
The call flow to be used (AllowDisconnect=false):
MSC <---- RT ----- Sentinel MSC <---- CTR ---- Sentinel MSC <---- PA ----- Sentinel MSC <- DELIMITER - Sentinel MSC ----- SRR ---> Sentinel MSC <---- DFC ---- Sentinel MSC <- DELIMITER - Sentinel
In the case of multiple announcements, all the play announcements in the list will be sent together to the gsmSRF. The FSM will handle all of the SRR expected from the gsmSRF before returning.
The call flow to be used (all AllowDisconnect=false):
MSC <---- CTR ---- Sentinel MSC <---- PA ----- Sentinel MSC <---- PA ----- Sentinel MSC ----- SRR ---> Sentinel MSC ----- SRR ---> Sentinel MSC <---- DFC ---- Sentinel
Error handling
The Play Announcement feature may encounter a number of different errors, for example:
-
required configuration state may be missing
-
required configuration parameters may be invalid
-
operation errors sent by the initiating or assisting MSC may be encountered
In all error cases the feature returns the featureFailedToExecute
result and exits. A feature script can test for this condition and react accordingly, for example the script could allow the call to continue regardless, or could release the call instead.
Examples of some error call flows:
SRR expected but not received:
MSC <---- CTR ---- Sentinel MSC <---- PA(requestAnnouncementComplete=true) ---- Sentinel Invoke timeout MSC ----> PE(NO_LINKED_RESPONSE) ---> Sentinel
This is the standard case when requestAnnouncementComplete=false (that is, no SRR expected but we still get the provider error due to the protocol definition)
MSC <---- CTR ---- Sentinel MSC <---- PA(requestAnnouncementComplete=n) ---- Sentinel Invoke timeout MSC ----> PE(NO_LINKED_RESPONSE) ---> Sentinel
Reject:
MSC <---- CTR ---- Sentinel MSC <---- PA ---- Sentinel MSC ----> PE(REMOTE_REJECT) ---> Sentinel
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
AnnouncementProfileTable |
Announcement configuration profiles |
SentinelSelectionKey:id (for example, |
AnnouncementResourceConfigProfileTable |
ConnectToResource resource configuration |
SentinelSelectionKey:ctrConfigName (for example, |
AnnouncementConfigProfileTable |
Additional resource configuration |
SentinelSelectionKey:configName (for example, |
${PLATFORMOPERATOR}PlayAnnouncementAddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:PlayAnnouncement:${AddressListName} |
${PLATFORMOPERATOR}PlayAnnouncementAddressListEntryTable |
Feature specific Address List entry table |
${SELECTIONKEY}:PlayAnnouncement:${AddressListName}:${ADDRESS} |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Prefix and Suffix Analysis Feature
Sentinel has a set of configurable prefix and suffix lists, scoped by Sentinel selection key, which are used for number analysis.
Description
Feature name |
PrefixAndSuffixAnalysis |
---|---|
Applicable contexts |
|
SAS Support |
No * Diameter Mediation Service |
Prerequisite features |
If a prefix or suffix is matched, the directive associated with the prefix is used.
The directives are: strip prefix/suffix or retain prefix/suffix, and set session parameter with configured value.
Where the directive is strip, the new called party number will be sent in a connect.
Subsequent features may make additional changes to the called party number, so the final address sent in the connect will be dependent on those features. |
Parameter | Description |
---|---|
Address |
Prefix or suffix to match |
Description |
|
ListId |
${SELECTIONKEY}:PrefixAndSuffixAnalysis::SpecialPrefixList |
ParameterName |
Session state field to set (for example, AnnouncementID). Field name is in Java identifier format, and follows the rules of Java identifiers (such as not being a Java keyword). |
ParameterType |
boolean, integer, long, string |
ParameterValue |
Value to write to session state. Must be formatted correctly for the value specified in the Parameter Type field |
PrefixDirective |
strip, retain |
Example of prefix analysis configuration:
Prefix/suffix address | Directive | Session Parameter | Parameter Type | Parameter Value | Description |
---|---|---|---|---|---|
1234 |
STRIP |
CLI |
String |
SUPPRESS |
|
555 |
STRIP |
TARIFF |
String |
Cheap-International-Calling |
|
*591 |
STRIP |
PROFILE |
Integer |
1 |
Profile selection |
*592 |
STRIP |
PROFILE |
Integer |
2 |
Profile selection |
*593 |
STRIP |
PROFILE |
Integer |
3 |
Profile selection |
*594 |
STRIP |
PROFILE |
Integer |
4 |
Profile selection |
. |
STRIP |
Strip ST (end of pulsing) digit |
Prefix may contain the following characters: 0-9, *, #, a, b, c, and . (period) . The expected decoding of a network address is specific to the number.
CalledPartyBCDNumber (MO calls):
Decoded character |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
* |
# |
a |
b |
c |
Encoded hexadecimal |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
CalledPartyNumber (MF/MT calls):
Decoded character |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
* |
# |
. |
|||
Encoded hexadecimal |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1. |
CAP-DataTypes.InitialDPArg InitialDP which triggered this session |
Report featureCannotStart, featureHasFinished |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call for determining which party address to analyse |
Report featureCannotStart, featureHasFinished |
Outputs
Name | Type | Format | Description |
---|---|---|---|
DestinationHasChanged |
boolean |
true or false |
True if the IDP CdPA number address has been modified |
ServiceType |
com.opencloud.sentinel.common.ServiceType |
One of: Voice, Data, Fax, Video, Unknown |
Indicates the service type of this session |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
CAP-DataTypes.InitialDPArg |
Updated InitialDPArg if destination has changed |
Other session state fields see Description see Description This feature can update other session state fields according to configuration data when a prefix or suffix match is found
Error scenarios
Scenario | Handling |
---|---|
Sessionstate SentinelSelectionKey is null |
Report featureCannotStart |
Sessionstate InitialDPArg is null |
Report featureCannotStart |
Sessionstate InitialDPArg is not CAP |
Report featureCannotStart |
Attempt to set non-existent SessionState parameter |
Report featureFailedToExecute |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
SessionState SentinelSelectionKey is not set, InitialDP Arg is not set in session state or InitialDP Arg is not an instance of CAP1InitialDPArg |
featureFailedToExecute |
Attempt to set non-existent SessionState parameter |
featureHasFinished |
feature has finished |
Multiple subscriber profile selection
The Prefix and Suffix Analysis feature supports multiple subscriber profile selection. See Noldus[1] pp.219 5.2.9 Multiple Subscriber Profile.
MSP uses suffixes with the following digit string for the called party number, for dynamic profile selection: <Directory Number>59n # SEND , where n identifies the profile.
Configuration
Prefix and Suffix Analysis uses Sentinel AddressLists for configuration data. See Address Lists for how to provide the configuration data.
Configuration profile naming
Configuration Profile Table Name |
Description |
Profile Naming |
${PLATFORMOPERATOR}_PrefixAndSuffixAnalysisFeature_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialPrefiList or ${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialSuffixList |
${PLATFORMOPERATOR}_PrefixAndSuffixAnalysisFeature_AddressListEntryTable |
Feature specific Address List entry table |
${SELECTIONKEY}:PrefixAndSuffixAnalysis:SpecialPrefixList:${ADDRESS} |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
NOLDUS |
CAMEL |
INTELLIGENT NETWORKS FOR THE GSM, GPRS AND UMTS NETWORK |
Rogier Noldus |
2006 |
John Wiley & Sons, Ltd |
Relay Dialog During Dialog Analysis Feature
Description
Feature name |
RelayDialogDuringDialogAnalysis |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Typical feature execution points |
DirectAccess_SessionStart, DirectAccess_SessionAccept |
Prerequisite features |
None |
The Relay Dialog During Dialog Analysis feature requests Sentinel core to relay the received dialog to another network element.
Feature responses
Response | Reason |
---|---|
relayDialog |
the dialog should be relayed |
featureHasFinished |
feature has finished |
Relay Dialog During Initial Trigger Analysis Feature
Description
Feature name |
RelayDialogDuringInitialTriggerAnalysis |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Typical feature execution points |
Any of the initial trigger feature execution points such as |
Prerequisite features |
None |
This feature requests Sentinel core to relay the received dialog to another network element.
Feature responses
Response | Reason |
---|---|
relayDialog |
the dialog should be relayed |
featureHasFinished |
feature has finished |
Call flow
The InitialDP may have been altered by features. For example, the calling and called party numbers in the InitialDP may have been normalised to an international format. The InitalDP relayed to the new network element will contain any such changes.
MSC ---- OpenRequest --> Sentinel MSC ----- InitialDP ---> Sentinel Sentinel ---- OpenRequest --> New Network Element Sentinel ----- InitialDP' --> New Network Element MSC <----------------- OpenAccept -------------------- New Network Element
Release Call and Close Dialog Feature
Description
Feature name |
ReleaseCallAndCloseDialog |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
Optional: Any feature setting the UserReleaseCause session state field |
The Release Call And Close Dialog feature is a very simple feature that instructs Sentinel to release the call or SMS and close the dialog with the MSC. The following release cause codes are used by default:
-
for calls:
-
when used during Initial Trigger handling: CLASS_1_CALL_REJECTED (21)
-
when used during End Session handling: CLASS_1_NORMAL_CALL_CLEARING (16)
-
-
for SMSes:
-
if the latest OCS reply (if any) indicates an unknown user, then: UNKNOWN_SUBSCRIBER (30)
-
otherwise: RESERVED (11)
-
If a different release cause code is needed, another feature can be run before the Release Call And Close Dialog feature to set the CCUserReleaseCause
or CCUserReleaseCause
session state variable. If this session state variable is set, the Release Call And Close Dialog feature uses the cause value it specifies instead of the default. If the value set is not within the valid range of cause codes, the default cause code as specified above will be used instead.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
CCUserReleaseCause |
com.opencloud.slee.resources.in.datatypes.cc.Cause |
Release Cause to use for call control session release |
Report featureCannotStart, featureHasFinished |
|
SMSUserReleaseCause |
com.opencloud.slee.resources.in.datatypes.sms.RPCause |
Release Cause to use for SMS session release |
Report featureCannotStart, featureHasFinished |
|
LatestOcsAnswer |
org.jainslee.resources.diameter.ro.types.CreditControlAnswer |
For determining release cause code if the UserReleaseCause is not set |
Use default call release cause CLASS1_NORMAL_CALL_CLEARING |
|
SessionType |
One of: call, sms |
Session type of this call for choosing how to determine cause code from LatestOcsAnswer |
Runtime exception handled by the feature runner |
Roaming Default Call Forwarding Feature
Description
Feature name |
RoamingDefaultCallForwarding |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
Roaming Default Call Forwarding (RDCF) applies only to roaming MTC calls. It defines roaming-specific forwarding addresses for ‘Busy’, ‘No reply’ cases to prevent tromboning of forwarded calls to numbers in the subscriber’s HPLMN.
The ‘Busy’, ‘No Reply’ cases are triggered when the event report BCSM returns busy or no answer.
RDCF issues a ‘Connect’ to forward the call. The following parameters are set in the ‘Connect’:
Parameter | Value | Description |
---|---|---|
destinationRoutingAddress |
SessionState.{CfBusy,CfNoReply} |
Set based on the forwarding case from session state |
redirectingPartyID |
SessionState.Subscriber |
Sets to the address of the served subscriber |
originalCalledPartyID |
IF initialdp.originalCalledPartyID not set THEN set to initialdp.calledPartyBCDNumber ELSE do not set ENDIF |
|
redirectionInformation.redirectingReason |
USER_BUSY / NO_REPLY / UNCONDITIONAL / MOBILE_UNREACHABLE |
Set based on reason for the forward. |
redirectionInformation.RedirectionCounter |
Set to Maximum Value (configurable) |
Setting the counter to the maximum value has the effect of suppressing call forwarding in the VMSC, and preventing tromboning. |
redirectionInformation.redirecting |
CALL_DIVERTED |
|
oCSIApplicable |
true |
Needed to ensure that MF call is triggered. |
In the case of a subscriber configuration error which causes the feature to be unable to forward the call, the feature will allow the Sentinel core to continue without affecting the call, but will report the error to the core.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Runtime exception handled by feature runner |
LatestEventReportBCSM |
com..opencloud..slee..resources..cgin..callcontrol..CCEventReportBCSMArg |
Argument of the latest event report BCSM received |
Report featureCannotStart, featureHasFinished |
|
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v2.CAP2InitialDPArg |
InitialDP which triggered this session |
Runtime exception handled by feature runner |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call for determining which party address to lookup |
Call is considered not eligible for call forwarding — report featureHasFinished |
RoamingIndicator |
Boolean |
true or false |
Indicates whether this session is roaming |
Runtime exception handled by feature runner |
CfBusy |
String |
MSISDN |
Call forwarding destination address when subscriber line is busy |
If CfNoReply also null, increment FeatureNotEnabledForSubscriber |
CfNoReply |
String |
MSISDN |
Call forwarding destination address when subscriber does not answer |
If CfBusy also null, increment FeatureNotEnabledForSubscriber |
Subscriber |
String |
MSISDN |
For recording RedirectingPartyNumber in the connect arg if call forwarding is triggered |
Runtime exception handled by feature runner |
Error scenarios
Scenario | Handling |
---|---|
MappingException while mapping destination routing address to connect arg |
Report featureFailedToExecute |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
latestEventReportBCSM is not set or Initial DP Arg is missing the CdPA BCD number |
featureFailedToExecute |
Error while forwarding a roaming MT call |
connectAndCloseDialog |
successful attempt to forward the call |
featureHasFinished |
feature has finished |
Interaction with call-forwarding supplementary service
See ETSI TS 100 543/GSM 03.82 Call Forwarding (CF) supplementary services.
RDCF will suppress the call forwarding supplementary service for the subscriber (if configured) in the busy and no answer cases. Unconditional and not reachable cases which do not cause tromboning are not affected by this feature.
Please see Call Forwarding Detection Feature for detection and handling of the early call forwarding case, where the idp is received and call forwarding is pending. |
Triggers and application contexts
Application Contexts:
-
cap-v2-gsmSSF-to-gsmSCF-AC
-
capssf_scfGenericAC (CAP3).
The InitialDP will be triggered on DP12 (Terminating_ Attempt_Authorized).
Configuration
RDCF feature-wide configuration parameters
Parameter | Type | Description |
---|---|---|
MaxRedirectionCounter |
Integer |
The maximum value for use in connect.redirectionInformation.RedirectionCounter |
Subscriber RDCF Table
Parameter | Type |
---|---|
CfBusy |
CalledPartyNumber |
CfNoReply |
CalledPartyNumber |
The the RDCF list is provisioned in international format, such as:
-
6421678956
-
6492324856
-
64800123456 (0800 123456)
The subscriber forwarding numbers will be provisioned using a text format, such as that used for CalledPartyNumber; for example:
address=641234567,NATURE=INTERNATIONAL,numberingplan=isdn,routingToInternalNetworkNumber=allowed
The internal format used by Sentinel will be the binary encoding.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
RoamingDefaultCallForwardingFeatureConfigProfileTable |
Configuration properties |
SentinelSelectionKey (for example, |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Roaming Reorigination Feature
The Reorigination feature is used as a way of handling triggers from roaming subscribers on networks that use CAPv1, or networks that use CAPv2 or CAPv3 but are otherwise determined to be unsupported for direct call control from the VPLMN.
Description
Feature name |
Reorigination |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite Features |
The reorigination capability is needed when:
-
Roaming partners are triggering calls with CAMELv1.
-
Roaming partners are triggering calls with CAPv2, and cannot send the ERB(disconnect) in the same TCAP message as the ACR)(see CAMEL2 issue).
-
The calling party number is lost in the ISUP signalling when traversing an international carrier. In this case Sentinel must store the calling party number and set it in the connect. As setting the calling party number is not supported in CAMEL, this capability requires INAP CS1, CS2, or a proprietary variant. See Noldus[2] section 3.6.3 Short Number Dialling with CLI Guarantee pp.82. Currently not supported in Sentinel.
In these cases, the call is reoriginated to the HPLMN using a pool of special routing numbers. The reoriginated call is re-triggered from the HPLMN MSC.
The Reorigination feature should run at one of the pre credit check feature execution points for both the original InitialDP
and the reoriginated InitialDP
. The Reorigination feature uses the reorigination-correlation-ra to choose the special routing number, and to store data from the original InitialDP
that should be correlated with the reoriginated InitialDP
.
See Correlation Resource Adaptor to understand how the reorigination-correlation-ra works and how it can be configured |
If the dialog should not be reoriginated, or represent a reoriginated dialog, then the Reorigination feature will silently end to allow subsequent features to process the InitialDP . |
The two phases of roaming reorigination
-
Reoriginating a session. The Reorigination feature analyses the
InitialDP
stored in session state to decide if it should be reoriginated. If the dialog should be reoriginated, then it chooses a free special routing address and routes the call to this special routing address. The reoriginated call may then be re-triggered from the HPLMN MSC
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session — CalledPartyBCDNumber may be used in identifying reoriginated calls and may be modified |
Runtime exception to be handled by feature runner |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call |
Call will not be reoriginated or identified as reoriginated |
RoamingIndicator |
Boolean |
true or false |
Indicates whether this is a roaming call |
Reorigination will not be attempted |
Outputs
Name | Type | Format | Description |
---|---|---|---|
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
CalledPartyBCDNumber be restored or replaced if the call has or will be reoriginated |
|
RoamingIndicator |
Boolean |
true or false |
Will be set to true if this call is a reoriginated request, otherwise unchanged |
CCConnectArg |
com.opencloud.slee.resources.cgin.cap_v2.CAP2ConnectArg |
The connect arg Sentinel will use if the call is to be reoriginated — not modified otherwise |
Error scenarios
Scenario | Handling |
---|---|
Sessionstate SentinelSelectionKey is null |
Report featureCannotStart |
Invoked for a non CAP dialog |
Report featureIssuedWarning |
No available correlation entries |
Report releaseCallAndCloseDialog |
Could not find a mapper to build the ConnectArg |
Report featureFailedToExecute |
Error retrieving the correlated data to restore InitialDP |
Report releaseCallAndCloseDialog |
Feature responses
Response | Reason |
---|---|
featureCannotStart SessionState |
SentinelSelectionKey is not set |
featureIssuedWarning |
non CAP dialog |
releaseCallAndCloseDialog |
Error while restoring the original Called Party Address address, error while reoriginating: unsupported network, could not find a mapper to build the ConnectArg |
connectAndCloseDialog |
Attempt to trigger reorigination |
featureHasFinished |
feature has finished |
Below are details of the two phases, followed by Call Flow, Configuration, Configuration Profile Naming, and Provisioning Interfaces.
Phase one: reoriginating a session
Reoriginating a session includes these steps:
Determining if a dialog should be reoriginated
The Reorigination feature analyses the InitialDP
to determine if the dialog should be reoriginated. The Reorigination feature checks:
-
if the dialog is for originating treatment. The first
InitialDP
will be triggered on DP2 (Collected Info). Terminating and forwarded dialogs are not reoriginated. -
if the application context is supported. Supported application contexts are:
-
cap_v1_gsmSSF_to_gsmSCF-AC
-
cap-v2-gsmSSF-to-gsmSCF-AC
-
capssf_scfGenericAC (CAP3).
-
-
if the
InitialDP VLR address
is for a roaming party for which reorigination is supported. Roaming partners that do not support theERB(Disconnect)
+ACH
guarantee are listed in a reorigination configuration table which includes the VLR addresses of the operator. The Reorigination service determines if the VLR address is present in the table, and if so triggers reorigination.
Processing a reoriginated session
If a session is to be reoriginated, the feature uses the Correlation RA to:
-
get an ID that is used to route the call to
-
associate some data with the correlation ID that can be used when the dialog is reoriginated.
The important steps are:
-
Create the address we will use to select an id-pool.
-
Create the data that we will associate with the correlation ID.
-
Get a new correlation entry (passing the address and correlation data).
-
Construct the outgoing connect arg.
Step one is achieved with a Mapper. The Reorigination feature looks for a mapper:
// a mapper that takes an {{InitialDP}} and generates a String. final Mapper mapper = mapperLibrary.findMapper(selectionKey, initialDpArg.getClass(), String.class);
Sentinel includes a Mapper for this purpose — CAPInitialDPToCorrelationIdPoolAddress
— that returns the MCC from location information in the InitialDP.
An alternative mapper that uses a different method for choosing an address to choose the id-pool can be written using the Sentinel SDK. |
Step two is achieved with a Mapper. The Reorigination feature looks for a mapper:
// a mapper that takes an {{InitialDP}} and generates a {{byte\[\]}}. final Mapper mapper = mapperLibrary.findMapper(selectionKey, cap1IdpArg.getClass(), byte[].class);
Sentinel includes a Mapper for this purpose, (CAPInitialDPArgToCorrelationData), that:
-
creates a new
CAP1InitialDPArg
object -
copies the called party bcd number to the new cap 1
InitialDP
-
copies the bearer capability (if present) to the new cap 1
InitialDP
-
copies the redirecting party ID (if present) to the new cap 1
InitialDP
-
copies the redirection information (if present) to the new cap 1
InitialDP
-
copies the location information (if present) to the new cap 1
InitialDP
-
copies the extensions (if present) to the new cap 1
InitialDP
-
uses CGIN persist factory to turn this
CAP1InitialDP → byte[]
.
An alternative mapper that uses a different method for building the correlated data to be associated with the correlation ID can be written using the Sentinel SDK. Step four uses a configuration profile selected from the ReoriginationConfigProfileTable to construct a new DRA, and a Mapper from the trigger class (for example, Cap2InitialDPArg) to a ConnectArg, to map it to an outgoing connect arg. |
Phase two: receiving a reoriginated trigger
Receiving a reoriginated trigger includes these steps:
Determining if a dialog has been reoriginated
The reorigination feature analyses the InitialDP
to determine whether the dialog is a reoriginated dialog; if:
-
The reoriginated InitialDP will be triggered on DP3 (Analyzed Info).
-
The application context is supported. Supported application contexts are:
-
cap-v2-gsmSSF-to-gsmSCF-AC
-
capssf_scfGenericAC (CAP3).
-
-
The called party is a special routing number.
See Correlation Resource Adaptor to understand how the Correlation resource adaptor works and how it can be queried to see if the called party is a special routing number. |
Processing a reoriginated trigger
If this session corresponds is a reoriginated trigger:
-
use the correlation ID (the called party number) to get the correlated data from the Correlation RA
-
restore fields from the original
InitialDP
(that is stored in the correlation data) into the reoriginated InitialDP.
This is achieved with a mapper. The reorigination feature looks for a mapper:
// a mapper that takes a {{byte\[\]}} and returns a {{CAP1InitialDPArg}} final Mapper mapper = mapperLibrary.findMapper(selectionKey, byte[].class, CAP1InitialDPArg.class);
Sentinel core bundles a mapper for this purpose (CorrelationDataToCAPInitialDP) that:
-
uses CGIN persist factory to turn this byte[] into a
CAP1InitialDPArg
object -
copies the cap 1
InitialDP
called party bcd number to the reoriginatedInitialDP
-
copies the cap 1
InitialDP
bearer capability (if present) to the reoriginatedInitialDP
-
copies the cap 1
InitialDP
redirecting party ID (if present) to the reoriginatedInitialDP
-
copies the cap 1
InitialDP
redirection information (if present) to the reoriginatedInitialDP
-
copies the cap 1
InitialDP
location information (if present) to the reoriginatedInitialDP
-
copies the cap 1
InitialDP
extensions (if present) to the reoriginatedInitialDP
-
sets the
InitialDP
session state field with the updated reoriginatedInitialDP
.
An alternative mapper that uses a different method for reconstructing the correlated data associated with the correlation ID can be written using the Sentinel SDK. |
The mapper used to reconstruct the correlated data and update the reoriginated InitialDP should be thought of as the mirror to the mapper used in step two for processing the original InitialDP. If a custom method for choosing the data to associate with the correlation ID is built with the Sentinel SDK, then two new mappers are needed that:
|
Determining service type in reoriginated dialogs
The Classify Call Scenario Feature may not be able to correctly determine that a reoriginated dialog is roaming. To ensure that the roaming indicator is set correctly, the Reorigination service must set the service type to isRoaming.
Configuration
Correlation RA configuration
See Correlation Resource Adaptor to understand how the correlation resource adaptor works and how it can be configured. |
Feature configuration
A configuration profile table is used to configure the parameters of the new DRA sent out in the first connect (Phase 1).
Parameter | Type | Description |
---|---|---|
Nature |
The address nature |
|
NumberingPlan |
The numbering plan of the address |
|
RoutingToInternalNetworkNumber |
either ALLOWED or NOT_ALLOWED |
Address list configuration
A VLR address list table is maintained, for the service to identify roaming partners requiring reorigination. A VLR address entry is an extension of the standard Address list entry, the addition being a listing of the set of supported application contexts:
Parameter | Type | Description |
---|---|---|
OriginatingContextNames |
String[] |
Array of context names: cap_v1_gsmSSF_to_gsmSCF_AC, cap_v2_gsmSSF_to_gsmSCF_AC, capssf_scfGenericAC |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
${PLATFORMOPERATOR}_Reorigination_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:Reorigination:VLRAddressList |
${PLATFORMOPERATOR}_Reorigination_AddressListEntryProfileTable |
Feature specific Address List entry table |
${SELECTIONKEY}:Reorigination:VLRAddressList:${ADDRESS} |
ReoriginationConfigProfileTable |
new DRA parameters |
${SELECTIONKEY} (for example, |
ReoriginationCorrelationIdPools |
Sets of reorigination numbers |
Arbitrary eg Pool-1, however must include at least one profile named DEFAULT |
CorrelationConfigTable |
reorigination-correlation-ra configuration |
ReoriginationCorrelationConfigProfile — can be redefined in the reorigination-correlation-ra configuration properties |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
SMS Normalization Feature
Description
Feature script name |
SMSNormalization |
---|---|
Applicable contexts |
SS7 service MO SMS |
SAS Support |
No |
Prerequisite features |
Prefix And Suffix Analysis — where required |
Uses the Normalization Component component to normalize the:
-
idp.CallingPartyNumber (MOSMS)
-
idp.DestinationSubscriberNumber (MOSMS)
The idp in session state is updated. All features executed after this feature will access the normalized numbers when accessing the idp in session state.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
CAP3InitialDPSMSArg |
com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg |
InitialDPSMS which triggered this session, to which address normalization will be applied |
Report featureCannotStart, featureHasFinished |
Outputs
Name | Type | Format | Description |
---|---|---|---|
DestinationHasChanged |
boolean |
true or false |
Set to true only if InitialDPSMS is modified as a result of address normalization |
CAP3InitialDPSMSArg |
com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg |
Updated only if InitialDPSMS is modified as a result of address normalization |
Error scenarios
Scenario | Handling |
---|---|
Sessionstate CAP3InitialDPSMSArg is |
null Report featureCannotStart |
Initial DP SMS Arg is missing the CallingPartyNumber address |
Report featureCannotStart |
Initial DP SMS Arg is missing the DestinationSubscriberNumber address |
Report featureCannotStart |
Exception during number normalization |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
InitialDP SMS Arg is not set in the session state or Initial DP SMS Arg is missing the CallingPartyNumber address |
featureHasFinished |
feature has finished |
SS7 Determine Network Operator Feature
Description
Feature name |
SS7DetermineNetworkOperator |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
None |
The SS7 Determine Network Operator Feature sets the network operator element of the Sentinel selection key for use in the selection of:
-
feature execution scripts
-
mappers
-
address lists.
The feature will set the Network Operator element of the Sentinel selection key, based on the value returned by the DetermineNetworkOperator function below.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data and updating network operator field |
Report featureCannotStart, featureHasFinished |
Outputs
Name | Type | Format | Description |
---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
Only updated if network operator is determined |
OriginatingSccpAddress |
com.opencloud.slee.resources.cgin.SccpAddress |
Set to triggering DialogOpenRequestEvent originating address |
|
ResponderSccpAddress |
com.opencloud.slee.resources.cgin.SccpAddress |
Set to an address configured in Determine Network Operator address list |
Error scenarios
Scenario | Handling |
---|---|
Trigger event not a DialogOpenRequestEvent |
Report featureCannotStart |
Sessionstate SentinelSelectionKey is null |
Report featureCannotStart |
Trigger is null |
Report featureCannotStart |
DestinationAddress in DialogOpenRequestEvent is null |
Report featureCannotStart |
Could not match DestinationAddress in SS7DetermineNetworkOperatorGlobalTitleAddress |
Increment CouldNotDetermineNetworkOperator |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
Trigger event must be DialogOpenRequestEvent, SessionState SentinelSelectionKey is not set, unsupported trigger, destination SCCP address not present in DialogOpenRequestEvent or destination SCCP GT address does not match and no default available |
featureHasFinished |
feature has finished |
Selection
Function DetermineNetworkOperator(destinationSccpAddress.GT) IF destinationSccpAddress.GT not available THEN return default network operator value ENDIF IF destinationSccpAddress.GT address found in network operator selection table THEN RETURN network operator value from the matched selection table record match ELSE RETURN default network operator value ENDIF
The use of the destinationSccpAddress GT information is dependent on the subscriber’s HPLMN network configuration. It is possible that some networks may not pass the GT information set in the subscriber’s o-CSI or t-CSI.
Here is an example of SCCP address routing which includes the GT information:
application context: CAP-v2-gsmSSF-to-gsmSCF-AC CAP OpenService Type: request/indication bitmask=0x1 CapOpenArg: { applicationContext: 0 4 0 0 1 0 50 1 nextBlockOpCode: not present originatingAddress: { P=C7, NI=0, RI=PCSSN, GTI=0, PC=5900, SSN=146 } destinationAddress: { P=C7, NI=0, RI=PCSSN, GTI=4, SSN=146, TT=0, NP=1 (isdn), ES=2 (even), NAI=4 (international num), DIG=420603059300 } gprsOriginatingReference: not present gprsDestinationReference: not present user information length: not present }
For subscribers who are configured for intra-PLMN only, it is possible that the CSI may contain a gsmSCP address containing only PC/SSN. In this case, the feature cannot operate, as no GT information will be available.
Configuration
Network Operator Destination Global Title SCCP Address List Selection Table:
Parameter | Type | Example Values |
---|---|---|
Address |
GT Address |
642100000012 |
NetworkOperator |
String |
MVNO1 |
Example table:
Address | NetworkOperator |
---|---|
642100000001 |
OpenCloud |
642100000011 |
OpenNet |
642100000022 |
CloudNet |
The default network operator is stored in the Sentinel configuration table.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
${PLATFORMOPERATOR}_SS7DetermineNetworkOperator_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:SS7DetermineNetworkOperator:GlobalTitleAddress |
${PLATFORMOPERATOR}_SS7DetermineNetworkOperator_AddressListEntryTable |
Feature-specific Address List entry table |
${SELECTIONKEY}:SS7DetermineNetworkOperator:GlobalTitleAddress:${ADDRESS} |
SentinelConfigurationTable |
Sentinel configuration table (contains DefaultNetworkOperator) |
SentinelConfiguration |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
SS7 Subscriber Determination Feature
Description
Feature name |
SubscriberDetermination |
---|---|
Applicable contexts |
SS7 Service |
SAS Support |
No |
Prerequisite features |
The Subscriber Determination Feature is used to determine the subscriber address, based on parameters from the InitialDP and session state.
For the prefix and exact match of MSISDNs, the following matching will be performed:
Call Type | Subscriber number |
---|---|
MOC (Voice, Video, Fax, Data) |
initialDP.callingPartyNumber |
MFC (Voice, Video, Fax, Data) |
initialDP.redirectingPartyID |
MTC (Voice, Video, Fax, Data) |
initialDP.calledPartyNumber |
MOSMS |
initialDPSMS.callingPartyNumber |
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
InitialDP which triggered this session |
Fall back to CAP3InitialDPSMSArg |
|
CAP3InitialDPSMArg |
com.opencloud.slee.resources.cgin.cap_v3.CAP3InitialDPSMSArg |
InitialDPSMS which triggered this session, to which address normalization will be applied |
Irrelevant if InitialDPArg set, otherwise report featureFailedToExecute, featureHasFinished |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call |
Report featureFailedToExecute, featureHasFinished |
Subscriber |
String |
MSISDN |
The subscriber for this session |
Proceed with subscriber determination |
Error scenarios
Scenario | Handling |
---|---|
InitialDPArg and InitialDPSMSArg not present or do not contain subscriber address |
Report featureFailedToExecute |
SS7 Unconditional Reject Session Feature
Description
Feature name |
UnconditionalRejectSession |
---|---|
Applicable contexts |
Diameter Mediation Service |
SAS Support |
No |
Prerequisite features |
None |
Unconditionally refuses the dialog with refuse reason set to USER_NO_REASON_GIVEN.
Set User Release Cause From Latest Event Report Feature
Description
Feature name |
SetUserReleaseCauseFromLatestEventReport |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
None |
The Set User Release Cause From Latest Event Report feature inspects the latest EventReportBCSM
received by Sentinel and if possible sets the UserReleaseCause
integer session state variable to a cause code value appropriate for that event report. This feature can then be followed by the Release Call and Close Dialog Feature to have that cause code included in the ReleaseCall
operation sent to the MSC.
The UserReleaseCause
session state variable is set depending on the eventTypeBCSM
field of the latest EventReportBCSM
argument:
-
for Route Select Failure:
-
if the
EventReportBCSM
contains event-specific information, then the release cause is obtained from the event-specific information; -
otherwise a default of CLASS0_NO_ROUTE_TO_DESTINATION (3) is used.
-
-
for Called Party Busy:
-
if the
EventReportBCSM
contains event-specific information, then the release cause is obtained from the event-specific information; -
otherwise a default of CLASS1_USER_BUSY (17) is used.
-
-
for No Answer:
-
a default of CLASS1_NO_ANSWER (19) is used.
-
-
for Disconnect
-
if the
EventReportBCSM
contains event-specific information, then the release cause is obtained from the event-specific information; -
otherwise a default of CLASS1_NORMAL_CALL_CLEARING (16) is used.
-
For any other case, including the absence of an EventReportBCSM operation to inspect, the UserReleaseCause session state variable is left untouched.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
LatestEventReportBCSM |
com.opencloud.slee.resources.cgin.callcontrol.CCEventReportBCSMArg |
Latest event report |
Do not set release cause |
Outputs
Name | Type | Format | Description |
---|---|---|---|
UserReleaseCause |
Integer |
Any cause value, such as Cause.CauseValue.CLASS0_NO_ROUTE_TODESTINATION, Cause.CauseValue.CLASS1USER_BUSY, Cause.CauseValue.CLASS1_NO_ANSWER, Cause.CauseValue.CLASS1_NORMAL_CALL_CLEARING |
The cause value extracted from the latest event report |
Short Code Feature
The Short Code feature is a pre-credit check feature early in the feature list (but always after the emergency number feature), to perform number translation on a set of short codes configured for the network.
Description
Feature name |
ShortCode |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Prerequisite features |
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>::::) |
For selecting configuration data |
Report featureCannotStart, featureHasFinished |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg \ |
InitialDP which triggered this session |
Report featureCannotStart, featureHasFinished |
|
CallType |
com.opencloud.sentinel.common.CallType |
One of: MobileOriginating, MobileTerminating, MobileForwarded, NetworkInitiated, EmergencyCall |
Session type of this call |
Report featureCannotStart, featureHasFinished |
Error scenarios
Scenario |
Handling |
Sessionstate SentinelSelectionKey is null |
Report featureCannotStart |
Sessionstate InitialDPArg is null |
Report featureCannotStart |
InitialDP Arg is not CAP |
Report featureCannotStart |
Sessionstate CallType is null |
Report featureCannotStart |
InitialDP missing CalledPartyBCDNumber address |
Report featureCannotStart |
Feature responses
Response | Reason |
---|---|
featureCannotStart |
SessionState SentinelSelectionKey is not set, InitialDP Arg is not set in session state, InitialDP Arg is not an instance of CAP1InitialDPArg, Session Type is not set in the session state or Initial DP Arg is missing the CdPA BCD number |
featureHasFinished |
feature has finished |
Configuration
Short Code feature configuration:
Parameters | Type | Description |
---|---|---|
MinLength |
Integer |
Minimum short code length |
MaxLength |
Integer |
Maximum short code length |
Example configuration:
MinLength |
MaxLength |
3 |
3 |
Short Code address list configuration:
The ShortCode address list entry is an extension of the standard Address list entry, the addition being the 'translatedAddress' field which is used for number translation:
Parameter | Type | Description |
---|---|---|
… |
… |
… |
TranslatedAddress |
String |
the value of the short code translated address (in international format) |
Example configuration:
Address |
TranslatedAddress |
100 |
6422987654 |
200 |
6422123456 |
The shortCode address is a digit string which can contain any digits valid for the network.
TranslatedAddress is a digit string in international format.
The short code list applies to all subscribers scoped to Sentinel selection key.
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
ShortCodeFeatureConfigProfileTable |
Short code feature configuration |
SentinelSelectionKey (for example, |
${PLATFORMOPERATOR}_ShortCode_AddressListConfigurationTable |
Address list configuration |
${SELECTIONKEY}:ShortCode:AddressList |
${PLATFORMOPERATOR}_ShortCode_AddressListEntryTable |
Feature specific Address List entry table |
${SELECTIONKEY}:ShortCode:AddressList:${ADDRESS} |
Validate InitialDP Feature
Description
Feature name |
ValidateInitialDP |
---|---|
Applicable contexts |
SS7 service |
SAS Support |
No |
Typical feature execution points |
DirectAccess_SessionPreCreditCheck |
Prerequisite features |
The Validate InitialDP feature performs validation checks to ensure that the InitialDP has sufficient parameters to be handled correctly by Sentinel.
If the InitialDP is not valid, then the Valdiate InitialDP feature returns either continueAndClose
or releaseAndClose
to the Sentinel core. The choices of response and release cause are configurable. In the absence of configuration data, the default behaviour is releaseCallAndClose(Call-Rejected)
.
The validation performed includes:
-
check that InitialDP is present in session state
-
check that InitialDP is CAP
-
check that CallingPartyNumber is present in the
InitialDP
-
if session type is mobile originating, check for presence of
CalledPartyBCDNumber
-
if session type is mobile terminating or mobile forwarded, check for presence of
CalledPartyNumber
.
Session state inputs and outputs
Inputs
Name | Type | Format | Description | Behaviour if null/invalid |
---|---|---|---|---|
SentinelSelectionKey |
com.opencloud.sentinel.common.SentinelSelectionKey |
selection key (for example, |
For selecting configuration data for ValidationFailedAction if InitialDP fails validation |
Runtime exception handled by feature runner |
InitialDPArg |
com.opencloud.slee.resources.cgin.cap_v1.CAP1InitialDPArg |
CAP-DataTypes.InitialDPArg |
InitialDPArg which triggered this session |
Report featureCannotStart, featureHasFinished |