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
-
486
is configured as a success response code. -
Home network VoLTE subscriber calls a non VoLTE subscriber, which triggers a
SCC-Orig
plan on Sentinel VoLTE. -
The non VoLTE subscriber returns a
486
. -
The DetermineCauseCode feature sets the cause code to
-486
. -
The
VolteNetworkKPI
feature incrementsKPISccOrigUnknownSuccess
andKPISccOrigUnknownAttempt
due to-
486
is a success response code. -
The
onNet
status is unknown as there is noOC-Terminating-Domain
header and no location information that isorig-ioi
andterm-ioi
is present inP-Charging-Vector
header.
-
Non Success Example
-
404
is 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-Term
plan on Sentinel VoLTE. -
The home network VoLTE subscriber returns a
404
. -
The DetermineCauseCode feature sets the cause code to
-404
. -
The
VolteNetworkKPI
feature incrementsKPIMMTelTermUnknownAttempt
due to.-
404
is not a success response code. -
The
onNet
status is unknown as there is location information present in theP-Charging-Vector
header, butorig-ioi
indicates 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 |