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/ |