The VoLTE Network KPI feature (VolteNetworkKPI) increments the "Call Success" and "Post Dial Delay" counters,
which you can combine with other stats to gauge network traffic.
Feature Cheat Sheet
| B2BUA Instance | SAS Support | Originating / Terminating | Point in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature |
|---|---|---|---|---|---|---|---|
SCCOrig, SCCTerm, MMTelOrig, MMTelTerm |
No |
Originating and Terminating |
|
Yes |
No |
Stateless |
POJO |
Prerequisite features
You must run these features before VolteNetworkKPI:
-
RecordTimestamps, which stores
initialRingingResponseTimestamp -
StoreHeaderInfo, which sets
isOCTerminatingDomainPresent -
DetermineCauseCode. The causeCode is used to check
Success Response Codes
Behaviour
The VolteNetworkKPI feature is used to increment the "Call Success" and "Post Dial Delay" counters. The feature
uses information collected by Sentinel during the call session to increment the
relevant counters in the SipEndSession execution point.
Call Success
Call Success is determined by comparing the initial INVITE final response code with a list of "Success" codes. The term success is from the perspective of Sentinel VoLTE where it has "successfully" processed the call according to a list of response codes.
The default list of response codes is
SuccessResponseCodes: [200,486,487,404,603]
Internally the VolteNetworkKPI feature uses the value set in the
DetermineCauseCode feature
that in turn uses the final response code from the downstream leg, or an error code in case of an internal
error.
|
|
The |
The VolteNetworkKPI feature further categorizes calls into 'onNet' and 'Unknown'. If the call is triggered
in SCC-Orig or MMTel-Orig then the feature checks if OC-Terminating-Domain header is present via
isOCTerminatingHeaderPresent flag. If the flag is present, then the call is considered onNet.
If the flag isOCTerminatingHeaderPresent is false, or the feature is executed in the MMTel-Term or
SCC-Term, then InterOperatorIdentifier sessionState’s OriginatingInterOperatorIdentifier (orig-ioi) and
TerminatingInterOperatorIdentifier (term-ioi) are evaluated. A call is considered onNet if both the orig-ioi and
term-ioi values are the home plmn (via PLMNAnalyser). Otherwise, the call is Unknown.
Success Example
-
486is configured as a success response code. -
Home network VoLTE subscriber calls a non VoLTE subscriber, which triggers a
SCC-Origplan on Sentinel VoLTE. -
The non VoLTE subscriber returns a
486. -
The DetermineCauseCode feature sets the cause code to
-486. -
The
VolteNetworkKPIfeature incrementsKPISccOrigUnknownSuccessandKPISccOrigUnknownAttemptdue to-
486is a success response code. -
The
onNetstatus is unknown as there is noOC-Terminating-Domainheader and no location information that isorig-ioiandterm-ioiis present inP-Charging-Vectorheader.
-
Non Success Example
-
404is not configured as a success response code. -
A non VoLTE subscriber calls a home network VoLTE subscriber calls a non VoLTE subscriber, which triggers a
MMTel-Termplan on Sentinel VoLTE. -
The home network VoLTE subscriber returns a
404. -
The DetermineCauseCode feature sets the cause code to
-404. -
The
VolteNetworkKPIfeature incrementsKPIMMTelTermUnknownAttemptdue to.-
404is not a success response code. -
The
onNetstatus is unknown as there is location information present in theP-Charging-Vectorheader, butorig-ioiindicates it’s a non-home network.
-
Post Dial Delay
Post Dial Delay is the time difference between the initial INVITE (sessionInitiated) and
the first 180 Ringing or ACK (sessionEstablished). The VolteNetworkKPI feature uses these values to calculate the
delay and then increment the time interval counters.
|
|
Provisional |
Post Dial Delay is calculated in SCCOrig, MMTelOrig, MMTelTerm, and SCCTerm execution points. Therefore an
onNet call could potentially increment four time interval counters, one for each planId.
The counter uses the format postDialDelay<planId><time interval counter>. So for example if a 180 is received in the SCCOrig
execution point 1400 ms after the session is initiated, then the postDialDelaySCCOrig1000to1500ms counter is
incremented.
Session state inputs and outputs
Inputs
| Name | Type | Format | Description | Behaviour if null/invalid |
|---|---|---|---|---|
SentinelSelectionKey |
SentinelSelectionKey |
selection key + for example, |
For selecting 'success' response codes from |
Increment InputParameterErrors common cleanup actions |
DiameterCauseCode |
Integer |
null or a integer |
Either final SIP response code or internal error set by the DetermineCauseCode feature. |
If the value
is null, the |
InitialRingingResponseTimestamp |
Long |
null or a long |
Timestamp recorded by the RecordTimestamps feature on first 180 Ringing. |
If the value
is null, the |
SessionEstablished |
long |
0 or non 0 |
Timestamp recorded by the B2BUA feature when on ACK is received from the Calling Party. |
If 0, the |
SessionInitiated |
long |
0 or non 0 |
Timestamp recorded by Sentinel when an initial INVITE is received from the Calling Party. |
If 0, the |
OriginatingInterOperatorIdentifier |
String |
null or String |
|
If the value
is null, the |
TerminatingInterOperatorIdentifier |
String |
null or String |
|
If the value
is null, the |
Statistics
VolteNetworkKPI statistics are tracked by the sentinel.volte.sip SBB and can be found under the following parameter set:
SLEE-Usage → sentinel.volte.sip service ID → sentinel.volte.sip SBB ID → feature.VolteNetworkKPI
| Name | Type | Description |
|---|---|---|
kPISccOrigOnNetAttempts |
counter |
Incremented on every 'onNet' SCCOrig call. |
kPISccOrigOnNetSuccess |
counter |
Incremented on 'success' 'onNet' SCCOrig call. |
kPISccOrigUnknownAttempts |
counter |
Incremented on every 'unknown' SCCOrig call. |
kPISccOrigUnknownSuccess |
counter |
Incremented on 'success' 'unknown' SCCOrig call. |
kPIMmtelTermOnNetAttempts |
counter |
Incremented on every 'onNet' MMTelTerm call. |
kPIMmtelTermOnNetSuccess |
counter |
Incremented on a 'success' 'onNet' MMTelTerm call. |
kPIMmtelTermUnknownAttempts |
counter |
Incremented on every 'unknown' MMTelTerm call. |
kPIMmtelTermUnknownSuccess |
counter |
Incremented on every 'unknown' 'success' MMTelTerm call. |
postDialDelayMMTelOrig0to500ms |
counter |
Incremented if the delay ⇐ 500 ms. |
postDialDelayMMTelOrig501to1000ms |
counter |
Incremented if the delay > 500 ms and ⇐ 1000 ms. |
postDialDelayMMTelOrig1001to1500ms |
counter |
Incremented if the delay > 1000 ms and ⇐ 1500 ms. |
postDialDelayMMTelOrig1501to2000ms |
counter |
Incremented if the delay > 1500 ms and ⇐ 2000 ms. |
postDialDelayMMTelOrig2001to2500ms |
counter |
Incremented if the delay > 2000 ms and ⇐ 2500 ms. |
postDialDelayMMTelOrig2501to3000ms |
counter |
Incremented if the delay > 2500 ms and ⇐ 3000 ms. |
postDialDelayMMTelOrigOver3000ms |
counter |
Incremented if the delay > 3000 |
postDialDelayMMTelTerm0to500ms |
counter |
Incremented if the delay ⇐ 500 ms. |
postDialDelayMMTelTerm501to1000ms |
counter |
Incremented if the delay > 500 ms and ⇐ 1000 ms. |
postDialDelayMMTelTerm1001to1500ms |
counter |
Incremented if the delay > 1000 ms and ⇐ 1500 ms. |
postDialDelayMMTelTerm1501to2000ms |
counter |
Incremented if the delay > 1500 ms and ⇐ 2000 ms. |
postDialDelayMMTelTerm2001to2500ms |
counter |
Incremented if the delay > 2000 ms and ⇐ 2500 ms. |
postDialDelayMMTelTerm2501to3000ms |
counter |
Incremented if the delay > 2500 ms and ⇐ 3000 ms. |
postDialDelayMMTelTermOver3000ms |
counter |
Incremented if the delay > 3000 |
postDialDelaySCCOrig0to500ms |
counter |
Incremented if the delay ⇐ 500 ms. |
postDialDelaySCCOrig501to1000ms |
counter |
Incremented if the delay > 500 ms and ⇐ 1000 ms. |
postDialDelaySCCOrig1001to1500ms |
counter |
Incremented if the delay > 1000 ms and ⇐ 1500 ms. |
postDialDelaySCCOrig1501to2000ms |
counter |
Incremented if the delay > 1500 ms and ⇐ 2000 ms. |
postDialDelaySCCOrig2001to2500ms |
counter |
Incremented if the delay > 2000 ms and ⇐ 2500 ms. |
postDialDelaySCCOrig2501to3000ms |
counter |
Incremented if the delay > 2500 ms and ⇐ 3000 ms. |
postDialDelaySCCOrigOver3000ms |
counter |
Incremented if the delay > 3000 |
postDialDelaySCCTerm0to500ms |
counter |
Incremented if the delay ⇐ 500 ms. |
postDialDelaySCCTerm501to1000ms |
counter |
Incremented if the delay > 500 ms and ⇐ 1000 ms. |
postDialDelaySCCTerm1001to1500ms |
counter |
Incremented if the delay > 1000 ms and ⇐ 1500 ms. |
postDialDelaySCCTerm1501to2000ms |
counter |
Incremented if the delay > 1500 ms and ⇐ 2000 ms. |
postDialDelaySCCTerm2001to2500ms |
counter |
Incremented if the delay > 2000 ms and ⇐ 2500 ms. |
postDialDelaySCCTerm2501to3000ms |
counter |
Incremented if the delay > 2500 ms and ⇐ 3000 ms. |
postDialDelaySCCTermOver3000ms |
counter |
Incremented if the delay > 3000 |
Configuration
The VolteNetworkKPIProfileTable profile table stores SIP response codes that determine whether the call was
a Success.
| Parameter | Type | Description |
|---|---|---|
SuccessResponseCodes |
Integer[] |
A list of SIP response codes |
An example DefinitelyNotOpenCloud:::: profile:
SuccessResponseCodes: [200,486,487,404,603]
|
|
The |
