draft-ietf-sipcore-rfc4244bis-callflows-08.txt   rfc7131.txt 
SIPCORE M. Barnes Internet Engineering Task Force (IETF) M. Barnes
Internet-Draft Polycom Request for Comments: 7131
Intended status: Informational F. Audet Category: Informational F. Audet
Expires: May 12, 2014 Skype ISSN: 2070-1721 Skype
S. Schubert S. Schubert
NTT NTT
H. van Elburg H. van Elburg
Detecon International Gmbh Detecon International Gmbh
C. Holmberg C. Holmberg
Ericsson Ericsson
Nov 08, 2013 March 2014
Session Initiation Protocol (SIP) History-Info Header Call Flow Examples Session Initiation Protocol (SIP) History-Info Header Call Flow Examples
draft-ietf-sipcore-rfc4244bis-callflows-08.txt
Abstract Abstract
This document describes use cases and documents call flows which This document describes use cases and documents call flows that
require the History-Info header field to capture the Request-URIs as require the History-Info header field to capture the Request-URIs as
a Session Initiation Protocol (SIP) Request is retargeted. The use a Session Initiation Protocol (SIP) Request is retargeted. The use
cases are described along with the corresponding call flow diagrams cases are described along with the corresponding call flow diagrams
and messaging details. and messaging details.
Status of this Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering This document is not an Internet Standards Track specification; it is
Task Force (IETF). Note that other groups may also distribute published for informational purposes.
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are a candidate for any level of Internet
Standard; see Section 2 of RFC 5741.
This Internet-Draft will expire on May 12, 2014. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc7131.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2014 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
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Overview ........................................................2
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3 2. Conventions and Terminology .....................................3
3. Detailed call flows . . . . . . . . . . . . . . . . . . . . . 3 3. Detailed Call Flows .............................................3
3.1. Sequentially Forking (History-Info in Response) . . . . . 3 3.1. Sequentially Forking (History-Info in Response) ............3
3.2. History-Info with Privacy Header Field . . . . . . . . . . 11 3.2. History-Info with Privacy Header Field ....................11
3.3. Privacy for a Specific History-Info Entry . . . . . . . . 16 3.3. Privacy for a Specific History-Info Entry .................16
3.4. Automatic Call Distribution . . . . . . . . . . . . . . . 20 3.4. Automatic Call Distribution ...............................20
3.5. Determining the Alias used. . . . . . . . . . . . . . . . 25 3.5. Determining the Alias Used ................................27
3.6. PBX Voicemail Example . . . . . . . . . . . . . . . . . . 28 3.6. PBX Voicemail Example .....................................29
3.7. Consumer Voicemail Example . . . . . . . . . . . . . . . . 33 3.7. Consumer Voicemail Example ................................35
3.8. GRUU . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.8. GRUU ......................................................41
3.9. Limited Use Address . . . . . . . . . . . . . . . . . . . 40 3.9. Limited-Use Address .......................................44
3.10. Service Invocation . . . . . . . . . . . . . . . . . . . . 43 3.10. Service Invocation .......................................47
3.11. Toll Free Number . . . . . . . . . . . . . . . . . . . . . 43 3.11. Toll-Free Number .........................................48
4. Security Considerations . . . . . . . . . . . . . . . . . . . 45 4. Security Considerations ........................................51
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 5. Acknowledgements ...............................................51
5.1. Acknowledgements . . . . . . . . . . . . . . . . . . . . . 46 6. Informative References .........................................51
6. Informative References . . . . . . . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 47
1. Overview 1. Overview
Many services that use SIP require the ability to determine why and Many services that use SIP require the ability to determine why and
how the call arrived at a specific application. The use cases how the call arrived at a specific application. The use cases
provided in this document illustrate the use of the History-Info provided in this document illustrate the use of the History-Info
header [I-D.ietf-sipcore-rfc4244bis] for example applications and header [RFC7044], for example, applications and common scenarios.
common scenarios. The optional "rc" and "mp" header field parameters The optional "rc" and "mp" header field parameters defined in
defined in [I-D.ietf-sipcore-rfc4244bis] are required for several of [RFC7044] are required for several of the use cases. Descriptions of
the use cases. Descriptions of the example use cases, call flow the example use cases, call flow diagrams, and messaging details are
diagrams and messaging details are provided. provided.
2. Conventions and Terminology 2. Conventions and Terminology
The term "retarget" is used as defined in The term "retarget" is used as defined in [RFC7044]. The terms
[I-D.ietf-sipcore-rfc4244bis]. The terms "location service", "location service", "redirect", and "address-of-record (AOR)" are
"redirect" and "address-of-record (AOR)" are used consistent with the used consistent with the terminology in [RFC3261].
terminology in [RFC3261].
3. Detailed call flows 3. Detailed 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 for informational purposes only. They are not History-Info header for informational purposes only. They are not
intended to be normative. In many cases, only the relevant messaging intended to be normative. In many cases, only the relevant messaging
details are included in the body of the call flow. details are included in the body of the call flow.
3.1. Sequentially Forking (History-Info in Response) 3.1. 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
request. request.
Alice sends a call to Bob via sip:example.com. The proxy sip: Alice sends a call to Bob via sip:example.com. The proxy
example.com sequentially tries Bob on a SIP UA that has bound a sip:example.com sequentially tries Bob on a SIP User Agent (UA) that
contact with the sip:bob@example.com AOR, and then several alternate has bound a contact with the sip:bob@example.com AOR, and then
addresses (Office and Home) unsuccessfully before sending a response several alternate addresses (Office and Home) unsuccessfully before
to Alice. The hi-entry containing the initial contact is the hi- sending a response to Alice. The hi-entry containing the initial
entry just prior to the first hi-entry tagged with an "rc" header contact is the hi-entry just prior to the first hi-entry tagged with
field parameter. In this example, the Office and Home are not the an "rc" header field parameter. In this example, the Office and Home
same AOR as sip:bob@example.com, but rather different AORs that have are not the same AOR as sip:bob@example.com, but rather different
been configured as alternate addresses for Bob in the proxy. In AORs that have been configured as alternate addresses for Bob in the
other words, Office and Home are not bound through SIP Registration proxy. In other words, Office and Home are not bound through SIP
with Bob's AOR. This type of arrangement is common for example when Registration with Bob's AOR. This type of arrangement is common, for
a "routing" rule to a PSTN number is manually configured in a proxy. example, when a "routing" rule to a Public Switched Telephone Network
These hi-entries are identified by the index contained in the hi- (PSTN) number is manually configured in a proxy. These hi-entries
target-param "mp" header field parameter in the hi-entries. are identified by the index contained in the hi-target-param "mp"
header field parameter in the hi-entries.
This scenario illustrates that by providing the History-Info to This scenario illustrates that by providing the History-Info to
Alice, the end-user or an application at Alice could make a decision Alice, the end-user, or an application at Alice could make a decision
on how best to attempt finding Bob without sending multiple requests on how best to attempt finding Bob without sending multiple requests
to the same destination. Upon receipt of the response containing the to the same destination. Upon receipt of the response containing the
History-Info entries, the Request URIs for the History-Info entries History-Info entries, the Request-URIs for the History-Info entries
tagged with "mp" header field parameter are extracted. Those tagged with an "mp" header field parameter are extracted. Those
Request-URIs can be compared to other URIs (if any) that might be Request-URIs can be compared to other URIs (if any) that might be
attempted in order to establish the session with Bob. This results in attempted in order to establish the session with Bob. This results
avoiding the sending of another INVITE to Bob's home phone. Without in avoiding the sending of another INVITE to Bob's home phone.
this mechanism, Alice might well attempt to reach Bob at his office Without this mechanism, Alice might well attempt to reach Bob at his
phone, which would then retarget the request to Bob's home phone. office phone, which would then retarget the request to Bob's home
When that attempt failed, then Alice might attempt to reach Bob phone. When that attempt failed, then Alice might attempt to reach
directly at his home phone, unknowingly for a third time. Bob directly at his home phone, unknowingly for a third time.
Alice example.com Bob Office Home Alice example.com Bob Office Home
| | | | | | | | | |
| INVITE F1 | | | | | INVITE F1 | | | |
|----------->| INVITE F2 | | | |----------->| INVITE F2 | | |
| |----------------->| | | | |----------------->| | |
| 100 Trying F3 | | | | 100 Trying F3 | | |
|<-----------| 302 Move Temporarily F4 | | |<-----------| 302 Move Temporarily F4 | |
| |<-----------------| | | | |<-----------------| | |
skipping to change at page 5, line 7 skipping to change at page 5, line 7
| 486 Busy Here F12 | | 486 Busy Here F12 |
|<-----------| ACK F13 | |<-----------| ACK F13 |
| |----------------------------------->| | |----------------------------------->|
| ACK F14 | | | ACK F14 | |
|----------->| | |----------->| |
Figure 1: Example with Sequential Forking Figure 1: Example with Sequential Forking
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;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds 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;branch=z9hG4bKx3st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=sr3dds 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 -->
F3 100 Trying example.com -> alice [SDP Not Shown]
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;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds 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
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;branch=z9hG4bKx3st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=es43sd To: Bob <sip:bob@example.com>;tag=es43sd
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.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 example.com -> 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;branch=z9hG4bKx3st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx3st
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=es43sd To: Bob <sip:bob@example.com>;tag=es43sd
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=z9hG4bKx4st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx4st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=sr3dds 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=z9hG4bKx4st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx4st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=53rdds 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
Contact: Office <sip:office@192.0.2.5> Contact: Office <sip:office@192.0.2.5>
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 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=53rdds 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
Contact: Office <sip:office@192.0.2.5> Contact: Office <sip:office@192.0.2.5>
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=z9hG4bKx5st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=sr3dds 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?Reason=SIP%3Bcause%3D408>;\ History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
index=1.2;mp=1 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;rc=1.2 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
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=z9hG4bKx5st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds 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=z9hG4bKx5st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds To: Bob <sip:bob@example.com>;tag=55rdds
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?Reason=SIP%3Bcause%3D408>;\ History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
index=1.2;mp=1 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;rc=1.2 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;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds To: Bob <sip:bob@example.com>;tag=55rdds
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?Reason=SIP%3Bcause%3D408>;\ History-Info: <sip:office@example.com?Reason=SIP%3Bcause%3D408>;\
index=1.2;mp=1 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;rc=1.2 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;branch=z9hG4bKx5st Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKx5st
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds To: Bob <sip:bob@example.com>;tag=55rdds
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;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=sr3dds From: Alice <sip:alice@example.com>;tag=sr3dds
To: Bob <sip:bob@example.com>;tag=55rdds To: Bob <sip:bob@example.com>;tag=55rdds
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
3.2. History-Info with Privacy Header Field 3.2. History-Info with Privacy Header Field
This is an example of the use of the Privacy header field with a This is an example of the use of the Privacy header field with a
value of "history" added by an intermediary. The intermediary value of "history" added by an intermediary. The intermediary
responsible for the biloxi.example.com domain adds a Privacy header responsible for the biloxi.example.com domain adds a Privacy header
field with a value of "history" indicating that all the History-Info field with a value of "history" indicating that all the History-Info
skipping to change at page 12, line 7 skipping to change at page 12, line 7
|<------------| | | | |<------------| | | |
| | | | | | | | | |
| | 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=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70 Max-Forwards: 70
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=z9hG4bKbst2 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69 Max-Forwards: 69
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 History-Info: <sip:bob@biloxi.example.com;p=x>;index=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]
F3 INVITE biloxi.example.com -> Bob Work F3 INVITE biloxi.example.com -> Bob Work
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=z9hG4bKgs33 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.3 received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68 Max-Forwards: 68
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>
Privacy: history Privacy: history
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 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11>;index=1.1.1;rc=1.1 History-Info: <sip:bob@192.0.1.11>;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 -->
F4 302 Moved Temporarily Bob Work -> biloxi.example.com [SDP Not Shown]
F4 302 Moved Temporarily Bob Work -> biloxi.example.com
SIP/2.0 302 Moved Temporarily SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33;\ Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33;\
received=192.0.2.102 received=192.0.2.102
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.3 received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 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=11 To: Bob <sip:bob@biloxi.example.com>;tag=11
Privacy: history Privacy: history
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 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11>;index=1.1.1;rc=1.1 History-Info: <sip:bob@192.0.1.11>;index=1.1.1;rc=1.1
Contact: Bob Home <sip:bob@192.0.1.15> Contact: Bob Home <sip:bob@192.0.1.15>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown --> [SDP Not Shown]
F5 ACK biloxi.example.com -> Bob Work F5 ACK biloxi.example.com -> Bob Work
ACK sip:bob@192.0.1.11 SIP/2.0 ACK sip:bob@192.0.1.11 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs33
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.3 received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68 Max-Forwards: 68
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=11 To: Bob <sip:bob@biloxi.example.com>;tag=11
Call-Id: 12345600@atlanta.example.com Call-ID: 12345600@atlanta.example.com
CSeq: 1 ACK CSeq: 1 ACK
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown -->
[SDP Not Shown]
F6 INVITE biloxi.example.com -> Bob Home F6 INVITE biloxi.example.com -> Bob Home
INVITE sip:bob@192.0.1.15 SIP/2.0 INVITE sip:bob@192.0.1.15 SIP/2.0
Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs32 Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs32
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.3 received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68 Max-Forwards: 68
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>
Privacy: history Privacy: history
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 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.1.11?Reason=SIP%3Bcause%3D302>;\
index=1.1.1;rc=1 index=1.1.1;rc=1
History-Info: <sip:bob@192.0.1.15>;index=1.1.2 History-Info: <sip:bob@192.0.1.15>;index=1.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 value> Content-Length: <appropriate value>
<!-- SDP Not Shown -->
[SDP Not Shown]
F7 200 OK Bob -> biloxi.example.com F7 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=z9hG4bKgs32;\ Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKgs32;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.3 received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 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
Privacy: history Privacy: history
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 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1
History-Info: <sip:bob@192.0.1.11?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:bob@192.0.1.11?Reason=SIP%3Bcause%3D302>;\
index=1.1.1;rc=1 index=1.1.1;rc=1
History-Info: <sip:bob@192.0.1.15>;index=1.1.2;rc=1.1 History-Info: <sip:bob@192.0.1.15>;index=1.1.2;rc=1.1
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
<!-- SDP Not Shown -->
[SDP Not Shown]
F8 200 OK biloxi.example.com -> atlanta.example.com F8 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=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.3 received=192.0.2.3
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 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
Privacy: history Privacy: history
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:anonymous@anonymous.invalid>;index=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.2;rc=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.2;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]
F9 200 OK atlanta.example.com -> Alice F9 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=z9hG4bK4321 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
Privacy: history Privacy: history
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:anonymous@anonymous.invalid>;index=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.1;rc=1
History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.2;rc=1.1 History-Info: <sip:anonymous@anonymous.invalid>;index=1.1.2;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]
3.3. Privacy for a Specific History-Info Entry 3.3. Privacy for a Specific History-Info Entry
This example provides a basic call scenario similar to Section 3.2, This example provides a basic call scenario similar to Section 3.2;
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.
Alice atlanta.example.com biloxi.example.com Bob Alice atlanta.example.com biloxi.example.com Bob
| | | | | | | |
| INVITE F1 | | | | INVITE F1 | | |
|--------------->| | | |--------------->| | |
skipping to change at page 17, line 33 skipping to change at page 17, line 33
|<---------------| | | |<---------------| | |
| | | | | | | |
| | 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=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 70 Max-Forwards: 70
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=z9hG4bKbst2 Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 69 Max-Forwards: 69
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;np=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=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=z9hG4bKeset Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKeset
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321
Max-Forwards: 68 Max-Forwards: 68
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;np=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=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=z9hG4bKeset;\ Via: SIP/2.0/TCP proxy.biloxi.example.com:5060;branch=z9hG4bKeset;\
received=192.0.2.5 received=192.0.2.5
Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 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;np=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=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=z9hG4bKbst2;\ Via: SIP/2.0/TCP proxy.atlanta.example.com:5060;branch=z9hG4bKbst2;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK4321 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;np=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=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=z9hG4bK4321 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;np=1 History-Info: <sip:bob@biloxi.example.com;p=x>;index=1.1;np=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]
3.4. Automatic Call Distribution 3.4. Automatic Call Distribution
This scenario highlights an example of an Automatic Call Distribution This scenario highlights an example of an Automatic Call Distribution
service, where the agents are divided into groups based upon the type service, where the agents are divided into groups based upon the type
of customers they handle. In this example, the Gold customers are of customers they handle. In this example, the Gold customers are
given higher priority than Silver customers, so a Gold call would get given higher priority than Silver customers, so a Gold call would get
serviced even if all the agents servicing the Gold group were busy, serviced even if all the agents servicing the Gold group were busy,
by retargeting the request to the Silver Group for delivery to an by retargeting the request to the Silver Group for delivery to an
agent. Upon receipt of the call at the agent assigned to handle the agent. Upon receipt of the call at the agent assigned to handle the
incoming call, based upon the History-Info header in the message, 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 application at the agent can provide an indication that this is a
Gold call by extracting the hi-entry associated with the incoming Gold call by extracting the hi-entry associated with the incoming
request which is determined by locating the hi-entry whose index is request, which is determined by locating the hi-entry whose index is
reflected in the first hi-entry with an hi-target of "mp". In the reflected in the first hi-entry with a hi-target of "mp". In the
example this would be the hi-entry referenced by the value of the example, this would be the hi-entry referenced by the value of the
first "mp" header field parameter -i.e., the hi-entry containing an first "mp" header field parameter, i.e., the hi-entry containing an
index of "1". An application can also determine how many groups from index of "1". An application can also determine how many groups from
which the call may have overflowed before reaching the agent, etc. which the call may have overflowed before reaching the agent, etc.,
and present the information to the agent so that the call can be and present the information to the agent so that the call can be
handled appropriately by the agent - i.e., "I'm so sorry for the handled appropriately, i.e., "I'm so sorry for the delay, blah, blah,
delay, blah, blah, blah..." blah..."
For scenarios whereby calls might overflow from the Silver to the For scenarios whereby calls might overflow from the Silver to the
Gold, clearly the alternate group identification, internal routing, Gold, clearly the alternate group identification, internal routing,
or actual agent that handles the call should not be sent to UA1. 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 Thus, for this scenario, one would expect that the proxy would not
support the sending of the History-Info in the response, even if support the sending of the History-Info in the response, even if
requested by Alice or the proxy could anonymize the Silver related requested by Alice or the proxy could anonymize the Silver related
hi-entries by adding privacy in the Silver hi-entries. hi-entries by adding privacy in the Silver hi-entries.
As with the other examples, this is not a complete prescription of As with the other examples, this is not a complete prescription of
how one would do this type of service but an example of a subset 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 processing that might be associated with such a service. In
addition, this example is not addressing any aspects of Agent addition, this example does not address any aspects of agent
availability resulting in the call being sent to an agent in another availability resulting in the call being sent to an agent in another
group, which might also be done via a SIP interface. group, which might also be done via a SIP interface.
Alice example.com Gold Silver Agent Alice example.com Gold Silver Agent
| | | | | | | | | |
| INVITE F1 | | | | | INVITE F1 | | | |
|------------->| | | | |------------->| | | |
| | | | | | | | | |
| | INVITE F2 | | | | | INVITE F2 | | |
skipping to change at page 21, line 45 skipping to change at page 21, line 45
| | | | | | | | | |
| | 200 OK F7 | | | | 200 OK F7 | |
| |<---------------------------| | | |<---------------------------| |
| | | | | | | | | |
| 200 OK F8 | | | | | 200 OK F8 | | | |
|<-------------| | | | |<-------------| | | |
| | | | | | | | | |
| ACK F9 | | ACK F9 |
|------------------------------------------------------->| |------------------------------------------------------->|
F1 INVITE Alice -> Example.com Figure 4: Example for Automatic Call Distribution
Message Details
F1 INVITE Alice -> example.com
INVITE sip:Gold@example.com SIP/2.0 INVITE sip:Gold@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com> To: Gold Member Assistance <sip:Gold@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:Gold@example.com>;index=1 History-Info: <sip:Gold@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 -> Gold.Example.com F2 INVITE example.com -> Gold.example.com
INVITE sip:Gold@gold.example.com SIP/2.0 INVITE sip:Gold@gold.example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com> To: Gold Member Assistance <sip:Gold@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:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com>;rc=1;index=1.1 History-Info: <sip:Gold@gold.example.com>;rc=1;index=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]
F3 302 Moved Temporarily Gold.example.com -> example.com
F3 302 Moved Temporarily Gold.Example.com -> Example.com
SIP/2.0 302 Moved Temporarily SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=kkaz- To: Gold Member Assistance <sip:Gold@example.com>;tag=kkaz-
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com>;rc=1;index=1.1 History-Info: <sip:Gold@gold.example.com>;rc=1;index=1.1
Contact: <sip:Silver@example.com>;mp=1 Contact: <sip:Silver@example.com>;mp=1
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F4 INVITE Example.com -> Silver.Example.com F4 INVITE example.com -> Silver.example.com
INVITE sip:Silver@example.com SIP/2.0 INVITE sip:Silver@example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com> To: Gold Member Assistance <sip:Gold@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:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
rc=1;index=1.1 rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1 History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2 History-Info: <sip:Silver@silver.example.com>;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 value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F5 INVITE Silver.example.com -> Agent
F5 INVITE Silver.Example.com -> Agent
INVITE sip:Silver@192.0.2.7 SIP/2.0 INVITE sip:Silver@192.0.2.7 SIP/2.0
Via: SIP/2.0/TCP silver.example.com:5060;branch=z9hG4bKerxs Via: SIP/2.0/TCP silver.example.com:5060;branch=z9hG4bKerxs
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 68 Max-Forwards: 68
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com> To: Gold Member Assistance <sip:Gold@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:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
rc=1;index=1.1 rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1 History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2 History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1 History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.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]
F6 200 OK Agent -> Silver.example.com
F6 200 OK Agent -> Silver.Example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP silver.example.com:5060;branch=z9hG4bKerxs;\ Via: SIP/2.0/TCP silver.example.com:5060;branch=z9hG4bKerxs;\
received=192.0.2.5 received=192.0.2.5
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325 To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
rc=1;index=1.1 rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1 History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2 History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1 History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Agent <sip:Silver@192.0.2.7> Contact: Agent <sip:Silver@192.0.2.7>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F7 200 OK Silver.Example.com -> Example.com F7 200 OK Silver.example.com -> example.com
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK45q2;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325 To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
rc=1;index=1.1 rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1 History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2 History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1 History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Agent <sip:Silver@192.0.2.7> Contact: Agent <sip:Silver@192.0.2.7>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F8 200 OK example.com -> Alice
F8 200 OK Example.com -> Alice
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325 To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:Gold@example.com>;index=1 History-Info: <sip:Gold@example.com>;index=1
History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\ History-Info: <sip:Gold@gold.example.com?Reason=SIP%3Bcause%3D302>;\
rc=1;index=1.1 rc=1;index=1.1
History-Info: <sip:Silver@example.com>;index=1.2;mp=1 History-Info: <sip:Silver@example.com>;index=1.2;mp=1
History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2 History-Info: <sip:Silver@silver.example.com>;index=1.2.1;rc=1.2
History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1 History-Info: <sip:Silver@192.0.2.7>;index=1.2.1.1;rc=1.2.1
Contact: Agent <sip:Silver@192.0.2.7> Contact: Agent <sip:Silver@192.0.2.7>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
skipping to change at page 25, line 31 skipping to change at page 26, line 33
[SDP Not Shown] [SDP Not Shown]
F9 ACK Alice -> Agent F9 ACK Alice -> Agent
ACK sip:Silver@192.0.2.7 SIP/2.0 ACK sip:Silver@192.0.2.7 SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t3 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t3
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=1235 From: Alice <sip:alice@example.com>;tag=1235
To: Gold Member Assistance <sip:Gold@example.com>;tag=2325 To: Gold Member Assistance <sip:Gold@example.com>;tag=2325
Supported: histinfo Supported: histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 ACK CSeq: 1 ACK
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]
Figure 4: Example for Automatic Call Distribution The first hi-entry with the "mp" header field parameter contains an
"mp" header field parameter value of 1, which points to the original-
The first hi-entry with the "mp" header field parameter contains a target, which allows the operator to identify that the call was from
"mp" header field parameter value of 1 which points to the original- the Gold customer.
target which allows the operator to identify that the call was from
the "Gold" customer.
3.5. Determining the Alias used. 3.5. Determining the Alias Used
SIP user agents are associated with an address-of-record (AOR). It SIP UAs are associated with an AOR. It is possible for a single UA
is possible for a single UA to actually have multiple AORs associated to actually have multiple AORs associated with it. One common usage
with it. One common usage for this is aliases. For example, a user for this is aliases. For example, a user might have an AOR of
might have an AOR of sip:john@example.com but also have the AORs sip:john@example.com but also have the AORs
sip:john.smith@example.com and sip:jsmith@example.com. Rather than sip:john.smith@example.com and sip:jsmith@example.com. Rather than
registering against each of these AORs individually, the user would registering against each of these AORs individually, the user would
register against just one of them, and the home proxy would register against just one of them, and the home proxy would
automatically accept incoming calls for any of the aliases, treating automatically accept incoming calls for any of the aliases, treating
them identically and ultimately forwarding them towards the UA. This them identically and ultimately forwarding them towards the UA. This
is common practice in the Internet Multimedia Subsystem (IMS), where is common practice in the IP Multimedia Subsystem (IMS), where it is
it is called implicit registration and each alias is called a public called "implicit registration" and each alias is called a "public
user identity (PUID). user identity (PUID)".
It is a common requirement for a UAS, on receipt of a call, to know It is a common requirement for a User Agent Server (UAS), on receipt
which of its aliases was used to reach it. This knowledge can be of a call, to know which of its aliases was used to reach it. This
used to choose ringtones to play, determine call treatment, and so knowledge can be used to choose ringtones to play, determine call
on. For example, a user might give out one alias to friends and treatment, and so on. For example, a user might give out one alias
family only, resulting in a special ring that alerts the user to the to friends and family only, resulting in a special ring that alerts
importance of the call. the user to the importance of the call.
The following call-flow and example messages show how History-Info The following call flow and example messages show how History-Info
can be used to find out the alias used to reach the callee. The can be used to find out the alias used to reach the callee. The
alias for the call is determined by hi-entry with the index that alias for the call is determined by hi-entry with the index that
matches the value of the last hi-entry with a "rc" header field matches the value of the last hi-entry with an "rc" header field
parameter in the Request received. parameter in the Request received.
Alice Example.com John Alice example.com John
| | REGISTER F1 | | | REGISTER F1 |
| |<--------------------| | |<--------------------|
| | 200 OK F2 | | | 200 OK F2 |
| |-------------------->| | |-------------------->|
| INVITE F3 | | | INVITE F3 | |
|-------------------->| | |-------------------->| |
| | INVITE F4 | | | INVITE F4 |
| |-------------------->| | |-------------------->|
* Rest of flow not shown * * Rest of flow not shown *
F1 REGISTER John -> Example.com Figure 5: Alias Example
Message Details
F1 REGISTER John -> example.com
REGISTER sip:example.com SIP/2.0 REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7 Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7
Max-Forwardss: 70 Max-Forwards: 70
From: John <sip:john@example.com>;tag=a73kszlfl From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com> To: John <sip:john@example.com>
Supported: histinfo Supported: histinfo
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1 Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1> Contact: <sip:john@192.0.2.1>
Content-Length: 0 Content-Length: 0
F2 200 OK Example.com -> John
F2 200 OK example.com -> John
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7 Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7
From: John <sip:john@example.com>;tag=a73kszlfl From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com>;tag=d2dstee2 To: John <sip:john@example.com>;tag=d2dstee2
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1 Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;expires=3600 Contact: <sip:john@192.0.2.1>;expires=3600
Content-Length: 0 Content-Length: 0
F3 INVITE Alice -> Example.com F3 INVITE Alice -> example.com
INVITE sip:john.smith@example.com SIP/2.0 INVITE sip:john.smith@example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwardss: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=a73kszlfl From: Alice <sip:alice@example.com>;tag=a73kszlfl
To: John <sip:john.smith@example.com> To: John <sip:john.smith@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:john.smith@example.com>;index=1 History-Info: <sip:john.smith@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]
F4 INVITE example.com -> John
F4 INVITE Example.com -> John
INVITE sip:john@192.0.2.1 SIP/2.0 INVITE sip:john@192.0.2.1 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwardss: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=a73kszlfl From: Alice <sip:alice@example.com>;tag=a73kszlfl
To: John <sip:john.smith@example.com> To: John <sip:john.smith@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:john.smith@example.com>;index=1 History-Info: <sip:john.smith@example.com>;index=1
History-Info: <sip:john@192.0.2.1>;index=1.1;rc=1 History-Info: <sip:john@192.0.2.1>;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]
Figure 5: Alias Example
The last hi-entry with the "rc" header field parameter references the The last hi-entry with the "rc" header field parameter references the
source of retargeting pointing at the alias AoR, which in the example source of retargeting pointing at the alias AOR, which in the example
is "john.smith@example.com". is "john.smith@example.com".
3.6. PBX Voicemail Example 3.6. PBX Voicemail Example
A typical use case for voicemail is one whereby the original called A typical use case for voicemail is one whereby the original called
party is not reachable and the call arrives at a voicemail system. party is not reachable and the call arrives at a voicemail system.
In some cases multiple alternate destinations may be tried without In some cases, multiple alternate destinations may be tried without
success. The voicemail system typically requires the original called success. The voicemail system typically requires the original called
party information to determine the appropriate mailbox so an 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.
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" or "mp" and using the hi-entry referenced hi-entry tagged with "rc" or "mp" and using the hi-entry referenced
by the index of "rc" or "mp" header field parameter as the target for by the index of "rc" or "mp" header field parameter as the target for
determining the appropriate mailbox. This hi-entry is used to determining the appropriate mailbox. This hi-entry is used to
populate the "target" URI parameter as defined in [RFC4458]. The populate the "target" URI parameter as defined in [RFC4458]. The
reason associated with the first hi-entry tagged with "rc" or "mp" reason associated with the first hi-entry tagged with "rc" or "mp"
(i.e., 302) could be used to provide a customized voicemail greeting (i.e., 302) could be used to provide a customized voicemail greeting
and is used to populate the "cause" URI parameter as defined in and is used to populate the "cause" URI parameter as defined in
[RFC4458]. Note that some VMSs may also (or instead) use the [RFC4458]. Note that some VMSs may also (or instead) use the
information available in the History-Info headers for custom handling information available in the History-Info headers for custom handling
of the VM based on how and why the call arrived at the VMS. of the VM based on how and why the call arrived at the VMS.
Furthermore it is the proxy forwarding the call to VMS that Furthermore, it is the proxy forwarding the call to the VMS that
determines the target of the voicemail, it is the proxy that sets the determines the target of the voicemail; it is the proxy that sets the
target of voicemail which is also the entity that utilizes target of voicemail, which is also the entity that utilizes [RFC7044]
[I-D.ietf-sipcore-rfc4244bis] to find the target which is usually to find the target that is usually based on local policy installed by
based on local policy installed by the user or an administrator. 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 | |
skipping to change at page 29, line 30 skipping to change at page 30, line 49
| |-------------------------------------->| | |-------------------------------------->|
| | | | | | | | | |
| | 200 OK F7 | | | 200 OK F7 |
| |<--------------------------------------| | |<--------------------------------------|
| 200 OK | | | | | 200 OK | | | |
|<-------------| | | | |<-------------| | | |
| | | | | | | | | |
| ACK | | ACK |
|----------------------------------------------------->| |----------------------------------------------------->|
F1 INVITE Alice -> Example.com Figure 6: Enterprise Voicemail Example
Message Details
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;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70 Max-Forwards: 70
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
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=z9hG4bK12s4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
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 value> 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 proxy.example.com:5060;branch=z9hG4bK12s4;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=2g22d-lnf To: Bob <sip:bob@example.com>;tag=2g22d-lnf
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>;mp=1 Contact: <sip:carol@example.com>;mp=1
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> 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=z9hG4bK4522 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4522
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
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=SIP%3Bcause%3D302>;\ 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;cause=480>;index=1.2;mp=1 History-Info: <sip:carol@example.com;cause=480>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4;cause=480>;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 value> 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 proxy.example.com:5060;branch=z9hG4bK4522;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4522;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
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=SIP%3Bcause%3D302>;\ 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;cause=480>;index=1.2;mp=1 History-Info: <sip:carol@example.com;cause=480>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480>;index=1.2.1;rc=1.2 History-Info: <sip:carol@192.0.2.4;cause=480>;index=1.2.1;rc=1.2
Contact: <sip:carol@192.0.2.4> Contact: <sip:carol@192.0.2.4>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F6 INVITE example.com -> VM
F6 INVITE Example.com -> VM
INVITE sip:vm@192.0.2.6;target=sip:bob%40example.com;cause=480\ INVITE sip:vm@192.0.2.6;target=sip:bob%40example.com;cause=480\
SIP/2.0 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4523 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4523
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
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=SIP%3Bcause%3D302>;\ 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;cause=480?Reason=SIP%3Bcause%3D\ History-Info: <sip:carol@example.com;cause=480?Reason=SIP%3Bcause%3D\
408>;index=1.2;mp=1 408>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D\ History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D\
408>;index=1.2.1;rc=1.2 408>;index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;\ History-Info: <sip:vm@example.com;\
target=sip:bob%40example.com;cause=480>;\ target=sip:bob%40example.com;cause=480>;\
index=1.3;mp=1 index=1.3;mp=1
History-Info: <sip:vm@192.0.2.6;\ History-Info: <sip:vm@192.0.2.6;\
target=sip:bob%40example.com;cause=480>;\ target=sip:bob%40example.com;cause=480>;\
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
skipping to change at page 32, line 18 skipping to change at page 35, line 4
target=sip:bob%40example.com;cause=480>;\ target=sip:bob%40example.com;cause=480>;\
index=1.3;mp=1 index=1.3;mp=1
History-Info: <sip:vm@192.0.2.6;\ History-Info: <sip:vm@192.0.2.6;\
target=sip:bob%40example.com;cause=480>;\ target=sip:bob%40example.com;cause=480>;\
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 value> 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 proxy.example.com:5060;branch=z9hG4bK4523;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK4523;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
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=SIP%3Bcause%3D302>;\ 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;cause=480?Reason=SIP%3Bcause%3D\ History-Info: <sip:carol@example.com;cause=480?Reason=SIP%3Bcause%3D\
408>;index=1.2;mp=1 408>;index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D\ History-Info: <sip:carol@192.0.2.4;cause=480?Reason=SIP%3Bcause%3D\
408>;index=1.2.1;rc=1.2 408>;index=1.2.1;rc=1.2
History-Info: <sip:vm@example.com;\ History-Info: <sip:vm@example.com;\
target=sip:bob%40example.com;cause=480>;\ target=sip:bob%40example.com;cause=480>;\
index=1.3;mp=1 index=1.3;mp=1
History-Info: <sip:vm@192.0.2.6;\ History-Info: <sip:vm@192.0.2.6;\
target=sip:bob%40example.com;cause=480>;\ target=sip:bob%40example.com;cause=480>;\
index=1.3.1;rc=1.3 index=1.3.1;rc=1.3
Contact: <sip:vm@192.0.2.6> Contact: <sip:vm@192.0.2.6>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
Figure 6: Enterprise Voivemail Example
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 at the URI entry in the "target" URI parameter in mailbox by looking at the URI entry in the "target" URI parameter in
the hi-entry. the hi-entry.
3.7. Consumer Voicemail Example 3.7. Consumer Voicemail Example
In the case of a consumer, when the call is retargeted, it is usually In the case of a consumer, when the call is retargeted, it is usually
to another administrative domain. The voicemail system in these to another administrative domain. The voicemail system in these
environment typically requires the last called party information to environments typically requires the last-called-party information to
determine the appropriate mailbox so an appropriate greeting can be determine the appropriate mailbox so an appropriate greeting can be
provided and the appropriate party notified of the message. provided and the appropriate party notified of the message.
In this example, Alice calls the Bob but Bob has temporarily In this example, Alice calls Bob, but Bob has temporarily forwarded
forwarded his phone to Carol because she is his wife. Carol does not his phone to Carol (she is his wife). Carol does not answer the
answer the call, thus it is forwarded to a VM (voicemail) server call; thus, it is forwarded to a VMS. In order to determine the
(VMS). In order to determine the appropriate mailbox to use for this appropriate mailbox to use for this call, the VMS needs the
call, the VMS needs the appropriate target for the request. The last appropriate target for the request. The last target is determined by
target is determined by finding the hi-entry referenced by the index finding the hi-entry referenced by the index of last hi-entry tagged
of last hi-entry tagged with "mp" for determining the appropriate with "mp" for determining the appropriate mailbox. This hi-entry is
mailbox. This hi-entry is used to populate the "target" URI used to populate the "target" URI parameter as defined in [RFC4458].
parameter as defined in [RFC4458]. Note that some VMSs may also (or Note that some VMSs may also (or instead) use the information
instead) use the information available in the History-Info headers available in the History-Info headers for custom handling of the VM
for custom handling of the VM in terms of how and why the called in terms of how and why the called 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 | |
skipping to change at page 34, line 18 skipping to change at page 36, line 46
| |-------------------------------------->| | |-------------------------------------->|
| | | | | | | | | |
| | 200 OK F7 | | | 200 OK F7 |
| |<--------------------------------------| | |<--------------------------------------|
| 200 OK | | | | | 200 OK | | | |
|<-------------| | | | |<-------------| | | |
| | | | | | | | | |
| ACK | | ACK |
|----------------------------------------------------->| |----------------------------------------------------->|
F1 INVITE Alice -> Example.com Figure 7: Consumer Voicemail Example
Message Details
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;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70 Max-Forwards: 70
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
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=z9hG4bK12s4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
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 value> 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 proxy.example.com:5060;branch=z9hG4bK12s4;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: Bob <sip:bob@example.com>;tag=224ls3s-t To: Bob <sip:bob@example.com>;tag=224ls3s-t
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>;mp=1 Contact: <sip:carol@example.com>;mp=1
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> 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=z9hG4bK24s5 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK24s5
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
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=SIP%3Bcause%3D302\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
%3Btext%3D%22Moved%20Temporarily%22>\ %3Btext%3D%22Moved%20Temporarily%22>\
;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 value> 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 proxy.example.com:5060;branch=z9hG4bK24s5;\ Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK24s5;\
received=192.0.2.101 received=192.0.2.101
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
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=SIP%3Bcause%3D302\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
%3Btext%3D%22Moved%20Temporarily%22>;\ %3Btext%3D%22Moved%20Temporarily%22>;\
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@192.0.2.4> Contact: <sip:carol@192.0.2.4>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F6 INVITE example.com -> VM
F6 INVITE Example.com -> VM
INVITE sip:vm@192.0.2.6;target=sip:carol%40example.com SIP/2.0 INVITE sip:vm@192.0.2.6;target=sip:carol%40example.com SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKbbg4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKbbg4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
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=SIP%3Bcause%3D302\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
%3Btext%3D%22Moved%20Temporarily%22>;\ %3Btext%3D%22Moved%20Temporarily%22>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;\ History-Info: <sip:carol@example.com>;\
index=1.2;mp=1 index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\ 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;target=sip:carol%40example.com;\ History-Info: <sip:vm@example.com;target=sip:carol%40example.com;\
cause=408>;index=1.2.2;mp=1.2 cause=408>;index=1.2.2;mp=1.2
History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com;\ History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com;\
cause=408>;index=1.2.2.1;rc=1.2.2 cause=408>;index=1.2.2.1;rc=1.2.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 value> 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 proxy.example.com:5060;branch=z9hG4bKbbg4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bKbbg4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
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=SIP%3Bcause%3D302\ History-Info: <sip:bob@192.0.2.5?Reason=SIP%3Bcause%3D302\
%3Btext%3D%22Moved%20Temporarily%22>;\ %3Btext%3D%22Moved%20Temporarily%22>;\
index=1.1;rc=1 index=1.1;rc=1
History-Info: <sip:carol@example.com>;\ History-Info: <sip:carol@example.com>;\
index=1.2;mp=1 index=1.2;mp=1
History-Info: <sip:carol@192.0.2.4?Reason=SIP%3Bcause%3D408>;\ 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;target=sip:carol%40example.com;\ History-Info: <sip:vm@example.com;target=sip:carol%40example.com;\
cause=408>;index=1.2.2;mp=1.2 cause=408>;index=1.2.2;mp=1.2
History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com;\ History-Info: <sip:vm@192.0.2.5;target=sip:carol%40example.com;\
cause=408>;index=1.2.2.1;rc=1.2.2 cause=408>;index=1.2.2.1;rc=1.2.2
Contact: <sip:carol@192.0.2.5> Contact: <sip:carol@192.0.2.5>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
Figure 7: Consumer Voivemail Example
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 and mailbox by looking for the "target" URI parameter in the hi-entry and
the reason by the "cause" URI parameter in the same hi-entry. the reason by the "cause" URI parameter in the same hi-entry.
3.8. GRUU 3.8. GRUU
A variation on the problem in Section 3.5 occurs with Globally A variation on the problem in Section 3.5 occurs with Globally
Routable User Agent URI (GRUU) [RFC5627]. A GRUU is a URI assigned Routable User Agent URI (GRUU) [RFC5627]. A GRUU is a URI assigned
to a UA instance which has many of the same properties as the AOR, to a UA instance that has many of the same properties as the AOR but
but causes requests to be routed only to that specific instance. It causes requests to be routed only to that specific instance. It is
is desirable for a UA to know whether it was reached because a desirable for a UA to know whether it was reached because a
correspondent sent a request to its GRUU or to its AOR. This can be correspondent sent a request to its GRUU or to its AOR. This can be
used to drive differing authorization policies on whether the request used to drive differing authorization policies on whether the request
should be accepted or rejected, for example. However, like the AOR should be accepted or rejected, for example. However, like the AOR
itself, the GRUU is lost in translation at the home proxy. Thus, the itself, the GRUU is lost in translation at the home proxy. Thus, the
UAS cannot know whether it was contacted via the GRUU or its AOR. UAS cannot know whether it was contacted via the GRUU or its AOR.
Following call-flow and example messages show how History-Info can be The following call flow and example messages show how History-Info
used to find out the GRUU used to reach the callee. can be used to find out the GRUU used to reach the callee.
While a GRUU is comprised of an AoR with a URI parameter as defined While a GRUU is comprised of an AOR with a URI parameter, as defined
in [RFC5627] , the GRUU construct itself is not an AoR. Thus, the in [RFC5627], the GRUU construct itself is not an AOR. Thus, the
retargeting of a request based on a GRUU does not result in the retargeting of a request based on a GRUU does not result in the
addition of an "rc" header field parameter to the hi-entry containing addition of an "rc" header field parameter to the hi-entry containing
the GRUU. The lack of an "rc" header field parameter in the hi- the GRUU. The lack of an "rc" header field parameter in the hi-
entries can be a hint that the source of retargeting is a GRUU. entries can be a hint that the source of retargeting is a GRUU.
However, to ensure this is the case, the UAS needs to search for a However, to ensure this is the case, the UAS needs to search for a
"gr" parameter in the hi-entry prior to the last hi-entry. If there "gr" parameter in the hi-entry prior to the last hi-entry. If there
is a GRUU, the URI will always be prior to the last hi-entry as GRUU is a GRUU, the URI will always be prior to the last hi-entry as the
does not allow multiple instance to be mapped to a contact address. GRUU does not allow multiple instance to be mapped to a contact
address.
Alice Example.com John Alice example.com John
| | REGISTER F1 | | | REGISTER F1 |
| |<--------------------| | |<--------------------|
| | 200 OK F2 | | | 200 OK F2 |
| |-------------------->| | |-------------------->|
| INVITE F3 | | | INVITE F3 | |
|-------------------->| | |-------------------->| |
| | INVITE F4 | | | INVITE F4 |
| |-------------------->| | |-------------------->|
* Rest of flow not shown * * Rest of flow not shown *
F1 REGISTER John -> Example.com Figure 8: GRUU Example
Message Details
F1 REGISTER John -> example.com
REGISTER sip:example.com SIP/2.0 REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7 Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7
Max-Forwardss: 70 Max-Forwards: 70
From: John <sip:John@example.com>;tag=a73kszlfl From: John <sip:John@example.com>;tag=a73kszlfl
Supported: gruu Supported: gruu
To: John <sip:john@example.com> To: John <sip:john@example.com>
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1 Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;+sip.instance=\ Contact: <sip:john@192.0.2.1>;+sip.instance=\
<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6> <urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>
Content-Length: 0 Content-Length: 0
[SDP Not Shown] [SDP Not Shown]
F2 200 OK example.com -> John
F2 200 OK Example.com -> John
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7 Via: SIP/2.0/TCP 192.0.2.1;branch=z9hG4bKnashds7
From: John <sip:john@example.com>;tag=a73kszlfl From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com> ;tag=b88sn To: John <sip:john@example.com> ;tag=b88sn
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1 Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;\ Contact: <sip:john@192.0.2.1>;\
pub-gruu="sip:john@example.com;\ pub-gruu="sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\ gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\
temp-gruu=\ temp-gruu=\
"sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;\ "sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;\
gr";+sip.instance=\ gr";+sip.instance=\
"<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>";\ "<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>";\
expires=3600 expires=3600
Content-Length: 0 Content-Length: 0
[SDP Not Shown] [SDP Not Shown]
Assuming Alice has a knowledge of a gruu either through Assuming Alice has knowledge of a GRUU either through
prior communication or through other means such as presence prior communication or through other means such as presence
places a call to John's gruu. places a call to John's GRUU.
F3 INVITE Alice -> Example.com F3 INVITE Alice -> example.com
INVITE sip:john@example.com;\ INVITE sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 SIP/2.0 gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 SIP/2.0
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:john@example.com;\ To: <sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6> gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>
Supported: gruu, histinfo Supported: gruu, histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: <sip:john@example.com;\ History-Info: <sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>;index=1 gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>;index=1
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]
F4 INVITE example.com -> John
F4 INVITE Example.com -> John
INVITE sip:john@192.0.2.1 SIP/2.0 INVITE sip:john@192.0.2.1 SIP/2.0
Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4 Via: SIP/2.0/TCP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/TCP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:john@example.com;\ To: <sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6> gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>
Supported: gruu, histinfo Supported: gruu, 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:john@example.com;\ History-Info: <sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>;index=1 gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>;index=1
History-Info: <sip:john@192.0.2.1>;index=1.1;rc=1 History-Info: <sip:john@192.0.2.1>;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]
Figure 8: GRUU Example
By analyzing the entry referenced by the entry with the last "rc", By analyzing the entry referenced by the entry with the last "rc",
one can realize that the URI used to reach the device was GRUU by one can realize that the URI used to reach the device was GRUU by
finding the "gr" parameter. finding the "gr" parameter.
3.9. Limited Use Address 3.9. Limited-Use Address
A limited use address is a SIP URI that is minted on-demand, and A limited-use address is a SIP URI that is minted on-demand, and
passed out to a small number (usually one) remote correspondent. passed out to a small number (usually one) of remote correspondents.
Incoming calls targeted to that limited use address are accepted as Incoming calls targeted to that limited-use address are accepted as
long as the UA still desires communications from the remote target. long as the UA still desires communications from the remote target.
Should they no longer wish to be bothered by that remote Should they no longer wish to be bothered by that remote
correspondent, the URI is invalidated so that future requests correspondent, the URI is invalidated so that future requests
targeted to it are rejected. targeted to it are rejected.
Limited use addresses are used in battling voice spam [RFC5039]. The Limited-use addresses are used in battling voice spam [RFC5039]. The
easiest way to provide them would be for a UA to be able to take its easiest way to provide them would be for a UA to be able to take its
AOR, and "mint" a limited use address by appending additional AOR and "mint" a limited-use address by appending additional
parameters to the URI. It could then give out the URI to a parameters to the URI. It could then give out the URI to a
particular correspondent, and remember that URI locally. When an particular correspondent and remember that URI locally. When an
incoming call arrives, the UAS would examine the parameter in the URI incoming call arrives, the UAS would examine the parameter in the URI
and determine whether or not the call should be accepted. and determine whether or not the call should be accepted.
Alternatively, the UA could push authorization rules into the Alternatively, the UA could push authorization rules into the
network, so that it need not even see incoming requests that are to network, so that it need not even see incoming requests that are to
be rejected. be rejected.
This approach, especially when executed on the UA, requires that This approach, especially when executed on the UA, requires that
parameters attached to the AOR, but not used by the home proxy in parameters attached to the AOR, but not used by the home proxy in
processing the request, will survive the translation at the home processing the request, survive the translation at the home proxy and
proxy and be presented to the UA. This will not be the case with the be presented to the UA. This will not be the case with the logic in
logic in RFC 3261, since the Request-URI is replaced by the RFC 3261, since the Request-URI is replaced by the registered
registered contact, and any such parameters are lost. contact, and any such parameters are lost.
Using the history-info John's UA can easily see if the call was Using the History-Info, John's UA can easily see if the call was
addressed to its AoR, GRUU or a temp-gruu and treat the call addressed to its AOR, GRUU, or a temp-GRUU and treat the call
accordingly by looking for a "gr" tag in the hi-entry prior to the accordingly by looking for a "gr" tag in the hi-entry prior to the
last hi-entry. last hi-entry.
Alice Example.com John Alice example.com John
| | REGISTER F1 | | | REGISTER F1 |
| |<--------------------| | |<--------------------|
| | 200 OK F2 | | | 200 OK F2 |
| |-------------------->| | |-------------------->|
| INVITE F3 | | | INVITE F3 | |
|-------------------->| | |-------------------->| |
| | INVITE F4 | | | INVITE F4 |
| |-------------------->| | |-------------------->|
* Rest of flow not shown * * Rest of flow not shown *
F1 REGISTER John -> Example.com Figure 9: Limited-Use Address Example
Message Details
F1 REGISTER John -> example.com
REGISTER sip:example.com SIP/2.0 REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7 Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7
Max-Forwardss: 70 Max-Forwards: 70
From: John <sip:John@example.com>;tag=a73kszlfl From: John <sip:John@example.com>;tag=a73kszlfl
Supported: gruu Supported: gruu
To: John <sip:john@example.com> To: John <sip:john@example.com>
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1 Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;\ Contact: <sip:john@192.0.2.1>;\
+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>" +sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>"
Content-Length: 0 Content-Length: 0
F2 200 OK example.com -> John
F2 200 OK Example.com -> John
SIP/2.0 200 OK SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7 Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bKnashds7
From: John <sip:john@example.com>;tag=a73kszlfl From: John <sip:john@example.com>;tag=a73kszlfl
To: John <sip:john@example.com> ;tag=b88sn To: John <sip:john@example.com> ;tag=b88sn
Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1 Call-ID: 1j9FpLxk3uxtm8tn@192.0.2.1
CSeq: 1 REGISTER CSeq: 1 REGISTER
Contact: <sip:john@192.0.2.1>;\ Contact: <sip:john@192.0.2.1>;\
pub-gruu="sip:john@example.com;\ pub-gruu="sip:john@example.com;\
gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\ gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\
temp-gruu=\ temp-gruu=\
"sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr";\ "sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr";\
+sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>";\ +sip.instance="<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>";\
expires=3600 expires=3600
Content-Length: 0 Content-Length: 0
Assuming Alice has a knowledge of a temp-gruu, she places a
call to the temp-gruu.
F3 INVITE Alice -> Example.com Assuming Alice has knowledge of a temp-GRUU, she places a
call to the temp-GRUU.
F3 INVITE Alice -> example.com
INVITE sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;\ INVITE sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;\
gr SIP/2.0 gr SIP/2.0
Via: SIP/2.0/UDP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/UDP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 70 Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com\ To: <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com\
;gr> ;gr>
Supported: gruu, histinfo Supported: gruu, histinfo
Call-Id: 12345600@example.com Call-ID: 12345600@example.com
CSeq: 1 INVITE CSeq: 1 INVITE
History-Info: \ History-Info: \
<sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr>\ <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr>\
;index=1 ;index=1
Contact: Alice <sip:alice@192.0.2.3> Contact: Alice <sip:alice@192.0.2.3>
Content-Length: <appropriate value> Content-Length: <appropriate value>
F4 INVITE example.com -> John
F4 INVITE Example.com -> John
INVITE sip:john@192.0.2.1 SIP/2.0 INVITE sip:john@192.0.2.1 SIP/2.0
Via: SIP/2.0/UDP proxy.example.com:5060;branch=z9hG4bK12s4 Via: SIP/2.0/UDP proxy.example.com:5060;branch=z9hG4bK12s4
Via: SIP/2.0/UDP 192.0.2.3:5060;branch=z9hG4bK42t2 Via: SIP/2.0/UDP 192.0.2.3:5060;branch=z9hG4bK42t2
Max-Forwards: 69 Max-Forwards: 69
From: Alice <sip:alice@example.com>;tag=kkaz- From: Alice <sip:alice@example.com>;tag=kkaz-
To: <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com\ To: <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com\
;gr> ;gr>
Supported: gruu, histinfo Supported: gruu, 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: \ History-Info: \
<sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr>\ <sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@example.com;gr>\
;index=1 ;index=1
History-Info: <sip:john@192.0.2.1>;index=1.1;rc=1 History-Info: <sip:john@192.0.2.1>;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>
Figure 9: Limited Use Address Example
By analyzing the entry referenced by the entry with the last "rc", By analyzing the entry referenced by the entry with the last "rc",
one can realize that the URI used to reach the device was GRUU by one can realize that the URI used to reach the device was GRUU by
finding the "gr" parameter. finding the "gr" parameter.
3.10. Service Invocation 3.10. Service Invocation
Several SIP specifications have been developed which make use of Several SIP specifications have been developed that make use of
complex URIs to address services within the network rather than complex URIs to address services within the network rather than
subscribers. The URIs are complex because they contain numerous subscribers. The URIs are complex because they contain numerous
parameters that control the behavior of the service. Examples of parameters that control the behavior of the service. Examples of
this include the specification which first introduced the concept, this include the specification that first introduced the concept,
[RFC3087], control of network announcements and IVR with SIP URI [RFC3087], control of network announcements and Interactive Voice
[RFC4240], and control of voicemail access with SIP URI [RFC4458]. Response (IVR) with SIP URI [RFC4240], and control of voicemail
access with SIP URI [RFC4458].
A common problem with all of these mechanisms is that once a proxy A common problem with all of these mechanisms is that once a proxy
has decided to rewrite the Request-URI to point to the service, it has decided to rewrite the Request-URI to point to the service, it
cannot be sure that the Request-URI will not be destroyed by a cannot be sure that the Request-URI will not be destroyed by a
downstream proxy which decides to forward the request in some way, downstream proxy that decides to forward the request in some way, and
and does so by rewriting the Request-URI. does so by rewriting the Request-URI.
Section on voicemail (Section 3.6) shows how History-Info can be used Section 3.6 shows how History-Info can be used to invoke a service.
to invoke a service.
3.11. Toll Free Number 3.11. Toll-Free Number
Toll free numbers, also known as 800 or 8xx numbers in the United Toll-free numbers, also known in the United States as 800 or 8xx
States, are telephone numbers that are free for users to call. numbers, are telephone numbers that are free for users to call.
In the telephone network, toll free numbers are just aliases to In the telephone network, toll-free numbers are just aliases to
actual numbers which are used for routing of the call. In order to actual numbers that are used for routing of the call. In order to
process the call in the PSTN, a switch will perform a query (using a process the call in the PSTN, a switch will perform a query (using a
protocol called TCAP), which will return either a phone number or the protocol called Transaction Capabilities Application Part (TCAP)),
identity of a carrier which can handle the call. which will return either a phone number or the identity of a carrier
which can handle the call.
There has been recent work on allowing such PSTN translation services There has been recent work on allowing such PSTN translation services
to be accessed by SIP proxy servers through IP querying mechanisms. to be accessed by SIP proxy servers through IP querying mechanisms.
ENUM, for example [RFC6117] has already been proposed as a mechanism For example, ENUM [RFC6117] has already been proposed as a mechanism
for performing Local Number Portability (LNP) queries [RFC4769]. for performing Number Portability (NP) queries [RFC4769]. Using it
Using it for 8xx number translations is a logical next-step. for 8xx number translations is a logical next step.
The new target from translating the 8xx number may be in PSTN or in The new target from translating the 8xx number may be in the PSTN or
SIP netwrok. If the new target is an entity in the PSTN network, the in the SIP network. If the new target is an entity in the PSTN, the
proper treatment in the PSTN (and in particular, correct proper treatment in the PSTN (and in particular, correct
reconciliation of billing records) requires that the call be marked reconciliation of billing records) requires that the call be marked
with both the originating number (8xx number) and the new target with both the originating number (8xx number) and the new target
number, History-info would come in play here to assure original 8xx number, History-info would come in play here to assure original 8xx
number is not lost.. number is not lost.
Although not required to have both the originating number (8xx Although not required to have both the originating number (8xx
number) and the new target in the SIP network, enterprise or user who number) and the new target in the SIP network, an enterprise or user
utilize the 8xx service can benefit by knowing whether the call came who utilize the 8xx service can benefit by knowing whether the call
in via 8xx number in order to treat the call differently (for example came in via an 8xx number in order to treat the call differently (for
to play a special announcement..) but if the original R-URI is lost example, to play a special announcement), but if the original
through translation, there is no way to tell if the call came in via Request-URI is lost through translation, there is no way to tell if
8xx number. History-info again would come in play here. the call came in via 8xx number. History-Info again would come in
play here.
Similar problems arise with other "special" numbers and services used Similar problems arise with other "special" numbers and services used
in the PSTN, such as operator services, pay/premium numbers (9xx in the PSTN, such as operator services, pay/premium numbers (9xx
numbers in the U.S), and short service codes such as 311. numbers in the United States), and short service codes such as 311.
To find the service number, the UAS can extract the hi-entry whose To find the service number, the UAS can extract the hi-entry whose
index matches the value of the first hi-entry with an "mp" tag. index matches the value of the first hi-entry with an "mp" tag.
Technically the call can be forwarded to these "special" numbers from Technically, the call can be forwarded to these "special" numbers
non "special" numbers, however that is uncommon based on the way from non-special numbers; however, that is uncommon based on the way
these services authorize translations. these services authorize translations.
This example call-flow shows an UAC that does not support history- This example call flow shows a UAC that does not support History-
info. Info.
Alice Toll Free Service Atlanta.com John Alice Toll-Free Service Atlanta.com John
| | | | | | | |
| INVITE F1 | | | | INVITE F1 | | |
|--------------->| INVITE F2 | | |--------------->| INVITE F2 | |
| |------------->| | | |------------->| |
| | | INVITE F3 | | | | INVITE F3 |
| | |------------------>| | | |------------------>|
* Rest of flow not shown * * Rest of flow not shown *
F1: INVITE 192.0.2.1 -> Toll Free Service Figure 10: Service Number Example
Message Details
F1 INVITE 192.0.2.1 -> Toll-Free Service
INVITE sip:+18005551002@example.com;user=phone SIP/2.0 INVITE sip:+18005551002@example.com;user=phone SIP/2.0
Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf
From: Alice <sip:+15551001@example.com;user=phone>;tag=9fxced76sl From: Alice <sip:+15551001@example.com;user=phone>;tag=9fxced76sl
To: <sip:+18005551002@example.com;user=phone> To: <sip:+18005551002@example.com;user=phone>
Call-ID: c3x842276298220188511 Call-ID: c3x842276298220188511
CSeq: 1 INVITE CSeq: 1 INVITE
Max-Forwardss: 70 Max-Forwards: 70
Contact: <sip:alice@192.0.2.1> Contact: <sip:alice@192.0.2.1>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F2 INVITE Toll-Free Service -> Atlanta.com
F2: INVITE Toll Free Service -> Atlanta.com
INVITE sip:+15555551002@atlanta.com SIP/2.0 INVITE sip:+15555551002@atlanta.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.4:5060;branch=z9hG4bK-ik8 Via: SIP/2.0/TCP 192.0.2.4:5060;branch=z9hG4bK-ik8
Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf
From: Alice <sip:+15551001@example.com;user=phone>;tag=9fxced76sl From: Alice <sip:+15551001@example.com;user=phone>;tag=9fxced76sl
To: <sip:+18005551002@example.com;user=phone> To: <sip:+18005551002@example.com;user=phone>
Call-ID: c3x842276298220188511 Call-ID: c3x842276298220188511
CSeq: 1 INVITE CSeq: 1 INVITE
Max-Forwardss: 69 Max-Forwards: 69
Supported: histinfo Supported: histinfo
History-Info: <sip:+18005551002@example.com;user=phone>;index=1 History-Info: <sip:+18005551002@example.com;user=phone>;index=1
History-Info: <sip:+15555551002@atlanta.com>;index=1.1;mp=1 History-Info: <sip:+15555551002@atlanta.com>;index=1.1;mp=1
Contact: <sip:alice@192.0.2.1> Contact: <sip:alice@192.0.2.1>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
F3: INVITE Atlanta.com -> John F3 INVITE Atlanta.com -> John
INVITE sip:john@198.51.100.2 SIP/2.0 INVITE sip:john@198.51.100.2 SIP/2.0
Via: SIP/2.0/TCP 198.51.100.1:5060;branch=z9hG4bKpxk7g Via: SIP/2.0/TCP 198.51.100.1:5060;branch=z9hG4bKpxk7g
Via: SIP/2.0/TCP 192.0.2.4:5060;branch=z9hG4bK-ik8 Via: SIP/2.0/TCP 192.0.2.4:5060;branch=z9hG4bK-ik8
Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf Via: SIP/2.0/TCP 192.0.2.1:5060;branch=z9hG4bK74bf
From: Alice <sip:+15551001@example.com;user=phone>;tag=9fxced76sl From: Alice <sip:+15551001@example.com;user=phone>;tag=9fxced76sl
To: <sip:+18005551002@example.com;user=phone> To: <sip:+18005551002@example.com;user=phone>
Call-ID: c3x842276298220188511 Call-ID: c3x842276298220188511
CSeq: 1 INVITE CSeq: 1 INVITE
Max-Forwardss: 68 Max-Forwards: 68
Supported: histinfo Supported: histinfo
History-Info: <sip:+18005551002@example.com;user=phone>;index=1 History-Info: <sip:+18005551002@example.com;user=phone>;index=1
History-Info: <sip:+15555551002@atlanta.com>;index=1.1;mp=1 History-Info: <sip:+15555551002@atlanta.com>;index=1.1;mp=1
History-Info: <sip:john@atlanta.com>;index=1.1.1;rc=1.1 History-Info: <sip:john@atlanta.com>;index=1.1.1;rc=1.1
History-Info: <sip:john@198.51.100.2>;index=1.1.1.1;rc=1.1.1 History-Info: <sip:john@198.51.100.2>;index=1.1.1.1;rc=1.1.1
Contact: <sip:alice@192.0.2.1> Contact: <sip:alice@192.0.2.1>
Content-Type: application/sdp Content-Type: application/sdp
Content-Length: <appropriate value> Content-Length: <appropriate value>
[SDP Not Shown] [SDP Not Shown]
Figure 10: Service Number Example
4. Security Considerations 4. Security Considerations
The security considerations for the History-Info header field are The security considerations for the History-Info header field are
specified in [I-D.ietf-sipcore-rfc4244bis]. specified in [RFC7044].
5. IANA Considerations
This document has no IANA considerations.
5.1. Acknowledgements 5. Acknowledgements
Jonathan Rosenberg et al produced the document that provided Jonathan Rosenberg, et al produced the document that provided
additional use cases precipitating the requirement for the new additional use cases precipitating the requirement for the new
"target" parameter in the History-Info header field and the new SIP/ "target" parameter in the History-Info header field and the new SIP/
SIPS URI parameter. Hadriel Kaplan provided some comments. SIPS URI parameter. Hadriel Kaplan provided some comments.
Brett Tate, Roland Jesske, Laura Liess, Scott Godin, Dale Worley and Brett Tate, Roland Jesske, Laura Liess, Scott Godin, Dale Worley, and
Marianne Mohali provided extensive review and comments on call-flow, Marianne Mohali provided extensive review and comments on call flows,
message examples and text. message examples, and text.
6. Informative References 6. Informative References
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E. A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261, Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002. June 2002.
[RFC5627] Rosenberg, J., "Obtaining and Using Globally Routable User [RFC5627] Rosenberg, J., "Obtaining and Using Globally Routable User
Agent URIs (GRUUs) in the Session Initiation Protocol Agent URIs (GRUUs) in the Session Initiation Protocol
skipping to change at page 46, line 49 skipping to change at page 52, line 9
April 2006. April 2006.
[RFC6117] Hoeneisen, B., Mayrhofer, A., and J. Livingood, "IANA [RFC6117] Hoeneisen, B., Mayrhofer, A., and J. Livingood, "IANA
Registration of Enumservices: Guide, Template, and IANA Registration of Enumservices: Guide, Template, and IANA
Considerations", RFC 6117, March 2011. Considerations", RFC 6117, March 2011.
[RFC4769] Livingood, J. and R. Shockey, "IANA Registration for an [RFC4769] Livingood, J. and R. Shockey, "IANA Registration for an
Enumservice Containing Public Switched Telephone Network Enumservice Containing Public Switched Telephone Network
(PSTN) Signaling Information", RFC 4769, November 2006. (PSTN) Signaling Information", RFC 4769, November 2006.
[I-D.ietf-enum-cnam] [RFC7044] Barnes, M., Audet, F., Schubert, S., van Elburg, J., and
Shockey, R., "IANA Registration for an Enumservice Calling C. Holmberg, "An Extension to the Session Initiation
Name Delivery (CNAM) Information and IANA Registration for Protocol (SIP) for Request History Information", RFC 7044,
URI type 'pstndata'", draft-ietf-enum-cnam-08 (work in February 2014.
progress), September 2008.
[I-D.ietf-sipcore-rfc4244bis]
Barnes, M., Audet, F., Schubert, S., Elburg, H., and C.
Holmberg, "An Extension to the Session Initiation Protocol
(SIP) for Request History Information",
draft-ietf-sipcore-rfc4244bis-12 (work in progress),
October 2013.
Authors' Addresses Authors' Addresses
Mary Barnes Mary Barnes
Polycom
TX TX
US US
Email: mary.ietf.barnes@gmail.com EMail: mary.ietf.barnes@gmail.com
Francois Audet Francois Audet
Skype Skype
Email: francois.audet@skype.net EMail: francois.audet@skype.net
Shida Schubert Shida Schubert
NTT NTT
Tokyo Tokyo
Japan Japan
Email: shida@ntt-at.com EMail: shida@ntt-at.com
Hans Erik van Elburg Hans Erik van Elburg
Detecon International Gmbh Detecon International Gmbh
Oberkasseler str. 2 Oberkasseler str. 2
Bonn, Bonn
Germany Germany
Email: ietf.hanserik@gmail.com EMail: ietf.hanserik@gmail.com
Christer Holmberg Christer Holmberg
Ericsson Ericsson
Hirsalantie 11, Jorvas Hirsalantie 11, Jorvas
Finland Finland
Email: christer.holmberg@ericsson.com EMail: christer.holmberg@ericsson.com
 End of changes. 249 change blocks. 
410 lines changed or deleted 414 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/