Internet DRAFT - draft-worley-references
draft-worley-references
SIP D. R. Worley
Internet-Draft Avaya
Intended status: Experimental Protocol April 2, 2012
Expires: October 02, 2012
The References Header for SIP
draft-worley-references-08
Abstract
This document defines a SIP extension header, References, to be used
within SIP messages to signify that the message (and the dialog
containing it) is related to one or more other dialogs. It is
expected to be used largely for diagnostic purposes.
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
Task Force (IETF). Note that other groups may also distribute
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
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 02, 2012.
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (http://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License.
Table of Contents
1. Purpose of the References Header . . . . . . . . . . . . . . . 2
2. Syntax and Semantics . . . . . . . . . . . . . . . . . . . . . 3
3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. B2BUA . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Worley Expires October 02, 2012 [Page 1]
Internet-Draft SIP References header April 2012
3.2. REFER . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3. Attended Transfer . . . . . . . . . . . . . . . . . . . . 8
3.4. Call Pickup . . . . . . . . . . . . . . . . . . . . . . . 11
4. Practical Experience . . . . . . . . . . . . . . . . . . . . . 14
5. Related Work . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1. draft-loreto-sipping-dialog-correlation . . . . . . . . . 14
5.2. draft-kaplan-sip-session-id . . . . . . . . . . . . . . . 15
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16
7. Revision History . . . . . . . . . . . . . . . . . . . . . . . 17
7.1. Changes from draft-worley-references-07 to draft-worley-
references-08 . . . . . . . . . . . . . . . . . . . . . . 17
7.2. Changes from draft-worley-references-06 to draft-worley-
references-07 . . . . . . . . . . . . . . . . . . . . . . 17
7.3. Changes from draft-worley-references-05 to draft-worley-
references-06 . . . . . . . . . . . . . . . . . . . . . . 17
7.4. Changes from draft-worley-references-04 to draft-worley-
references-05 . . . . . . . . . . . . . . . . . . . . . . 17
7.5. Changes from draft-worley-references-03 to draft-worley-
references-04 . . . . . . . . . . . . . . . . . . . . . . 17
7.6. Changes from draft-worley-references-02 to draft-worley-
references-03 . . . . . . . . . . . . . . . . . . . . . . 18
7.7. Changes from draft-worley-references-01 to draft-worley-
references-02 . . . . . . . . . . . . . . . . . . . . . . 18
7.8. Changes from draft-worley-references-00 to draft-worley-
references-01 . . . . . . . . . . . . . . . . . . . . . . 18
7.9. draft-worley-references-00 . . . . . . . . . . . . . . . . 18
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1. Normative References . . . . . . . . . . . . . . . . . . . 18
8.2. Informative References . . . . . . . . . . . . . . . . . . 18
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 19
1. Purpose of the References Header
In many situations, the processing of a SIP "telephone call" involves
a number of different SIP dialogs. Of course, the existing SIP
headers provide adequate information for the SIP elements to carry
out the needed operations. But in many cases, it is difficult for an
observer to identify from a network trace the particular SIP dialogs
that are involved in one operation.
For example, if a user agent receives a REFER message within one
dialog, it sends an INVITE to establish a new dialog which replaces
the previous one within the user interface of the user agent. But
since the connection between the new dialog and the old dialog is
only realized within the user agent, there is no algorithmic way to
associate the two dialogs based on the SIP messages alone -- the best
available technique is to extract all the messages to/from the
particular user agent, and then observe the INVITE that is sent
immediately after receipt of the REFER.
Worley Expires October 02, 2012 [Page 2]
Internet-Draft SIP References header April 2012
The purpose of the References header is to allow a SIP message to
specify that the message carrying it (and by extension, the dialog
that contains the message) is related to one or more other dialogs,
specified by their Call-Id values. Ideally, when given a Call-Id, an
automated process can use the connections between dialogs specified
in References headers to determine the entire set of dialogs that are
needed to understand a complete "telephone call" or other SIP
interaction.
2. Syntax and Semantics
The syntax of the References header is as follows. (All rules not
defined here are taken from section 25.1 of RFC 3261[sip].)
message-header =/ References
References = "References" HCOLON reference *(COMMA reference)
reference = callid *( SEMI reference-param )
reference-param = rel-param / generic-param
rel-param = "rel" EQUAL rel-value
rel-value = "chain" / "inquiry" / "mixed" / "record"
/ "refer" / "service" / "sequel" / "xfer"
/ "-chain" / "-inquiry" / "-mixed" / "record"
/ "-refer" / "-service" / "-sequel" / "-xfer"
/ gen-value
Multiple References headers may appear in a SIP message, and their
values may be combined or separated as allowed by section 7.3 of RFC
3261[sip]. The ordering of References values is not significant.
The call-id values of the Replaces and Join headers are considered
implicit References values and so SHOULD NOT be specified in
References headers.
Similarly to the grammar for the Call-ID header, no escaping is
defined for the call-id value in the References header.
The presence of a References header in a SIP message means that the
message (and by implication, the dialog containing it) is related to
the dialog(s) bearing the specified Call-Id(s). Note that since
there is no way to specify the to-tag and from-tag of the referenced
dialog, the References header does not distinguish different dialogs
that have the same Call-Id, and all dialogs sharing a Call-Id are
considered to be related a priori. The processor of References
headers should consider the "related" relationship of dialogs to
include the symmetric-transitive closure of the References
relationship; that is, if a message in dialog A references dialog B,
and a message in dialog B references dialog C, then all three dialogs
should be considered related to each other.
Worley Expires October 02, 2012 [Page 3]
Internet-Draft SIP References header April 2012
The nature of the relationship between the message's dialog and the
referenced dialog(s) is indicated by the "rel" parameter (if it is
present). That is, the dialog containing the message containing the
References header is related to the dialog with the specified Call-Id
in the manner specified by the "rel" parameter value, as described
below.
Since the message containing the References header is likely to be
constrained to be generated after the creation of the dialog
mentioned by the header, and the UA may not have control over this
time-ordering, each relationship nature defined below implicitly
defines a reverse relationship, whose "rel" parameter value is
prefixed with "-", in which the roles of the dialog containing the
message containing the References header and the dialog specified by
the callid value in the References header are reversed. E.g., a
request with Call-Id A that performs an inquiry to assist in routing
dialog B may contain
References: B;rel=inquiry
but the same meaning can be indicated by a message in dialog B
containing
References: A;rel=-inquiry
The currently defined values of the "rel" parameter are:
"chain" meaning that this request is the logical continuation of
the dialog with the specified Call-Id through a B2BUA or the like,
in that it will carry media that have the same meaning to the user
("continuation of the dialog across space")
"inquiry" meaning that this request was generated to obtain
information needed to properly process a request with the
specified Call-Id. (For example, in section 2.16, "Call Pickup"
of [service-examples], a SUBSCRIBE is generated to discover the UA
which sent an INVITE to a designated AOR.)
"mixed" - indicates that this dialog and the dialog with the
specified Call-Id are legs of a conference, videoconference, or
the like, where the media outgoing on each dialog is expected to
partially duplicate the media incoming on the other dialog, along
with media incoming on other dialogs
"join" - this value is permanently reserved so that it may be used
as a value of cognate data items when describing dialogs related
by a "Join" header
"record" - indicates that this dialog carries a copy of the media
of the dialog with the specified Call-Id
"refer" - this request was generated due to a REFER with the
specified Call-Id
Worley Expires October 02, 2012 [Page 4]
Internet-Draft SIP References header April 2012
"replaces" - this value is permanently reserved so that it may be
used as a value of cognate data items when describing dialogs
related by a "Replaces" header
"service" means that this dialog is to obtain "service media" for
use by the dialog with the specified Call-Id. "Service media"
includes music-on-hold, alert tones, and the like.
"sequel" means that this dialog is the continuation of the
conversation carried by the dialog with the specified Call-Id
("continuation of the dialog across time")
"xfer" meaning that the dialog of this message and the dialog with
the specified Call-Id are the two legs of a consultative (or
attended) transfer. One endpoint of each dialog will become an
endpoint of the final dialog (which does not yet exist).
These values are case-sensitive (although the parameter name, "rel",
is not).
The processor of the References header MUST remove any quoting from
the "rel" parameter value before processing it. As shown in the
ABNF, the quoting which may be applied to rel-value is the same as
what may be applied to a gen-value, specifically, if it is surrounded
by double-quotes, then any character may be quoted with a backslash.
Thus the following are all equivalent:
References: 12345600@atlanta.example.com;rel=xfer
References: 12345600@atlanta.example.com;rel="xfer"
References: 12345600@atlanta.example.com;rel="\x\f\e\r"
It is expected that the References header will usually appear in the
dialog-forming request of a dialog, but it may appear in any request
or response. Since 1xx responses are not delivered reliably, a
References header value that is present only in a 1xx response may
not be seen by an element that ought in principle to see the
response, and such a value SHOULD be present in another message of
the dialog going to that element.
The semantics of some "rel" values (e.g., "chain" and "xfer") are
inherently symmetric; in these cases the "reverse" value, prefixed
with "-" is still valid, and the processor of the References header
SHOULD treat the base relationship and the reverse relationship
identically.
All parameters and parameter values that are not understood by the
processor of the References header MUST be ignored.
Note that while the SIP References header is similar in function to
Worley Expires October 02, 2012 [Page 5]
Internet-Draft SIP References header April 2012
the Internet e-mail References header[message-format], they have
different syntaxes and are not interchangeable.
3. Examples
3.1. B2BUA
One use of References is to connect the two "sides" of a single
logical dialog that passes through a B2BUA (which might not have the
same Call-Id).
Alice B2BUA Bob
| | |
| INVITE F1 | |
|------------------->| |
| | INVITE F2 |
| |------------------->|
| | |
F1 INVITE Alice -> B2BUA, en route to Bob
INVITE sips:bob@chicago.example.com SIP/2.0
Via: SIP/2.0/TLS client.atlanta.example.com:5061
;branch=z9hG4bKnash3c6h
Max-Forwards: 70
From: Alice <sips:alice@atlanta.example.com>;tag=867AB09
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 2851866@atlanta.example.com
CSeq: 1 INVITE
Contact: <sips:alice@client.atlanta.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Content-Type: application/sdp
Content-Length: ...
[SDP omitted]
F2 INVITE B2BUA -> Bob
INVITE sips:bob@chicago.example.com SIP/2.0
References: 2851866@atlanta.example.com;rel=chain
Via: SIP/2.0/TCP b2bua.example.com
;branch=z9hG4bKnqhsocn
Max-Forwards: 70
From: Alice <sips:alice@atlanta.example.com>;tag=7923480
To: Bob <sips:bob@biloxi.example.com>
Call-ID: 92060-25@b2bua.example.com
CSeq: 1 INVITE
Contact: <sips:b2bua.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Content-Type: application/sdp
Content-Length: ...
Worley Expires October 02, 2012 [Page 6]
Internet-Draft SIP References header April 2012
[SDP omitted]
3.2. REFER
One use of References is to connect a REFER to the INVITE that it
causes to be sent. A typical use of REFER is to implement blind
transfer. This example is taken from section 2.4, "Transfer -
Unattended" of [service-examples].
Alice Bob Carol
| | |
| INVITE F1 | |
|<-------------------| |
| 180 Ringing F2 | |
|------------------->| |
| 200 OK F3 | |
|------------------->| |
| ACK F4 | |
|<-------------------| |
| RTP | |
|<==================>| |
| | |
| Alice performs unattended transfer |
| | |
| REFER Refer-To:C F5| |
|------------------->| |
| 202 Accepted F6 | |
|<-------------------| |
| NOTIFY F7 | |
|<-------------------| |
| 200 OK F8 | |
|------------------->| |
| BYE F9 | |
|------------------->| |
| 200 OK F10 | |
|<-------------------| |
| No RTP Session | INVITE Referred-By: A F11
| |------------------->|
| | 180 Ringing F12 |
| |<-------------------|
| | 200 OK F13 |
| |<-------------------|
| | ACK F14 |
| |------------------->|
| | RTP |
| |<==================>|
| NOTIFY F15 | |
|<-------------------| |
| 200 OK F16 | |
|------------------->| |
| | |
In order to execute the blind transfer, Alice's UA sends a REFER to
Worley Expires October 02, 2012 [Page 7]
Internet-Draft SIP References header April 2012
Bob's UA:
F5 REFER Alice -> Bob
REFER sips:bob@client.biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061
;branch=z9hG4bKnashds8
Max-Forwards: 70
From: Alice <sips:alice@atlanta.example.com>;tag=1234567
To: Bob <sips:bob@biloxi.example.com>;tag=314159
Call-ID: 12345601@atlanta.example.com
CSeq: 101 REFER
Refer-To: <sips:carol@chicago.example.com>
Referred-By: <alice@atlanta.example.com>
Contact: <sips:alice@client.atlanta.example.com>
Content-Length: 0
Upon receipt of the REFER, Bob's UA sends an INVITE to Carol's UA.
In order to make explicit the relationship between the REFER and the
INVITE, the INVITE has a References header giving the Call-Id of the
REFER:
F11 INVITE Bob -> Carol
INVITE sips:carol@chicago.example.com SIP/2.0
References: 12345601@atlanta.example.com;rel=refer
Via: SIP/2.0/TLS client.biloxi.example.com:5061
;branch=z9hG4bKnashds1
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=8675309
To: Carol <sips:carol@chicago.example.com>
Call-ID: 7436222@atlanta.example.com
CSeq: 1 INVITE
Contact: <sips:bob@client.biloxi.example.com>
Referred-By: <alice@atlanta.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
[SDP omitted]
3.3. Attended Transfer
An attended transfer normally involves three different dialogs. If
the transfer completes, and the REFER that completes the transfer has
a References header, the References header in the REFER and the
Replaces header in the resulting INVITE will suffice to connect the
three dialogs. However, to provide complete information if the
transfer does not complete, the INVITE that establishes the "second
leg" of the transfer scenario should have a References header naming
the "first leg". This example is taken from section 2.5, "Transfer -
Attended" of [service-examples].
Worley Expires October 02, 2012 [Page 8]
Internet-Draft SIP References header April 2012
Alice Bob Carol
| | |
| INVITE F1 | |
|--------------->| |
| 180 Ringing F2 | |
|<---------------| |
| 200 OK F3 | |
|<---------------| |
| ACK F4 | |
|--------------->| |
| RTP | |
|<==============>| |
|INVITE (hold) F5| |
|<---------------| |
| 200 OK F6 | |
|--------------->| |
| ACK F7 | |
|<---------------| |
| No RTP | |
| | INVITE F8 |
| |------------->|
| | 180 Ringing F9
| |<-------------|
| | 200 OK F10 |
| |<-------------|
| | ACK F11 |
| |------------->|
| | RTP |
| |<============>|
| |INVITE (hold) F12
| |------------->|
| | 200 OK F13 |
| |<-------------|
| | ACK F14 |
| |------------->|
| | No RTP |
| REFER Refer-To: C F15 |
|<---------------| |
|202 Accepted F16| |
|--------------->| |
| NOTIFY F17 | |
|--------------->| |
| 200 OK F18 | |
|<---------------| |
| INVITE Replaces: B F19 |
|------------------------------>|
| 200 OK F20 |
|<------------------------------|
| ACK F21 |
|------------------------------>|
| RTP |
|<=============================>|
| | BYE F22 |
Worley Expires October 02, 2012 [Page 9]
Internet-Draft SIP References header April 2012
| |<-------------|
| | 200 OK F23 |
| |------------->|
| NOTIFY F24 | |
|--------------->| |
| 200 OK F25 | |
|<---------------| |
| BYE F26 | |
|<---------------| |
| 200 OK F27 | |
|--------------->| |
| | |
The INVITE that establishes the second leg has a References header
naming the first leg:
F8 INVITE Bob -> Carol
INVITE sips:carol@chicago.example.com SIP/2.0
References: 12345600@atlanta.example.com;rel=xfer
Via: SIP/2.0/TLS client.biloxi.example.com:5061
;branch=z9hG4bKnash
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=8675309
To: Carol <sips:carol@chicago.example.com>
Call-ID: sdjfdjfskdf@biloxi.example.com
CSeq: 42 INVITE
Contact: <sips:bob@client.biloxi.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
[SDP omitted]
As described in Section 3.2, the INVITE that completes the transfer
has a References header giving the dialog of the first leg, within
which the REFER was sent. It also has a Replaces header giving the
dialog of the second leg, which acts as an implicit References.
Worley Expires October 02, 2012 [Page 10]
Internet-Draft SIP References header April 2012
F19 INVITE Alice -> Carol
INVITE sips:39itp34klkd@chicago.example.com;gr SIP/2.0
References: 12345600@atlanta.example.com;rel=refer
Via: SIP/2.0/TLS chicago.example.com:5061
;branch=z9hG4bKadfe4ko
To: Carol <sips:39itp34klkd@chicago.example.com>
Max-Forwards: 70
From: Alice <sips:alice@atlanta.example.com>;tag=3461
Call-ID: 9435674543@atlanta.example.com
CSeq: 1 INVITE
Require: replaces
Referred-By: <sips:bob@biloxi.example.com>
Replaces: sdjfdjfskdf@biloxi.example.com
;to-tag=5f35a3;from-tag=8675309
Contact: <sips:alice@client.atlanta.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
[SDP omitted]
3.4. Call Pickup
The References header can be used during a call pickup operation to
connect the SUBSCRIBE that is used to locate the target dialog with
the INVITE which is generated to execute the pickup. This example is
taken from section 2.16, "Call Pickup" of [service-examples].
Worley Expires October 02, 2012 [Page 11]
Internet-Draft SIP References header April 2012
Alice Bob Bill
| | |
| INVITE F1 | |
|------------->| |
|180 Ringing F2| |
|<-------------| |
| | SUBSCRIBE F3 |
| |<------------------|
| | 200 OK F4 |
| |------------------>|
| | NOTIFY F5 |
| |------------------>|
| | 200 OK F6 |
| |<------------------|
| INVITE Replaces:Bob F7 |
|<---------------------------------|
| | 200 OK F8 |
|--------------------------------->|
| CANCEL F9 | |
|------------->| |
| 200 OK F10 | |
|<-------------| |
| 487 F11 | |
|<-------------| |
| ACK F12 | |
|------------->| |
| ACK F13 |
|<---------------------------------|
| |
| Two way RTP Established |
|<================================>|
| BYE F14 |
|--------------------------------->|
| 200 OK F15 |
|<---------------------------------|
| |
Bill's UA sends a SUBSCRIBE to find the target dialog:
Worley Expires October 02, 2012 [Page 12]
Internet-Draft SIP References header April 2012
F3 SUBSCRIBE Bill -> Bob
SUBSCRIBE sips:bob@biloxi.example.com SIP/2.0
Via: SIP/2.0/TLS pc.biloxi.example.com:5061
;branch=z9hG4bK74bf
Max-Forwards: 70
From: Bill <sips:bill@biloxi.example.com>;tag=8675309
To: Bob <sips:bob@biloxi.example.com>
Call-ID: rt4353gs2egg@pc.biloxi.example.com
CSeq: 1 SUBSCRIBE
Contact: <sips:bill@pc.biloxi.example.com>
Event: dialog
Expires: 0
Accept: application/dialog-info+xml
Content-Length: 0
After locating the target dialog, Bill's UA generates an INVITE-with-
Replaces to execute the pickup. The UA adds the References header to
show the connection with the SUBSCRIBE, using the rel-value
"-inquiry":
F7 INVITE Bill -> Alice
INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
References: rt4353gs2egg@pc.biloxi.example.com;rel=-inquiry
Via: SIP/2.0/TLS pc.biloxi.example.com:5061
;branch=z9hG4bK74HH
Max-Forwards: 70
From: Bill <sips:bill@biloxi.example.com>;tag=8675310
To: Alice <sips:alice@atlanta.example.com>
Call-ID: 563456212@b2.biloxi.example.com
CSeq: 1 INVITE
Require: replaces
Replaces: 12345600@atlanta.example.com
;from-tag=314578;to-tag=1234567;early-only
Contact: <sips:bill@pc.biloxi.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
[SDP omitted]
Note that the executing INVITE F7 does not mention the Call-Id of the
original INVITE F1 because it is mentioned in the Replaces header.
If the call pickup operation is done by an agent on behalf of Bill's
UA (as in the sipXecs open-source PBX), the executing INVITE is
likely to exist before the SUBSCRIBE is generated. In that case, the
SUBSCRIBE will have a References header giving the Call-Id of the
INVITE:
Worley Expires October 02, 2012 [Page 13]
Internet-Draft SIP References header April 2012
F3 SUBSCRIBE Bill -> Bob
SUBSCRIBE sips:bob@biloxi.example.com SIP/2.0
References: 563456212@b2.biloxi.example.com;rel=inquiry
Via: SIP/2.0/TLS pc.biloxi.example.com:5061
;branch=z9hG4bK74bf
Max-Forwards: 70
From: Bill <sips:bill@biloxi.example.com>;tag=8675309
To: Bob <sips:bob@biloxi.example.com>
Call-ID: rt4353gs2egg@pc.biloxi.example.com
CSeq: 1 SUBSCRIBE
Contact: <sips:bill@pc.biloxi.example.com>
Event: dialog
Expires: 0
Accept: application/dialog-info+xml
Content-Length: 0
4. Practical Experience
The current version of the sipXecs open-source PBX adds a References
header to the SUBSCRIBE of a call pickup as described in section
2.16, "Call Pickup" of [service-examples]. It has caused no observed
interoperability problem.
5. Related Work
This section discusses other Internet-drafts and their relationship
to this work.
5.1. draft-loreto-sipping-dialog-correlation
The Session Initiation Protocol (SIP) Dialog Correlation[loreto-
correlation]
This document defines a new header field for use with SIP. The Same-
Session header field is used to logically correlate an existing SIP
dialog with a new SIP dialog when the media sessions established by
both dialogs can be considered a single logical session. This
mechanism can be used to share the user interface and other resources
between all the media streams from both sessions.
The "Same-Session" header prescribes that the media sessions of two
INVITE dialog usages are to be considered part of the same session
from the users' points of view. Because of this semantic, it cannot
be used in place of the References header, as References can be used
to express the relationship between two dialogs that are not
connected in any particular way in regard to user interface.
Worley Expires October 02, 2012 [Page 14]
Internet-Draft SIP References header April 2012
However, it would be possible to define a "parallel" value of the
"rel" parameter to have the semantics of "Same-Session". This usage
would require that the References header appears in the INVITE
establishing the second dialog (and that the two INVITEs are properly
time-sequenced, or that both INVITEs have a References header). But
this still might be considered a conflation of mechanism that have
different semantics.
5.2. draft-kaplan-sip-session-id
A Session Identifier for the Session Initiation Protocol (SIP
)[kaplan-session]
There are several reasons for having a globally unique session
identifier for the same SIP session, which can be maintained across
B2BUA's and other SIP middle-boxes. This draft proposes a new SIP
header to carry such a value: Session-ID.
The semantics of "Session-ID" are close to those of References, and
it would be reasonable to define a "rel" value that meant that the
referenced Call-Id was "the other side" of a B2BUA connection. (This
would require placing a References header in the INVITE request sent
from the recipient side of the B2BUA and one in the response to the
INVITE send from the originator side.) But since References contains
the real Call-Id of a dialog, this use would not have the security
properties described in section 5.1 of [kaplan-session].
A possible solution to this problem is for the B2BUA to create a
"phantom" Call-Id that is suitably random, and use it in References
headers sent in both the initial request and response. By the
transitivity propertySection 2, the dialogs on both sides of the
B2BUA are declared to be related, even if the referenced dialog
contains no messages.
For two chained B2BUAs with no forking, this would give a message
flow like this:
Worley Expires October 02, 2012 [Page 15]
Internet-Draft SIP References header April 2012
UA 1 B2BUA 1 B2BUA 2 UA 2
--->
INVITE 123@aa.example.com
Call-Id: qwerty@aa
--->
INVITE 123@transit.example.com
Call-Id: asdfgh@transit
References: QAZWSXEDCRFV;rel=chain
--->
INVITE 123@bb.example.com
Call-Id: zxcvbn@bb
References: QAZWSXEDCRFV
;rel=chain
<---
SIP/2.0 200 OK
Call-Id: zxcvbn@bb
<---
SIP/2.0 200 OK
Call-Id: asdfgh@transit
References: QAZWSXEDCRFV;rel=chain
<---
SIP/2.0 200 OK
Call-Id: qwerty@aa
References: QAZWSXEDCRFV;rel=chain
Note that B2BUA 2 does not create a new "References chain" value, but
rather reuses the value it received in the initial INVITE. (In
principle, B2BUA 2 does not need to add References to the response it
sends, as References is present in the request.)
6. Security Considerations
The specification of the relationship between two dialogs could in
principle be a privacy issue. But these relationships can usually be
discerned by heuristic processing of the stream of SIP messages, and
(with one exception) the author knows of no instance where the
security or privacy properties of SIP have been based on the
inability of an eavesdropper to determine that two SIP dialogs or
messages are related.
Worley Expires October 02, 2012 [Page 16]
Internet-Draft SIP References header April 2012
The one known privacy problem is the the "service provider privacy"
problem discussed in [kaplan-session]. This situation is different
from conventional "user security" situations because the eavesdropper
is assumed to be unable to tap multiple points of the network, and
the goal is to prevent the eavesdropper from obtaining information
about parts of the network that the eavesdropper cannot directly
access. This sort of privacy can be provided by constructing
artificial Call-Ids to use in References headers, if References is
inserted in both requests and responses.
7. Revision History
7.1. Changes from draft-worley-references-07 to draft-worley-
references-08
Add the "mixed" and "record" relationships. Improve the descriptions
of the "chain" and "sequel" relationships.
7.2. Changes from draft-worley-references-06 to draft-worley-
references-07
Refresh of expired Internet-Draft.
Clairfy the meaning of "reversed" relationship values.
7.3. Changes from draft-worley-references-05 to draft-worley-
references-06
Update "sipX" to "sipXecs".
Remove the specification that parameters and values that start with
"X-" are reserved for non-standardized purposes, to align with
[change-process], section 4.
Update BNF to make explicit the possibility of "-" at the beginning
of rel-value.
7.4. Changes from draft-worley-references-04 to draft-worley-
references-05
Refresh of expired Internet-Draft.
Updated author's contact information.
7.5. Changes from draft-worley-references-03 to draft-worley-
references-04
Added the "rel=service" value.
Added the convention of naming the reversed relationships by
prefixing the rel-value with "-".
Worley Expires October 02, 2012 [Page 17]
Internet-Draft SIP References header April 2012
7.6. Changes from draft-worley-references-02 to draft-worley-
references-03
Added the "rel=chain" and "rel=sequel" values.
Reserved the "rel=replaces" and "rel=join" values.
Added B2BUA example for "rel=chain".
7.7. Changes from draft-worley-references-01 to draft-worley-
references-02
Specified that the value of the "rel" parameter is not affected by
any quoting which is applied.
Specified that the value of the "rel" parameter is case-sensitive.
Categorize the References header as experimental.
7.8. Changes from draft-worley-references-00 to draft-worley-
references-01
Add the "rel" parameter.
Note that References will usually appear in the dialog-forming
request.
Note that References may appear in a response.
Add the "Related Work" section.
7.9. draft-worley-references-00
Initial version.
8. References
8.1. Normative References
[sip] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M. and E. Schooler,
"SIP: Session Initiation Protocol", RFC 3261, June 2002.
8.2. Informative References
[change-process]
Peterson, J., Jennings, C. and R. Sparks, "Change Process
for the Session Initiation Protocol (SIP) and the Real-
time Applications and Infrastructure Area", RFC 5727,
March 2010.
[service-examples]
Worley Expires October 02, 2012 [Page 18]
Internet-Draft SIP References header April 2012
Johnston, A., Sparks, R., Cunningham, C., Donovan, S. and
K. Summers, "Session Initiation Protocol Service
Examples", RFC 5359, October 2008.
[message-format]
Resnick, P., "Internet Message Format", RFC 5322, October
2008.
[loreto-correlation]
Loreto, S. and G. Camarillo, "The Session Initiation
Protocol (SIP) Dialog Correlation", I-D draft-loreto-
sipping-dialog-correlation-01, June 2006.
[kaplan-session]
Kaplan, H., "A Session Identifier for the Session
Initiation Protocol (SIP)", I-D draft-kaplan-sip-session-
id-00, November 2008.
Author's Address
Dale R. Worley
Avaya Inc.
600 Technology Park Dr.
Billerica, MA 01821
US
Phone: +1 978 288 5505
Email: dworley@avaya.com
URI: http://www.avaya.com
Worley Expires October 02, 2012 [Page 19]