This feature stores SMS routing information in Cassandra. The stored data includes additional correlation information.
Feature Cheat Sheet
Feature Name | Network Operator Data | Used in PlanId(s) | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|
IPSMGWStoreRoutingInfoCassandra |
Yes |
SRI4SM, SRI4SM_PS_ONLY, MTFSM_PS, MTFSM_CS, MTFSM_CS_PS, MTFSM_PS_CS |
Stateless |
POJO |
Feature Parameters
This feature can operate with two parameters - 'Store' or 'Refresh'. For details, please refer to Behaviour.
Session Input Variables
The IPSMGWStoreRoutingInfoCassandra feature reads the following fields from Session State:
Field Name | Field Type | Comments |
---|---|---|
SentinelSelectionKey |
SentinelSelectionKey |
Used to load configuration. |
MTCorrelatedId |
String |
Generated correlation IMSI. |
IsSMSOverIPRegistered |
boolean |
Used to determine whether the subscriber is IMS registered. |
MTFSMDeliveryOrder |
DeliveryOrder |
Used to determine whether PS only delivery is being used. |
IMSI |
String |
The subscriber’s IMSI. |
MSISDN |
String |
The subscriber’s MSISDN. |
MtForwardSMIncomingLeg |
String |
Name of the leg on which an MT-FSM request was received. |
SRI4SMArgV1 |
MAPSendRoutingInfoForSMArg |
The encoded java object representing v1 SRI4SM arg, if the application context was v1. |
SRI4SMArgV2 |
MAPSendRoutingInfoForSMArg |
The encoded java object representing v2 SRI4SM arg, if the application context was v2. |
SRI4SMArgV3 |
MAPRoutingInfoForSM_Arg |
The encoded java object representing v3 SRI4SM arg, if the application context was v3. |
SRI4SMResV1 |
MAPSendRoutingInfoForSMRes |
The encoded java object representing v1 SRI4SM result, if the application context was v1. |
SRI4SMResV2 |
MAPSendRoutingInfoForSMRes |
The encoded java object representing v2 SRI4SM result, if the application context was v2. |
SRI4SMResV3 |
MAPRoutingInfoForSM_Res |
The encoded java object representing v3 SRI4SM result, if the application context was v3. |
SRI4SMResAppContext |
String |
A string of the application context name. |
UUID |
UUID |
UUID used when refreshing data in cassandra, |
Statistics
IPSMGWStoreRoutingInfoCassandra statistics are tracked by the sentinel.ipsmgw SBB
and can be found under the following parameter set in REM:
SLEE-Usage → sentinel.ipsmgw service → sentinel.ipsmgw SBB → feature → IPSMGWStoreRoutingInfoCassandra
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.ipsmgw,vendor=OpenCloud,version=3.1.0].SbbID[name=sentinel.ipsmgw,vendor=OpenCloud,version=3.1.0].feature.IPSMGWStoreRoutingInfoCassandra"
Statistic | Type | Description |
---|---|---|
Started |
Counter |
Incremented when the feature is invoked. |
FailedToStart |
Counter |
Incremented when Sentinel encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning. |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel aborts execution. |
StartedStore |
Counter |
Incremented when the feature is triggered with a mode of 'Store'. |
StartedRefresh |
Counter |
Incremented when the feature is triggered with a mode of 'Refresh'. |
TriggerOpenRequest |
Counter |
Incremented when the feature is triggered on a DialogOpenRequestTcapMessage. |
TriggerTCOperation |
Counter |
Incremented when the feature is triggered on a TCOperationTcapMessage. |
TriggerTCEnd |
Counter |
Deprecated and not used. |
TriggerSipResponse |
Counter |
Deprecated and not used. |
ParsingSendRoutingInfoForSMArgV1 |
Counter |
Incremented when the feature attempts to parse a MAP v1 MAPSendRoutingInfoForSMArg. |
ParsingSendRoutingInfoForSMArgV2 |
Counter |
Incremented when the feature attempts to parse a MAP v2 MAPSendRoutingInfoForSMArg. |
ParsingSendRoutingInfoForSMArgV3 |
Counter |
Incremented when the feature attempts to parse a MAP v3 MAPRoutingInfoForSM_Arg. |
ParsingSendRoutingInfoForSMResV1 |
Counter |
Incremented when the feature attempts to parse a MAP v1 MAPSendRoutingInfoForSMRes. |
ParsingSendRoutingInfoForSMResV2 |
Counter |
Incremented when the feature attempts to parse a MAP v2 MAPSendRoutingInfoForSMRes. |
ParsingSendRoutingInfoForSMResV3 |
Counter |
Incremented when the feature attempts to parse a MAP v3 MAPRoutingInfoForSM_Res. |
RefreshingData |
Counter |
Incremented when the feature refreshes data. |
RefreshingRefreshingDataSkippedDueErrorMessage |
Counter |
Incremented when the feature skips refreshing the data due to receiving an error message. |
DataStoreError |
Counter |
Incremented when data is not successfully stored to Cassandra. |
DataStoreSuccess |
Counter |
Incremented when data is successfully stored in Cassandra. |
Configuration
The feature uses the IPSMGWRoutingInfoCassandraConfigProfileTable
profile to configure the Cassandra attribute time-to-live (TTL), and whether tracing is enabled for Cassandra queries.
The following attributes are used:
Attributes | Type | Meaning |
---|---|---|
CassandraTTL |
int |
Cassandra’s |
CassandraTracing |
boolean |
If |
Additionally, the feature uses the following field on the IP-SM-GW shared configuration profile table:
Field Name | Comments |
---|---|
SentinelIPSMGWAddress |
Used as the MSC number when generating translated responses. |
See the Shared Configuration Profile page for additional information about this field.
Behaviour
The feature stores the routing information for SMS into the Cassandra Database using the schema detailed here. This includes the SRI for SM request and response content. It can operate in two modes - 'Store' or 'Refresh'.
When storing or refreshing data in Cassandra, the primary key is formatted as an IMSI, and its value is read from Session State. If suitable primary key information is not available (for example the Generate MT Correlation Id feature was unable to allocate a correlation IMSI), or there is a failure to write the routing information into Cassandra, an error response to the SRI for SM is sent.
This feature is closely related to the Fetch Routing Info Cassandra feature.
Store Mode
'Store' mode is triggered on incoming SRI for SM Requests and responses.
On a successful SRI response, the feature encodes it and its associated request, and writes them into the Cassandra DB using the generated MT Correlation IMSI as the primary key. Along with the encoded request and response, the true IMSI, the MSISDN, and the SAS universal identifier are also written into the Cassandra DB.
When the feature is triggered by an SRI for SM error result, it will attempt to write a similar entry to the Cassandra DB, omitting the encoded response and the true IMSI. If the write is successful, it will replace the proxied error with a success response including the correlation IMSI. When this entry is read by FetchRoutingInfo during MT-FSM handling, it indicates that CS delivery is not possible, but PS delivery may be an option. The row is stored with a configurable TTL, so no manual cleanup process is required.
On a request, if the delivery mode is PS only or PS then CS, the feature will look for a response generated by the Generate SRI Result feature. If it finds a successful SRI4SM result, it will process it in the same way as it would process a normal response trigger, except that the true IMSI will be omitted from stored data. If no generated response is found, a generated error response is found, or the delivery mode is not PS only or PS then CS, then the feature will take no further action.
Refresh Mode
'Refresh' mode is triggered on indication of successful delivery of an SMS message (either via SIP encapsulated SMS over IP, or via a MAP MT Forward SM ACK). The successful delivery of an SMS indicates that the routing info remains valid and should not time out, so it is refreshed in Cassandra. This ensures that a batch of SMS for the same IMSI within the Time To Live period are correlated together. The feature uses the fields stored in session state by the IPSMGWFetchRoutingInfoCassandra feature and re-stores them in Cassandra.