Extending the Session Initiation Protocol (SIP) Reason Header for Preemption Events
Extracted elements (20)
A new IANA Reason-Text registry (Section 7.2) was created because no existing registry accommodated human-readable default text strings for Reason header protocol namespaces other than SIP response codes or Q.850 cause codes.
Existing SIP response codes (410, 480, 486, 503) are inappropriate for preemption signaling because the session is already established when the BYE is issued. Q.850 cause=8 exists for preemption but lacks IP-specific semantics, and Q.850 cause=9 ('circuit reserved for reuse') has no IP equivalent.
Separate cause codes for Access Preemption (UA-level, cause=1) versus Network Preemption (router-level, cause=2) are required because certain domains must distinguish the topological origin of preemption for traffic analysis, NM applications, and user notification.
The Generic Preemption cause=3 exists as a policy tool for domains that want end users to remain unaware of whether preemption was access- or network-originated, while still propagating a known preemption indication through the SIP infrastructure.
A SIP Gateway bridging TDM and IP infrastructure must translate a non-IP preemption signal from the TDM side into a SIP BYE with Reason: preemption ;cause=4, propagating the event to the IP-side UA and any intermediate stateful SIP proxies.
RSVP ResvErr messages travel only downstream toward receivers and do not reach the upstream UA; therefore, the UA receiving the ResvErr is responsible for generating the SIP BYE with cause=2 to synchronize the upstream UA and all stateful SIP proxies.
SIP itself does not initiate or terminate RSVP or NSIS reservation signaling; that is handled by a separate API within each UA, so both the reservation-layer error and a SIP BYE carrying the Preemption Reason header are needed to fully synchronize all SIP elements.
Additional definitions of the Preemption namespace and new cause codes MUST be defined in Standards Track documents.
If the Generic Preemption cause=3 is implemented, it SHOULD only be applied at the final SIP Proxy on the last hop to the preempted UA, replacing the specific cause value with the generalized code.
Integrity protection is RECOMMENDED for the Preemption Reason header to prevent unwanted modification and snooping; the accepted SIP mechanisms are TLS and S/MIME.
The Generic Preemption cause=3 MUST NOT be used as the initial preemption indication within a domain, because doing so also generalizes traffic analysis and network management information that depends on the specific cause code.
When a UA must preempt an active session to accept a higher-priority call, it MUST send a BYE to the active session; if the UA is the mixer of an ad hoc conference, it MUST send BYE to all participants of that conference.
Access Preemption Event (cause=1): a UA that receives a higher-priority R-P session request and must tear down an existing session sends BYE with Reason: preemption ;cause=1 ;text="UA Preemption" to the preempted UA and all relevant SIP elements.
Defines a new 'Preemption' protocol value for the SIP Reason header, carrying a cause parameter with four values: 1 (UA Preemption), 2 (Reserved Resources Preempted), 3 (Generic Preemption), and 4 (Non-IP Preemption). Syntax example: Reason: preemption ;cause=1 ;text="UA Preemption".
Generic Preemption (cause=3): a generalized indication used by a final SIP Proxy to replace a specific preemption cause code before delivery to the preempted UA, for domains that do not wish to expose which type of preemption occurred.
Network Preemption Event (cause=2): upon receipt of an RSVP ResvErr or NSIS NOTIFY (error 0x04000005) indicating router-level preemption, the receiving UA generates a BYE with Reason: preemption ;cause=2 ;text="Reserved Resources Preempted" toward the far-end UA and all stateful SIP proxies.
Non-IP Preemption (cause=4): used by a SIP Gateway to translate a preemption signal from a TDM or other non-IP portion of the call into a SIP BYE with Reason: preemption ;cause=4 ;text="Non-IP Preemption".
Creates a new IANA Default Reason-Text Registry for SIP Reason Header protocol namespaces beyond SIP response codes and Q.850, seeded with four Preemption entries: Cause=1 'UA Preemption', Cause=2 'Reserved Resources Preempted', Cause=3 'Generic Preemption', Cause=4 'Non-IP Preemption'.
Extends the existing IANA SIP Reason Header registry by adding the 'Preemption' protocol value, with cause values defined in decimal and referenced to RFC 4411.
Eavesdropping on the Preemption Reason header does not prevent SIP from functioning, but domains relying on preemption signals for session management will want integrity assurance to prevent header tampering; TLS and S/MIME are the recommended protections.