draft-ietf-sipcore-rfc4244bis-06.txt   draft-ietf-sipcore-rfc4244bis-07.txt 
Network Working Group M. Barnes Network Working Group M. Barnes
Internet-Draft Polycom Internet-Draft Polycom
Obsoletes: 4244 (if approved) F. Audet Obsoletes: 4244 (if approved) F. Audet
Intended status: Standards Track Skype Intended status: Standards Track Skype
Expires: April 3, 2012 S. Schubert Expires: September 2, 2012 S. Schubert
NTT NTT
J. van Elburg J. van Elburg
Detecon International Gmbh Detecon International Gmbh
C. Holmberg C. Holmberg
Ericsson Ericsson
Oct 2011 Mar 2012
An Extension to the Session Initiation Protocol (SIP) for Request An Extension to the Session Initiation Protocol (SIP) for Request
History Information History Information
draft-ietf-sipcore-rfc4244bis-06.txt draft-ietf-sipcore-rfc4244bis-07.txt
Abstract Abstract
This document defines a standard mechanism for capturing the history This document defines a standard mechanism for capturing the history
information associated with a Session Initiation Protocol (SIP) information associated with a Session Initiation Protocol (SIP)
request. This capability enables many enhanced services by providing request. This capability enables many enhanced services by providing
the information as to how and why a SIP request arrives at a specific the information as to how and why a SIP request arrives at a specific
application or user. This document defines an optional SIP header application or user. This document defines an optional SIP header
field, History-Info, for capturing the history information in field, History-Info, for capturing the history information in
requests. The document also defines SIP header field parameters for requests. The document also defines SIP header field parameters for
skipping to change at page 1, line 48 skipping to change at page 1, line 48
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 3, 2012. This Internet-Draft will expire on September 2, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 3, line 22 skipping to change at page 3, line 22
5.1. History-Info Header Field Example Scenario . . . . . . . . 10 5.1. History-Info Header Field Example Scenario . . . . . . . . 10
6. User Agent Handling of the History-Info Header Field . . . . . 13 6. User Agent Handling of the History-Info Header Field . . . . . 13
6.1. User Agent Client (UAC) Behavior . . . . . . . . . . . . . 13 6.1. User Agent Client (UAC) Behavior . . . . . . . . . . . . . 13
6.2. User Agent Server (UAS) Behavior . . . . . . . . . . . . . 13 6.2. User Agent Server (UAS) Behavior . . . . . . . . . . . . . 13
7. Proxy/Intermediary Handling of History-Info Header Fields . . 13 7. Proxy/Intermediary Handling of History-Info Header Fields . . 13
8. Redirect Server Handling of History-Info Header Fields . . . . 14 8. Redirect Server Handling of History-Info Header Fields . . . . 14
9. Handling of History-Info Header Fields in Requests and 9. Handling of History-Info Header Fields in Requests and
Responses . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Responses . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.1. Receiving a Request . . . . . . . . . . . . . . . . . . . 14 9.1. Receiving a Request . . . . . . . . . . . . . . . . . . . 14
9.2. Sending a Request with History-Info . . . . . . . . . . . 15 9.2. Sending a Request with History-Info . . . . . . . . . . . 15
9.3. Receiving a Response with History-Info or Requet 9.3. Receiving a Response with History-Info or Request
Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . 15 Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . 15
9.4. Sending History-Info in Responses . . . . . . . . . . . . 16 9.4. Sending History-Info in Responses . . . . . . . . . . . . 16
10. Processing the History-Info Header Field . . . . . . . . . . . 16 10. Processing the History-Info Header Field . . . . . . . . . . . 16
10.1. Privacy in the History-Info Header Field . . . . . . . . . 17 10.1. Privacy in the History-Info Header Field . . . . . . . . . 17
10.1.1. Indicating Privacy . . . . . . . . . . . . . . . . . 17 10.1.1. Indicating Privacy . . . . . . . . . . . . . . . . . 17
10.1.2. Applying Privacy . . . . . . . . . . . . . . . . . . 18 10.1.2. Applying Privacy . . . . . . . . . . . . . . . . . . 18
10.2. Reason in the History-info Header Field . . . . . . . . . 19 10.2. Reason in the History-info Header Field . . . . . . . . . 19
10.3. Indexing in the History-Info Header Field . . . . . . . . 19 10.3. Indexing in the History-Info Header Field . . . . . . . . 19
10.4. Mechanism for Target Determination in the History-Info 10.4. Mechanism for Target Determination in the History-Info
Header Field . . . . . . . . . . . . . . . . . . . . . . . 21 Header Field . . . . . . . . . . . . . . . . . . . . . . . 21
skipping to change at page 4, line 4 skipping to change at page 4, line 4
16. Changes from RFC 4244 . . . . . . . . . . . . . . . . . . . . 28 16. Changes from RFC 4244 . . . . . . . . . . . . . . . . . . . . 28
16.1. Backwards compatibility . . . . . . . . . . . . . . . . . 29 16.1. Backwards compatibility . . . . . . . . . . . . . . . . . 29
17. Changes since last Version . . . . . . . . . . . . . . . . . . 30 17. Changes since last Version . . . . . . . . . . . . . . . . . . 30
18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 37 18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 37
18.1. Normative References . . . . . . . . . . . . . . . . . . . 37 18.1. Normative References . . . . . . . . . . . . . . . . . . . 37
18.2. Informative References . . . . . . . . . . . . . . . . . . 37 18.2. Informative References . . . . . . . . . . . . . . . . . . 37
Appendix A. Request History Requirements . . . . . . . . . . . . 38 Appendix A. Request History Requirements . . . . . . . . . . . . 38
A.1. Security Requirements . . . . . . . . . . . . . . . . . . 39 A.1. Security Requirements . . . . . . . . . . . . . . . . . . 39
A.2. Privacy Requirements . . . . . . . . . . . . . . . . . . . 40 A.2. Privacy Requirements . . . . . . . . . . . . . . . . . . . 40
Appendix B. Example call flows . . . . . . . . . . . . . . . . . 40 Appendix B. Example call flows . . . . . . . . . . . . . . . . . 40
B.1. PBX Voicemail call floww . . . . . . . . . . . . . . . . . 40 B.1. PBX Voicemail call flow . . . . . . . . . . . . . . . . . 40
B.2. Consumer Voicemail example call flow . . . . . . . . . . . 45 B.2. Consumer Voicemail example call flow . . . . . . . . . . . 45
B.3. Sequentially Forking (History-Info in Response) . . . . . 49 B.3. Sequentially Forking (History-Info in Response) . . . . . 49
B.4. History-Info with Privacy Header Field . . . . . . . . . . 56 B.4. History-Info with Privacy Header Field . . . . . . . . . . 56
B.5. Privacy for a Specific History-Info Entry . . . . . . . . 60 B.5. Privacy for a Specific History-Info Entry . . . . . . . . 60
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 64 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 64
1. Introduction 1. Introduction
Many services that SIP is anticipated to support require the ability Many services that SIP is anticipated to support require the ability
to determine why and how a SIP request arrived at a specific to determine why and how a SIP request arrived at a specific
skipping to change at page 6, line 6 skipping to change at page 6, line 6
described in Section 16.5 of [RFC3261] and of the subsequent described in Section 16.5 of [RFC3261] and of the subsequent
forwarding of that request as described in step 2 in section 16.6 of forwarding of that request as described in step 2 in section 16.6 of
[RFC3261]. This includes changing the Request-URI due to a location [RFC3261]. This includes changing the Request-URI due to a location
service lookup and redirect processing. This also includes internal service lookup and redirect processing. This also includes internal
(to a Proxy/SIP intermediary) changes of the URI prior to forwarding (to a Proxy/SIP intermediary) changes of the URI prior to forwarding
of the request. of the request.
The terms "location service", "forward", "redirect" and "AOR" are The terms "location service", "forward", "redirect" and "AOR" are
used consistent with the terminology in [RFC3261]. used consistent with the terminology in [RFC3261].
The terms "terget user" is used in this specification as the human The terms "target user" is used in this specification as the human
user associated with particular AoR or AoRs (in case the human user user associated with particular AoR or AoRs (in case the human user
has multiple alias). has multiple alias).
The references to "domain for which the SIP entity/Proxy/Intermediary The references to "domain for which the SIP entity/Proxy/Intermediary
is responsible" are consistent with and intended to convey the same is responsible" are consistent with and intended to convey the same
context as the usage of that terminology in [RFC3261]. The context as the usage of that terminology in [RFC3261]. The
applicability of History-Info to architectures or models outside the applicability of History-Info to architectures or models outside the
context of [RFC3261] is outside the scope of this specification. context of [RFC3261] is outside the scope of this specification.
3. Background 3. Background
skipping to change at page 12, line 46 skipping to change at page 12, line 46
| History-Info: <sip:bob@biloxi.example.com;p=x>;np=1;index=1.1 | History-Info: <sip:bob@biloxi.example.com;p=x>;np=1;index=1.1
| History-Info: <sip:bob@192.0.2.3>;index=1.1.1;rc=1.1 | History-Info: <sip:bob@192.0.2.3>;index=1.1.1;rc=1.1
| | | | | | | | | |
| | | Proxy Cancels INVITE | | | | Proxy Cancels INVITE |
| | |<=========================>| | | |<=========================>|
| | | | | | | | | |
| 200 | | | | | 200 | | | |
|<---------------| | | | |<---------------| | | |
| History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 | History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
| History-Info: <sip:bob@biloxi.example.com;p=x>;np=1;index=1.1 | History-Info: <sip:bob@biloxi.example.com;p=x>;np=1;index=1.1
| History-Info: <sip:bob@192.0.2.3;index=1.1.1;rc=1.1 | History-Info: <sip:bob@192.0.2.3>;index=1.1.1;rc=1.1
| | | | | | | | | |
| ACK | | | | | ACK | | | |
|--------------->| ACK | | | |--------------->| ACK | | |
| |--------------->| ACK | | | |--------------->| ACK | |
| | |--------------->| | | | |--------------->| |
Figure 1: Basic Call Figure 1: Basic Call
6. User Agent Handling of the History-Info Header Field 6. User Agent Handling of the History-Info Header Field
A B2BUA MAY follow the behavior of a SIP intermediary as an A B2BUA MAY follow the behavior of a SIP intermediary as an
skipping to change at page 14, line 9 skipping to change at page 14, line 9
each of the following scenarios: each of the following scenarios:
Receiving a Request: An intermediary MUST follow the procedures in Receiving a Request: An intermediary MUST follow the procedures in
Section 9.1 for the handling of hi-entries in incoming SIP Section 9.1 for the handling of hi-entries in incoming SIP
requests. requests.
Sending a Request: For each outgoing request relating to a target in Sending a Request: For each outgoing request relating to a target in
the target set, the intermediary MUST follow the procedures of the target set, the intermediary MUST follow the procedures of
Section 9.2. Section 9.2.
Receiving a Response ot Timeout: An intermediary MUST follow the Receiving a Response or Timeout: An intermediary MUST follow the
procedures of Section 9.3 when a SIP response is received or a procedures of Section 9.3 when a SIP response is received or a
request times out. request times out.
Sending a Response: An intermediary MUST follow the procedures of Sending a Response: An intermediary MUST follow the procedures of
Section 9.4 for the handling of the hi-entries when sending a SIP Section 9.4 for the handling of the hi-entries when sending a SIP
response. response.
In some cases, an intermediary may retarget a request more than once In some cases, an intermediary may retarget a request more than once
before forwarding - i.e., a request is retargeted to a SIP entity before forwarding - i.e., a request is retargeted to a SIP entity
that is "internal" to the intermediary before the same intermediary that is "internal" to the intermediary before the same intermediary
skipping to change at page 15, line 47 skipping to change at page 15, line 47
privacy: If privacy is required, the procedures of Section 10.1 MUST privacy: If privacy is required, the procedures of Section 10.1 MUST
be followed. be followed.
hi-index: The SIP entity MUST include an hi-index for the hi-entry hi-index: The SIP entity MUST include an hi-index for the hi-entry
as described in Section 10.3. as described in Section 10.3.
rc/mp: The SIP entity MUST include an "rc", "mp" or "np" header rc/mp: The SIP entity MUST include an "rc", "mp" or "np" header
field parameter in the hi-entry, if applicable, per the procedures field parameter in the hi-entry, if applicable, per the procedures
in Section 10.4. in Section 10.4.
9.3. Receiving a Response with History-Info or Requet Timeouts 9.3. Receiving a Response with History-Info or Request Timeouts
When a SIP entity receives a non-100 response or a request times out, When a SIP entity receives a non-100 response or a request times out,
the SIP entity performs the following steps: the SIP entity performs the following steps:
Step 1: Add hi-entry to cache Step 1: Add hi-entry to cache
The SIP entity MUST add the hi-entry that was added to the request The SIP entity MUST add the hi-entry that was added to the request
that received the non-100 response or timed out to the cache, if that received the non-100 response or timed out to the cache, if
it was not already cached. The hi-entry MUST be added to the it was not already cached. The hi-entry MUST be added to the
cache in ascending order as indicated by the values in the hi- cache in ascending order as indicated by the values in the hi-
skipping to change at page 17, line 26 skipping to change at page 17, line 26
As with other SIP headers described in [RFC3323], the hi-targeted-to- As with other SIP headers described in [RFC3323], the hi-targeted-to-
uris in the History-info header field can inadvertently reveal uris in the History-info header field can inadvertently reveal
information about the initiator of the request. Thus, the UAC needs information about the initiator of the request. Thus, the UAC needs
a mechanism to indicate that the hi-targeted-to-uris in the hi- a mechanism to indicate that the hi-targeted-to-uris in the hi-
entries need to be privacy protected. The Privacy header field is entries need to be privacy protected. The Privacy header field is
used by the UAC to indicate that privacy is to be applied to all the used by the UAC to indicate that privacy is to be applied to all the
hi-entries in the request as follows: hi-entries in the request as follows:
o If the UAC is including a Privacy header field with a priv-value o If the UAC is including a Privacy header field with a priv-value
of "header" in the request, then the UAC SHOULD NOT include a of "header" in the request, then the UAC SHOULD NOT include a
priv-value of "history" in the the Privacy header field in the priv-value of "history" in the Privacy header field in the
Request. Request.
o If the UAC is including any priv-values other than "header" in the o If the UAC is including any priv-values other than "header" in the
Privacy header field, then the UAC MUST also include a priv-value Privacy header field, then the UAC MUST also include a priv-value
of "history" in the Privacy header field in the Request. of "history" in the Privacy header field in the Request.
o If the UAC is not including any priv-values in the Privacy header o If the UAC is not including any priv-values in the Privacy header
field in the request, then the UAC MUST add a Privacy header field in the request, then the UAC MUST add a Privacy header
field, with a priv-value of "history", to the request. The UAC field, with a priv-value of "history", to the request. The UAC
MUST NOT include a priv-value of "critical" in the Privacy header MUST NOT include a priv-value of "critical" in the Privacy header
skipping to change at page 20, line 43 skipping to change at page 20, line 43
the last hi-entry. Per the example above, the hi-index in the the last hi-entry. Per the example above, the hi-index in the
next request forwarded by this same SIP entity would be 1.1.2. next request forwarded by this same SIP entity would be 1.1.2.
4. Retargeting based upon a Response: In the case of retargeting due 4. Retargeting based upon a Response: In the case of retargeting due
to a specific response (e.g., 302), the SIP entity MUST calculate to a specific response (e.g., 302), the SIP entity MUST calculate
the hi-index calculated per rule 3. That is, the rightmost value the hi-index calculated per rule 3. That is, the rightmost value
of the hi-index MUST be incremented (i.e., a new branch is of the hi-index MUST be incremented (i.e., a new branch is
created). For example, if the hi-index in the History-Info created). For example, if the hi-index in the History-Info
header field of the sent request is 1.2 and the response to the header field of the sent request is 1.2 and the response to the
request is a 302, then the hi-index in the History-Info header request is a 302, then the hi-index in the History-Info header
field for the new hi-targeted- to-URI would be 1.3. field for the new hi-targeted-to-URI would be 1.3.
5. Forking requests: If the request forwarding is done in multiple 5. Forking requests: If the request forwarding is done in multiple
forks (sequentially or in parallel), the SIP entity MUST set the forks (sequentially or in parallel), the SIP entity MUST set the
hi-index for each hi-entry for each forked request per the rules hi-index for each hi-entry for each forked request per the rules
above, with each new request having a unique index. Each index above, with each new request having a unique index. Each index
MUST be sequentially assigned. For example, if the index in the MUST be sequentially assigned. For example, if the index in the
last History-Info header field in the received request is 1.1, last History-Info header field in the received request is 1.1,
this processing entity would initialize its index to 1.1.1 for this processing entity would initialize its index to 1.1.1 for
the first fork, 1.1.2 for the second, and so forth (see Figure 1 the first fork, 1.1.2 for the second, and so forth (see Figure 1
for an example). Note, that in the case of parallel forking, for an example). Note, that in the case of parallel forking,
skipping to change at page 24, line 31 skipping to change at page 24, line 31
A voicemail system typically requires the original called party A voicemail system typically requires the original called party
information to determine the appropriate mailbox so an appropriate information to determine the appropriate mailbox so an appropriate
greeting can be provided and the appropriate party notified of the greeting can be provided and the appropriate party notified of the
message. message.
The original target is determined by finding the first hi-entry The original target is determined by finding the first hi-entry
tagged with "rc" and using the hi-entry referenced by the index of tagged with "rc" and using the hi-entry referenced by the index of
"rc" header field parameter as the target for determining the "rc" header field parameter as the target for determining the
appropriate mailbox. This hi-entry is used to populate the "target" appropriate mailbox. This hi-entry is used to populate the "target"
URI parameter as defined in [RFC5246] The VMS can look at the last URI parameter as defined in [RFC4458] The VMS can look at the last
hi-entry and find the target of the mailbox by looking at the URI hi-entry and find the target of the mailbox by looking at the URI
entry in the "target" URI parameter in the hi-entry. For example entry in the "target" URI parameter in the hi-entry. For example
call flow please refer to the Appendix B.1. call flow please refer to the Appendix B.1.
This example usage does not work properly in the presence of This example usage does not work properly in the presence of
forwarding that takes place before the call reaches the company in forwarding that takes place before the call reaches the company in
that case not the first hi-entry with an rc value, but the first hi- that case not the first hi-entry with an rc value, but the first hi-
entry with an rc value following an mp entry needs to be picked. entry with an rc value following an mp entry needs to be picked.
12.2. Consumer Voicemail 12.2. Consumer Voicemail
The voicemail system in these environment typically requires the last The voicemail system in these environment typically requires the last
called party information to determine the appropriate mailbox so an called party information to determine the appropriate mailbox so an
appropriate greeting can be provided and the appropriate party appropriate greeting can be provided and the appropriate party
notified of the message. notified of the message.
The last target is determined by finding the hi-entry referenced by The last target is determined by finding the hi-entry referenced by
the index of last hi-entry tagged with "rc" for determining the the index of last hi-entry tagged with "rc" for determining the
appropriate mailbox. This hi-entry is used to populate the "target" appropriate mailbox. This hi-entry is used to populate the "target"
URI parameter as defined in [RFC5246]. The VMS can look at the last URI parameter as defined in [RFC4458]. The VMS can look at the last
hi-entry and find the target of the mailbox by looking for the hi-entry and find the target of the mailbox by looking for the
"target" URI parameter in the hi-entry. For example call flow please "target" URI parameter in the hi-entry. For example call flow please
refer to the Appendix B.2. refer to the Appendix B.2.
13. Security Considerations 13. Security Considerations
The security requirements for this specification are specified in The security requirements for this specification are specified in
Appendix A.1. Appendix A.1.
This document defines a header field for SIP. The use of the This document defines a header field for SIP. The use of the
skipping to change at page 28, line 17 skipping to change at page 28, line 17
This RFC replaces [RFC4244]. This RFC replaces [RFC4244].
Deployment experience with [RFC4244] over the years has shown a Deployment experience with [RFC4244] over the years has shown a
number of issues, warranting an update: number of issues, warranting an update:
o In order to make [RFC4244] work in "real life", one needs to make o In order to make [RFC4244] work in "real life", one needs to make
"assumptions" on how History-Info is used. For example, many "assumptions" on how History-Info is used. For example, many
implementations filter out many entries, and only leave specific implementations filter out many entries, and only leave specific
entries corresponding, for example, to first and last redirection. entries corresponding, for example, to first and last redirection.
Since vendors uses different rules, it causes significant Since vendors uses different rules, it causes significant
interoperability isssues. interoperability issues.
o [RFC4244] is overly permissive and evasive about recording o [RFC4244] is overly permissive and evasive about recording
entries, causing interoperability issues. entries, causing interoperability issues.
o The examples in the call flows had errors, and confusing because o The examples in the call flows had errors, and confusing because
they often assume "loose routing". they often assume "loose routing".
o [RFC4244] has lots of repetitive and unclear text due to the o [RFC4244] has lots of repetitive and unclear text due to the
combination of requirements with solution. combination of requirements with solution.
skipping to change at page 29, line 42 skipping to change at page 29, line 42
As for the behavior of the entity followings have changed since the As for the behavior of the entity followings have changed since the
[RFC4244]. [RFC4244].
UAC behavior UAC behavior
1. Inclusion of option tag by UAC has changed from SHOULD to MUST. 1. Inclusion of option tag by UAC has changed from SHOULD to MUST.
2. Inclusion of hi-target-entry along with hi-index has changed rom 2. Inclusion of hi-target-entry along with hi-index has changed rom
MAY/RECOMMEND to MUST/MUST. MAY/RECOMMEND to MUST/MUST.
3. Behavior surrounding the adddition of hi-target-entry based on 3. Behavior surrounding the addition of hi-target-entry based on 3xx
3xx response has changed from MAY/SHOULD to MUST. response has changed from MAY/SHOULD to MUST.
None of the behavior changes would cause any backward compatibility None of the behavior changes would cause any backward compatibility
issues. issues.
UAS behavior UAS behavior
1. Inclusion of hi-entry in response has changed from SHOULD to 1. Inclusion of hi-entry in response has changed from SHOULD to
MUST. MUST.
As the entity receiving response with hi-entry expected it with As the entity receiving response with hi-entry expected it with
SHOULD, this change will not cause any backward compatibility issues. SHOULD, this change will not cause any backward compatibility issues.
skipping to change at page 32, line 27 skipping to change at page 32, line 27
Changes from 01 to 02: Changes from 01 to 02:
1. Editorial nits/clarifications. [Issues: 1,6,17,18,21- 1. Editorial nits/clarifications. [Issues: 1,6,17,18,21-
23,25,26,30-33,35-37,39,40] 23,25,26,30-33,35-37,39,40]
2. Removing extraneous 4244 text - e.g., errors in flows, 2. Removing extraneous 4244 text - e.g., errors in flows,
"stronger" security, "session" privacy. [Issues: 3,5,7,11 ] "stronger" security, "session" privacy. [Issues: 3,5,7,11 ]
3. Updated definition of "retarget" to be all encompassing - i.e., 3. Updated definition of "retarget" to be all encompassing - i.e.,
also includes internal changes of target URI. Clarified text also includes internal changes of target URI. Clarified text
for "internal retarging" in proxy section. [Issues: 2,8,9] for "internal retargeting" in proxy section. [Issues: 2,8,9]
4. Clarified that the processing for Proxies is equally applicable 4. Clarified that the processing for Proxies is equally applicable
to other SIP intermediaries. [Issue: 9]. to other SIP intermediaries. [Issue: 9].
5. Changed more SHOULDs to MUSTs. [Issue: 10] 5. Changed more SHOULDs to MUSTs. [Issue: 10]
6. Fixes to Application considerations section. [Issues: 12-15] 6. Fixes to Application considerations section. [Issues: 12-15]
7. Changed language in the procedure for Indexing to normative 7. Changed language in the procedure for Indexing to normative
language. language.
skipping to change at page 38, line 48 skipping to change at page 38, line 48
3. ISSUER-req: "Request History" information can be generated by a 3. ISSUER-req: "Request History" information can be generated by a
UA or proxy. It can be passed in both requests and responses. UA or proxy. It can be passed in both requests and responses.
4. CONTENT-req: The "Request History" information for each 4. CONTENT-req: The "Request History" information for each
occurrence of retargeting shall include the following: occurrence of retargeting shall include the following:
A. The new URI or address to which the request is in the process A. The new URI or address to which the request is in the process
of being retargeted, of being retargeted,
B. The URI or address from which the request was retargeted, and B. The URI or address from which the request was retargeted, and
wether the retarget URI was an AOR whether the retarget URI was an AOR
C. The mechanism by which the new URI or address was determined, C. The mechanism by which the new URI or address was determined,
D. The reason for the Request-URI or address modification, D. The reason for the Request-URI or address modification,
E. Chronological ordering of the Request History information. E. Chronological ordering of the Request History information.
5. REQUEST-VALIDITY-req: Request History is applicable to requests 5. REQUEST-VALIDITY-req: Request History is applicable to requests
not sent within an early or established dialog (e.g., INVITE, not sent within an early or established dialog (e.g., INVITE,
REGISTER, MESSAGE, and OPTIONS). REGISTER, MESSAGE, and OPTIONS).
skipping to change at page 40, line 36 skipping to change at page 40, line 36
it maintains the network-provided privacy (as described in it maintains the network-provided privacy (as described in
[RFC3323]) associated with the Request as it is retargeted. [RFC3323]) associated with the Request as it is retargeted.
2. PRIV-req-2: The entity receiving the Request History must 2. PRIV-req-2: The entity receiving the Request History must
maintain the privacy associated with the information. In maintain the privacy associated with the information. In
addition, local policy at a proxy may identify privacy addition, local policy at a proxy may identify privacy
requirements associated with the Request-URI being captured in requirements associated with the Request-URI being captured in
the Request History information. the Request History information.
3. PRIV-req-3: Request History information subject to privacy shall 3. PRIV-req-3: Request History information subject to privacy shall
not be included in ougoing messages unless it is protected as not be included in out going messages unless it is protected as
described in [RFC3323]. described in [RFC3323].
Appendix B. Example call flows Appendix B. Example call flows
The scenarios in this section provide sample use cases for the The scenarios in this section provide sample use cases for the
History-info header field for informational purposes only. They are History-info header field for informational purposes only. They are
not intended to be normative. A basic forking use case is included, not intended to be normative. A basic forking use case is included,
along with two use cases illustrating the use of the privacy. along with two use cases illustrating the use of the privacy.
B.1. PBX Voicemail call floww B.1. PBX Voicemail call flow
In this example, Alice calls Bob, whose SIP client is forwarded to In this example, Alice calls Bob, whose SIP client is forwarded to
Carol. Carol does not answer the call, thus it is forwarded to a VM Carol. Carol does not answer the call, thus it is forwarded to a VM
(voicemail) server (VMS). In order to determine the appropriate (voicemail) server (VMS). In order to determine the appropriate
mailbox to use for this call, the VMS needs the original target for mailbox to use for this call, the VMS needs the original target for
the request. The original target is determined by finding the first the request. The original target is determined by finding the first
hi-entry tagged with "rc" and using the hi-entry referenced by the hi-entry tagged with "rc" and using the hi-entry referenced by the
index of "rc" header field parameter as the target for determining index of "rc" header field parameter as the target for determining
the appropriate mailbox. This hi-entry is used to populate the the appropriate mailbox. This hi-entry is used to populate the
"target" URI parameter as defined in [RFC4458]. The reason "target" URI parameter as defined in [RFC4458]. The reason
skipping to change at page 41, line 30 skipping to change at page 41, line 30
by the user or an administrator. by the user or an administrator.
Alice example.com Bob Carol VM Alice example.com Bob Carol VM
| INVITE F1 | | | | | INVITE F1 | | | |
|------------->| | | | |------------->| | | |
| | INVITE F2 | | | | | INVITE F2 | | |
| |------------->| | | | |------------->| | |
| | | | | | | | | |
| 100 Trying | | | | | 100 Trying | | | |
|<-------------| 302 Moved Temporarily F3 | | |<-------------| 302 Moved Temporarily F3 | |
| |<-------------| | | | |<-------------| | |
| | | | | | | | | |
| | INVITE F4 | | | | | INVITE F4 | | |
| |--------------------------->| | | |--------------------------->| |
| | | | | | | | | |
| | 180 Ringing F5 | | | | 180 Ringing F5 | |
| |<---------------------------| | | |<---------------------------| |
| | | | | | | | | |
| 180 Ringing | | | | | 180 Ringing | | | |
|<-------------| | | | |<-------------| | | |
skipping to change at page 42, line 11 skipping to change at page 42, line 11
| 200 OK | | | | | 200 OK | | | |
|<-------------| | | | |<-------------| | | |
| | | | | | | | | |
| ACK | | | | | ACK | | | |
|------------->| ACK | |------------->| ACK |
| |-------------------------------------->| | |-------------------------------------->|
F1 INVITE Alice -> Example.com F1 INVITE Alice -> Example.com
INVITE sip:bob@example.com INVITE sip:bob@example.com
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F2 INVITE Example.com -> Bob F2 INVITE Example.com -> Bob
INVITE sip:bob@192.0.2.5 SIP/2.0 INVITE sip:bob@192.0.2.5 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=as2334se Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12se
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1 History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F3 302 Moved Temporarily Bob -> Example.com F3 302 Moved Temporarily Bob -> Example.com
SIP/2.0 302 Moved Temporarily SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>; index=1.1;rc=1 History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: <sip:carol@example.com> Contact: <sip:carol@example.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F4 INVITE Example.com -> Carol F4 INVITE Example.com -> Carol
INVITE sip:carol@192.0.2.4 SIP/2.0 INVITE sip:carol@192.0.2.4 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=as2334se Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12se
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1 History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F5 180 Ringing Carol -> Example.com F5 180 Ringing Carol -> Example.com
SIP/2.0 180 Ringing SIP/2.0 180 Ringing
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=setss3x To: Bob <sip:bob@example.com>;tag=setss3x
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1 History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
Contact: <sip:carol@example.com> Contact: <sip:carol@example.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F6 INVITE Example.com -> VM F6 INVITE Example.com -> VM
INVITE sip:vm0192.0.2.6;target=sip:bob@example.com;cause=408 INVITE sip:vm@192.0.2.6;target=sip:bob%40example.com;cause=408
Via: SIP/2.0/TCP proxy.example.com:5060;branch=as2334se Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12se
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1 History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4?Reason%3BSIP%3Dcause%3B408>;\ History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\
index=1.2.1;rc=1.2 index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;\ History-Info: <sip:vm@example.com;\
target=sip:bob@example.com;cause=408>;\ target=sip:bob%40example.com;cause=408>;\
index=1.3;mp=1.2 index=1.3;mp=1.2
History-Info: <sip:vm@192.0.2.6;\ History-Info: <sip:vm@192.0.2.6;\
target=sip:bob@example.com;cause=408>;\ target=sip:bob%40example.com;cause=408>;\
index=1.3.1;rc=1.3 index=1.3.1;rc=1.3
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F7 200 OK VM -> Example.com F7 200 OK VM -> Example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=3dweggs To: Bob <sip:bob@example.com>;tag=3dweggs
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1 History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4?Reason%3BSIP%3Dcause%3B408>;\ History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\
index=1.2.1;rc=1.2 index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;\ History-Info: <sip:vm@example.com;\
target=sip:bob@example.com;cause=408>;\ target=sip:bob%40example.com;cause=408>;\
index=1.3;mp=1.2 index=1.3;mp=1.2
History-Info: <sip:vm@192.0.2.6;\ History-Info: <sip:vm@192.0.2.6;\
target=sip:bob@example.com;cause=408>;\ target=sip:bob%40example.com;cause=408>;\
index=1.3.1;rc=1.3 index=1.3.1;rc=1.3
Contact: <sip:carol@example.com> Contact: <sip:carol@example.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
B.2. Consumer Voicemail example call flow B.2. Consumer Voicemail example call flow
In this example, Alice calls the Bob but Bob has temporarily In this example, Alice calls the Bob but Bob has temporarily
forwarded his phone to Carol because she is his wife. Carol does not forwarded his phone to Carol because she is his wife. Carol does not
answer the call, thus it is forwarded to a VM (voicemail) server answer the call, thus it is forwarded to a VM (voicemail) server
(VMS). In order to determine the appropriate mailbox to use for this (VMS). In order to determine the appropriate mailbox to use for this
call, the VMS needs the appropriate target for the request. The last call, the VMS needs the appropriate target for the request. The last
skipping to change at page 45, line 34 skipping to change at page 45, line 34
arrived at the VMS. arrived at the VMS.
Alice example.com Bob Carol VM Alice example.com Bob Carol VM
| INVITE F1 | | | | | INVITE F1 | | | |
|------------->| | | | |------------->| | | |
| | INVITE F2 | | | | | INVITE F2 | | |
| |------------->| | | | |------------->| | |
| | | | | | | | | |
| 100 Trying | | | | | 100 Trying | | | |
|<-------------| 302 Moved Temporarily F3 | | |<-------------| 302 Moved Temporarily F3 | |
| |<-------------| | | | |<-------------| | |
| | | | | | | | | |
| | INVITE F4 | | | | | INVITE F4 | | |
| |--------------------------->| | | |--------------------------->| |
| | | | | | | | | |
| | 180 Ringing F5 | | | | 180 Ringing F5 | |
| |<---------------------------| | | |<---------------------------| |
| | | | | | | | | |
| 180 Ringing | | | | | 180 Ringing | | | |
|<-------------| | | | |<-------------| | | |
skipping to change at page 46, line 18 skipping to change at page 46, line 18
| 200 OK | | | | | 200 OK | | | |
|<-------------| | | | |<-------------| | | |
| | | | | | | | | |
| ACK | | | | | ACK | | | |
|------------->| ACK | |------------->| ACK |
| |-------------------------------------->| | |-------------------------------------->|
F1 INVITE Alice -> Example.com F1 INVITE Alice -> Example.com
INVITE sip:bob@example.com INVITE sip:bob@example.com
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F2 INVITE Example.com -> Bob F2 INVITE Example.com -> Bob
INVITE sip:bob@192.0.2.5 SIP/2.0 INVITE sip:bob@192.0.2.5 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=as2334se Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12se
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1 History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F3 302 Moved Temporarily Bob -> Example.com F3 302 Moved Temporarily Bob -> Example.com
SIP/2.0 302 Moved Temporarily SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5>; index=1.1;rc=1 History-Info: <sip:bob@192.0.2.5>;index=1.1;rc=1
Contact: <sip:carol@example.com> Contact: <sip:carol@example.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F4 INVITE Example.com -> Carol F4 INVITE Example.com -> Carol
INVITE sip:carol@192.0.2.4 SIP/2.0 INVITE sip:carol@192.0.2.4 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=as2334se Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12se
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1 History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F5 180 Ringing Carol -> Example.com F5 180 Ringing Carol -> Example.com
SIP/2.0 180 Ringing SIP/2.0 180 Ringing
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=setss3x To: Bob <sip:bob@example.com>;tag=setss3x
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;index=1.2;mp=1 History-Info: <sip:carol@example.com>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
Contact: <sip:carol@example.com> Contact: <sip:carol@example.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F6 INVITE Example.com -> VM F6 INVITE Example.com -> VM
INVITE sip:vm0192.0.2.6;target=sip:carol@example.com INVITE sip:vm0192.0.2.6;target=sip:carol%40example.com
Via: SIP/2.0/TCP proxy.example.com:5060;branch=as2334se Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12se
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc index=1.1;rc
History-Info: <sip:carol@example.com?Reason%3BSIP%3Dcause%3B408>;\ History-Info: <sip:carol@example.com?Reason=SIP%3Bcause%3D408>;\
index=1.2;mp=1 index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;target=sip:carol@example.com>;\ History-Info: <sip:vm@example.com;target=sip:carol%40example.com>;\
index=1.3;mp=1.2 index=1.3;mp=1.2
History-Info: <sip:vm@192.0.2.5;\target=sip:carol@example.com>;\ History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com>;\
index=1.3.1 index=1.3.1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F7 200 OK VM -> Example.com F7 200 OK VM -> Example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=232sxxeserg Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=3dweggs To: Bob <sip:bob@example.com>;tag=3dweggs
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.5?Reason%3BSIP%3Dcause%3B302>;\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc index=1.1;rc
History-Info: <sip:carol@example.com?Reason%3BSIP%3Dcause%3B408>;\ History-Info: <sip:carol@example.com?Reason=SIP%3Bcause%3D408>;\
index=1.2;mp=1 index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4>;index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;target=sip:carol@example.com>;\ History-Info: <sip:vm@example.com;target=sip:carol%40example.com>;\
index=1.3;mp=1.2 index=1.3;mp=1.2
History-Info: <sip:vm@192.0.2.5;\target=sip:carol@example.com>;\ History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com>;\
index=1.3.1 index=1.3.1
Contact: <sip:carol@example.com> Contact: <sip:carol@example.com>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate vlue> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
The VMS can look at the last hi-entry and find the target of the The VMS can look at the last hi-entry and find the target of the
mailbox by looking for the "target" URI parameter in the hi-entry. mailbox by looking for the "target" URI parameter in the hi-entry.
B.3. Sequentially Forking (History-Info in Response) B.3. Sequentially Forking (History-Info in Response)
This scenario highlights an example where the History-Info in the This scenario highlights an example where the History-Info in the
response is useful to an application or user that originated the response is useful to an application or user that originated the
skipping to change at page 51, line 9 skipping to change at page 51, line 9
| 486 Busy Here F12 | | 486 Busy Here F12 |
|<-----------| ACK F13 | |<-----------| ACK F13 |
| |----------------------------------->| | |----------------------------------->|
| ACK F14 | | | ACK F14 | |
|----------->| | |----------->| |
Message Details Message Details
F1 INVITE alice -> example.com F1 INVITE alice -> example.com
INVITE sip:bob@example.com SIP/2.0 INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F2 INVITE example.com -> Bob F2 INVITE example.com -> Bob
INVITE sip:bob@192.0.2.4 SIP/2.0 INVITE sip:bob@192.0.2.4 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
Record-Route: <sip:proxy.example.com;lr> Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4>;index=1.1;rc=1 History-Info: <sip:bob@192.0.2.4>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F3 100 Trying example.com -> alice F3 100 Trying example.com -> alice
SIP/2.0 100 Trying SIP/2.0 100 Trying
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F4 302 Moved Temporarily Bob -> example.com F4 302 Moved Temporarily Bob -> example.com
SIP/2.0 302 Moved Temporarily SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.example.com:5060 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=3 To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
Record-Route: <sip:proxy.example.com;lr> Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4>;index=1.1;rc=1 History-Info: <sip:bob@192.0.2.4>;index=1.1;rc=1
Contact: <sip:office@example.com>;mp=1 Contact: <sip:office@example.com>;mp=1
Content-Length: 0 Content-Length: 0
F5 ACK 192.0.2.4 -> Bob F5 ACK example.com -> Bob
ACK sip:bob@example.com SIP/2.0 ACK sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
F6 INVITE example.com -> office F6 INVITE example.com -> office
INVITE sip:office@192.0.2.5 SIP/2.0 INVITE sip:office@192.0.2.5 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=2 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr> Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1 History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2 History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F7 180 Ringing office -> example.com F7 180 Ringing office -> example.com
SIP/2.0 180 Ringing SIP/2.0 180 Ringing
Via: SIP/2.0/TCP proxy.example.com:5060;branch=2 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=5 To: Bob <sip:bob@example.com>;tag=53rdds
Supported: histinfo Supported: histinfo
Call-ID: 12345600@example.com Call-ID: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr> Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1 History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2 History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F8 180 Ringing example.com -> alice F8 180 Ringing example.com -> alice
SIP/2.0 180 Ringing SIP/2.0 180 Ringing
Via: SIP/2.0/TCP example.com:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>;tag=53rdds
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1 History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2 History-Info: <sip:office@192.0.2.5>;index=1.2.1;rc=1.2
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F9 INVITE example.com -> home F9 INVITE example.com -> home
INVITE sip:home@192.0.2.6 SIP/2.0 INVITE sip:home@192.0.2.6 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr> Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1 History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\ History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
index=1.2.1>;index=1.2.1;rc=1.2 index=1.2.1>;index=1.2.1;rc=1.2
skipping to change at page 54, line 31 skipping to change at page 54, line 31
History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3 History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3
CSeq: 1 INVITE CSeq: 1 INVITE
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F10 100 Trying home -> example.com F10 100 Trying home -> example.com
SIP/2.0 100 Trying SIP/2.0 100 Trying
Via: SIP/2.0/TCP proxy.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F11 486 Busy Here home -> example.com F11 486 Busy Here home -> example.com
SIP/2.0 486 Busy Here SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP proxy.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>;tag=53rdds
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
Record-Route: <sip:proxy.example.com;lr> Record-Route: <sip:proxy.example.com;lr>
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1 History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\ History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
index=1.2.1>;index=1.2.1;rc=1.2 index=1.2.1>;index=1.2.1;rc=1.2
History-Info: <sip:home@example.com>;index=1.3;mp=1 History-Info: <sip:home@example.com>;index=1.3;mp=1
History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3 History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F12 486 Busy Here example.com -> alice F12 486 Busy Here example.com -> alice
SIP/2.0 486 Busy Here SIP/2.0 486 Busy Here
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
History-Info: <sip:bob@example.com>;index=1 History-Info: <sip:bob@example.com>;index=1
History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.2.4?Reason=SIP%3Bcause%3D302>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:office@example.com>;index=1.2;mp=1 History-Info: <sip:office@example.com>;index=1.2;mp=1
History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\ History-Info: <sip:office@192.0.2.5?Reason=SIP%3Bcause%3D408>;\
index=1.2.1>;index=1.2.1;rc=1.2 index=1.2.1>;index=1.2.1;rc=1.2
History-Info: <sip:home@example.com>;index=1.3;mp=1 History-Info: <sip:home@example.com>;index=1.3;mp=1
History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3 History-Info: <sip:home@192.0.2.6>;index=1.3.1;rc=1.3
CSeq: 1 INVITE CSeq: 1 INVITE
Content-Length: 0 Content-Length: 0
F13 ACK example.com -> home F13 ACK example.com -> home
ACK sip:home@192.0.2.6 SIP/2.0 ACK sip:home@192.0.2.6 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds>;
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
CSeq: 1 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
F14 ACK alice -> example.com F14 ACK alice -> example.com
ACK sip:bob@example.com SIP/2.0 ACK sip:bob@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bKbst2
From: Alice <sip:alice@example.com> From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com> To: Bob <sip:bob@example.com>
Call-Id: 12345600@example.com Call-Id: 12345600@example.com
Route: <sip:proxy.example.com;lr> Route: <sip:proxy.example.com;lr>
CSeq: 1 ACK CSeq: 1 ACK
Content-Length: 0 Content-Length: 0
B.4. History-Info with Privacy Header Field B.4. History-Info with Privacy Header Field
This example provides a basic call scenario without forking. Alice This example provides a basic call scenario without forking. Alice
has indicated that she wants Privacy associated with the History-Info has indicated that she wants Privacy associated with the History-Info
skipping to change at page 57, line 37 skipping to change at page 57, line 37
| |--------------->| ACK | | |--------------->| ACK |
| | |--------------->| | | |--------------->|
Figure 2: Example with Privacy Header Fields Figure 2: Example with Privacy Header Fields
Message Details Message Details
F1 INVITE alice -> atlanta.example.com F1 INVITE alice -> atlanta.example.com
INVITE sip:bob@biloxi.example.com;p=x SIP/2.0 INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo Supported: histinfo
Privacy: History Privacy: History
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F2 INVITE atlanta.example.com -> biloxi.example.com F2 INVITE atlanta.example.com -> biloxi.example.com
INVITE sip:bob@biloxi.example.com;p=x SIP/2.0 INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>;index=1 History-Info: <sip:anonymous@anonymous.invalid>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F3 INVITE biloxi.example.com -> Bob F3 INVITE biloxi.example.com -> Bob
INVITE sip:bob@192.0.1.11 SIP/2.0 INVITE sip:bob@192.0.1.11 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=5 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKtg3s
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>;index=1 History-Info: <sip:anonymous@anonymous.invalid>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1 History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F4 200 OK Bob -> biloxi.example.com F4 200 OK Bob -> biloxi.example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=5 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKtg3s
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33 To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>;index=1 History-Info: <sip:anonymous@anonymous.invalid>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1 History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11> Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F5 200 OK biloxi.example.com -> atlanta.example.com F5 200 OK biloxi.example.com -> atlanta.example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33 To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>;index=1 History-Info: <sip:anonymous@anonymous.invalid>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>>;index=1.1.1;rc=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11> Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F6 200 OK atlanta.example.com -> Alice
SIP/2.0 200 OK F6 200 OK atlanta.example.com -> Alice
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1
From: Alice <sip:alice@atlanta.example.com>;tag=22 SIP/2.0 200 OK
To: Bob <sip:bob@biloxi.example.com>;tag=33 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Supported: histinfo From: Alice <sip:alice@atlanta.example.com>;tag=22
Call-Id: 12345600@atlanta.example.com To: Bob <sip:bob@biloxi.example.com>;tag=33
CSeq: 1 INVITE Supported: histinfo
History-Info: <sip:anonymous@anonymous.invalid>;index=1 Call-Id: 12345600@atlanta.example.com
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 CSeq: 1 INVITE
History-Info: <sip:anonymous@anonymous.invalid>>;index=1.1.1;rc=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1
Contact: Bob <sip:bob@192.0.1.11> History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
Content-Type: application/sdp History-Info: <sip:anonymous@anonymous.invalidtarget userindex=1.1.1;rc=1.1
Content-Length: <appropriate value> Contact: Bob <sip:bob@192.0.1.11>
<!-- SDP Not Shown --> Content-Type: application/sdp
Content-Length: <appropriate value>
<!-- SDP Not Shown -->
B.5. Privacy for a Specific History-Info Entry B.5. Privacy for a Specific History-Info Entry
This example provides a basic call scenario similar to Appendix B.4, This example provides a basic call scenario similar to Appendix B.4,
however, due to local policy at sip:biloxi.example.com, only the however, due to local policy at sip:biloxi.example.com, only the
final hi-entry in the History-Info, which is Bob's local URI, final hi-entry in the History-Info, which is Bob's local URI,
contains a privacy header field with a priv-value of "history", thus contains a privacy header field with a priv-value of "history", thus
providing Alice with some information about the history of the providing Alice with some information about the history of the
request, but anonymizing Bob's local URI. request, but anonymizing Bob's local URI.
skipping to change at page 61, line 37 skipping to change at page 61, line 37
| |--------------->| ACK | | |--------------->| ACK |
| | |--------------->| | | |--------------->|
Figure 3: Example with Privacy Header Field for Specific URI Figure 3: Example with Privacy Header Field for Specific URI
Message Details Message Details
F1 INVITE alice -> atlanta.example.com F1 INVITE alice -> atlanta.example.com
INVITE sip:bob@biloxi.example.com;p=x SIP/2.0 INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F2 INVITE atlanta.example.com -> biloxi.example.com F2 INVITE atlanta.example.com -> biloxi.example.com
INVITE sip:bob@biloxi.example.com;p=x SIP/2.0 INVITE sip:bob@biloxi.example.com;p=x SIP/2.0
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F3 INVITE biloxi.example.com -> Bob F3 INVITE biloxi.example.com -> Bob
INVITE sip:bob@192.0.1.11 SIP/2.0 INVITE sip:bob@192.0.1.11 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=5 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKeset
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com> To: Bob <sip:bob@biloxi.example.com>
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1 History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F4 200 OK Bob -> biloxi.example.com F4 200 OK Bob -> biloxi.example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=5 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKeset
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33 To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1 History-Info: <sip:bob@192.0.1.11?Privacy=history>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11> Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F5 200 OK biloxi.example.com -> atlanta.example.com F5 200 OK biloxi.example.com -> atlanta.example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=3 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33 To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>>;index=1.1.1;rc=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11> Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
F6 200 OK atlanta.example.com -> Alice F6 200 OK atlanta.example.com -> Alice
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=1 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@atlanta.example.com>;tag=22 From: Alice <sip:alice@atlanta.example.com>;tag=22
To: Bob <sip:bob@biloxi.example.com>;tag=33 To: Bob <sip:bob@biloxi.example.com>;tag=33
Supported: histinfo Supported: histinfo
Call-Id: 12345600@atlanta.example.com Call-Id: 12345600@atlanta.example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1
History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>>;index=1.1.1;rc=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1.1
Contact: Bob <sip:bob@192.0.1.11> Contact: Bob <sip:bob@192.0.1.11>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> <!-- SDP Not Shown -->
Authors' Addresses Authors' Addresses
Mary Barnes Mary Barnes
Polycom Polycom
TX TX
 End of changes. 102 change blocks. 
161 lines changed or deleted 162 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/