summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4244.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc4244.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc4244.txt')
-rw-r--r--doc/rfc/rfc4244.txt2467
1 files changed, 2467 insertions, 0 deletions
diff --git a/doc/rfc/rfc4244.txt b/doc/rfc/rfc4244.txt
new file mode 100644
index 0000000..ba5d242
--- /dev/null
+++ b/doc/rfc/rfc4244.txt
@@ -0,0 +1,2467 @@
+
+
+
+
+
+
+Network Working Group M. Barnes, Ed.
+Request for Comments: 4244 Nortel
+Category: Standards Track November 2005
+
+
+ An Extension to the Session Initiation Protocol (SIP)
+ for Request History Information
+
+Status of This Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2005).
+
+Abstract
+
+ 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.
+
+Table of Contents
+
+ 1. Introduction ....................................................2
+ 1.1. Overview ...................................................2
+ 1.2. Conventions Used in This Document ..........................3
+ 1.3. Background: Why define a Generic "Request History"
+ capability? ................................................3
+ 2. "Request History" Requirements ..................................4
+ 2.1. Security Requirements ......................................6
+ 2.2. Privacy Requirements .......................................7
+ 3. Request History Information Description .........................7
+ 3.1. Optionality of History-Info ................................8
+ 3.2. Securing History-Info ......................................8
+ 3.3. Ensuring the Privacy of History-Info .......................9
+ 4. Request History Information Protocol Details ....................9
+ 4.1. Protocol Structure of History-Info ........................10
+ 4.2. Protocol Examples .........................................11
+ 4.3. Protocol Usage ............................................12
+
+
+
+Barnes Standards Track [Page 1]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ 4.3.1. User Agent Client (UAC) Behavior ...................12
+ 4.3.2. User Agent Server (UAS) Behavior ...................13
+ 4.3.3. Proxy Behavior .....................................13
+ 4.3.4. Redirect Server Behavior ...........................18
+ 4.4. Security for History-Info .................................18
+ 4.5. Example Applications Using History-Info ...................19
+ 4.5.1. Example with Privacy Header for Entire
+ Request at Proxy2 ..................................21
+ 4.5.2. Example with Privacy Header for Specific
+ URI (UA4) at Proxy2 ................................22
+ 5. Application Considerations .....................................24
+ 6. Security Considerations ........................................25
+ 7. IANA Considerations ............................................25
+ 7.1. Registration of New SIP History-Info Header ...............25
+ 7.2. Registration of "history" for SIP Privacy Header ..........26
+ 8. Normative References ...........................................26
+ 9. Informative References .........................................26
+ 10. Acknowledgements ..............................................26
+ 11. Contributors' Addresses .......................................27
+ Appendix. Example Scenarios........................................28
+ Appendix A. Sequentially forking (History-Info in Response).....28
+ Appendix B. Voicemail...........................................34
+ Appendix C. Automatic Call Distribution Example.................39
+ Appendix D. Session via Redirect and Proxy Servers..............41
+
+1. Introduction
+
+1.1. Overview
+
+ Many services that SIP is anticipated to support require the ability
+ to determine why and how the call arrived at a specific application.
+ Examples of such services include (but are not limited to) sessions
+ initiated to call centers via "click to talk" SIP Uniform Resource
+ Locators (URLs) on a web page, "call history/logging" style services
+ within intelligent "call management" software for SIP User Agents
+ (UAs), and calls to voicemail servers. Although SIP implicitly
+ provides the redirect/retarget capabilities that enable calls to be
+ routed to chosen applications, there is currently no standard
+ mechanism within SIP for communicating the history of such a request.
+ This "request history" information allows the receiving application
+ to determine hints about how and why the call arrived at the
+ application/user.
+
+ This document defines a new SIP header, History-Info, to provide a
+ standard mechanism for capturing the request history information to
+ enable a wide variety of services for networks and end-users. The
+ History-Info header provides a building block for development of new
+ services.
+
+
+
+Barnes Standards Track [Page 2]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ Section 1.3 provides additional background motivation for the Request
+ History capability. Section 2 identifies the requirements for a
+ solution, with Section 3 providing an overall description of the
+ solution.
+
+ Section 4 provides the details of the additions to the SIP protocol.
+ Example uses of the new header are included in Section 4.5, with
+ additional scenarios included in the Appendix.
+
+ Section 5 summarizes the application considerations identified in the
+ previous sections. Section 6 summarizes the security solution.
+
+1.2. Conventions Used in This Document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [RFC2119].
+
+1.3. Background: Why define a Generic "Request History" capability?
+
+ SIP implicitly provides redirect/retarget capabilities that enable
+ calls to be routed to specific applications as defined in [RFC3261].
+ The term 'retarget' will be used henceforth in this document to refer
+ to the process of a Proxy Server/User Agent Client (UAC) changing a
+ Uniform Resource Identifier (URI) in a request and thus changing the
+ target of the request. This term is chosen to avoid associating this
+ request history only with the specific SIP Redirect Server capability
+ that provides for a response to be sent back to a UAC requesting that
+ the UAC should retarget the original request to an alternate URI.
+ The rules for determining request targets as described in Section
+ 16.5 of [RFC3261] are consistent with the use of the retarget term in
+ this document.
+
+ The motivation for the request history is that in the process of
+ retargeting, old routing information can be forever lost. This lost
+ information may be important history that allows elements to which
+ the call is retargeted to process the call in a locally defined,
+ application-specific manner. The proposal in this document is to
+ provide a mechanism for transporting the request history. It is not
+ proposing any application-specific behavior for a Proxy or UA upon
+ receipt of the information. Indeed, such behavior should be a local
+ decision for the recipient application.
+
+ Current network applications provide the ability for elements
+ involved with the call to exchange additional information relating to
+ how and why the call was routed to a particular destination. The
+ following are examples of such applications:
+
+
+
+
+Barnes Standards Track [Page 3]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ 1. Web "referral" applications, whereby an application residing
+ within a web server determines that a visitor to a website has
+ arrived at the site via an "associate" site that will receive some
+ "referral" commission for generating this traffic
+
+ 2. Email forwarding whereby the forwarded-to user obtains a "history"
+ of who sent the email to whom and at what time
+
+ 3. Traditional telephony services such as voicemail, call-center
+ "automatic call distribution", and "follow-me" style services
+
+ Several of the aforementioned applications currently define
+ application-specific mechanisms through which it is possible to
+ obtain the necessary history information.
+
+ In addition, request history information could be used to enhance
+ basic SIP functionality by providing the following:
+
+ o Some diagnostic information for debugging SIP requests. (Note that
+ the diagnostic utility of this mechanism is limited by the fact
+ that its use by entities that retarget is optional.)
+
+ o A stronger security solution for SIP. A side effect is that each
+ proxy that captures the "request history" information in a secure
+ manner provides an additional means (without requiring signed keys)
+ for the original requestor to be assured that the request was
+ properly retargeted.
+
+2. "Request History" Requirements
+
+ The following list constitutes a set of requirements for a "Request
+ History" capability.
+
+ 1) CAPABILITY-req: The "Request History" capability provides a
+ capability to inform proxies and UAs involved in processing a
+ request about the history/progress of that request. Although this
+ is inherently provided when the retarget is in response to a SIP
+ redirect, it is deemed useful for non-redirect retargeting
+ scenarios, as well.
+
+ 2) OPTIONALITY-req: The "Request History" information is optional.
+
+ 2.1) In many cases, it is anticipated that whether the history is
+ added to the Request would be a local policy decision
+ enforced by the specific application; thus, no specific
+ protocol element is needed.
+
+
+
+
+
+Barnes Standards Track [Page 4]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ 2.2) Due to the capability being "optional" from the SIP protocol
+ perspective, the impact to an application of not having the
+ "Request History" must be described. Applicability
+ guidelines to be addressed by applications using this
+ capability must be provided as part of the solution to these
+ requirements.
+
+ 3) GENERATION-req: "Request History" information is generated when
+ the request is retargeted.
+
+ 3.1) In some scenarios, it might be possible for more than one
+ instance of retargeting to occur within the same Proxy. A
+ proxy should also generate Request History information for
+ the 'internal retargeting'.
+
+ 3.2) An entity (UA or proxy) retargeting in response to a redirect
+ or REFER should include any Request History information from
+ the redirect/REFER in the new request.
+
+ 4) ISSUER-req: "Request History" information can be generated by a UA
+ or proxy. It can be passed in both requests and responses.
+
+ 5) CONTENT-req: The "Request History" information for each
+ occurrence of retargeting shall include the following:
+
+ 5.1) The new URI or address to which the request is in the process
+ of being retargeted,
+
+ 5.2) The URI or address from which the request was retargeted,
+
+ 5.3) The reason for the Request-URI or address modification,
+
+ 5.4) Chronological ordering of the Request History information.
+
+ 6) REQUEST-VALIDITY-req: Request History is applicable to requests
+ not sent within an established dialog (e.g., INVITE, REGISTER,
+ MESSAGE, and OPTIONS).
+
+ 7) BACKWARDS-req: Request History information may be passed from the
+ generating entity backwards towards the UAC. This is needed to
+ enable services that inform the calling party about the dialog
+ establishment attempts.
+
+ 8) FORWARDS-req: Request History information may also be included by
+ the generating entity in the request, if it is forwarded onwards.
+
+
+
+
+
+
+Barnes Standards Track [Page 5]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+2.1. Security Requirements
+
+ The Request History information is being inserted by a network
+ element retargeting a Request, resulting in a slightly different
+ problem than the basic SIP header problem, thus requiring specific
+ consideration. It is recognized that these security requirements can
+ be generalized to a basic requirement of being able to secure
+ information that is inserted by proxies.
+
+ The potential security problems include the following:
+
+ 1) A rogue application could insert a bogus Request History entry
+ either by adding an additional entry as a result of retargeting or
+ entering invalid information.
+
+ 2) A rogue application could re-arrange the Request History
+ information to change the nature of the end application or to
+ mislead the receiver of the information.
+
+ 3) A rogue application could delete some or all of the Request
+ History information.
+
+ Thus, a security solution for "Request History" must meet the
+ following requirements:
+
+ 1) SEC-req-1: The entity receiving the Request History must be able
+ to determine whether any of the previously added Request History
+ content has been altered.
+
+ 2) SEC-req-2: The ordering of the Request History information must be
+ preserved at each instance of retargeting.
+
+ 3) SEC-req-3: The entity receiving the information conveyed by the
+ Request History must be able to authenticate the entity providing
+ the request.
+
+ 4) SEC-req-4: To ensure the confidentiality of the Request History
+ information, only entities that process the request should have
+ visibility to the information.
+
+ It should be noted that these security requirements apply to any
+ entity making use of the Request History information, either by
+ retargeting and capturing the information, or as an application
+ making use of the information received in either a Request or
+ Response.
+
+
+
+
+
+
+Barnes Standards Track [Page 6]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+2.2. Privacy Requirements
+
+ Since the Request-URI that is captured could inadvertently reveal
+ information about the originator, there are general privacy
+ requirements that MUST be met:
+
+ 1) PRIV-req-1: The entity retargeting the Request must ensure that it
+ maintains the network-provided privacy (as described in [RFC3323])
+ associated with the Request as it is retargeted.
+
+ 2) PRIV-req-2: The entity receiving the Request History must maintain
+ the privacy associated with the information.
+
+ In addition, local policy at a proxy may identify privacy
+ requirements associated with the Request-URI being captured in the
+ Request History information.
+
+ 3) PRIV-req-3: Request History information subject to privacy
+ requirements shall not be included in outgoing messages unless it
+ is protected as described in [RFC3323].
+
+3. Request History Information Description
+
+ The fundamental functionality provided by the request history
+ information is the ability to inform proxies and UAs involved in
+ processing a request about the history or progress of that request
+ (CAPABILITY-req). The solution is to capture the Request-URIs as a
+ request is forwarded in a new header for SIP messages: History-Info
+ (CONTENT-req). This allows for the capturing of the history of a
+ request that would be lost with the normal SIP processing involved in
+ the subsequent forwarding of the request. This solution proposes no
+ changes in the fundamental determination of request targets or in the
+ request forwarding as defined in Sections 16.5 and 16.6 of the SIP
+ protocol specification [RFC3261].
+
+ The History-Info header can appear in any request not associated with
+ an established dialog (e.g., INVITE, REGISTER, MESSAGE, REFER and
+ OPTIONS, PUBLISH and SUBSCRIBE, etc.) (REQUEST-VALIDITY-req) and any
+ valid response to these requests (ISSUER-req).
+
+ The History-Info header is added to a Request when a new request is
+ created by a UAC or forwarded by a Proxy, or when the target of a
+ request is changed. The term 'retarget' is introduced to refer to
+ this changing of the target of a request and the subsequent
+ forwarding of that request. It should be noted that retargeting only
+ occurs when the Request-URI indicates a domain for which the
+ processing entity is responsible. In terms of the SIP protocol, the
+ processing associated with retargeting is described in Sections 16.5
+
+
+
+Barnes Standards Track [Page 7]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ and 16.6 of [RFC3261]. As described in Section 16.5 of [RFC3261], it
+ is possible for the target of a request to be changed by the same
+ proxy multiple times (referred to as 'internal retargeting' in
+ Section 2), as the proxy MAY add targets to the target set after
+ beginning Request Forwarding. Section 16.6 of [RFC3261] describes
+ Request Forwarding. It is during this process of Request Forwarding
+ that the History Information is captured as an optional, additional
+ header field. Thus, the addition of the History-Info header does not
+ impact fundamental SIP Request Forwarding. An entity (UA or proxy)
+ changing the target of a request in response to a redirect or REFER
+ SHOULD also propagate any History-Info header from the initial
+ Request in the new request (GENERATION-req, FORWARDS-req).
+
+3.1. Optionality of History-Info
+
+ The History-Info header is optional in that neither UAs nor Proxies
+ are required to support it. A new Supported header, "histinfo", is
+ included in the Request to indicate whether the History-Info header
+ is returned in Responses (BACKWARDS-req). In addition to the
+ "histinfo" Supported header, local policy determines whether or not
+ the header is added to any request, or for a specific Request-URI,
+ being retargeted. It is possible that this could restrict the
+ applicability of services that make use of the Request History
+ Information to be limited to retargeting within domain(s) controlled
+ by the same local policy, or between domain(s) which negotiate
+ policies with other domains to ensure support of the given policy, or
+ services for which complete History Information isn't required to
+ provide the service (OPTIONALITY-req). All applications making use
+ of the History-Info header MUST clearly define the impact of the
+ information not being available and specify the processing of such a
+ request.
+
+3.2. Securing History-Info
+
+ This document defines a new header for SIP. The use of the Transport
+ Layer Security (TLS) protocol [RFC2246] as a mandatory mechanism to
+ ensure the overall confidentiality of the History-Info headers (SEC-
+ req-4) is strongly RECOMMENDED. This results in History-Info having
+ at least the same level of security as other headers in SIP that are
+ inserted by intermediaries. If TLS is not available for the
+ connection over which the request is being forwarded, then 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 request can be retargeted by the client.
+
+ With the level of security provided by TLS (SEC-req-3), the
+ information in the History-Info header can thus be evaluated to
+ determine if information has been removed by evaluating the indices
+
+
+
+Barnes Standards Track [Page 8]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ for gaps (SEC-req-1, SEC-req-2). It would be up to the application
+ to define whether it can make use of the information in the case of
+ missing entries.
+
+ Note that while using the SIPS scheme protects History-Info from
+ tampering by arbitrary parties outside the SIP message path, all the
+ intermediaries on the path are trusted implicitly. A malicious
+ intermediary could arbitrarily delete, rewrite, or modify History-
+ Info. This specification does not attempt to prevent or detect
+ attacks by malicious intermediaries.
+
+3.3. Ensuring the Privacy of History-Info
+
+ Since the History-Info header can inadvertently reveal information
+ about the requestor as described in [RFC3323], the Privacy header
+ SHOULD be used to determine whether an intermediary can include the
+ History-Info header in a Request that it receives and forwards
+ (PRIV-req-2) or that it retargets (PRIV-req-1). Thus, the History-
+ Info header SHOULD NOT be included in Requests where the requestor
+ has indicated a priv-value of Session- or Header-level privacy.
+
+ In addition, the History-Info header can reveal general routing
+ information, which may be viewed by a specific intermediary or
+ network, to be subject to privacy restrictions. Thus, local policy
+ MAY also be used to determine whether to include the History-Info
+ header at all, whether to capture a specific Request-URI in the
+ header, or whether it be included only in the Request as it is
+ retargeted within a specific domain (PRIV-req-3). In the latter
+ case, this is accomplished by adding a new priv-value, history, to
+ the Privacy header [RFC3323] indicating whether any or a specific
+ History-Info header(s) SHOULD be forwarded.
+
+ It is recognized that satisfying the privacy requirements can impact
+ the functionality of this solution by overriding the request to
+ generate the information. As with the optionality and security
+ requirements, applications making use of History-Info SHOULD address
+ any impact this may have or MUST explain why it does not impact the
+ application.
+
+4. Request History Information Protocol Details
+
+ This section contains the details and usage of the proposed new SIP
+ protocol elements. It also discusses the security aspects of the
+ solution.
+
+
+
+
+
+
+
+Barnes Standards Track [Page 9]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+4.1. Protocol Structure of History-Info
+
+ History-Info is a header field as defined by [RFC3261]. It is an
+ optional header field and MAY appear in any request or response not
+ associated with a dialog or which starts a dialog. For example,
+ History-Info MAY appear in INVITE, REGISTER, MESSAGE, REFER, OPTIONS,
+ SUBSCRIBE, and PUBLISH and any valid responses, plus NOTIFY requests
+ that initiate a dialog.
+
+ This document adds the following entry to Table 2 of [RFC3261]. The
+ additions to this table are also provided for extension methods at
+ the time of publication of this document. This is provided as a
+ courtesy to the reader and is not normative in any way.
+
+ Header field where proxy ACK BYE CAN INV OPT REG MSG
+ ------------ ----- ----- --- --- --- --- --- --- ---
+ History-Info amdr - - - o o o o
+
+ SUB NOT REF INF UPD PRA PUB
+ --- --- --- --- --- --- ---
+ History-Info amdr o o o - - - o
+
+ The History-Info header carries the following information, with the
+ mandatory parameters required when the header is included in a
+ request or response:
+
+ o Targeted-to-URI (hi-targeted-to-uri): A mandatory parameter for
+ capturing the Request-URI for the specific Request as it is
+ forwarded.
+
+ o Index (hi-index): A mandatory parameter for History-Info
+ reflecting the chronological order of the information, indexed to
+ also reflect the forking and nesting of requests. The format for
+ this parameter is a string of digits, separated by dots to
+ indicate the number of forward hops and retargets. This results
+ in a tree representation of the history of the request, with the
+ lowest-level index reflecting a branch of the tree. By adding
+ the new entries in order (i.e., following existing entries per
+ the details in Section 4.3.3.1), including the index and securing
+ the header, the ordering of the History-Info headers in the
+ request is assured (SEC-req-2). In addition, applications may
+ extract a variety of metrics (total number of retargets, total
+ number of retargets from a specific branch, etc.) based upon the
+ index values.
+
+ o Reason: An optional parameter for History-Info, reflected in the
+ History-Info header by including the Reason Header [RFC3326]
+ escaped in the hi-targeted-to-uri. A reason is not included for
+
+
+
+Barnes Standards Track [Page 10]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ a hi-targeted-to-uri when it is first added in a History-Info
+ header, but rather is added when the retargeting actually occurs.
+ Note that this does appear to complicate the security problem;
+ however, retargeting only occurs when the hi-targeted-to-uri
+ indicates a domain for which the processing entity is
+ responsible. Thus, it would be the same processing entity that
+ initially added the hi-targeted-to-URI to the header that would
+ be updating it with the Reason.
+
+ o Privacy: An optional parameter for History-Info, reflected in the
+ History-Info header field values by including the Privacy Header
+ [RFC3323] with a priv-value of "history" escaped in the hi-
+ targeted-to-uri or by adding the Privacy header with a priv-value
+ of "history" to the Request. The use of the Privacy Header with
+ a priv-value of "history" indicates whether a specific or all
+ History-Info headers should not be forwarded.
+
+ o Extension (hi-extension): An optional parameter to allow for
+ future optional extensions. As per [RFC3261], any implementation
+ not understanding an extension should ignore it.
+
+ The following summarizes the syntax of the History-Info header, based
+ upon the standard SIP syntax [RFC3261]:
+
+ History-Info = "History-Info" HCOLON
+ hi-entry *(COMMA hi-entry)
+
+ hi-entry = hi-targeted-to-uri *( SEMI hi-param )
+
+ hi-targeted-to-uri= name-addr
+
+ hi-param = hi-index / hi-extension
+
+ hi-index = "index" EQUAL 1*DIGIT *(DOT 1*DIGIT)
+
+ hi-extension = generic-param
+
+4.2. Protocol Examples
+
+ The following provides some examples of the History-Info header.
+ Note that the backslash and CRLF between the fields in the examples
+ below are for readability purposes only.
+
+ History-Info:<sip:UserA@ims.example.com?Reason=SIP%3B\
+ cause%3D302>;index=1;foo=bar
+
+ History-Info: <sip:UserA@ims.example.com?Reason=SIP%3B \
+ cause%3D302>; index=1.1,
+
+
+
+Barnes Standards Track [Page 11]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ <sip:UserB@example.com?Privacy=history&Reason=SIP%3B\
+ cause%3D486>;index=1.2,
+ <sip:45432@vm.example.com>;index=1.3
+
+4.3. Protocol Usage
+
+ This section describes the processing specific to UAs and Proxies for
+ the History-Info header, the "histinfo" option tag, and the priv-
+ value of "history". As discussed in Section 1.3, the fundamental
+ objective is to capture the target Request-URIs as a request is
+ forwarded. This allows for the capturing of the history of a request
+ that would be lost due to subsequent (re)targeting and forwarding.
+ To accomplish this for the entire history of a request, either the
+ UAC must capture the Request-URI in a History-Info header in the
+ initial request or a proxy must add a History-Info header with both a
+ hi-entry for the Request-URI in the initial request and a hi-entry
+ for the target Request-URI as the request is forwarded. The basic
+ processing is for each entity forwarding a request to add a hi-entry
+ for the target Request-URI, updating the index and adding the Reason
+ as appropriate for any retargeted Request-URI.
+
+4.3.1. User Agent Client (UAC) Behavior
+
+ The UAC SHOULD include the "histinfo" option tag in the Supported
+ header in any request not associated with an established dialog for
+ which the UAC would like the History-Info header in the response. In
+ addition, the UAC MAY improve the diagnostic utility of its request
+ by adding a History-Info header, using the Request-URI of the request
+ as the hi-target-to-uri and initializing the index to the RECOMMENDED
+ value of 1 in the hi-entry. As a result, intermediaries and the UAS
+ will know at least the original Request-URI, and if the Request-URI
+ was modified by a previous hop.
+
+ In the case where the request is routed to a redirect server and the
+ UAC receives a 3xx response with a Contact header, the UAC MAY
+ maintain the previous hi-entry(s) in the request. In this case, the
+ reason header SHOULD be associated with the hi-targeted-to-uri in the
+ previous (last) hi-entry, as described in Section 4.3.3.1.2. A new
+ hi-entry MAY then be added for the URI from the Contact header (which
+ becomes the new Request-URI). In this case, the index is created by
+ reading and incrementing the value of the index from the previous
+ hi-entry, thus following the same rules as those prescribed for a
+ proxy in retargeting, described in Section 4.3.3.1.3. An example of
+ this scenario can be found in Appendix D.
+
+ A UAC that does not want the History-Info header added due to privacy
+ considerations SHOULD include a Privacy header with a priv-value(s)
+ of "session", "header", or "history" in the request.
+
+
+
+Barnes Standards Track [Page 12]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ With the exception of the processing of a 3xx response described
+ above, the processing of the History-Info header received in the
+ Response is application specific and outside the scope of this
+ document. However, the validity of the information SHOULD be ensured
+ prior to any application usage. For example, the entries MAY be
+ evaluated to determine gaps in indices, which could indicate that an
+ entry has been maliciously removed or removed for privacy reasons.
+ Either way, an application MAY want to be aware of potentially
+ missing information.
+
+4.3.2. User Agent Server (UAS) Behavior
+
+ The processing of the History-Info header by a UAS in a Request
+ depends upon local policy and specific applications at the UAS that
+ might make use of the information. Prior to any application usage of
+ the information, the validity SHOULD be ascertained. For example,
+ the entries MAY be evaluated to determine gaps in indices, which
+ could indicate that an entry has been maliciously removed or removed
+ for privacy reasons. Either way, an application MAY want to be aware
+ of potentially missing information.
+
+ If the "histinfo" option tag is received in a request, the UAS SHOULD
+ include any History-Info received in the request in the subsequent
+ response.
+
+4.3.3. Proxy Behavior
+
+ The inclusion of the History-Info header in a Request does not alter
+ the fundamental processing of proxies for determining request targets
+ as defined in Section 16.5 of [RFC3261]. Whether a proxy adds the
+ History-Info header or a new hi-entry as it forwards a Request
+ depends upon the following considerations:
+
+ 1. Whether the Request contains the "histinfo" option tag in the
+ Supported header.
+ 2. Whether the proxy supports the History-Info header.
+ 3. Whether the Request contains a Privacy header with a priv-value
+ of "session", "header", or "history".
+ 4. Whether any History-Info header added for a proxy/domain should
+ go outside that domain. An example being the use of the
+ History-Info header within the specific domain in which it is
+ retargeted, however, policies (for privacy, user and network
+ security, etc.) would prohibit the exposure of that information
+ outside that domain. To accommodate such a scenario, a proxy
+ MAY insert the Privacy header with a priv-value of "history"
+ when the request is being forwarded within the same domain. An
+ example of such an application is provided in Appendix C.
+
+
+
+
+Barnes Standards Track [Page 13]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ 5. Whether a hi-entry is added for a specific Request-URI due to
+ local privacy policy considerations. A proxy MAY add the
+ Privacy header with a priv-value of "history" associated with
+ the specific hi-targeted-to-uri.
+
+ An example policy would be a proxy that only adds the History-Info
+ header if the "histinfo" option tag is in the Supported header.
+ Other proxies may have a policy that they always add the header, but
+ never forward it outside a particular domain, accomplishing this by
+ adding a Privacy header with a priv-value of "history" to each hi-
+ entry to allow the information to be collected for internal
+ retargeting only.
+
+ Each application making use of the History-Info header SHOULD address
+ the impacts of the local policies on the specific application (e.g.,
+ what specification of local policy is optimally required for a
+ specific application and any potential limitations imposed by local
+ policy decisions).
+
+ Consistent with basic SIP processing of optional headers, proxies
+ SHOULD maintain the History-Info header(s), received in messages
+ being forwarded, independent of whether local policy supports
+ History-Info.
+
+ The specific processing by proxies for adding the History-Info
+ headers in Requests and Responses, to accommodate the considerations
+ outlined above, is described in detail in the following sections.
+
+4.3.3.1. Adding the History-Info Header to Requests
+
+ Upon evaluation of the considerations under which the History-Info
+ header is to be included in requests (e.g., no Privacy header
+ overriding inclusion, local policy supports, etc.), detailed in
+ Section 4.3.3, a proxy SHOULD add a hi-entry as it forwards a
+ Request. Section 16.6 of [RFC3261] defines the steps to be followed
+ as the proxy forwards a Request. Step 5 prescribes the addition of
+ optional headers. Although this would seem the appropriate step for
+ adding the History-Info header, the interaction with Step 6,
+ "Postprocess routing information", and the impact of a strict route
+ in the Route header could result in the Request-URI being changed;
+ thus, adding the History-Info header between Steps 8 (adding Via
+ header) and 9 (adding Content-Length) is RECOMMENDED. Note that in
+ the case of loose routing, the Request-URI does not change during the
+ forwarding of a Request; thus, the capturing of History-Info for such
+ a request would result in duplicate Request-URIs with different
+ indices. The hi-entry MUST be added following any hi-entry received
+ in the request being forwarded. Additionally, if a request is
+ received that doesn't include a History-Info header, the proxy MAY
+
+
+
+Barnes Standards Track [Page 14]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ add a History-Info header with a hi-entry preceding the one being
+ added for the current request being forwarded. The index for this
+ hi-entry is RECOMMENDED to start at 1. The following subsections
+ define the details of creating the information associated with each
+ hi-entry.
+
+4.3.3.1.1. Privacy in the History-Info Header
+
+ If there is a Privacy header in the request with a priv-value of
+ "session", "header", or "history", a hi-entry MAY be added, if the
+ request is being forwarded to a Request-URI associated with a domain
+ for which the processing entity is responsible (and provided local
+ policy supports the History-Info header, etc.). If a request is
+ being forwarded to a Request-URI associated with a domain for which
+ the proxy is not responsible and there is a Privacy header in the
+ request with a priv-value of "session", "header", or "history", the
+ proxy SHOULD remove any hi-entry(s) prior to forwarding, depending
+ upon local policy and whether the proxy might know a priori that it
+ can rely on a downstream privacy service to apply the requested
+ privacy.
+
+ For the scenario where there is no Privacy header in the request and
+ the request is being forwarded to a Request-URI associated with the
+ domain(s) for which this entity is responsible, there are several
+ additional considerations:
+
+ o If there is no local policy associated with privacy, then a hi-
+ entry MAY be added to the Request.
+
+ o If the proxy's local policies, per consideration 4 in section
+ 4.3.3, indicate that the History-Info header should not be
+ forwarded beyond the domain for which this intermediary is
+ responsible, then a Privacy header with a priv-value of "history"
+ SHOULD be associated with each hi-entry added by that proxy in
+ this scenario.
+
+ o If the proxy's policy, per consideration 5 in Section 4.3.3,
+ indicates that History-Info for a specific Request-URI should not
+ be forwarded beyond the domain for which this intermediary is
+ responsible, then a Privacy header with a priv-value of "history"
+ SHOULD be associated with the specific hi-entry, for that
+ specific hi-targeted-to-uri, added by that proxy in this
+ scenario.
+
+ If a request is being forwarded to a Request-URI associated with a
+ domain for which the proxy is not responsible and local policy
+ requires privacy associated with any, or with specific, hi-entries it
+
+
+
+
+Barnes Standards Track [Page 15]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ has added, any hi-entry with a priv-value of "history" SHOULD be
+ removed prior to forwarding.
+
+4.3.3.1.2. Reason in the History-Info Header
+
+ For retargets that are the result of an explicit SIP response, a
+ Reason MUST be associated with the hi-targeted-to-uri. If the SIP
+ response does not include a Reason header, the SIP Response Code that
+ triggered the retargeting MUST be included as the Reason associated
+ with the hi-targeted-to-uri that has been retargeted. If the
+ response contains a non-SIP Reason header (e.g., Q.850), it MUST be
+ captured as an additional Reason associated with the hi-targeted-to-
+ uri that has been retargeted, along with the SIP Response Code. If
+ the Reason header is a SIP reason, then it MUST be used as the Reason
+ associated with the hi-targeted-to-uri rather than the SIP response
+ code.
+
+ For retargets as a result of timeouts or internal events, a Reason
+ MAY be associated with the hi-targeted-to-uri that has been
+ retargeted.
+
+ The addition of the Reason should occur prior to the forwarding of
+ the request (which may add a new hi-entry with a new hi-targeted-to-
+ uri) as it is associated with the hi-targeted-to-uri that has been
+ retargeted, since it reflects the reason why the Request to that
+ specific URI was not successful.
+
+4.3.3.1.3. Indexing in the History-Info Header
+
+ In order to maintain ordering and accurately reflect the nesting and
+ retargeting of the request, an index MUST be included along with the
+ Targeted-to-URI being captured. Per the syntax in Section 4.1, the
+ index consists of a dot-delimited series of digits (e.g., 1.1.2).
+ Each dot reflects a hop or level of nesting; thus, the number of hops
+ is determined by the total number of dots. Within each level, the
+ integer reflects the number of peer entities to which the request has
+ been routed. Thus, the indexing results in a logical tree
+ representation for the history of the Request. It is recommended
+ that for each level of indexing, the index start at 1. It is
+ recommended that an increment of 1 is used for advancing to a new
+ branch.
+
+ The basic rules for adding the index are summarized as follows:
+
+ 1. Basic Forwarding: In the case of a Request that is being
+ forwarded, the index is determined by adding another level of
+ indexing since the depth/length of the branch is increasing. To
+ accomplish this, the proxy reads the value from the History-Info
+
+
+
+Barnes Standards Track [Page 16]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ header in the received request, if available, and adds another
+ level of indexing by appending the dot delimiter followed by an
+ initial index for the new level RECOMMENDED to be 1. For
+ example, if the index in the last History-Info header field in
+ the received request is 1.1, this proxy would initialize its
+ index to 1.1.1 and forward the request.
+
+ 2. Retargeting within a Proxy - 1st instance: For the first
+ instance of retargeting within a Proxy, the calculation of the
+ index follows that prescribed for basic forwarding.
+
+ 3. Retargeting within a Proxy - subsequent instance: For each
+ subsequent retargeting of a request by the same proxy, another
+ branch is added. With the index for each new branch calculated
+ by incrementing the last/lowest digit at the current level, the
+ index in the next request forwarded by this same proxy,
+ following the example above, would be 1.1.2.
+
+ 4. Retargeting based upon a Response: In the case of retargeting
+ due to a specific response (e.g., 302), the index would be
+ calculated per rule 3. That is, the lowest/last digit of the
+ index is incremented (i.e., a new branch is created), with the
+ increment RECOMMENDED to be 1. For example, if the index in the
+ History-Info header of the received request was 1.2, then the
+ index in the History-Info header field for the new hi-targeted-
+ to-URI would be 1.3.
+
+ 5. Retargeting the request in parallel (forking): If the request
+ forwarding is done in parallel, the index MUST be captured for
+ each forked request per the rules above, with each new Request
+ having a unique index. The only difference in the messaging for
+ this scenario and the messaging produced per basic proxy
+ retargeting in rules 2 and 3 is these forwarded requests do not
+ have History-Info entries associated with their peers. The
+ proxy builds the subsequent response (or request) using the
+ aggregated information associated with each of those requests
+ and including the header entries in the order indicated by the
+ indexing. Responses are processed as described in Section 16.7
+ of [RFC3261] with the aggregated History-Info entries processed
+ similar to Step 7 "Aggregate Authentication Header Field
+ Values". Section 4.5 provides an example of a parallel request
+ scenario, highlighting this indexing mechanism.
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 17]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+4.3.3.2. Processing History-Info in Responses
+
+ A proxy that receives a Request with the "histinfo" option tag in the
+ Supported header, and depending upon a local policy supporting the
+ capture of History-Info, SHOULD return captured History-Info in
+ subsequent, provisional, and final responses to the Request, subject
+ to the following considerations for privacy:
+
+ o If the response is being forwarded to a Request-URI associated
+ with a domain for which the proxy is not responsible and there
+ was a Privacy header, in the request received by the proxy, with
+ a priv-value of "session", "header", or "history", the proxy MUST
+ remove the History-Info header (i.e., all hi-entries) prior to
+ forwarding.
+
+ o If a request is being forwarded to a Request-URI associated with
+ a domain for which the proxy is not responsible and local policy
+ requires privacy associated with any or all hi-entry(s) it has
+ added, any hi-entry with a priv-value of "history" MUST be
+ removed prior to forwarding.
+
+ o If a proxy receives a response from another intermediary
+ associated with a domain for which it is responsible, including
+ hi-entry(s) with privacy headers, and that response is to be
+ forwarded to a domain for which it is not responsible, then those
+ hi-entry(s) MUST be removed.
+
+ The processing of History-Info in responses follows the methodology
+ described in Section 16.7 of [RFC3261], with the processing of
+ History-Info headers adding an additional step, just before Step 9,
+ "Forwarding the Response".
+
+4.3.4. Redirect Server Behavior
+
+ A redirect server SHOULD NOT add any new History-Info, as that would
+ be done by the entity receiving the 3xx response. However, a
+ redirect server MAY include History-Info in responses by adding any
+ History-Info headers received in a request to a subsequent response.
+
+4.4. Security for History-Info
+
+ As discussed in Section 3, the security requirements are met by
+ recommending the use of TLS (a basic SIP requirement per [RFC3261])
+ for hop-by-hop security. If TLS is not available on the connection
+ over which a request containing a History-Info header is being
+ forwarded, then either of the following two options MUST be
+ implemented:
+
+
+
+
+Barnes Standards Track [Page 18]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ o The History-Info header MUST be removed prior to forwarding the
+ request, or
+ o The request MUST be redirected, including the History-Info header
+ in the response, to allow the UAC to securely issue the request,
+ including the History-Info header.
+
+4.5. Example Applications Using History-Info
+
+ This scenario highlights an example where the History-Info in the
+ response is primarily of use in not retrying routes that have already
+ been tried by another proxy. Note that this is just an example and
+ that there may be valid reasons why a Proxy would want to retry the
+ routes, and thus, this would likely be a local proxy or even user-
+ specific policy.
+
+ UA1 sends a call to Bob to proxy 1. Proxy 1 forwards the request to
+ Proxy 2. Proxy 2 sends the requests in parallel and tries several
+ places (UA2, UA3, and UA4) before sending a response to Proxy 1 that
+ all the places are busy. Proxy 1, without the History-Info, would
+ try some of the same places (e.g., UA3) based upon registered
+ contacts for Bob, before completing at UA5. However, with the
+ History-Info, Proxy 1 determines that UA3 has already received the
+ invite; thus, the INVITE goes directly to UA5.
+
+ Section 4.5.1 provides this same scenario using one of the privacy
+ mechanisms, with Proxy2 (P2) adding the Privacy header indicating
+ that the History-Info header is not to be propagated outside P2's
+ domain. This scenario highlights the potential functionality lost
+ with the use of "history" privacy in the Privacy header for the
+ entire request and the need for careful consideration on the use of
+ privacy for History-Info.
+
+ Section 4.5.2 also provides the same scenario using one of the
+ privacy mechanisms, however, due to local policy at Proxy2, only one
+ of the Request-URIs (UA4) in the History-Info contains a priv-value
+ of "history", thus allowing some optimized functionality in the
+ routing of the request, but still maintaining privacy for specific
+ URIs.
+
+ The formatting in these scenarios is for visual purposes; thus,
+ backslash and CRLF are used between the fields for readability and
+ the headers in the URI are not shown properly formatted for escaping.
+ Refer to Section 4.2 examples for the proper formatting. Additional
+ detailed scenarios are available in the appendix.
+
+
+
+
+
+
+
+Barnes Standards Track [Page 19]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ UA1 Proxy1 Proxy2 UA2 UA3 UA4 UA5
+
+ | | | | | | |
+ |--INVITE -->| | | | | |
+ | |-INVITE->| | | | |
+ Supported: histinfo
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1
+ | | | | | | |
+ | | |-INVITE>| | | |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User2@UA2.example.com>;index=1.1.1
+ | | | | | | |
+ | | |-----INVITE ---->| | |
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User3@UA3.example.com>;index=1.1.2
+ | | | | | | |
+ | | |-------INVITE------------>| |
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User4@UA4.example.com>;index=1.1.3
+
+ /* All Responses from the INVITEs indicate non-success/non-
+ availability*/
+ | | | | | | |
+ | |<-480 ---| | | | |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User2@UA2.example.com?Reason=SIP;\
+ cause=408;text="RequestTimeout">;index=1.1.1,
+ <sip:User3@UA3.example.com?Reason=SIP; \
+ cause=487;text="Request Terminated">; index=1.1.2,
+ <sip:User4@UA4.example.com?Reason=SIP;\
+ cause=603;text="Decline">; index=1.1.3
+ | | | | | | |
+ /* Upon receipt of the response, P1 determines another route for the
+ INVITE, but finds that it matches a route already attempted
+ (e.g., UA3), thus the INVITE is only forwarded to UA5, where
+ the session is successfully established */
+ | | | | | | |
+ | |----------------INVITE --------------------->|
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User2@UA2.example.com?Reason=SIP;cause=408;\
+ text="RequestTimeout">;index=1.1.1,
+ <sip:User3@UA3.example.com?Reason=SIP;cause=487;\
+
+
+
+Barnes Standards Track [Page 20]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ text="Request Terminated">; index=1.1.2,
+ <sip:User4@UA4.example.com?Reason=SIP;cause=603;\
+ text="Decline">; index=1.1.3
+ <sip:User5@UA5.example.com>;index=1.2
+ | | | | | | |
+ | |<-----200 OK---------------------------------|
+ |<--200 OK---| | | | | |
+ | | | | | | |
+ |--ACK --------------------------------------------------->|
+
+4.5.1. Example with Privacy Header for Entire Request at Proxy2
+
+ UA1 Proxy1 Proxy2 UA2 UA3 UA4 UA5
+
+ | | | | | | |
+ |--INVITE -->| | | | | |
+ | |-INVITE->| | | | |
+ Supported: histinfo
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1
+ | | | | | | |
+ | | |-INVITE>| | | |
+ Privacy: history
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User2@UA2.example.com>;index=1.1.1
+ | | | | | | |
+ | | |-----INVITE ---->| | |
+ Privacy: history
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User3@UA3.example.com>;index=1.1.2
+ | | | | | | |
+ | | |-------INVITE------------>| |
+ Privacy: history
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User4@UA4.example.com>;index=1.1.3
+
+ /* All Responses from the INVITEs indicate non-success/non-
+ availability and only the initial, received History-Info entries
+ are NOT returned to P1 due to the Privacy header value.*/
+ | | | | | | |
+ | |<-480 ---| | | | |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1
+ | | | | | | |
+ /* Upon receipt of the response, P1 determines another route for the
+
+
+
+Barnes Standards Track [Page 21]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ INVITE, including UA3, which was attempted by P2, but due to
+ Privacy P1 is not aware of this, so UA3 is re-attempted prior to
+ forwarding the INVITE to UA5, where the session is successfully
+ established */
+ | | | | | | |
+ | |--------------INVITE ----->| | |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User3@UA3.example.com>; index=1.2
+ | | | | | | |
+ | |<-- 486 -------------------| | |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User3@UA3.example.com>; index=1.2
+ | | | | | | |
+ | |----------------INVITE --------------------->|
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User3@UA3.example.com?Reason=SIP;cause=486;\
+ text="Busy Here">;index=1.2,
+ <sip:User5@UA5.example.com>;index=1.3
+ | | | | | | |
+ | |<-----200 OK---------------------------------|
+ |<--200 OK---| | | | | |
+ | | | | | | |
+ |--ACK --------------------------------------------------->|
+
+4.5.2. Example with Privacy Header for Specific URI (UA4) at Proxy2
+
+ UA1 Proxy1 Proxy2 UA2 UA3 UA4 UA5
+
+ | | | | | | |
+ |--INVITE -->| | | | | |
+ | |-INVITE->| | | | |
+ Supported: histinfo
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1
+ | | | | | | |
+ | | |-INVITE>| | | |
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User2@UA2.example.com>;index=1.1.1
+ | | | | | | |
+ | | |-----INVITE ---->| | |
+ History-Info:<sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User3@UA3.example.com>;index=1.1.2
+ | | | | | | |
+
+
+
+Barnes Standards Track [Page 22]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ | | |-------INVITE------------>| |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>;index=1.1,
+ <sip:User4@UA4.example.com?\
+ Privacy=history>; index=1.1.3
+
+ /* All Responses from the INVITEs indicate non-success/non-
+ availability. The History-Info associated with UA4 is not returned
+ in the response due to the privacy header associated with that URI */
+ | | | | | | |
+ | |<-480 ---| | | | |
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User2@UA2.example.com?Reason=SIP;\
+ cause=408;text="RequestTimeout">;index=1.1.1,
+ <sip:User3@UA3.example.com?Reason=SIP; \
+ cause=487;text="Request Terminated">; index=1.1.2,
+ | | | | | | |
+ /* Upon receipt of the response, P1 determines another route for the
+ INVITE, but finds that it matches a route already attempted
+ (e.g., UA3), thus the INVITE is only forwarded to UA5, where
+ the session is successfully established */
+ | | | | | | |
+ | |----------------INVITE --------------------->|
+ History-Info: <sip:Bob@P1.example.com>;index=1,
+ <sip:Bob@P2.example.com>; index=1.1,
+ <sip:User2@UA2.example.com?Reason=SIP;cause=408;\
+ text="RequestTimeout">;index=1.1.1,
+ <sip:User3@UA3.example.com?Reason=SIP;cause=487;\
+ text="Request Terminated">; index=1.1.2,
+ <sip:User5@UA5.example.com>;index=1.2
+ | | | | | | |
+ | |<-----200 OK---------------------------------|
+ |<--200 OK---| | | | | |
+ | | | | | | |
+ |--ACK --------------------------------------------------->|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 23]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+5. Application Considerations
+
+ As seen by the example scenarios in the appendix, History-Info
+ provides a very flexible building block that can be used by
+ intermediaries and UAs for a variety of services. As such, any
+ services making use of History-Info must be designed with the
+ following considerations:
+
+ 1) History-Info is optional; thus, a service MUST define default
+ behavior for requests and responses not containing History-Info
+ headers.
+ 2) History-Info may be impacted by privacy considerations.
+ Applications requiring History-Info need to be aware that if
+ Header-, Session-, or History-level privacy is requested by a UA
+ (or imposed by an intermediary) that History-Info may not be
+ available in a request or response. This would be addressed by an
+ application in the same manner as the previous consideration by
+ ensuring there is reasonable default behavior should the
+ information not be available.
+ 3) History-Info may be impacted by local policy. Each application
+ making use of the History-Info header SHOULD address the impacts
+ of the local policies on the specific application (e.g., what
+ specification of local policy is optimally required for a specific
+ application and any potential limitations imposed by local policy
+ decisions). Note that this is related to the optionality and
+ privacy considerations identified in 1 and 2 above, but goes
+ beyond that. For example, due to the optionality and privacy
+ considerations, an entity may receive only partial History-Info
+ entries; will this suffice? Note that this would be a limitation
+ for debugging purposes, but might be perfectly satisfactory for
+ some models whereby only the information from a specific
+ intermediary is required.
+ 4) The security associated with the History-Info header requires the
+ use of TLS. In the case of TLS not being available for a
+ connection over which a request is being forwarded, the History-
+ Info header may be removed from a request. The impact of lack of
+ having the information depends upon the nature of the specific
+ application (e.g., Is the information something that appears on a
+ display or is it processed by automata which could have negative
+ impacts on the subsequent processing of a request?). It is
+ suggested that the impact of an intermediary not supporting the
+ security recommendations should be evaluated by the application to
+ ensure that the impacts have been sufficiently addressed by the
+ application.
+
+
+
+
+
+
+
+Barnes Standards Track [Page 24]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+6. Security Considerations
+
+ The threat model and related security and privacy requirements for
+ the History-Info header are described in Sections 2.1 and 2.2 of this
+ document. Sections 3.2, 3.3, and 4.4 provide normative
+ recommendations related to security and privacy fulfilling these
+ requirements. The use of TLS is mandated between the entities (i.e.,
+ UAC to Proxy, Proxy to Proxy, and Proxy to UAS) that use the
+ History-Info header. The appropriate handling of a request in the
+ case that TLS is not available for a specific connection is described
+ in Section 5.
+
+ With TLS, History-Info headers are no less, nor no more, secure than
+ other SIP headers, which generally have even more impact on the
+ subsequent processing of SIP sessions than the History-Info header.
+
+7. IANA Considerations
+
+7.1. Registration of New SIP History-Info Header
+
+ This document defines a new SIP header field name: History-Info and a
+ new option tag: histinfo.
+
+ The following changes have been made to
+ http:///www.iana.org/assignments/sip-parameters
+
+ The following row has been added to the header field section:
+
+ Header Name Compact Form Reference
+ ----------- ------------ ---------
+ History-Info none [RFC4244]
+
+ The following has been added to the Options Tags section:
+
+ Name Description Reference
+ ---- ----------- ---------
+ histinfo When used with the Supported header, [RFC4244]
+ this option tag indicates support
+ for the History Information to be
+ captured for requests and returned in
+ subsequent responses. This tag is not
+ used in a Proxy-Require or Require
+ header field since support of
+ History-Info is optional.
+
+
+
+
+
+
+
+Barnes Standards Track [Page 25]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+7.2. Registration of "history" for SIP Privacy Header
+
+ This document defines a new priv-value for the SIP Privacy header:
+ history
+
+ The following changes have been made to
+ http://www.iana.org/assignments/sip-priv-values
+
+ The following has been added to the registration for the SIP Privacy
+ header:
+
+ Name Description Registrant Reference
+ ---- ----------- ---------- ---------
+ history Privacy requested for Mary Barnes [RFC4244]
+ History-Info header(s) mary.barnes@nortel.com
+
+8. Normative References
+
+ [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
+ A., Peterson, J., Sparks, R., Handley, M., and E.
+ Schooler, "SIP: Session Initiation Protocol", RFC 3261,
+ June 2002.
+
+ [RFC3326] Schulzrinne, H., Oran, D., and G. Camarillo, "The Reason
+ Header Field for the Session Initiation Protocol (SIP)",
+ RFC 3326, December 2002.
+
+ [RFC3323] Peterson, J., "A Privacy Mechanism for the Session
+ Initiation Protocol (SIP)", RFC 3323, November 2002.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
+ RFC 2246, January 1999.
+
+9. Informative References
+
+ [RFC3665] Johnston, A., Donovan, S., Sparks, R., Cunningham, C., and
+ K. Summers, "Session Initiation Protocol (SIP) Basic Call
+ Flow Examples", BCP 75, RFC 3665, December 2003.
+
+10. Acknowledgements
+
+ The editor would like to acknowledge the constructive feedback
+ provided by Robert Sparks, Paul Kyzivat, Scott Orton, John Elwell,
+ Nir Chen, Francois Audet, Palash Jain, Brian Stucker, Norma Ng,
+ Anthony Brown, Jayshree Bharatia, Jonathan Rosenberg, Eric Burger,
+
+
+
+Barnes Standards Track [Page 26]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ Martin Dolly, Roland Jesske, Takuya Sawada, Sebastien Prouvost, and
+ Sebastien Garcin.
+
+ The editor would like to acknowledge the significant input from Rohan
+ Mahy on some of the normative aspects of the ABNF, particularly
+ around the need for and format of the index and around the security
+ aspects.
+
+11. Contributors' Addresses
+
+ Cullen, Mark, and Jon contributed to the development of the initial
+ requirements.
+
+ Cullen and Mark provided substantial input in the form of email
+ discussion in the development of the initial version of the
+ individual solution document.
+
+ Cullen Jennings
+ Cisco Systems
+ 170 West Tasman Dr
+ MS: SJC-21/3
+
+ Phone: +1 408 421 9990
+ EMail: fluffy@cisco.com
+
+
+ Jon Peterson
+ NeuStar, Inc.
+ 1800 Sutter Street, Suite 570
+ Concord, CA 94520
+ USA
+
+ Phone: +1 925-363-8720
+ EMail: Jon.Peterson@NeuStar.biz
+
+
+ Mark Watson
+ Digital Fountain
+ 39141 Civic Center Drive Suite 300
+ Fremont, CA 94538
+ U.S.A.
+
+ EMail: mark@digitalfountain.com
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 27]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+Appendix. Example Scenarios
+
+ The scenarios in Appendices A-D provide sample use cases for the
+ History-Info header for informational purposes only. They are not
+ intended to be normative and the formatting is for visual purposes;
+ thus, the headers in the URI are not shown properly formatted for
+ escaping. Refer to Section 4.2 examples with the proper formatting.
+
+Appendix A. Sequentially Forking (History-Info in Response)
+
+ This scenario highlights an example where the History-Info in the
+ response is useful to an application or user that originated the
+ request.
+
+ Alice at UA1 sends a call to Bob via Proxy1. Proxy1 sequentially
+ tries several places (UA2, UA3 and UA4) unsuccessfully before sending
+ a response to Alice.
+
+ This scenario is provided to show that by providing the History-Info
+ to UA1, the end-user or an application at UA1 could make a decision
+ on how best to attempt finding Bob. Without this mechanism, UA1
+ might well attempt UA3 (and thus UA4) and then re-attempt UA4 on a
+ third manual attempt at reaching Bob. With this mechanism, either
+ the end-user or application could know that Bob is busy on his home
+ phone and is physically not in the office. If there were an
+ alternative address for Bob known to this end-user or application,
+ that hasn't been attempted, then either the application or the end-
+ user could attempt that. The intent here is to highlight an example
+ of the flexibility of this mechanism that enables applications well
+ beyond SIP as it is certainly well beyond the scope of this document
+ to prescribe detailed applications.
+
+ In this scenario, since UA1 has not included the original Request-URI
+ in the INVITE, the proxy adds a hi-entry to capture the original
+ Request-URI to provide the complete set of information, as discussed
+ in Section 4.3.3.1.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 28]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ UA1 Proxy1 UA2 UA3 UA4
+ | | | | |
+ |-INVITE F1->| | | |
+ | | | | |
+ | |--INVITE F2------>| | |
+ |<--100 F3---| | | |
+ | |<-302 F4----------| | |
+ | | | | |
+ | |-------INVITE F5 --------->| |
+ | | | | |
+ | |<-------180 F6 ------------| |
+ |<---180 F7--| | | |
+ | . . |---retransmit INVITE ----->| |
+ | | | | |
+ | | ( timeout ) | | |
+ | | | | |
+ | |------INVITE F8 ------------------->|
+ |<--100 F9 --| | | |
+ | | | | |
+ | |<-486 F10 --------------------------|
+ | | | | |
+ | |-- ACK F11------------------------->|
+ |<--486 F12--| | | |
+ | | | | |
+ |--ACK F13-->| | | |
+ | | | | |
+
+ Message Details
+
+ F1 INVITE UA1 ->Proxy1
+
+ INVITE sip:UserA@example.com SIP/2.0
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Contact: Alice <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=UserA 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+
+
+Barnes Standards Track [Page 29]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ /*Client for UA1 prepares to receive data on port 49170
+ from the network. */
+
+ F2 INVITE Proxy1 ->UA2
+
+ INVITE sip:UserA@ims.example.com SIP/2.0
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=1
+ Via: SIP/2.0/UDP example.net:5060
+ Record-Route: <sip:UserA@example.com>
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ History-Info: <sip:UserA@example.com>; index=1,
+ <sip:UserA@ims.example.com>; index=1.1
+ Contact: Alice <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=UserA 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ F3 100 Trying Proxy1 ->UA1
+
+ SIP/2.0 100 Trying
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ F4 302 Moved Temporarily UA2 ->Proxy1
+
+ SIP/2.0 302 Moved Temporarily
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=1
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>;tag=3
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Contact: <sip:UserB@example.com>
+ Content-Length: 0
+
+
+
+Barnes Standards Track [Page 30]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ F5 INVITE Proxy1 -> UA3
+
+ INVITE sip:UserB@example.com SIP/2.0
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=2
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ History-Info: <sip:UserA@example.com>; index=1,
+ <sip:UserA@ims.example.com?Reason=SIP;\
+ cause=302; text="Moved Temporarily">; index=1.1,
+ <sip:UserB@example.com>;index=1.2
+ CSeq: 1 INVITE
+ Contact: Alice <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=User1 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ F6 180 Ringing UA3 ->Proxy1
+
+ SIP/2.0 180 Ringing
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>;tag=5
+ Call-ID: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ F7 180 Ringing Proxy1 -> UA1
+
+ SIP/2.0 180 Ringing
+ SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ /* User B is not available. INVITE is sent multiple
+ times until it times out. */
+
+
+
+
+Barnes Standards Track [Page 31]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ /* The proxy forwards the INVITE to UA4 after adding the
+ additional History Information entry. */
+
+ F8 INVITE Proxy1 -> UA4
+
+ INVITE sip:UserC@example.com SIP/2.0
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=3
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ History-Info: <sip:UserA@example.com>; index=1,
+ <sip:UserA@ims.example.com?Reason=SIP;\
+ cause=302; text="Moved Temporarily">;index=1.1,
+ <sip:UserB@example.com?Reason=SIP;cause=480;\
+ text="Temporarily Unavailable" >;index=1.2,
+ <sip:UserC@example.com>;index=1.3
+ CSeq: 1 INVITE
+ Contact: Alice <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=User1 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ F9 100 Trying Proxy1 ->UA1
+
+ SIP/2.0 100 Trying
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ F10 486 Busy Here UA4 -> Proxy1
+
+ SIP/2.0 486 Busy Here
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=3
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+
+
+
+Barnes Standards Track [Page 32]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ F11 ACK Proxy1 -> UA4
+
+ ACK sip:UserC@example.com SIP/2.0
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 ACK
+ Content-Length: 0
+
+ /* The proxy forwards the 486 to Alice after adding the
+ associated History Information entries from the series of
+ INVITES */
+
+ F12 486 Busy Here Proxy1 -> UA1
+
+ SIP/2.0 486 Busy Here
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ History-Info: <sip:UserA@example.com>; index=1,
+ <sip:UserA@ims.example.com?Reason=SIP;\
+ cause=302; text="Moved Temporarily">;index=1.1,
+ <sip:UserB@example.com?Reason=SIP;cause=480;\
+ text="Temporarily Unavailable" >;index=1.2,
+ <sip:UserC@example.com>;index=1.3
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ F13 ACK Alice -> Proxy 1
+
+ ACK sip:UserA@example.com SIP/2.0
+ Via: SIP/2.0/UDP example.net:5060
+ From: Alice <sip:User1@example.net>
+ To: Bob <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 ACK
+ Content-Length: 0
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 33]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+Appendix B. Voicemail
+
+ This scenario highlights an example where the History-Info in the
+ request is primarily of use by an edge service (e.g., voicemail
+ server). It should be noted that this isn't intended to be a
+ complete specification for this specific edge service as it is quite
+ likely that additional information is needed by the edge service.
+ History-Info is just one building block that this service makes use
+ of.
+
+ UA1 called UA A, which had been forwarded to UA B, which forwarded to
+ a UA VM (voicemail server). Based upon the retargeted URIs and
+ Reasons (and other information) in the INVITE, the VM server makes a
+ policy decision about what mailbox to use, which greeting to play,
+ etc.
+
+ UA1 Proxy UA-A UA-B UA-VM
+
+ | | | | |
+ |--INVITE F1-->| | | |
+ | | | | |
+ | |--INVITE F2-->| | |
+ |<--100 F3-----| | | |
+ | |<-302 F4------| | |
+ | | | | |
+ | |--------INVITE F5---------->| |
+ | | | | |
+ | |<--------180 F6-------------| |
+ |<---180 F7----| | | |
+ | . . . | | | |
+ | |------retransmit INVITE---->| |
+ | . . . | | | |
+ | | (timeout) | |
+ | | | | |
+ | |-------INVITE F8---------------------->|
+ | | | | |
+ | |<-200 F9-------------------------------|
+ | | | | |
+ |<-200 F10-----| | | |
+ | | | | |
+ |--ACK F11-------------------------------------------->|
+
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 34]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ Message Details
+
+ INVITE F1 UA1->Proxy
+
+ INVITE sip:UserA@example.com SIP/2.0
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Contact: BigGuy <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+ v=0
+ o=UserA 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ /*Client for UA1 prepares to receive data on port 49170
+ from the network. */
+
+ INVITE F2 Proxy->UA-A
+
+ INVITE sip:UserA@ims.example.com SIP/2.0
+ Via: SIP/2.0/UDPims.example.com:5060;branch=1
+ Via: SIP/2.0/UDP example.net:5060
+ Record-Route: <sip:UserA@example.com>
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ History-Info: <sip:UserA@ims.example.com>; index=1
+ Contact: BigGuy <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=UserA 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ 100 Trying F3 Proxy->UA1
+
+
+
+Barnes Standards Track [Page 35]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ SIP/2.0 100 Trying
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ 302 Moved Temporarily F4 UserA->Proxy
+ SIP/2.0 302 Moved Temporarily
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=1
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy<sip:UserA@example.com>;tag=3
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Contact: <sip:UserB@example.com>
+ Content-Length: 0
+
+ INVITE F5 Proxy-> UA-B
+
+ INVITE sip:UserB@example.com SIP/2.0
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=2
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ History-Info: <sip:UserA@ims.example.com?Reason=SIP;\
+ cause=302; text="Moved Temporarily">; index=1,
+ <sip:UserB@example.com>;index=2
+ CSeq: 1 INVITE
+ Contact: BigGuy <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=User1 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ 180 Ringing F6 UA-B ->Proxy
+
+ SIP/2.0 180 Ringing
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+
+
+
+Barnes Standards Track [Page 36]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ To: LittleGuy <sip:UserA@example.com>;tag=5
+ Call-ID: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ 180 Ringing F7 Proxy-> UA1
+
+ SIP/2.0 180 Ringing
+ SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Content-Length: 0
+
+ /* User B is not available. INVITE is sent multiple
+ times until it times out. */
+
+ /* The proxy forwards the INVITE to UA-VM after adding the
+ additional History Information entry. */
+
+ INVITE F8 Proxy-> UA-VM
+
+ INVITE sip:VM@example.com SIP/2.0
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=3
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>
+ Call-Id: 12345600@example.net
+ History-Info:<sip:UserA@ims.example.com?Reason=SIP;\
+ cause=302; text="Moved Temporarily">;index=1,
+ <sip:UserB@example.com?Reason=SIP;cause=480;\
+ text="Temporarily Unavailable" >;index=2,
+ <sip:VM@example.com>;index=3
+ CSeq: 1 INVITE
+ Contact: BigGuy <sip:User1@example.net>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=User1 2890844526 2890844526 IN IP4 client.example.net
+ s=Session SDP
+ c=IN IP4 192.0.2.3
+ t=0 0
+ m=audio 49170 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ 200 OK F9
+
+
+
+Barnes Standards Track [Page 37]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ SIP/2.0 200 OK UA-VM->Proxy
+
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=3
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>;tag=3
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Contact: TheVoiceMail <sip:VM@example.com>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=UserA 2890844527 2890844527 IN IP4 vm.example.com
+ s=Session SDP
+ c=IN IP4 192.0.2.4
+ t=0 0
+ m=audio 3456 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ 200 OK F10 Proxy->UA1
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP ims.example.com:5060;branch=3
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy <sip:UserA@example.com>;tag=3
+ Call-Id: 12345600@example.net
+ CSeq: 1 INVITE
+ Contact: TheVoiceMail <sip:VM@example.com>
+ Content-Type: application/sdp
+ Content-Length: <appropriate value>
+
+ v=0
+ o=UserA 2890844527 2890844527 IN IP4 vm.example.com
+ s=Session SDP
+ c=IN IP4 192.0.2.4
+ t=0 0
+ m=audio 3456 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ ACK F11 UA1-> UA-VM
+
+ ACK sip:VM@example.com SIP/2.0
+ Via: SIP/2.0/UDP example.net:5060
+ From: BigGuy <sip:User1@example.net>
+ To: LittleGuy<sip:UserA@example.com>;tag=3
+ Call-Id: 12345600@example.net
+
+
+
+Barnes Standards Track [Page 38]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ CSeq: 1 ACK
+ Content-Length: 0
+
+ /* RTP streams are established between UA1 and
+ UA-VM. UA-VM starts announcement for UA1 */
+
+Appendix C. Automatic Call Distribution Example
+
+ This scenario highlights an example of an Automatic Call Distribution
+ service, where the agents are divided into groups based upon the type
+ of customers they handle. In this example, the Gold customers are
+ given higher priority than Silver customers, so a Gold call would get
+ serviced even if all the agents servicing the Gold group (ACDGRP1)
+ were busy, by retargeting the request to the Silver Group. Upon
+ receipt of the call at the agent assigned to handle the incoming
+ call, based upon the History-Info header in the message, the
+ application at the agent can provide an indication that this is a
+ Gold call, from how many groups it might have overflowed before
+ reaching the agent, etc. and thus can be handled appropriately by the
+ agent.
+
+ For scenarios whereby calls might overflow from the Silver to the
+ Gold, clearly the alternate group identification, internal routing,
+ or actual agent that handles the call SHOULD not be sent to UA1.
+ Thus, for this scenario, one would expect that the Proxy would not
+ support the sending of the History-Info in the response, even if
+ requested by the calling UA.
+
+ As with the other examples, this is not prescriptive of how one would
+ do this type of service but an example of a subset of processing that
+ might be associated with such a service. In addition, this example
+ is not addressing any aspects of Agent availability, which might also
+ be done via a SIP interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 39]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ UA1 Proxy ACDGRP1 Svr ACDGRP2 Svr UA2-ACDGRP2
+
+ | | | | |
+ |--INVITE F1-->| | | |
+ Supported:histinfo
+ | | | | |
+ | |--INVITE F2-->| | |
+ Supported:histinfo
+ History-Info: <sip:Gold@example.com>; index=1
+ History-Info: <sip:ACDGRP1@example.com>; index=1.1
+ | | | | |
+ | |<-302 F3------| | |
+ Contact: <sip:ACDGRP2@ACD.com>
+ | | | | |
+ | |--------INVITE F4---------->| |
+ History-Info: <sip:Gold@example.com>; index=1
+ History-Info: <sip:ACDGRP1@example.com>; index=1.1
+ History-Info: <sip:ACDGRP2@example.com>; index=1.2
+ | | | | |
+ | | | | |
+ | | | |INVITE F5>|
+ History-Info: <sip:Gold@example.com>; index=1
+ History-Info: <sip:ACDGRP1@example.com>; index=1.1
+ History-Info: <sip:ACDGRP2@example.com>; index=1.2
+ | | | | |
+ | | | |<-200 F6--|
+ | | | | |
+ | |<-200 F7--------------------| |
+ History-Info: <sip:Gold@example.com>; index=1
+ History-Info: <sip:ACDGRP1@example.com>; index=1.1
+ History-Info: <sip:ACDGRP2@example.com>; index=1.2
+ |<-200 F8------| | | |
+ < No History-Info included in the response due to Local Policy>
+ | | | | |
+ |--ACK F9--------------------------------------------->|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 40]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+Appendix D. Session via Redirect and Proxy Servers
+
+ In this scenario, Alice places a call to Bob using first a Redirect
+ server then a Proxy Server. The INVITE message is first sent to the
+ Redirect Server. The Server returns a 302 Moved Temporarily response
+ (F2) containing a Contact header with Bob's current SIP address.
+ Alice then generates a new INVITE with Bob's current SIP address
+ included in another History-Info entry. The INVITE is then sent to
+ Bob via the Proxy Server, with Bob receiving the complete History
+ information; the call then proceeds normally. The complete call flow
+ for this scenario, without the use of History-Info, is described in
+ Section 3.6 of the SIP Basic Call Flow Examples [RFC3665].
+
+ Alice Redirect Server Proxy 3 Bob
+ | | | |
+ | INVITE F1 | | |
+ |--------------->| | |
+ | 302 F2 | | |
+ |<---------------| | |
+ | ACK F3 | | |
+ |--------------->| | |
+ | INVITE F4 | |
+ |-------------------------------->| INVITE F5 |
+ | 100 F6 |--------------->|
+
+ Message Details
+
+ F1 INVITE Alice -> Redirect Server
+
+ INVITE sip:bob@biloxi.example.com SIP/2.0
+ Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
+ Max-Forwards: 70
+ From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
+ To: Bob <sip:bob@biloxi.example.com>
+ Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
+ CSeq: 1 INVITE
+ History-Info: <sip:bob@biloxi.example.com>; index=1
+ Contact: <sip:alice@client.atlanta.example.com>
+ Content-Length: 0
+
+ F2 302 Moved Temporarily Redirect Proxy -> Alice
+
+ SIP/2.0 302 Moved Temporarily
+ Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
+ ;received=192.0.2.1
+ From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
+ To: Bob <sip:bob@biloxi.example.com>;tag=53fHlqlQ2
+ Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
+
+
+
+Barnes Standards Track [Page 41]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ CSeq: 1 INVITE
+ History-Info: <sip:bob@biloxi.example.com>; index=1
+ Contact: <sip:bob@chicago.example.com;transport=tcp>
+ Content-Length: 0
+
+ F3 ACK Alice -> Redirect Server
+
+ ACK sip:bob@biloxi.example.com SIP/2.0
+ Via: SIP/2.0/UDP client.atlanta.example.com:5060;branch=z9hG4bKbf9f44
+ Max-Forwards: 70
+ From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
+ To: Bob <sip:bob@biloxi.example.com>;tag=53fHlqlQ2
+ Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
+ CSeq: 1 ACK
+ Content-Length: 0
+
+ F4 INVITE Alice -> Proxy 3
+
+ INVITE sip:bob@chicago.example.com SIP/2.0
+ Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
+ Max-Forwards: 70
+ From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
+ To: Bob <sip:bob@biloxi.example.com>
+ Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
+ CSeq: 2 INVITE
+ History-Info: <sip:bob@biloxi.example.com?Reason=SIP;cause=302>\
+ text="Moved Temporarily">; index=1,
+ <sip:bob@chicago.example.com>; index=2
+ Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
+ Content-Length: 0
+
+ F5 INVITE Proxy 3 -> Bob
+
+ INVITE sip:bob@client.chicago.example.com SIP/2.0
+ Via: SIP/2.0/TCP ss3.chicago.example.com:5060;branch=z9hG4bK721e.1
+ Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74bf9
+ ;received=192.0.2.1
+ Max-Forwards: 69
+ Record-Route: <sip:ss3.chicago.example.com;lr>
+ From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
+ To: Bob <sip:bob@biloxi.example.com>
+ Call-ID: 2xTb9vxSit55XU7p8@atlanta.example.com
+ CSeq: 2 INVITE
+ History-Info: <sip:bob@biloxi.example.com?Reason=SIP;cause=302>\
+ text="Moved Temporarily">; index=1,
+ <sip:bob@chicago.example.com>; index=2,
+ <sip:bob@client.chicago.example.com>; index=2.1
+ Contact: <sip:alice@client.atlanta.example.com;transport=tcp>
+
+
+
+Barnes Standards Track [Page 42]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+ Content-Length: 0
+
+ Detailed Call Flow continues per section 6.3 in [RFC3665].
+
+Editor's Address
+
+ Mary Barnes
+ Nortel
+ 2201 Lakeside Blvd
+ Richardson, TX USA
+
+ Phone: 1-972-684-5432
+ EMail: mary.barnes@nortel.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barnes Standards Track [Page 43]
+
+RFC 4244 SIP Request History Information November 2005
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2005).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at ietf-
+ ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+Barnes Standards Track [Page 44]
+