The SIP Session-Timers is an extension of the SIP protocol that allows end-points and proxies to refresh a session periodically. The sessions are kept alive by sending a RE-INVITE or UPDATE request at a negotiated interval. If a session refresh fails then all the entities that support Session- Timers clear their internal session state. In addition, UAs generate a BYE request in order to clear the state in the proxies and the remote UA (this is done for the benefit of SIP entities in the path that do not support Session-Timers).
The Session-Timers can be configured on a system-wide, per-user, or per-peer basis. The peruser/ per-peer settings override the global settings. The following new parameters have been added to the sip.conf file. session-timers=["accept", "originate", "refuse"] session-expires=[integer] session-minse=[integer] session-refresher=["uas", "uac"]
The session-timers parameter in sip.conf defines the mode of operation of SIP session-timers feature in Asterisk. The Asterisk can be configured in one of the following three modes:
- Accept :: In the "accept" mode, the Asterisk server honors session-timers requests made by remote end-points. A remote end-point can request Asterisk to engage session-timers by either sending it an INVITE request with a "Supported: timer" header in it or by responding to Asterisk's INVITE with a 200 OK that contains Session-Expires: header in it. In this mode, the Asterisk server does not request session-timers from remote end-points. This is the default mode.
- Originate :: In the "originate" mode, the Asterisk server requests the remote end-points to activate session-timers in addition to honoring such requests made by the remote end-points. In order to get as much protection as possible against hanging SIP channels due to network or end-point failures, Asterisk resends periodic re-INVITEs even if a remote end-point does not support the session-timers feature.
- Refuse :: In the "refuse" mode, Asterisk acts as if it does not support session- timers for inbound or outbound requests. If a remote end-point requests session-timers in a dialog, then Asterisk ignores that request unless it's noted as a requirement (Require: header), in which case the INVITE is rejected with a 420 Bad Extension response.