SIP Session Timer


The IMG supports SIP Session Timers, an extension of SIP RFC 2543 which allows a periodic refreshing of SIP sessions using the RE-INVITE message.

The refreshing allows both user agents and proxies to determine if the SIP session is still active. a keep alive mechanism for SIP sessions that allows User Agents (UA) or proxies to determine the status of a session and to release it if it is not active, even if a BYE has not been received.


RFC 4028 Session Timers in the Session Initiation Protocol (SIP)



You configure the Session Timer in the SIP Session Timer pane. SIP Session Timer is enabled by default.



When a UAC sends an INVITE, it includes a Supported header field with the option tag 'timer', indicating support for this extension. This request passes through proxies, any one of which may have an interest in establishing a session timer. Each proxy can insert a Session-Expires header field and a Min-SE header field into the request (if none is already there) or alter the value of existing Session-Expires and Min-SE header fields.

If the Session-Expires interval is too low for a proxy (lower than the value of Min-SE that the proxy would wish to assert), the proxy rejects the request with a 422 response. That response contains a Min-SE header field identifying the minimum session interval it is willing to support. The UAC will try again, this time including the Min-SE header field in the request. The header field contains the largest Min-SE header field it observed in all 422 responses previously received. This way, the minimum timer meets the constraints of all proxies along the path.

After several INVITE/422 iterations, the request eventually arrives at the UAS. The UAS can adjust the value of the session interval as if it were a proxy; when done, it places the final session interval into the Session-Expires header field in a 2xx response. The Session-Expires header field also contains a 'refresher' parameter, which indicates who is doing the refreshing -- the UA that is currently the UAC, or the UA that is currently the UAS. As the 2xx response travels back through the proxy chain, each proxy can observe the final session interval but can't change it.   

From the Session-Expires header field in the response, both UAs know that a session timer is active, when it will expire, and who is refreshing. At some point before the expiration, the currently active refresher generates a session refresh request, which is a re-INVITE or UPDATE request. If the refresher never gets a response to that session refresh request, it sends a BYE to terminate the session. Similarly, if the other side never gets the session refresh request before the session expires, it sends a BYE.   

The refresh requests sent once the session is established are processed identically to the initial requests, as described above. This means that a successful session refresh request will extend the session, as desired.


Implementation Details


Call Flows

See SIP Session Timer Call Flows.