rfc-3326

The Reason Header Field for the Session Initiation Protocol (SIP)

H. Schulzrinne, D. Oran, G. Camarillo
date2002-12 streamIETF arearai wgsip statusPROPOSED STANDARD pages8 canonicalhttps://www.rfc-editor.org/rfc/rfc3326 doi10.17487/RFC3326
The REGISTER function is used in a Session Initiation Protocol (SIP) system primarily to associate a temporary contact address with an address-of-record. This contact is generally in the form of a Uniform Resource Identifier (URI), such as Contact: <sip:[email protected]> and is generally dynamic and associated with the IP address or hostname of the SIP User Agent (UA). The problem is that network topology may have one or more SIP proxies between the UA and the registrar, such that any request traveling from the user's home network to the registered UA must traverse these proxies. The REGISTER method does not give us a mechanism to discover and record this sequence of proxies in the registrar for future use. This document defines an extension header field, "Path" which provides such a mechanism. [STANDARDS-TRACK]

updated by

Extracted elements (13)

design-rationale §1

The Reason header field is intended to resolve the Heterogeneous Error Response Forking Problem (HERFP): when an INVITE forks and one branch rejects, the error response may never reach the client unless all branches reject. Encapsulating the final error in a provisional response via Reason solves this.

sip, realtime

design-rationale §1

The Reason header field is noted to be most useful initially for BYE and CANCEL requests, since responses already carry status codes and reason phrases that provide sufficient information without needing the Reason header.

sip, realtime

design-rationale §1

Third party call controllers and PSTN gateways generate SIP requests in response to events from other dialogs or non-SIP protocols; the Reason header allows the receiving client to know what triggered the SIP request, enabling better service logic and UI behavior.

sip, realtime, voip

interoperability-note §3.4

For ISUP interworking, a PSTN gateway may include a Q.850 cause value (e.g., cause=16 for Normal Call Clearing) in the Reason header of a CANCEL request triggered by receipt of a REL message from the ISUP side.

sip, realtime, voip

interoperability-note §3.2

When a client receives an unacceptable offer in a 200 OK response to an empty INVITE, it should send ACK followed by BYE with Reason: SIP ;cause=488 to communicate why the session is being terminated immediately after establishment.

sip, realtime

normative-requirement §2 MUST

A SIP message MAY contain more than one Reason value (multiple Reason lines), but all of them MUST have different protocol values (e.g., one SIP and another Q.850).

sip, realtime

normative-requirement §2 MAY

Any SIP status code MAY appear in the Reason header field of a request. An implementation is free to ignore Reason values that it does not understand.

sip, realtime

normative-requirement §2 SHOULD

Proxies generating a CANCEL request upon reception of a CANCEL from the previous hop that contains a Reason header field SHOULD copy it into the new CANCEL request.

sip, realtime

protocol-element §2

The Reason header field conveys why a SIP request was issued. It MAY appear in any request within a dialog, in any CANCEL request, and in any response whose status code explicitly allows it. Clients and servers are free to ignore it; it has no impact on protocol processing.

sip, realtime

protocol-element §2

The 'SIP' protocol value in the Reason header field indicates that the cause parameter contains a SIP status code. The 'Q.850' protocol value indicates the cause parameter contains an ITU-T Q.850 cause value in decimal representation.

sip, realtime, voip

registry §4 MUST

This document defines a new IANA sub-registry under the SIP parameters registry labeled 'Reason Protocols'. Initial entries are: SIP (cause=status code, ref RFC 3261) and Q.850 (cause=ITU-T Q.850 cause value in decimal). New protocol values MUST refer to an ITU-T Recommendation, IETF protocol name, or recognized protocol identifier.

sip, registry, realtime

security-consideration §5 RECOMMENDED

Spoofing or removing the Reason header field in a HERFP scenario can prevent a client from properly updating its previous request, making session establishment impossible. It is RECOMMENDED that the Reason header field be protected by a suitable integrity mechanism.

sip, security, realtime

wire-format §2

The Reason header field syntax: 'Reason = "Reason" HCOLON reason-value *(COMMA reason-value)' where reason-value contains a protocol token (SIP, Q.850, or other) followed by optional cause parameter (decimal digits) and optional text parameter (quoted-string).

sip, realtime