This feature keeps entries updated in the external session tracking database .

The external session tracking database entries for an access leg are set to expire automatically. To guard against expiring entries too soon, this feature periodically refreshes the entries when SIP activity is detected on the leg. This feature also updates the database entries when the session’s held status changes.

Feature cheat sheet

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

SCC

Both Originating and Terminating

SIP Access PartyRequest,
SIP Mid Session Party Request,
SIP Mid Session Party Response,

None

None

Stateful

POJO

Sets a session output variable.

Prerequisite features

Session input and output variables

Session input variables

Session State variable name Type Comments
ExternalSessionTrackingActive

Boolean

Set by the SCCDetermineExternalSessionTracking feature

ASURI

String

Set by the SCCDetermineSessionType feature

ExternalSessionTrackingKeys

Set<String>

Set by the SCCDetermineExternalSessionTracking feature

AccessLegMediaFeatureTags

Set<String>

Set by the SCCBindEnhancedSRVCC or TrackSessionPreAnswer features

HeldStatusChanged

Boolean

Set by the DetectHoldResume feature, triggers a database update if true

LastHeldTime

Long

Set by the DetectHoldResume feature

SessionIsHeld

Boolean

Set by the DetectHoldResume feature

Session output variables

Session State variable name Type Comments
LastTrackSessionRefreshTime

Long

The time at which the last successful refresh was performed

TrackedSessionDialogID

String

The dialog ID (in Target-Dialog format) of the access leg session being tracked

Statistics

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

Name Description
Started

Incremented each time the feature runs

FailedToStart

Incremented when a fatal error occurs before feature execution

IssuedWarning

Incremented when a non-fatal error occurs during feature execution

FailedDuringExecution

Incremented when a fatal error occurs during feature execution

TimedOut

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

TrackedDialogRefreshStarted

Incremented when the feature starts a TrackedDialog Cassandra refresh

TrackedDialogRefreshSuccess

Incremented when a TrackedDialog refresh returns successfully from Cassandra

TrackedDialogRefreshError

Incremented when a TrackedDialog refresh fails with a Cassandra error

TrackedDialogRefreshTimeout

Incremented when a TrackedDialog refresh fails with a Cassandra timeout

CassandraAsyncQueryTimeSuccess

Samples the elapsed time between starting a query and a success response arriving from Cassandra

CassandraAsyncQueryTimeFailure

Samples the elapsed time between starting a query and a failure response arriving from Cassandra

Behaviour

The TrackSessionRefresh feature keeps entries updated in the Cassandra external session tracking table. These entries are added with a Time-To-Live (TTL), so will automatically expire at some point, ensuring the table does not fill up with out of date sessions. This feature ensures the Cassandra TTLs are refreshed on access leg sessions that are still active, so they don’t expire too soon.

In addition, the feature also updates the tracked session entries when the call’s held status changes. See Hold and resume procedures below.

The feature only runs when the session state variable ExternalSessionTrackingActive is true, as determined by the SCCDetermineExternalSessionTracking feature.

Determining the Cassandra TTL to use

The Cassandra TTL for tracked sessions is derived from the SessionRefresh feature’s configuration. The SessionRefresh feature’s RefreshPeriod parameter specifies the time (in seconds) after which feature will send a session refresh request (re-INVITE) to keep the session open. So a request will be sent on the session at least this often.

The TrackSessionRefresh feature uses the value RefreshPeriod ✕ 1.5 as the Cassandra TTL.

Call setup procedures

The feature is first triggered by the initial ACK request during call setup (originating and terminating), at the SipAccess_PartyRequest execution point. It updates the tracked dialog entries (created by TrackSessionPreAnswer) with state=ACTIVE and a new TTL. The LastTrackSessionRefreshTime and TrackedSessionDialogID session state variables are set at this point.

Mid-call procedures

The feature is triggered on the SipMidSession_PartyRequest and SipMidSession_PartyResponse execution points. However no action will be performed if the tracked session database entries have been refreshed recently, to avoid unnecessary database queries.

To determine if a refresh is necessary, the feature calculates how much time has passed since LastTrackSessionRefreshTime. If the elapsed time is more than halfway through the TTL period, or within 60s of the TTL expiry time, then a refresh is initiated.

The refresh operation reads the access leg’s entry in the trackeddialog table, then updates this entry and any related trackeddialogkeys entries with a new TTL, but otherwise unchanged.

Hold and resume procedures

If the DetectHoldResume feature indicates that the call’s held status has changed, this triggers an immediate refresh of the tracked session entries. The TrackSessionRefresh feature checks if the HeldStatusChanged flag is set in session state, and if so, updates the tracked session entries with the current held status.

End-of-call procedures

The feature takes no action at the end of the call. A separate feature, DeleteTrackedSession, runs at the SipEndSession execution point to remove the database entries. If this feature was not triggered for any reason, the entries would expire naturally at the end of the TTL period.

Previous page Next page
Sentinel VoLTE Public Version 2.7.0