# SIP session timers

Canonical: https://warmtransfer.net/knowledge/sip-session-timers

Last verified: 2026-09-25

SIP session timers provide a mechanism to keep SIP dialogs alive and detect dead sessions across intermediaries[^56]. The protocol defines signaling headers and timer intervals that allow user agents or proxies to periodically refresh active calls[^42][^32].

## Protocol mechanics and negotiation

RFC 4028 recommends a Session-Expires value of 1800 seconds (30 minutes)[^42]. The RFC establishes an absolute minimum session interval of 90 seconds, reasoned as slightly more than twice the maximum duration of a timed-out SIP transaction[^41]. When present in a request or response, the Min-SE header value must not be lower than 90 seconds[^28]. If the Min-SE header is absent, its value defaults to 90 seconds[^27]. The letter x is reserved as the compact form of the Session-Expires header[^13].

The session timer extension operates even when only one user agent in the dialog supports it[^56]. RFC 4028 states that sending Require: timer or Proxy-Require: timer in a UAC request is NOT RECOMMENDED[^39]. The refresher parameter in the Session-Expires header accepts either uac or uas to specify which entity performs session refreshes[^37]. When the UAC supports session timers but specifies no refresher preference, the UAS decides whether it or the UAC acts as the refresher[^51]. If the UAC does not provide Supported: timer, the UAS must assign the refresher role to uas[^50]. A UAS may lower the Session-Expires value in its response, provided it does not reduce it below the Min-SE value received in the request[^52]. If only the UAC requested a session timer and the returned 2xx response contains no Session-Expires header, the UAC performs refreshes using its requested value and assumes refresher=uac[^49].

A proxy may insert a Session-Expires header into a request that lacks one before forwarding it[^32]. A proxy may reduce Session-Expires but cannot drop it below Min-SE; it should increase Min-SE when needed but must not lower it[^33]. If a UAS or proxy receives a Session-Expires value lower than its configured minimum, it returns a 422 Session Interval Too Small response[^3]. A 422 response must include a Min-SE header[^2]. Following a 422, the UAC retries using a Min-SE equal to the largest Min-SE returned across all 422 responses for that request[^4].

## Refresh methods and session teardown

RFC 4028 recommends that the designated refresher transmit the refresh request once half of the negotiated session interval has passed[^34]. Any refresh request sent within an active session timer dialog should include the Session-Expires header[^35]. RFC 4028 recommends using UPDATE over re-INVITE for refreshes if the UAC knows its peer supports UPDATE[^54]. RFC 3311 UPDATE lets a UA change session parameters such as media without changing dialog state, including before the initial INVITE completes[^53]. Support for UPDATE is advertised by listing UPDATE in the Allow header of the INVITE and within reliable provisional or final responses[^5]. Conversely, RFC 3311 recommends re-INVITE instead of UPDATE for session modifications on confirmed dialogs because UPDATE requires an immediate response[^1]. WarmTransfer's reading of the sources is that RFC 4028's preference for UPDATE refreshes and RFC 3311's preference for re-INVITE on confirmed dialogs address distinct scenarios—specifically, content-free session refreshes versus user-visible session modifications—rather than conflicting with one another[^55].

If a re-INVITE is selected to perform a refresh, it should include an SDP offer even if parameters remain unchanged, indicating the lack of change by reusing the earlier origin field values[^38]. If a session refresh transaction experiences a timeout or receives a 408 or 481 response, the UAC terminates the session by sending a BYE[^36]. If no refresh is received, the non-refresher should send a BYE shortly before expiration; the recommended margin is the lesser of 32 seconds and one third of the total interval[^12]. WarmTransfer's reading of the sources is that with an 1800-second Session-Expires interval and absent refreshes, a non-refresher following RFC 4028 terminates the call roughly 32 seconds prior to the 30-minute threshold, meaning drops clustered just under 30 minutes indicate session timer issues[^26].

## Platform implementations and behaviors

| Platform | Session-Expires default / range | Min-SE default / range | Refresher behavior |
| --- | --- | --- | --- |
| Cisco CUBE | 1800 s (CUCM default)[^22] | 1800 s / 90–86400 s[^15][^17] | not covered by the sources below |
| AudioCodes Mediant SBC | 180 s / 90–86400 s[^11] | 0 s / 0–1000000 s[^9] | SBCSessionRefreshingPolicy: 0 (Remote Refresher, default), 1 (SBC Refresher)[^10] |
| Oracle SBC | 1800 s / starts at 64 s[^31] | 90 s / starts at 64 s[^31] | Defaults: request-refresher uac, response-refresher uas, force-reinvite disabled[^30] |
| Asterisk res_pjsip | 1800 s[^6] | 90 s[^6] | Configured via timers (defaults to yes; takes no, yes, required, always, forced)[^7] |

### Cisco CUBE, CUCM, and CVP

This is disputed: while one source states that the session refresh command under voice service voip sip on CUBE adds a Session-Expires header to an outbound INVITE when the inbound leg lacked one[^20], the CUBE configuration guide states that Cisco SIP gateways cannot initiate session timers, though they support them when requested by another UA[^14]. On CUBE, the min-se setting defaults to 1800 seconds and can range between 90 and 86400 seconds[^15][^17]. The min-se configuration is set globally under voice service voip sip and applies to all calls originated by the router[^16]. Cisco TAC notes CUCM sends a default Session-Expires of 1800 seconds, with an upper limit of 86400 seconds[^22].

To avoid interoperability problems with UPDATE refreshes on CUCM 10.x onward, Cisco TAC advises configuring the session refresh method to INVITE[^18]. Cisco TAC also provides a CUBE SIP profile rule that strips UPDATE from the Allow header so that peer endpoints do not attempt UPDATE refreshes[^21]. When configured with midcall-signaling passthru media-change, CUBE absorbs refresh re-INVITEs locally and only forwards a session refresh to the opposing leg if the media characteristics change[^19].

In a documented Cisco Customer Voice Portal (CVP) 11.6 deployment, calls disconnected at 30 minutes with CUCM sending a BYE containing cause code 41 due to a session timer negotiation mismatch[^23]. Cisco TAC determined that CVP dropped the call because it stripped session timer headers during re-INVITEs, causing each endpoint to believe the opposing side was responsible for refreshes[^25]. Cisco resolved this scenario by making the ingress CUBE the refresher via min-se 1800, session-expires 1800, and session refresh under voice service voip sip[^24].

### Microsoft Teams Direct Routing

Microsoft notes that Direct Routing calls dropping without error codes after 10 to 60 minutes of connection may indicate session timer or refresh failures[^43]. Microsoft explains that refresher=uac delegates refresh responsibility to the INVITE sender, whereas refresher=uas assigns it to the receiver[^46]. Direct Routing guidance recommends configuring the connected SBC so the designated entity sends refreshes before timer expiration, while tracing carrier-originated BYE messages back to their source[^44]. The Direct Routing SIP proxy always offers session timers on non-media-bypass calls, but omits them on media bypass calls[^45]. Utilizing session timers on the SBC is not mandatory for Direct Routing[^47].

### AudioCodes and Oracle SBC

AudioCodes Mediant Software SBC 7.4 sets SBCSessionExpires to a default of 180 seconds within a range of 90 to 86400 seconds[^11]. SBCMinSE ranges from 0 to 1000000 seconds and defaults to 0[^9]. Refresher selection is governed by SBCSessionRefreshingPolicy, which defaults to 0 (Remote Refresher) and offers 1 (SBC Refresher)[^10]. WarmTransfer's reading of the sources is that when the AudioCodes SBC acts as the refresher with SBCSessionExpires left at its 180-second default, session refreshes will occur roughly every 90 seconds under the RFC 4028 half-interval recommendation[^8].

Oracle SBC 9.0.0 session-timer-profile defaults session-expires to 1800 seconds and min-se to 90 seconds, with minimum permitted values starting at 64 seconds[^31]. Its default behavior sets request-refresher to uac, response-refresher to uas, and force-reinvite to disabled[^30]. WarmTransfer's reading of the sources is that if an Oracle SBC session-timer-profile interval is configured between 64 and 89 seconds, an RFC 4028-compliant endpoint would reject the value as being below the standard 90-second minimum floor[^29].

## See also

- See also [Calls that drop after about 30 seconds](https://warmtransfer.net/knowledge/sip-calls-drop-30-seconds).
- See also [CUBE dial-peer matching and voice class URI and translation profiles](https://warmtransfer.net/knowledge/cube-dial-peers).
- See also [AudioCodes Mediant SBC](https://warmtransfer.net/knowledge/audiocodes-mediant-sbc).
- See also [Cisco Customer Voice Portal](https://warmtransfer.net/knowledge/cisco-cvp).
- See also [SIP transactions dialogs and call setup](https://warmtransfer.net/knowledge/sip-transactions-dialogs).
- See also [SIP response codes and failure interpretation](https://warmtransfer.net/knowledge/sip-response-codes).
- See also [SDP offer answer and codec negotiation](https://warmtransfer.net/knowledge/sdp-offer-answer).
- See also [ITU-T Q.850 call clearing cause values](https://warmtransfer.net/knowledge/q850-cause-codes).

## Applicability

Applies to: IETF SIP, Cisco Unified Border Element, Cisco Unified Border Element (IOS XE), Cisco Unified Communications Manager, Cisco Unified CVP, Microsoft Teams Phone Direct Routing, Sangoma Asterisk chan_pjsip, AudioCodes Mediant Software SBC, and Oracle Communications Session Border Controller. Deployments: on-premises, hybrid, and multi-tenant. Sources checked 2026-09-25. Cisco TAC advises setting the session refresh method to INVITE instead of UPDATE for CUCM 10.x onward[^18]. Cisco Customer Voice Portal claims apply to CVP 11.6[^23]. AudioCodes SBC claims apply to Mediant Software SBC User's Manual version 7.4[^11]. Oracle SBC claims apply to ACLI Reference Release 9.0.0[^31].

## What remains uncertain

- CUCM SIP profile session timer fields and defaults (SIP Session Expires Timer and Session Refresh Method) are not covered by the sources below.
- Webex Calling Local Gateway and cloud session timer values and refresher role are not covered by the sources below.
- Sources disagree on resolving whether current CUBE IOS XE initiates session timers by default or only with session refresh[^20][^14].
- Operational impact of Direct Routing not offering session timers on media bypass calls is not covered by the sources below.
- CVP Unified CM SME Enable Session Refresh and Enable Session Timer procedures are not covered by the sources below.
- Session timer behaviour across transfer and hold and B2BUA leg splitting is not covered by the sources below.
- Meaning of AudioCodes SBCMinSE value 0 and newer manual defaults are not covered by the sources below.
- BYOC session timer requirements are not covered by the sources below.

## Sources

[^1]: RFC 3311 recommends re-INVITE rather than UPDATE for session changes on confirmed dialogs because UPDATE needs an immediate answer. Source: [RFC 3311: The Session Initiation Protocol (SIP) UPDATE Method](https://www.rfc-editor.org/rfc/rfc3311.html), Section 5.1 (Sending an UPDATE). Checked 2026-09-25.
[^2]: A 422 response must contain a Min-SE header. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 6 (422 Response Code Definition). Checked 2026-09-25.
[^3]: RFC 4028 defines 422 Session Interval Too Small, sent by a UAS or proxy when Session-Expires is below its minimum. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 6 (422 Response Code Definition). Checked 2026-09-25.
[^4]: After a 422, the UAC retries with a Min-SE equal to the largest Min-SE value returned in all 422 responses for that request. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.1 (Generating an Initial Session Refresh Request). Checked 2026-09-25.
[^5]: Support for UPDATE is signalled by listing UPDATE in the Allow header of the INVITE and of reliable provisional or final responses. Source: [RFC 3311: The Session Initiation Protocol (SIP) UPDATE Method](https://www.rfc-editor.org/rfc/rfc3311.html), Section 4 (UPDATE Handling). Checked 2026-09-25.
[^6]: Asterisk res_pjsip defaults timers_min_se to 90 seconds and timers_sess_expires to 1800 seconds. Source: [res_pjsip - Asterisk Documentation](https://docs.asterisk.org/Latest_API/API_Documentation/Module_Configuration/res_pjsip/), endpoint section, options 'timers_min_se' and 'timers_sess_expires'. Checked 2026-09-25.
[^7]: Asterisk res_pjsip endpoint option timers defaults to yes and accepts no, yes, required, always and forced (an alias of always). Source: [res_pjsip - Asterisk Documentation](https://docs.asterisk.org/Latest_API/API_Documentation/Module_Configuration/res_pjsip/), endpoint section, option 'timers'. Checked 2026-09-25.
[^8]: If the AudioCodes SBC is the refresher and SBCSessionExpires stays at its 180-second default, refreshes would occur about every 90 seconds under the RFC 4028 half-interval rule (inferred). Source: [Mediant Software SBC User's Manual Version 7.4 - SBC Parameters](https://techdocs.audiocodes.com/session-border-controller-sbc/mediant-software-sbc/user-manual/version-740/Content/UM/SBC%20Parameters.htm), SBCSessionExpires default, read with RFC 4028 Section 10. Checked 2026-09-25.
[^9]: AudioCodes Mediant Software SBC 7.4 parameter SBCMinSE ranges 0 to 1000000 seconds and defaults to 0. Source: [Mediant Software SBC User's Manual Version 7.4 - SBC Parameters](https://techdocs.audiocodes.com/session-border-controller-sbc/mediant-software-sbc/user-manual/version-740/Content/UM/SBC%20Parameters.htm), SBC Parameters table, SBCMinSE (CLI min-session-expires). Checked 2026-09-25.
[^10]: AudioCodes SBCSessionRefreshingPolicy chooses who refreshes, with 0 Remote Refresher as default and 1 SBC Refresher. Source: [Mediant Software SBC User's Manual Version 7.4 - SBC Parameters](https://techdocs.audiocodes.com/session-border-controller-sbc/mediant-software-sbc/user-manual/version-740/Content/UM/SBC%20Parameters.htm), SBC Parameters table, SBCSessionRefreshingPolicy (CLI sbc-session-refresh-policy). Checked 2026-09-25.
[^11]: AudioCodes Mediant Software SBC 7.4 parameter SBCSessionExpires ranges 90 to 86400 seconds and defaults to 180. Source: [Mediant Software SBC User's Manual Version 7.4 - SBC Parameters](https://techdocs.audiocodes.com/session-border-controller-sbc/mediant-software-sbc/user-manual/version-740/Content/UM/SBC%20Parameters.htm), SBC Parameters table, SBCSessionExpires (CLI sbc-sess-exp-time). Checked 2026-09-25.
[^12]: If no refresh arrives, the non-refresher should send BYE slightly before expiry, recommended at the lesser of 32 seconds and one third of the interval before it. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 10 (Performing Refreshes). Checked 2026-09-25.
[^13]: The letter x is reserved as the compact form of the Session-Expires header. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 4 (Session-Expires Header Field Definition). Checked 2026-09-25.
[^14]: The CUBE configuration guide states Cisco SIP gateways cannot initiate the use of SIP session timers but fully support them when another UA requests them (disputed). Source: [Cisco Unified Border Element Configuration Guide (IOS XE) - SIP Session Timer Support](https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/ios-xe/config/ios-xe-book/m_voi-sip-sess-tmr.html), SIP Session Timer Support, restrictions / feature description. Checked 2026-09-25.
[^15]: CUBE's min-se setting defaults to 1800 seconds. Source: [Cisco Unified Border Element Configuration Guide (IOS XE) - SIP Session Timer Support](https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/ios-xe/config/ios-xe-book/m_voi-sip-sess-tmr.html), SIP Session Timer Support, min-se command description. Checked 2026-09-25.
[^16]: CUBE's min-se command is set in voice service voip sip mode and applies to all calls originated by the router. Source: [Cisco Unified Border Element Configuration Guide (IOS XE) - SIP Session Timer Support](https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/ios-xe/config/ios-xe-book/m_voi-sip-sess-tmr.html), SIP Session Timer Support, configuration task for min-se. Checked 2026-09-25.
[^17]: CUBE's min-se value range is 90 to 86400 seconds. Source: [Cisco Unified Border Element Configuration Guide (IOS XE) - SIP Session Timer Support](https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/ios-xe/config/ios-xe-book/m_voi-sip-sess-tmr.html), SIP Session Timer Support, min-se command description. Checked 2026-09-25.
[^18]: Cisco TAC advises setting the session refresh method to INVITE instead of UPDATE for CUCM 10.x onward to avoid UPDATE refresh interop issues. Source: [Troubleshoot Session Refresh on CUBE](https://www.cisco.com/c/en/us/support/docs/unified-communications/unified-border-element/213843-troubleshoot-session-refresh-on-cube.html), Section 'Avoid Interoperability Issues with Update Refresh'. Checked 2026-09-25.
[^19]: With midcall-signaling passthru media-change, CUBE consumes refresh re-INVITEs and passes a session refresh across to the other leg only when media changes. Source: [Troubleshoot Session Refresh on CUBE](https://www.cisco.com/c/en/us/support/docs/unified-communications/unified-border-element/213843-troubleshoot-session-refresh-on-cube.html), Section 'Consumption of Mid-Call RE-INVITE/UPDATE'. Checked 2026-09-25.
[^20]: On CUBE, the session refresh command under voice service voip sip adds a Session-Expires header to the outbound INVITE when the inbound leg had none (disputed). Source: [Troubleshoot Session Refresh on CUBE](https://www.cisco.com/c/en/us/support/docs/unified-communications/unified-border-element/213843-troubleshoot-session-refresh-on-cube.html), Section 'Avoid Interoperability Issues with Update Refresh'. Checked 2026-09-25.
[^21]: Cisco TAC shows a CUBE SIP profile rule that removes UPDATE from the Allow header so peers do not choose UPDATE for refreshes. Source: [Troubleshoot Session Refresh on CUBE](https://www.cisco.com/c/en/us/support/docs/unified-communications/unified-border-element/213843-troubleshoot-session-refresh-on-cube.html), Section 'Avoid Interoperability Issues with Update Refresh', SIP profile example. Checked 2026-09-25.
[^22]: Cisco TAC states CUCM sends a default Session-Expires of 1800 seconds, which can be raised to a maximum of 86400. Source: [Troubleshoot Session Refresh on CUBE](https://www.cisco.com/c/en/us/support/docs/unified-communications/unified-border-element/213843-troubleshoot-session-refresh-on-cube.html), Section 'Example Call Flows'. Checked 2026-09-25.
[^23]: In a documented CVP 11.6 flow, calls dropped at the 30-minute mark when CUCM sent BYE with cause 41 after a session timer negotiation mismatch. Source: [Troubleshoot Session Refresh Timer with Cisco Customer Voice Portal](https://www.cisco.com/c/en/us/support/docs/contact-center/unified-customer-voice-portal/215845-troubleshoot-session-refresh-timer-with.html), Problem section. Checked 2026-09-25.
[^24]: Cisco's fix for the CVP case makes the ingress CUBE the refresher with min-se 1800 session-expires 1800 and session refresh under voice service voip sip. Source: [Troubleshoot Session Refresh Timer with Cisco Customer Voice Portal](https://www.cisco.com/c/en/us/support/docs/contact-center/unified-customer-voice-portal/215845-troubleshoot-session-refresh-timer-with.html), Solution section, configuration example. Checked 2026-09-25.
[^25]: Cisco TAC attributes the CVP drop to CVP omitting session timer headers in re-INVITEs so each endpoint could assume the other was the refresher. Source: [Troubleshoot Session Refresh Timer with Cisco Customer Voice Portal](https://www.cisco.com/c/en/us/support/docs/contact-center/unified-customer-voice-portal/215845-troubleshoot-session-refresh-timer-with.html), Cause / Problem description. Checked 2026-09-25.
[^26]: With Session-Expires 1800 and no refreshes, an RFC 4028 non-refresher following the recommended BYE margin would end the call about 32 seconds before 30 minutes, so drops clustered just under 30 minutes point to session timers (inferred). Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 10 arithmetic applied to the Section 4 recommended value. Checked 2026-09-25.
[^27]: When the Min-SE header is absent its value is taken as 90 seconds. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 5 (Min-SE Header Field Definition). Checked 2026-09-25.
[^28]: The Min-SE header value must not be less than 90 seconds when present in a request or response. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 5 (Min-SE Header Field Definition). Checked 2026-09-25.
[^29]: An Oracle SBC session-timer-profile could be set between 64 and 89 seconds, which an RFC 4028-compliant peer would treat as below the 90-second floor (inferred). Source: [session-timer-profile (ACLI Reference, Release 9.0.0)](https://docs.oracle.com/en/industries/communications/session-border-controller/9.0.0/aclireference/session-timer-profile.html), session-timer-profile valid values, read against RFC 4028 Section 5. Checked 2026-09-25.
[^30]: Oracle SBC 9.0.0 session-timer-profile defaults request-refresher to uac and response-refresher to uas, and force-reinvite to disabled. Source: [session-timer-profile (ACLI Reference, Release 9.0.0)](https://docs.oracle.com/en/industries/communications/session-border-controller/9.0.0/aclireference/session-timer-profile.html), session-timer-profile parameters: request-refresher, response-refresher, force-reinvite. Checked 2026-09-25.
[^31]: Oracle SBC 9.0.0 session-timer-profile defaults session-expires to 1800 and min-se to 90, each with a valid range starting at 64 seconds. Source: [session-timer-profile (ACLI Reference, Release 9.0.0)](https://docs.oracle.com/en/industries/communications/session-border-controller/9.0.0/aclireference/session-timer-profile.html), session-timer-profile parameters: session-expires, min-se. Checked 2026-09-25.
[^32]: A proxy may insert a Session-Expires header into a request that lacks one before forwarding it. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 8.1 (Processing of Requests). Checked 2026-09-25.
[^33]: A proxy may reduce Session-Expires but not below Min-SE, and should raise but must not lower Min-SE. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 8.1 (Processing of Requests). Checked 2026-09-25.
[^34]: RFC 4028 recommends the refresher send the session refresh once half the session interval has elapsed. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 10 (Performing Refreshes). Checked 2026-09-25.
[^35]: A session refresh request in a dialog with an active session timer should include the Session-Expires header. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.4 (Generating Subsequent Session Refresh Requests). Checked 2026-09-25.
[^36]: If a session refresh transaction times out or gets a 408 or 481 response, the UAC sends BYE. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 10 (Performing Refreshes). Checked 2026-09-25.
[^37]: The Session-Expires refresher parameter takes the value uac or uas to name which side performs refreshes. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 4 (Session-Expires grammar). Checked 2026-09-25.
[^38]: A re-INVITE refresh should carry an SDP offer even if nothing changed, and the offer must indicate no change by reusing the prior origin field values. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.4 (Generating Subsequent Session Refresh Requests). Checked 2026-09-25.
[^39]: RFC 4028 says a UAC using Require: timer or Proxy-Require: timer in its request is NOT RECOMMENDED. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.1 (Generating an Initial Session Refresh Request). Checked 2026-09-25.
[^40]: If the 2xx response sets refresher=uac, the UAS must include Require: timer in that response. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 9 (UAS Behavior); extraction attributed it to Section 7.2, verify. Checked 2026-09-25.
[^41]: RFC 4028 sets an absolute minimum session interval of 90 seconds, reasoned as a bit more than twice the time a SIP transaction can take on timeout. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 4 (Session-Expires Header Field Definition). Checked 2026-09-25.
[^42]: RFC 4028 recommends 1800 seconds (30 minutes) as the Session-Expires value. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 4 (Session-Expires Header Field Definition). Checked 2026-09-25.
[^43]: Microsoft says a Direct Routing call that drops without an error code after 10 to 60 minutes connected may indicate a session timer or refresh problem. Source: [Issues that affect inbound Direct Routing calls](https://learn.microsoft.com/en-us/troubleshoot/microsoftteams/phone-system/direct-routing/issues-with-inbound-calls), Section 'Calls drop after a specific duration' > 'Calls drop after several minutes'. Checked 2026-09-25.
[^44]: Microsoft's resolution is to configure the SBC so the correct party refreshes before expiry, and to trace any carrier-originated BYE back to its source. Source: [Issues that affect inbound Direct Routing calls](https://learn.microsoft.com/en-us/troubleshoot/microsoftteams/phone-system/direct-routing/issues-with-inbound-calls), Section 'Calls drop after several minutes' > Resolution. Checked 2026-09-25.
[^45]: The Direct Routing SIP proxy always offers the session timer on non-media-bypass calls and does not offer it on media bypass calls. Source: [Teams Phone System Direct Routing: SIP protocol](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-protocols-sip), Section 'Session timer'. Checked 2026-09-25.
[^46]: Microsoft's Direct Routing guidance says refresher=uac makes the INVITE sender responsible for refreshes and refresher=uas makes the INVITE receiver responsible. Source: [Issues that affect inbound Direct Routing calls](https://learn.microsoft.com/en-us/troubleshoot/microsoftteams/phone-system/direct-routing/issues-with-inbound-calls), Section 'Calls drop after several minutes', Note. Checked 2026-09-25.
[^47]: Microsoft states that use of the session timer by the SBC is not mandatory for Direct Routing. Source: [Teams Phone System Direct Routing: SIP protocol](https://learn.microsoft.com/en-us/microsoftteams/direct-routing-protocols-sip), Section 'Session timer'. Checked 2026-09-25.
[^48]: Listing the option tag timer in Supported indicates a UA can perform refreshes according to RFC 4028. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), IANA considerations, option tag registration (reported as Section 12.3; verify). Checked 2026-09-25.
[^49]: If only the UAC asked for a session timer and the 2xx lacks Session-Expires, the UAC performs refreshes as if the response carried its requested value with refresher=uac. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.2 (Processing a 2xx Response). Checked 2026-09-25.
[^50]: If the UAC does not indicate Supported: timer, the UAS must set the refresher to uas. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 9 (UAS Behavior), Table 2. Checked 2026-09-25.
[^51]: When the UAC supports session timers but expresses no refresher preference, the UAS decides whether it or the UAC performs refreshes. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 9 (UAS Behavior), Table 2. Checked 2026-09-25.
[^52]: A UAS may reduce the Session-Expires value in its response but not below the Min-SE value in the request. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 9 (UAS Behavior). Checked 2026-09-25.
[^53]: RFC 3311 UPDATE lets a UA change session parameters such as media without changing dialog state, including before the initial INVITE completes. Source: [RFC 3311: The Session Initiation Protocol (SIP) UPDATE Method](https://www.rfc-editor.org/rfc/rfc3311.html), Abstract. Checked 2026-09-25.
[^54]: RFC 4028 recommends UPDATE rather than re-INVITE for refreshes when the UAC knows its peer supports UPDATE. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.4 (Generating Subsequent Session Refresh Requests). Checked 2026-09-25.
[^55]: RFC 4028's preference for UPDATE refreshes and RFC 3311's preference for re-INVITE on confirmed dialogs address different cases (content-free refresh versus user-visible session change) rather than contradicting each other (inferred). Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 7.4, read with RFC 3311 Section 5.1. Checked 2026-09-25.
[^56]: The session timer extension works even when only one user agent in the dialog supports it. Source: [RFC 4028: Session Timers in the Session Initiation Protocol (SIP)](https://www.rfc-editor.org/rfc/rfc4028.html), Section 3 (Overview of Operation). Checked 2026-09-25.
