rfc-4244

An Extension to the Session Initiation Protocol (SIP) for Request History Information

M. Barnes (Editor)
date2005-11 streamIETF arearai wgsip statusPROPOSED STANDARD pages44 canonicalhttps://www.rfc-editor.org/rfc/rfc4244 doi10.17487/RFC4244 errataview
This document defines a standard mechanism for capturing the history information associated with a Session Initiation Protocol (SIP) request. This capability enables many enhanced services by providing the information as to how and why a call arrives at a specific application or user. This document defines a new optional SIP header, History-Info, for capturing the history information in requests. [STANDARDS-TRACK]

obsoleted by

Extracted elements (28)

design-rationale §4.3.3.1

Adding History-Info between Steps 8 and 9 of RFC 3261 proxy forwarding (rather than Step 5) is recommended because strict routing can change the Request-URI during Step 6, which would cause an incorrect URI to be captured if the header were added earlier.

sip, realtime

design-rationale §1.3

History-Info is defined as a generic building block rather than as application-specific mechanism because existing services (voicemail, ACD, follow-me) each had their own proprietary history mechanisms, and a standard mechanism avoids fragmentation while leaving application-specific behavior as a local decision for recipients.

sip, realtime

design-rationale §4.1

The hi-index uses a dot-delimited tree structure rather than a flat sequence number so that forking and nesting of requests can be accurately represented, enabling applications to extract metrics such as total retargets, retargets per branch, and forking depth from the index values alone.

sip, realtime

interoperability-note §3

History-Info does not alter the fundamental processing of proxies for determining request targets as defined in RFC 3261 Sections 16.5 and 16.6. Its addition is purely an optional, additional header field and does not impact SIP request forwarding or retargeting mechanics.

sip, realtime

normative-requirement §4.3.3.1 SHOULD

A proxy SHOULD add a hi-entry as it forwards a request. Adding the History-Info header between Steps 8 (adding Via header) and 9 (adding Content-Length) of RFC 3261 Section 16.6 is RECOMMENDED to avoid issues with strict routing changing the Request-URI.

sip, realtime

normative-requirement §4.3.4 SHOULD NOT

A redirect server SHOULD NOT add any new History-Info, as that would be done by the entity receiving the 3xx response; however, it MAY include History-Info from the received request in subsequent responses.

sip, realtime

normative-requirement §3 SHOULD

An entity retargeting a request in response to a redirect or REFER SHOULD propagate any History-Info header from the initial request in the new request.

sip, realtime

normative-requirement §3.1 MUST

Applications using History-Info MUST clearly define the impact of the information not being available and specify the processing of such a request, because the History-Info header is optional and neither UAs nor Proxies are required to support it.

sip, realtime

normative-requirement §4.3.3.1.3 MUST

For parallel forking, the hi-index MUST be captured for each forked request with a unique index per the indexing rules; proxy aggregates History-Info entries from all forked requests ordered by index when building the subsequent response.

sip, realtime

normative-requirement §4.3.3.1.2 MUST

For retargets resulting from an explicit SIP response, a Reason MUST be associated with the retargeted hi-targeted-to-uri. If the SIP response lacks a Reason header, the SIP response code MUST be included; non-SIP Reason headers (e.g., Q.850) MUST be captured as additional Reasons along with the SIP response code.

sip, realtime

normative-requirement §4.3.2 SHOULD

If the 'histinfo' option tag is received in a request, the UAS SHOULD include any History-Info received in that request in the subsequent response.

sip, realtime

normative-requirement §4.3.3.2 MUST

If the response is being forwarded outside the proxy's domain and there is a Privacy header with priv-value 'session', 'header', or 'history' in the original request, the proxy MUST remove the History-Info header (all hi-entries) prior to forwarding the response.

sip, privacy, realtime

normative-requirement §3.2 MUST NOT

If TLS is not available for the connection over which a request containing History-Info is being forwarded, the request MUST NOT include the History-Info header, or the request MUST be redirected to the client including the History-Info header so that the client can securely retarget.

sip, tls, security, realtime

normative-requirement §4.3.3 SHOULD

Proxies SHOULD maintain History-Info headers received in messages being forwarded, independent of whether local policy supports History-Info, consistent with basic SIP processing of optional headers.

sip, realtime

normative-requirement §4.3.3.1 MUST

The hi-entry MUST be added following any hi-entry already present in the request being forwarded, ensuring chronological ordering is maintained.

sip, realtime

normative-requirement §3.3 SHOULD NOT

The History-Info header SHOULD NOT be included in requests where the requestor has indicated a priv-value of Session- or Header-level privacy, since the header can inadvertently reveal information about the requestor.

sip, privacy, realtime

normative-requirement §4.3.1 SHOULD

The UAC SHOULD include the 'histinfo' option tag in the Supported header in any request not associated with an established dialog for which it desires History-Info returned in responses.

sip, realtime

privacy-consideration §3.3

The History-Info header can inadvertently reveal routing information about the requestor. The Privacy header with priv-values 'session', 'header', or 'history' controls whether intermediaries include or strip History-Info. Local policy may further restrict which Request-URIs are captured or forwarded.

sip, privacy, realtime

protocol-element §3.3

A new priv-value 'history' is added to the SIP Privacy header. It can be applied to the entire request or to a specific hi-targeted-to-uri to indicate that the associated History-Info entry (or all entries) should not be forwarded beyond the current domain.

sip, privacy, realtime

protocol-element §7.1

The 'histinfo' option tag is included in the Supported header of requests to indicate that the UAC desires History-Info to be returned in responses. It is not used in Proxy-Require or Require because support is optional.

sip, realtime, registry

protocol-element §4.1

The History-Info header is a new optional SIP header field that captures the sequence of Request-URIs as a SIP request is retargeted and forwarded. It may appear in any request or response not associated with an established dialog, including INVITE, REGISTER, MESSAGE, REFER, OPTIONS, SUBSCRIBE, PUBLISH, and NOTIFY.

sip, realtime

registry §7.2

IANA registers 'history' as a new priv-value for the SIP Privacy header, indicating that privacy is requested for the History-Info header(s), referencing RFC 4244.

sip, registry, privacy, realtime

registry §7.1

IANA registers 'History-Info' as a new SIP header field name (compact form: none) and 'histinfo' as a new SIP option tag, both referencing RFC 4244.

sip, registry, realtime

security-consideration §4.3.1

Gaps in hi-index values can indicate that an entry has been maliciously removed or removed for privacy reasons. Applications SHOULD evaluate indices for gaps and MAY choose not to process History-Info when entries appear to be missing.

sip, security, realtime

security-consideration §6

TLS is mandated for hop-by-hop security of History-Info between all entities (UAC-to-Proxy, Proxy-to-Proxy, Proxy-to-UAS). If TLS is unavailable, the History-Info header MUST be removed prior to forwarding, or the request MUST be redirected to the UAC so it can securely retarget. TLS provides authentication and confidentiality but does not prevent malicious intermediaries from deleting, rewriting, or modifying History-Info.

sip, tls, security, realtime

state-machine §4.3.3.1.3

Proxy indexing state machine for History-Info: (1) Basic forwarding appends a new dot-level to the last index (e.g., 1.1 → 1.1.1); (2) first retarget within a proxy follows basic forwarding; (3) each subsequent retarget by the same proxy increments the last digit (e.g., 1.1.1 → 1.1.2); (4) retarget due to a response also increments the last digit; (5) parallel forking assigns a unique index per branch.

sip, realtime

wire-format §4.1

Each History-Info entry (hi-entry) contains a mandatory hi-targeted-to-uri (name-addr format capturing the Request-URI) and mandatory hi-index (dot-delimited digits reflecting chronological order and forking depth). Optional parameters include a Reason header escaped in the URI, a Privacy header with priv-value 'history', and hi-extension for future use.

sip, realtime

wire-format §4.1

The hi-index parameter uses the syntax '1*DIGIT *(DOT 1*DIGIT)', forming a dot-delimited tree representation where each dot reflects a hop or level of nesting and each integer reflects the number of peer entities at that level.

sip, realtime