The Session Refresh feature periodically instructs all INVITE
dialog legs to refresh, and ends the call once the max duration is reached.
Details
Feature script name |
SessionRefresh |
---|---|
Applicable contexts |
SIP service |
Call-Type |
All |
Session Plan |
All |
Execution points |
|
Feature Extension Events |
None |
Network Operator Config |
Yes |
Subscriber Config |
None |
POJO or SBB |
POJO |
Feature FSMs |
None |
Feature Parameters |
None |
SAS Support |
No |
Prerequisite features |
None |
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 InputParameterErrors common cleanup actions |
CallEstablished |
Boolean |
|
|
Initially set to |
Feature responses
Response | Reason |
---|---|
featureHasFinished |
Feature has completed execution for the current invocation. |
featureIssuedWarning |
Feature has encountered a non-fatal issue during execution. |
Feature Statistics
SessionRefresh
statistics are tracked by the sentinel.sip
SBB and can be found under the following parameter set:
SLEE-Usage → sentinel.sip service ID → sentinel.sip SBB ID → feature.SessionRefresh
Name | Type | Description |
---|---|---|
Started |
Counter |
Incremented when the feature is triggered. |
FailedToStart |
Counter |
Incremented when the feature fails to start. |
FailedDuringExecution |
Counter |
Incremented when the feature fails while executing. |
IssuedWarning |
Counter |
Incremented when the feature issues a warning. |
TimedOut |
Counter |
Incremented when the feature times out during execution. |
SessionRefreshTimerStarted |
Counter |
Incremented when the feature starts the periodic timer. |
SessionRefreshTimerStopped |
Counter |
Incremented when the feature stops the periodic timer. |
InstructRefreshOnTimerFire |
Counter |
Incremented when the feature instructs legs to refresh due to the timer firing. |
InstructRefreshOnChargingReauth |
Counter |
Incremented when the feature instructs legs to refresh due to a charging reauth. |
MaxCallDurationReached |
Counter |
Incremented when the feature ends a call due to the max duration being exceeded. |
Configuration
This feature reads configuration from the SessionRefreshProfileTable
profile table.
Profiles in this table are named based on the Sentinel selection key that they should be applied to.
The profile specification for this table is sentinel-sip-session-refresh-feature-profile
.
Parameter | Type | Default Value | Description |
---|---|---|---|
TimerInterval |
long |
290 |
Interval of periodic timer (seconds) |
RefreshPeriod |
long |
570 |
Period of no activity for leg to refresh (seconds) |
MaxCallDuration |
int |
86400 |
Maximum time the call may be active for (seconds) |
RefreshWithUpdateIfAllowed |
boolean |
false |
Whether the session should be refreshed using UPDATE requests so long as the endpoint allows UPDATE requests. |
Session Input Data
Name | Type | Description |
---|---|---|
SentinelSelectionKey |
SentinelSelectionKey |
Used to select configuration data. Issue a feature warning and use default configuration values. |
CallEstablished |
boolean |
Used to determine whether the session should be considered established before receiving an ACK. |
MaxCallDuration |
Long |
If this field is given a value greater than |
Session Output Data
Name | Type | Description |
---|---|---|
SessionEstablishedTime |
long |
Unix timestamp representing the time the session was established. |
MaxCallDurationExpireTime |
long |
Unix timestamp representing the time at which the maximum call duration will be reached. |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.
Behaviour
On an incoming initial ACK
or when the callEstablished
session state field is true
, a repeating timer is set.
The timer’s period is specified by the TimerInterval
value in the feature’s configuration. This timer is armed redundantly if the session is replicated.
The number of repetitions will be so such that the timer will stop firing soon after the maximum call duration is reached.
Each time the timer fires, the feature first checks if the maximum call duration has been exceeded.
If the max call duration has been exceeded, the feature will end the session.
If not, Leg.refreshSession
is instructed on each leg using the RefreshPeriod
from the feature’s configuration.
The RefreshPeriod
represents the period of no activity before a refresh request should occur.
If no messages have been sent or received on a leg within the RefreshPeriod
, a refresh request transaction will be initiated.
Refresh requests are by default re-INVITE
requests.
The Session Refresh feature can be configured using the RefreshWithUpdateIfAllowed
configuration to use UPDATE
requests instead.
If an endpoint did not include the UPDATE
method in it’s Allows
header then the RefreshWithUpdateIfAllowed
configuration is ignored.
RFC 6141 describes this process in SIP INVITE dialogs.
This will cause all legs to be refreshed immediately.
|
Receipt of a Re-Auth-Request on the Ro interface
RFC 4005 (https://tools.ietf.org/html/rfc4005#page-13) states:
A Diameter server may initiate a re-authentication and/or re- authorization service for a particular session by issuing a Re-Auth- Request (RAR) message [BASE].
For example, for pre-paid services, the Diameter server that originally authorized a session may need some confirmation that the user is still using the services.
If a NAS receives an RAR message with Session-Id equal to a currently active session and a Re-Auth-Type that includes authentication, it MUST initiate a re-authentication toward the user, if the service supports this particular feature.
Therefore when receiving a RAR, Sentinel responds with an RAA, initiates a Credit Control Update Request (CCR-U) and triggers this feature. This means that one or more SIP dialog refreshes run in parallel to the CCR-U. If the session refresh is successful then no further action is necessary. However if SIP dialog refreshes are not successful then Sentinel will move to the End Session point-in-session, thereby sending a CCR-T.
Additionally when the Validity-Time
timer expires, Sentinel acts as though a RAR was received.