draft-ietf-mmusic-sdp-cs-23.txt | rfc7195.txt | |||
---|---|---|---|---|
MMUSIC WG M. Garcia-Martin | Internet Engineering Task Force (IETF) M. Garcia-Martin | |||
Internet-Draft Ericsson | Request for Comments: 7195 Ericsson | |||
Intended status: Standards Track S. Veikkolainen | Category: Standards Track S. Veikkolainen | |||
Expires: August 15, 2014 Nokia | ISSN: 2070-1721 Nokia | |||
February 11, 2014 | May 2014 | |||
Session Description Protocol (SDP) Extension For Setting Audio and Video | Session Description Protocol (SDP) Extension for | |||
Media Streams Over Circuit-Switched Bearers In The Public Switched | Setting Audio and Video Media Streams over Circuit-Switched Bearers in | |||
Telephone Network (PSTN) | the Public Switched Telephone Network (PSTN) | |||
draft-ietf-mmusic-sdp-cs-23 | ||||
Abstract | Abstract | |||
This memo describes use cases, requirements, and protocol extensions | This memo describes use cases, requirements, and protocol extensions | |||
for using the Session Description Protocol (SDP) Offer/Answer model | for using the Session Description Protocol (SDP) offer/answer model | |||
for establishing audio and video media streams over circuit-switched | for establishing audio and video media streams over circuit-switched | |||
bearers in the Public Switched Telephone Network (PSTN). | bearers in the Public Switched Telephone Network (PSTN). | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
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 | 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). Further information on | |||
Internet Standards is available in Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on August 15, 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/rfc7195. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 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. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction ....................................................3 | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 4 | 2. Conventions Used in This Document ...............................4 | |||
3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Requirements ....................................................5 | |||
4. Overview of Operation . . . . . . . . . . . . . . . . . . . . 5 | 4. Overview of Operation ...........................................5 | |||
4.1. Example Call Flow . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Example Call Flow ..........................................6 | |||
5. Protocol Description . . . . . . . . . . . . . . . . . . . . 7 | 5. Protocol Description ............................................7 | |||
5.1. Level of Compliance . . . . . . . . . . . . . . . . . . . 7 | 5.1. Level of Compliance ........................................7 | |||
5.2. Extensions to SDP . . . . . . . . . . . . . . . . . . . . 7 | 5.2. Extensions to SDP ..........................................7 | |||
5.2.1. Connection Data . . . . . . . . . . . . . . . . . . . 7 | 5.2.1. Connection Data .....................................7 | |||
5.2.2. Media Descriptions . . . . . . . . . . . . . . . . . 9 | 5.2.2. Media Descriptions ..................................9 | |||
5.2.3. Correlating the PSTN Circuit-Switched Bearer with SDP 10 | 5.2.3. Correlating the PSTN Circuit-Switched | |||
5.2.3.1. The "cs-correlation" attribute . . . . . . . . . 11 | Bearer with SDP ....................................10 | |||
5.2.3.2. Caller-ID Correlation Mechanism . . . . . . . . . 12 | 5.2.3.1. The "cs-correlation" Attribute ............11 | |||
5.2.3.3. User-User Information Element Correlation | 5.2.3.2. Caller ID Correlation Mechanism ...........12 | |||
Mechanism . . . . . . . . . . . . . . . . . . . . 13 | 5.2.3.3. User-User Information Element | |||
5.2.3.4. DTMF Correlation Mechanism . . . . . . . . . . . 14 | Correlation Mechanism .....................13 | |||
5.2.3.5. The external correlation mechanism . . . . . . . 15 | 5.2.3.4. DTMF Correlation Mechanism ................14 | |||
5.2.3.6. Extensions to correlation mechanisms . . . . . . 16 | 5.2.3.5. External Correlation Mechanism ............15 | |||
5.3. Negotiating the correlation mechanisms . . . . . . . . . 16 | 5.2.3.6. Extensions to Correlation Mechanisms ......16 | |||
5.3.1. Determining the Direction of the Circuit-Switched | 5.3. Negotiating the Correlation Mechanisms ....................17 | |||
Bearer Setup . . . . . . . . . . . . . . . . . . . . 17 | 5.3.1. Determining the Direction of the | |||
5.3.2. Populating the cs-correlation attribute . . . . . . . 17 | Circuit-Switched Bearer Setup ......................17 | |||
5.3.3. Considerations on correlations . . . . . . . . . . . 18 | 5.3.2. Populating the "cs-correlation" Attribute ..........18 | |||
5.4. Considerations for Usage of Existing SDP . . . . . . . . 19 | 5.3.3. Considerations for Correlations ....................18 | |||
5.4.1. Originator of the Session . . . . . . . . . . . . . . 19 | 5.4. Considerations for Usage of Existing SDP ..................19 | |||
5.4.2. Contact information . . . . . . . . . . . . . . . . . 19 | 5.4.1. Originator of the Session ..........................19 | |||
5.5. Considerations for Usage of Third Party Call Control | 5.4.2. Contact Information ................................20 | |||
(3PCC) . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.5. Considerations for Usage of Third Party Call | |||
5.6. Offer/Answer mode extensions . . . . . . . . . . . . . . 20 | Control (3PCC) ............................................20 | |||
5.6.1. Generating the Initial Offer . . . . . . . . . . . . 20 | 5.6. Offer/Answer Mode Extensions ..............................20 | |||
5.6.2. Generating the Answer . . . . . . . . . . . . . . . . 23 | 5.6.1. Generating the Initial Offer .......................21 | |||
5.6.3. Offerer processing the Answer . . . . . . . . . . . . 25 | 5.6.2. Generating the Answer ..............................23 | |||
5.6.4. Modifying the session . . . . . . . . . . . . . . . . 27 | 5.6.3. Offerer Processing the Answer ......................26 | |||
5.7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . 28 | 5.6.4. Modifying the Session ..............................27 | |||
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 5.7. Formal Syntax .............................................28 | |||
6.1. Single PSTN audio stream . . . . . . . . . . . . . . . . 30 | 6. Examples .......................................................30 | |||
6.2. Advanced SDP example: Circuit-Switched Audio and | 6.1. Single PSTN Audio Stream ..................................30 | |||
Video Streams . . . . . . . . . . . . . . . . . . . . . . 32 | 6.2. Advanced SDP Example: Circuit-Switched Audio and | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | Video Streams .............................................32 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 7. Security Considerations ........................................33 | |||
8.1. Registration of new cs-correlation SDP attribute . . . . 34 | 8. IANA Considerations ............................................35 | |||
8.2. Registration of a new "nettype" value . . . . . . . . . . 35 | 8.1. Registration of the New "cs-correlation" SDP Attribute ....35 | |||
8.3. Registration of new "addrtype" value . . . . . . . . . . 35 | 8.2. Registration of a New "nettype" Value .....................36 | |||
8.4. Registration of a new "proto" value . . . . . . . . . . . 35 | 8.3. Registration of a New "addrtype" Value ....................36 | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 36 | 8.4. Registration of a New "proto" Value .......................36 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9. Acknowledgments ................................................37 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 36 | 10. References ....................................................37 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 37 | 10.1. Normative References .....................................37 | |||
10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 10.2. Informative References ...................................38 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
1. Introduction | 1. Introduction | |||
The Session Description Protocol (SDP) [RFC4566] is intended for | The Session Description Protocol (SDP) [RFC4566] is intended for | |||
describing multimedia sessions for the purposes of session | describing multimedia sessions for the purposes of session | |||
announcement, session invitation, and other forms of multimedia | announcement, session invitation, and other forms of multimedia | |||
session initiation. SDP is most commonly used for describing media | session initiation. SDP is most commonly used for describing media | |||
streams that are transported over the Real-Time Transport Protocol | streams that are transported over the Real-Time Transport Protocol | |||
(RTP) [RFC3550], using the profiles for audio and video media defined | (RTP) [RFC3550], using the profiles for audio and video media defined | |||
in RTP Profile for Audio and Video Conferences with Minimal Control | in "RTP Profile for Audio and Video Conferences with Minimal Control" | |||
[RFC3551]. | [RFC3551]. | |||
However, SDP can be used to describe other media transport protocols | However, SDP can be used to describe media transport protocols other | |||
than RTP. Previous work includes SDP conventions for describing ATM | than RTP. Previous work includes SDP conventions for describing ATM | |||
bearer connections [RFC3108] and the Message Session Relay Protocol | bearer connections [RFC3108] and the Message Session Relay Protocol | |||
[RFC4975]. | [RFC4975]. | |||
SDP is commonly carried in Session Initiation Protocol (SIP) | SDP is commonly carried in Session Initiation Protocol (SIP) | |||
[RFC3261] messages in order to agree on a common media description | [RFC3261] messages in order to agree on a common media description | |||
among the endpoints. An Offer/Answer Model with Session Description | among the endpoints. "An Offer/Answer Model with the Session | |||
Protocol (SDP) [RFC3264] defines a framework by which two endpoints | Description Protocol (SDP)" [RFC3264] defines a framework by which | |||
can exchange SDP media descriptions and come to an agreement as to | two endpoints can exchange SDP media descriptions and come to an | |||
which media streams should be used, along with the media related | agreement as to which media streams should be used, along with the | |||
parameters. | media-related parameters. | |||
In some scenarios it might be desirable to establish the media stream | In some scenarios, it might be desirable to establish the media | |||
over a circuit-switched bearer connection even if the signaling for | stream over a circuit-switched bearer connection even if the | |||
the session is carried over an IP bearer. An example of such a | signaling for the session is carried over an IP bearer. An example | |||
scenario is illustrated with two mobile devices capable of both | of such a scenario is illustrated with two mobile devices capable of | |||
circuit-switched and packet-switched communication over a low- | both circuit-switched and packet-switched communication over a low- | |||
bandwidth radio bearer. The radio bearer may not be suitable for | bandwidth radio bearer. The radio bearer may not be suitable for | |||
carrying real-time audio or video media, and using a circuit-switched | carrying real-time audio or video media, and using a circuit-switched | |||
bearer would offer a better perceived quality of service. So, | bearer would offer a better perceived quality of service. So, | |||
according to this scenario, SDP and its higher layer session control | according to this scenario, SDP and its higher-layer session control | |||
protocol (e.g., the Session Initiation Protocol (SIP) [RFC3261]) are | protocol (e.g., the Session Initiation Protocol (SIP) [RFC3261]) are | |||
used over regular IP connectivity, while the audio or video is | used over regular IP connectivity, while the audio or video is | |||
received through the classical circuit-switched bearer. | received through the classical circuit-switched bearer. | |||
This document addresses only the use of circuit-switched bearers in | This document addresses only the use of circuit-switched bearers in | |||
the PSTN, not a generic circuit-switched network. The mechanisms | the PSTN, not a generic circuit-switched network. The mechanisms | |||
presented below require a call signaling protocol of the PSTN to be | presented below require a call signaling protocol of the PSTN to be | |||
used (such as ITU-T Q.931 [ITU.Q931.1998] or 3GPP TS 24.008 | used (such as ITU-T Q.931 [ITU.Q931.1998] or 3GPP TS 24.008 | |||
[TS.24.008]). | [TS.24.008]). | |||
Setting up a signaling relationship in the IP domain instead of just | Setting up a signaling relationship in the IP domain instead of just | |||
setting up a circuit-switched call offers also the possibility of | setting up a circuit-switched call also offers the possibility of | |||
negotiating in the same session other IP based media that is not | negotiating, in the same session, other IP-based media that is not | |||
sensitive to jitter and delay, for example, text messaging or | sensitive to jitter and delay, for example, text messaging or | |||
presence information. | presence information. | |||
At a later point in time the mobile device might move to an area | At a later point in time, the mobile device might move to an area | |||
where a high-bandwidth packet-switched bearer, for example a Wireless | where a high-bandwidth packet-switched bearer, for example, a | |||
Local Area Network (WLAN) connection, is available. At this point | Wireless Local Area Network (WLAN) connection, is available. At this | |||
the mobile device may perform a handover and move the audio or video | point, the mobile device may perform a handover and move the audio or | |||
media streams over to the high-speed bearer. This implies a new | video media streams over to the high-speed bearer. This implies a | |||
exchange of SDP Offer/Answer that leads to a re-negotiation of the | new exchange of SDP offer/answer that leads to a renegotiation of the | |||
media streams. | media streams. | |||
Other use cases exist. For example, an endpoint might have at its | Other use cases exist. For example, an endpoint might have at its | |||
disposal circuit-switched and packet-switched connectivity, but the | disposal circuit-switched and packet-switched connectivity, but the | |||
same audio or video codecs are not feasible for both access networks. | same audio or video codecs are not feasible for both access networks. | |||
For example, the circuit-switched audio or video stream supports | For example, the circuit-switched audio or video stream supports | |||
narrow-bandwidth codecs, while the packet-switched access allows any | narrow-bandwidth codecs, while the packet-switched access allows any | |||
other audio or video codec implemented in the endpoint. In this | other audio or video codec implemented in the endpoint. In this | |||
case, it might be beneficial for the endpoint to describe different | case, it might be beneficial for the endpoint to describe different | |||
codecs for each access type and get an agreement on the bearer | codecs for each access type and get an agreement on the bearer | |||
together with the remote endpoint. | together with the remote endpoint. | |||
There are additional use cases related to third party call control | There are additional use cases related to third party call control | |||
where the session setup time is improved when the circuit-switched | where the session setup time is improved when the circuit-switched | |||
bearer in the PSTN is described together with one or more codecs. | bearer in the PSTN is described together with one or more codecs. | |||
The rest of the document is structured as follows: Section 2 provides | The rest of the document is structured as follows: Section 2 provides | |||
the document conventions, Section 3 introduces the requirements, | the document conventions, Section 3 introduces the requirements, | |||
Section 4 presents an overview of the proposed solutions, and | Section 4 presents an overview of the proposed solutions, and | |||
Section 5 contains the protocol description. Section 6 provides an | Section 5 contains the protocol description. Section 6 provides | |||
example of descriptions of circuit-switched audio or video streams in | examples of circuit-switched audio or video streams in SDP. Sections | |||
SDP. Section 7 and Section 8 contain the Security and IANA | 7 and 8 contain the Security and IANA considerations, respectively. | |||
considerations, respectively. | ||||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14, RFC 2119 [RFC2119] and indicate requirement levels for compliant | 14, RFC 2119 [RFC2119] and indicate requirement levels for compliant | |||
implementations. | implementations. | |||
3. Requirements | 3. Requirements | |||
skipping to change at page 5, line 45 | skipping to change at page 5, line 45 | |||
lists of audio or video codecs in the circuit-switched audio | lists of audio or video codecs in the circuit-switched audio | |||
or video stream from those used in a packet-switched audio or | or video stream from those used in a packet-switched audio or | |||
video stream. | video stream. | |||
REQ-7: It MUST be possible for endpoints to not advertise the list | REQ-7: It MUST be possible for endpoints to not advertise the list | |||
of available codecs for circuit-switched audio or video | of available codecs for circuit-switched audio or video | |||
streams. | streams. | |||
4. Overview of Operation | 4. Overview of Operation | |||
The mechanism defined in this memo extends SDP and allows describing | The mechanism defined in this memo extends SDP [RFC4566] and allows | |||
an audio or video media stream established over a circuit-switched | describing an audio or video media stream established over a circuit- | |||
bearer. A new network type ("PSTN") and a new protocol type ("PSTN") | switched bearer. A new network type ("PSTN") and a new protocol type | |||
are defined for the "c=" and "m=" lines to be able to describe a | ("PSTN") are defined for the "c=" and "m=" lines to be able to | |||
media stream over a circuit-switched bearer. These SDP extensions | describe a media stream over a circuit-switched bearer. These SDP | |||
are described in Section 5.2. Since circuit-switched bearers are | extensions are described in Section 5.2. Since circuit-switched | |||
connection-oriented media streams, the mechanism re-uses the | bearers are connection-oriented media streams, the mechanism reuses | |||
connection-oriented extensions defined in RFC 4145 [RFC4145] to | the connection-oriented extensions defined in RFC 4145 [RFC4145] to | |||
negotiate the active and passive sides of a connection setup. This | negotiate the active and passive sides of a connection setup. This | |||
is further described in Section 5.3.1. | is further described in Section 5.3.1. | |||
4.1. Example Call Flow | 4.1. Example Call Flow | |||
Consider the example presented in Figure 1. In this example, | Consider the example presented in Figure 1. In this example, | |||
Endpoint A is located in an environment where it has access to both | Endpoint A is located in an environment where it has access to both | |||
IP and circuit-switched bearers for communicating with other | IP and circuit-switched bearers for communicating with other | |||
endpoints. Endpoint A decides that the circuit-switched bearer | endpoints. Endpoint A decides that the circuit-switched bearer | |||
offers a better perceived quality of service for voice, and issues an | offers a better perceived quality of service for voice and issues an | |||
SDP Offer containing the description of an audio media stream over | SDP offer containing the description of an audio media stream over a | |||
circuit-switched bearer. | circuit-switched bearer. | |||
Endpoint A Endpoint B | Endpoint A Endpoint B | |||
| (1) SDP Offer (PSTN audio) | | | (1) SDP offer (PSTN audio) | | |||
|----------------------------------->| | |----------------------------------->| | |||
| | | | | | |||
| (2) SDP Answer (PSTN audio) | | | (2) SDP answer (PSTN audio) | | |||
|<-----------------------------------| | |<-----------------------------------| | |||
| | | | | | |||
| PSTN call setup | | | PSTN call setup | | |||
|<-----------------------------------| | |<-----------------------------------| | |||
| | | | | | |||
| | | | | | |||
|<===== media over PSTN bearer =====>| | |<===== media over PSTN bearer =====>| | |||
| | | | | | |||
Figure 1: Example Flow | Figure 1: Example Flow | |||
Endpoint B receives the SDP offer and determines that it is located | Endpoint B receives the SDP offer and determines that it is located | |||
in an environment where the IP based bearer is not suitable for real- | in an environment where the IP-based bearer is not suitable for real- | |||
time audio media. However, Endpoint B also has PSTN circuit-switched | time audio media. However, Endpoint B also has a PSTN circuit- | |||
bearer available for audio. Endpoint B generates an SDP answer | switched bearer available for audio. Endpoint B generates an SDP | |||
containing a description of the audio media stream over a circuit- | answer containing a description of the audio media stream over a | |||
switched bearer. | circuit-switched bearer. | |||
During the offer-answer exchange Endpoints A and B also agree the | During the offer/answer exchange, Endpoints A and B also agree upon | |||
direction in which the circuit-switched bearer should be established. | the direction in which the circuit-switched bearer should be | |||
In this example, Endpoint B becomes the active party, in other words, | established. In this example, Endpoint B becomes the active party; | |||
it establishes the circuit-switched call to the other endpoint. The | in other words, it establishes the circuit-switched call to the other | |||
Offer/Answer exchange contains identifiers or references that can be | endpoint. The offer/answer exchange contains identifiers or | |||
used on the circuit-switched network for addressing the other | references that can be used on the circuit-switched network for | |||
endpoint, as well as information that is used to determine that the | addressing the other endpoint, as well as information that is used to | |||
incoming circuit-switched bearer establishment is related to the | determine that the incoming circuit-switched bearer establishment is | |||
ongoing session between the two endpoints. | related to the ongoing session between the two endpoints. | |||
Endpoint B establishes a circuit-switched bearer towards Endpoint A | Endpoint B establishes a circuit-switched bearer towards Endpoint A | |||
using whatever mechanisms are defined for the network type in | using whatever mechanisms are defined for the network type in | |||
question. When receiving the incoming circuit-switched connection | question. When receiving the incoming circuit-switched connection | |||
attempt, Endpoint A is able to determine that the attempt is related | attempt, Endpoint A is able to determine that the attempt is related | |||
to the session it is just establishing with B. | to the session it is just establishing with B. | |||
Endpoint A accepts the circuit-switched connection; the circuit- | Endpoint A accepts the circuit-switched connection; the circuit- | |||
switched bearer setup is completed. The two endpoints can now use | switched bearer setup is completed. The two endpoints can now use | |||
the circuit-switched connection for two-way audio media. | the circuit-switched connection for two-way audio media. | |||
If, for some reason, Endpoint B would like to reject the offered | If, for some reason, Endpoint B would like to reject the offered | |||
stream, it would set the port number of the specific stream to zero, | stream, it would set the port number of the specific stream to zero, | |||
as specified in RFC3264 [RFC3264]. Also, if B does not understand | as specified in RFC 3264 [RFC3264]. Also, if B does not understand | |||
some of the SDP attributes specified in this document, it would | some of the SDP attributes specified in this document, it would | |||
ignore them, as specified in RFC4566 [RFC4566]. | ignore them, as specified in RFC 4566 [RFC4566]. | |||
5. Protocol Description | 5. Protocol Description | |||
5.1. Level of Compliance | 5.1. Level of Compliance | |||
Implementations according to this specification MUST implement the | Implementations that are compliant with this specification MUST | |||
SDP extensions described in Section 5.2, and MUST implement the | implement the SDP extensions described in Section 5.2 and MUST | |||
considerations discussed in Section 5.3, Section 5.4 and Section 5.6. | implement the considerations discussed in Sections 5.3, 5.4, and 5.6. | |||
5.2. Extensions to SDP | 5.2. Extensions to SDP | |||
This section provides the syntax and semantics of the extensions | This section provides the syntax and semantics of the extensions | |||
required for providing a description of audio or video media streams | required for providing a description of audio or video media streams | |||
over circuit-switched bearers in SDP. | over circuit-switched bearers in SDP. | |||
5.2.1. Connection Data | 5.2.1. Connection Data | |||
According to SDP [RFC4566], the connection data line in SDP has the | According to SDP [RFC4566], the connection data line in SDP has the | |||
following syntax: | following syntax: | |||
c=<nettype> <addrtype> <connection-address> | c=<nettype> <addrtype> <connection-address> | |||
where <nettype> indicates the network type, <addrtype> indicates the | where <nettype> indicates the network type, <addrtype> indicates the | |||
address type, and the <connection-address> is the connection address, | address type, and <connection-address> is the connection address, | |||
which is dependent on the address type. | which is dependent on the address type. | |||
At the moment, the only network type defined is "IN", which indicates | At the moment, the only network type defined is "IN", which indicates | |||
Internet network type. The address types "IP4" and "IP6" indicate | Internet network type. The address types "IP4" and "IP6" indicate | |||
the type of IP addresses. | the type of IP addresses. | |||
This memo defines a new network type for describing a circuit- | This memo defines a new network type for describing a circuit- | |||
switched bearer network type in the PSTN. The mnemonic "PSTN" is | switched bearer network type in the PSTN. The mnemonic "PSTN" is | |||
used for this network type. | used for this network type. | |||
For the address type, we initially consider the possibility of | For the address type, we initially considered the possibility of | |||
describing E.164 telephone numbers. We define a new "E164" address | describing E.164 telephone numbers. We define a new "E164" address | |||
type to be used within the context of a "PSTN" network type. The | type to be used within the context of a "PSTN" network type. The | |||
"E164" address type indicates that the connection address contains an | "E164" address type indicates that the connection address contains an | |||
E.164 number represented according to the ITU-T E.164 [ITU.E164.1991] | E.164 number represented according to the ITU-T E.164 [ITU.E164.2010] | |||
recommendation. | recommendation. | |||
It is a common convention that an international E.164 number contains | It is a common convention that an international E.164 number contains | |||
a leading '+' sign. For consistency's sake, we also require the | a leading '+' sign. For consistency's sake, we also require the | |||
E.164 telephone is prepended with a '+', even if that is not | E.164 telephone is prepended with a '+', even if that is not | |||
necessary for routing of the call in the PSTN network. | necessary for routing of the call in the PSTN network. | |||
There are cases, though, when the endpoint is merely aware of a | There are cases, though, when the endpoint is merely aware of a | |||
circuit-switched bearer, without having further information about the | circuit-switched bearer, without having further information about the | |||
E.164 number allocated to it. In these cases a dash ("-") is used to | E.164 number allocated to it. In these cases, a dash ("-") is used | |||
indicate an unknown connection address. This makes the connection | to indicate an unknown connection address. This makes the connection | |||
data line be according to the SDP syntax. | data line consistent with SDP syntax. | |||
Please note that the "E164" address type defined in this memo is | Please note that the "E164" address type defined in this memo is | |||
exclusively defined to be used in conjunction with the "PSTN" network | exclusively defined to be used in conjunction with the "PSTN" network | |||
type in accordance with regular Offer/Answer procedures [RFC4566]. | type in accordance with regular offer/answer procedures [RFC4566]. | |||
Note: RFC 3108 [RFC3108] also defines address type "E.164". This | Note: RFC 3108 [RFC3108] also defines address type "E.164". This | |||
definition is distinct from the one defined by this memo and shall | definition is distinct from the one defined by this memo and shall | |||
not be used with <nettype> "PSTN". | not be used with <nettype> "PSTN". | |||
This memo exclusively uses the international representation of E.164 | This memo exclusively uses the international representation of E.164 | |||
numbers, i.e., those including a country code and, as described above | numbers, i.e., those including a country code and, as described | |||
prepended with a '+' sign. Implementations conforming to this | above, prepended with a '+' sign. Implementations conforming to this | |||
specification and using the "E164" address type together with the | specification and using the "E164" address type together with the | |||
"PSTN" network type MUST use the 'global-number-digits' construction | "PSTN" network type MUST use the 'global-number-digits' construction | |||
specified in RFC 3966 [RFC3966] for representing international E.164 | specified in RFC 3966 [RFC3966] for representing international E.164 | |||
numbers. This representation requires the presence of the '+' sign, | numbers. This representation requires the presence of the '+' sign | |||
and additionally allows for the presence of one or more 'visual- | and additionally allows for the presence of one or more 'visual- | |||
separator' constructions for easier human readability (see | separator' constructions for easier human readability (see | |||
Section 5.7). | Section 5.7). | |||
Note that <connection-address> MUST NOT be omitted when unknown since | Note that <connection-address> MUST NOT be omitted when unknown since | |||
this would violate basic syntax of SDP [RFC4566]. In such cases, it | this would violate basic syntax of SDP [RFC4566]. In such cases, it | |||
MUST be set to a "-". | MUST be set to a "-". | |||
The following are examples of the extension to the connection data | The following are examples of the extension to the connection data | |||
line: | line: | |||
skipping to change at page 9, line 13 | skipping to change at page 9, line 13 | |||
c=PSTN E164 - | c=PSTN E164 - | |||
When the <addrtype> is E164, the connection address is defined as | When the <addrtype> is E164, the connection address is defined as | |||
follows: | follows: | |||
o an international E.164 number (prepended with a '+' sign) | o an international E.164 number (prepended with a '+' sign) | |||
o the value "-", signifying that the address is unknown | o the value "-", signifying that the address is unknown | |||
o any other value resulting from the production rule of connection- | o any other value resulting from the production rule of connection- | |||
address in RFC4566 [RFC4566], but in all cases any value | address in RFC 4566 [RFC4566], but in all cases any value | |||
encountered will be ignored. | encountered will be ignored. | |||
5.2.2. Media Descriptions | 5.2.2. Media Descriptions | |||
According to SDP [RFC4566], the media description line in SDP has the | According to SDP [RFC4566], the media description line in SDP has the | |||
following syntax: | following syntax: | |||
m=<media> <port> <proto> <fmt> ... | m=<media> <port> <proto> <fmt> ... | |||
The <media> subfield carries the media type. For establishing an | The <media> subfield carries the media type. For establishing an | |||
audio bearer, the existing "audio" media type is used. For | audio bearer, the existing "audio" media type is used. For | |||
establishing a video bearer, the existing "video" media type is used. | establishing a video bearer, the existing "video" media type is used. | |||
The <port> subfield is the transport port to which the media stream | The <port> subfield is the transport port to which the media stream | |||
is sent. Circuit-switched access lacks the concept of a port number, | is sent. Circuit-switched access lacks the concept of a port number; | |||
and therefore the <port> subfield does not carry any meaningful | therefore, the <port> subfield does not carry any meaningful value. | |||
value. In order to be compliant with SDP syntax, implementations | In order to be compliant with SDP syntax, implementations SHOULD set | |||
SHOULD set the <port> subfield to the discard port value "9" and MUST | the <port> subfield to the discard port value "9" and MUST ignore it | |||
ignore it on reception. | on reception. | |||
According to RFC 3264 [RFC3264], a port number of zero in the offer | According to RFC 3264 [RFC3264], a port number of zero in the offer | |||
of a unicast stream indicates that the stream is offered but must not | of a unicast stream indicates that the stream is offered but must not | |||
be used. If a port number of zero is present in the answer of a | be used. If a port number of zero is present in the answer of a | |||
unicast stream, it indicates that the stream is rejected. These | unicast stream, it indicates that the stream is rejected. These | |||
rules are still valid when the media line in SDP represents a | rules are still valid when the media line in SDP represents a | |||
circuit-switched bearer. | circuit-switched bearer. | |||
The <proto> subfield is the transport protocol. The circuit-switched | The <proto> subfield is the transport protocol. The circuit-switched | |||
bearer uses whatever transport protocol it has available. This | bearer uses whatever transport protocol it has available. This | |||
skipping to change at page 10, line 8 | skipping to change at page 10, line 8 | |||
The <fmt> subfield is the media format description. In the classical | The <fmt> subfield is the media format description. In the classical | |||
usage of SDP to describe RTP-based media streams, when the <proto> | usage of SDP to describe RTP-based media streams, when the <proto> | |||
subfield is set to "RTP/AVP" or "RTP/SAVP", the <fmt> subfield | subfield is set to "RTP/AVP" or "RTP/SAVP", the <fmt> subfield | |||
contains the payload types as defined in the RTP audio profile | contains the payload types as defined in the RTP audio profile | |||
[RFC3551]. | [RFC3551]. | |||
When "RTP/AVP" is used in the <proto> field, the <fmt> subfield | When "RTP/AVP" is used in the <proto> field, the <fmt> subfield | |||
contains the RTP payload type numbers. We use the <fmt> subfield to | contains the RTP payload type numbers. We use the <fmt> subfield to | |||
indicate the list of available codecs over the circuit-switched | indicate the list of available codecs over the circuit-switched | |||
bearer, by re-using the conventions and payload type numbers defined | bearer, by reusing the conventions and payload type numbers defined | |||
for RTP/AVP. The RTP audio and video media types, when applied to | for RTP / AVP. The RTP audio and video media types, when applied to | |||
PSTN circuit-switched bearers, represent merely an audio or video | PSTN circuit-switched bearers, represent merely an audio or video | |||
codec. If the endpoint is able to determine the list of available | codec. If the endpoint is able to determine the list of available | |||
codecs for circuit-switched media streams, it MUST use the | codecs for circuit-switched media streams, it MUST use the | |||
corresponding payload type numbers in the <fmt> subfield. | corresponding payload type numbers in the <fmt> subfield. | |||
In some cases, the endpoint is not able to determine the list of | In some cases, the endpoint is not able to determine the list of | |||
available codecs for circuit-switched media streams. In this case, | available codecs for circuit-switched media streams. In this case, | |||
in order to be syntactically compliant with SDP [RFC4566], the | in order to be syntactically compliant with SDP [RFC4566], the | |||
endpoint MUST include a single dash ("-") in the <fmt> subfield. | endpoint MUST include a single dash ("-") in the <fmt> subfield. | |||
skipping to change at page 11, line 12 | skipping to change at page 11, line 12 | |||
succeed. Other correlation mechanisms may exist, and their usage | succeed. Other correlation mechanisms may exist, and their usage | |||
will be specified when need arises. | will be specified when need arises. | |||
All mechanisms share the same principle: some unique information is | All mechanisms share the same principle: some unique information is | |||
sent in the SDP and in the circuit-switched signaling protocol. If | sent in the SDP and in the circuit-switched signaling protocol. If | |||
these pieces of information match, then the circuit-switched bearer | these pieces of information match, then the circuit-switched bearer | |||
is part of the session described in the SDP exchange. Otherwise, | is part of the session described in the SDP exchange. Otherwise, | |||
there is no guarantee that the circuit-switched bearer is related to | there is no guarantee that the circuit-switched bearer is related to | |||
such session. | such session. | |||
The first mechanism is based on the exchange of PSTN caller-ID | The first mechanism is based on the exchange of PSTN Caller ID | |||
between the endpoints. The caller-ID is also available as the | between the endpoints. The Caller ID is also available as the | |||
Calling Party ID in the circuit-switched signaling. | Calling Party Number in the circuit-switched signaling. | |||
The second mechanism is based on the inclusion in SDP of a value that | The second mechanism is based on the inclusion in SDP of a value that | |||
is also sent in the User-to-User Information Element that is part of | is also sent in the User-User Information Element that is part of the | |||
the bearer setup signaling in the PSTN. | bearer setup signaling in the PSTN. | |||
The third mechanism is based on sending in SDP a string that | The third mechanism is based on sending in SDP a string that | |||
represents Dual-Tone Multi-Frequency (DTMF) digits that will be later | represents Dual-Tone Multi-Frequency (DTMF) digits that will be later | |||
sent right after the circuit-switched bearer is established. | sent right after the circuit-switched bearer is established. | |||
The fourth correlation mechanism declares support for cases where | The fourth correlation mechanism declares support for cases where | |||
correlation is done by external means. Typically this means that the | correlation is done by external means. Typically, this means that | |||
decision is left for the human user. This is the way how some | the decision is left to the human user. This is how some current | |||
current conferencing systems operate: after logging on to the | conferencing systems operate: after logging on to the conference, the | |||
conference, the system calls back to the user's phone number to | system calls back to the user's phone number to establish audio | |||
establish audio communications, and it is up to the human user to | communications, and it is up to the human user to accept or reject | |||
accept or reject the incoming call. By declaring explicit support | the incoming call. By declaring explicit support for this mechanism, | |||
for this mechanism endpoints can use it only when such possibility | endpoints can use it only when such a possibility exists. | |||
exist. | ||||
Endpoints may opt to implement any combination of the correlation | Endpoints may opt to implement any combination of the correlation | |||
mechanisms specified in Section 5.2.3.2, Section 5.2.3.3, | mechanisms specified in Sections 5.2.3.2, 5.2.3.3, 5.2.3.4, and | |||
Section 5.2.3.4, and Section 5.2.3.5, including an option of | 5.2.3.5, including the option to implement none at all. | |||
implementing none at all. | ||||
5.2.3.1. The "cs-correlation" attribute | 5.2.3.1. The "cs-correlation" Attribute | |||
In order to provide support for the correlation mechanisms, we define | In order to provide support for the correlation mechanisms, we define | |||
a new media-level SDP attribute called "cs-correlation". There MUST | a new media-level SDP attribute called "cs-correlation". There MUST | |||
be at most one "cs-correlation" attribute per media description. | be at most one "cs-correlation" attribute per media description. | |||
This "cs-correlation" attribute MAY contain zero or more subfields, | This "cs-correlation" attribute MAY contain zero or more subfields -- | |||
either "callerid", "uuie", "dtmf", or "external" to specify | "callerid", "uuie", "dtmf", or "external" to specify additional | |||
additional information required by the Caller-ID, User to User | information required by the Caller ID, User-User Information Element, | |||
Information, DTMF, or external correlation mechanisms, respectively. | DTMF, or external correlation mechanisms, respectively. The list of | |||
The list of correlation mechanisms may be extended by other | correlation mechanisms may be extended by other specifications; see | |||
specifications, see Section 5.2.3.6 for more details. | Section 5.2.3.6 for more details. | |||
The following sections provide more detailed information of these | The following sections provide more detailed information about these | |||
subfields. | subfields. | |||
The values "callerid", "uuie", "dtmf" and "external" refer to the | The values "callerid", "uuie", "dtmf", and "external" refer to the | |||
correlation mechanisms defined in Section 5.2.3.2, Section 5.2.3.3, | correlation mechanisms defined in Sections 5.2.3.2, 5.2.3.3, 5.2.3.4, | |||
Section 5.2.3.4 and, Section 5.2.3.5 respectively. The formal | and 5.2.3.5, respectively. The formal Augmented Backus-Naur Format | |||
Augmented Backus-Naur Format (ABNF) syntax of the "cs-correlation" | (ABNF) syntax of the "cs-correlation" attribute is presented in | |||
attribute is presented in Section 5.7. | Section 5.7. | |||
5.2.3.2. Caller-ID Correlation Mechanism | 5.2.3.2. Caller ID Correlation Mechanism | |||
The Caller-ID correlation mechanisms consists of an exchange of the | The Caller ID correlation mechanism consists of an exchange of the | |||
calling party number as an international E.164 number in SDP, | Calling Party Number as an international E.164 number in SDP, | |||
followed by the availability of the Calling Party Number information | followed by the availability of the Calling Party Number Information | |||
element in the call setup signaling of the circuit switched | Element in the call setup signaling of the circuit-switched | |||
connection. If both pieces of information match, the circuit- | connection. If both pieces of information match, the circuit- | |||
switched bearer is correlated to the session described in SDP. | switched bearer is correlated to the session described in SDP. | |||
Example of inclusion of an international E.164 number in the "cs- | An example of inclusion of an international E.164 number in the | |||
correlation" attribute is: | "cs-correlation" attribute is: | |||
a=cs-correlation:callerid:+441134960123 | a=cs-correlation:callerid:+441134960123 | |||
The presence of the "callerid" subfield indicates that the endpoint | The presence of the "callerid" subfield indicates that the endpoint | |||
supports use of the calling party number as a means of correlating a | supports use of the Calling Party Number as a means of correlating a | |||
PSTN call with the session being negotiated. The "callerid" subfield | PSTN call with the session being negotiated. The "callerid" subfield | |||
MAY be accompanied by the international E.164 number of the party | MAY be accompanied by the international E.164 number of the party | |||
inserting the parameter. | inserting the parameter. | |||
Note that there are no guarantees that this correlation mechanism | Note that there are no guarantees that this correlation mechanism | |||
works or is even available, due a number of problems: | works or is even available, due a number of problems: | |||
o The endpoint might not be aware of its own E.164 number, in which | * The endpoint might not be aware of its own E.164 number, in | |||
case it cannot populate the SDP appropriately. | which case it cannot populate the SDP appropriately. | |||
o The Calling Party Number information element in the circuit- | * The Calling Party Number Information Element in the circuit- | |||
switched signaling might not be available, e.g., due to policy | switched signaling might not be available, e.g., due to policy | |||
restrictions of the network operator or caller restriction due to | restrictions of the network operator or caller restriction due | |||
privacy. | to privacy. | |||
o The Calling Party Number information element in the circuit- | * The Calling Party Number Information Element in the circuit- | |||
switched signaling might be available, but the digit | switched signaling might be available, but the digit | |||
representation of the E.164 number might differ from the one | representation of the E.164 number might differ from the one | |||
expressed in the SDP, due to, e.g., lack of country code. To | expressed in the SDP, due to, e.g., lack of country code. To | |||
mitigate this problem implementations should consider only some of | mitigate this problem, implementations should consider only | |||
the rightmost digits from the E.164 number for correlation. For | some of the rightmost digits from the E.164 number for | |||
example, the numbers +44-113-496-0123 and 0113-496-0123 could be | correlation. For example, the numbers +44-113-496-0123 and | |||
considered as the same number. This is also the behavior of some | 0113-496-0123 could be considered as the same number. This is | |||
cellular phones, which correlate the incoming calling party with a | also the behavior of some cellular phones, which correlate the | |||
number stored in the phone book, for the purpose of displaying the | incoming calling party with a number stored in the phone book, | |||
caller's name. Please refer to ITU-T E.164 recommendation | for the purpose of displaying the caller's name. Please refer | |||
[ITU.E164.1991] for consideration of the relevant number of digits | to ITU-T E.164 recommendation [ITU.E164.2010] for consideration | |||
to consider. | of the relevant number of digits to consider. | |||
5.2.3.3. User-User Information Element Correlation Mechanism | 5.2.3.3. User-User Information Element Correlation Mechanism | |||
A second correlation mechanism is based on including in SDP a string | A second correlation mechanism is based on including in SDP a string | |||
that represents the User-User Information Element that is part of the | that represents the User-User Information Element that is part of the | |||
call setup signaling of the circuit-switched bearer. The User-User | call setup signaling of the circuit-switched bearer. The User-User | |||
Information Element is specified in ITU-T Q.931 [ITU.Q931.1998] and | Information Element is specified in ITU-T Q.931 [ITU.Q931.1998] and | |||
3GPP TS 24.008 [TS.24.008], among others. The User-User Information | 3GPP TS 24.008 [TS.24.008], among others. The User-User Information | |||
Element has a maximum size of 35 or 131 octets, depending on the | Element has a maximum size of 35 or 131 octets, depending on the | |||
actual message of the PSTN protocol where it is included and the | actual message of the PSTN protocol where it is included and the | |||
network settings. | network settings. | |||
The mechanism works as follows: An endpoint creates a User-User | The mechanism works as follows. An endpoint creates a User-User | |||
Information Element, according to the requirements of the call setup | Information Element, according to the requirements of the call setup | |||
signaling protocol. The same value is included in the SDP offer or | signaling protocol. The same value is included in the SDP offer or | |||
SDP answer, in the "uuie" subfield of the "cs-correlation" attribute. | SDP answer, in the "uuie" subfield of the "cs-correlation" attribute. | |||
When the SDP Offer/Answer exchange is completed, each endpoint has | When the SDP offer/answer exchange is completed, each endpoint has | |||
become aware of the value that will be used in the User-User | become aware of the value that will be used in the User-User | |||
Information Element of the call setup message of the PSTN protocol. | Information Element of the call setup message of the PSTN protocol. | |||
The endpoint that initiates the call setup attempt includes this | The endpoint that initiates the call setup attempt includes this | |||
value in the User-User Information Element. The recipient of the | value in the User-User Information Element. The recipient of the | |||
call setup attempt can extract the User-User Information Element and | call setup attempt can extract the User-User Information Element and | |||
correlate it with the value previously received in the SDP. If both | correlate it with the value previously received in the SDP. If both | |||
values match, then the call setup attempt corresponds to that | values match, then the call setup attempt corresponds to that | |||
indicated in the SDP. | indicated in the SDP. | |||
According to ITU-T Q.931 [ITU.Q931.1998], the User-User Information | According to ITU-T Q.931 [ITU.Q931.1998], the User-User Information | |||
Element (UUIE) identifier is composed of a first octet identifying | Element (UUIE) identifier is composed of a first octet identifying | |||
this as a User-User Information Element, a second octet containing | this as a User-User Information Element, a second octet containing | |||
the Length of the user-user contents, a third octet containing a | the length of the user-user contents, a third octet containing a | |||
Protocol Discriminator, and a value of up to 32 or 128 octets | Protocol Discriminator, and a value of up to 32 or 128 octets | |||
(depending on network settings) containing the actual User | (depending on network settings) containing the actual User | |||
Information (see Figure 4-36 in ITU-T Q.931). The first two octets | Information (see Figure 4-36 in [ITU.Q931.1998]). The first two | |||
of the UUIE MUST NOT be used for correlation, only the octets | octets of the UUIE MUST NOT be used for correlation; only the octets | |||
carrying the Protocol Discriminator and the User Information value | carrying the Protocol Discriminator and the User Information value | |||
are input to the creation of the value of the "uuie" subfield in the | are input to the creation of the value of the "uuie" subfield in the | |||
"cs-correlation" attribute. Therefore, the value of the "uuie" | "cs-correlation" attribute. Therefore, the value of the "uuie" | |||
subfield in the "cs-correlation" attribute MUST start with the | subfield in the "cs-correlation" attribute MUST start with the | |||
Protocol Discriminator octet, followed by the User Information | Protocol Discriminator octet, followed by the User Information | |||
octets. The value of the Protocol Discriminator octet is not | octets. The value of the Protocol Discriminator octet is not | |||
specified in this document; it is expected that organizations using | specified in this document; it is expected that organizations using | |||
this technology will allocate a suitable value for the Protocol | this technology will allocate a suitable value for the Protocol | |||
Discriminator. | Discriminator. | |||
Once the binary value of the "uuie" subfield in the "cs-correlation" | Once the binary value of the "uuie" subfield in the "cs-correlation" | |||
attribute is created, it MUST be base 16 (also known as "hex") | attribute is created, it MUST be base 16 (also known as "hex") | |||
encoded before it is inserted in SDP. Please refer to RFC 4648 | encoded before it is inserted in SDP. Please refer to RFC 4648 | |||
[RFC4648] for a detailed description of base 16 encoding. The | [RFC4648] for a detailed description of base 16 encoding. The | |||
resulting encoded value needs to have an even number of hexadecimal | resulting encoded value needs to have an even number of hexadecimal | |||
digits, and MUST be considered invalid if it has an odd number. | digits and MUST be considered invalid if it has an odd number. | |||
Note that the encoding of the "uuie" subfield of the "cs- | Note: The encoding of the "uuie" subfield of the "cs-correlation" | |||
correlation" attribute is largely inspired by the encoding of the | attribute is largely inspired by the encoding of the same value in | |||
same value in the User-to-User header field in SIP, according to | the User-to-User header field in SIP, according to "A Mechanism | |||
the document "A Mechanism for Transporting User to User Call | for Transporting User to User Call Control Information in SIP" | |||
Control Information in SIP" [I-D.ietf-cuss-sip-uui]. | [SIP-UUI]. | |||
As an example, an endpoint willing to send a UUIE containing a | As an example, an endpoint willing to send a UUIE containing a | |||
protocol discriminator with the hexadecimal value of %x56 and an | Protocol Discriminator with the hexadecimal value of %x56 and an | |||
hexadecimal User Information value of %xA390F3D2B7310023 would | hexadecimal User Information value of %xA390F3D2B7310023 would | |||
include a "cs-correlation" attribute line as follows: | include an "a=cs-correlation" attribute line as follows: | |||
a=cs-correlation:uuie:56A390F3D2B7310023 | a=cs-correlation:uuie:56A390F3D2B7310023 | |||
Note that the value of the User-User Information Element is | Note that the value of the User-User Information Element is | |||
considered as an opaque string and only used for correlation | considered as an opaque string and only used for correlation | |||
purposes. Typically call signaling protocols impose requirements on | purposes. Typically, call signaling protocols impose requirements on | |||
the creation of User-User Information Element for end-user protocol | the creation of a User-User Information Element for end-user protocol | |||
exchange. The details regarding the generation of the User-User | exchange. The details regarding the generation of the User-User | |||
Information Element are outside the scope of this specification. | Information Element are outside the scope of this specification. | |||
Please note that there are no guarantees that this correlation | Please note that there are no guarantees that this correlation | |||
mechanism works. On one side, policy restrictions might not make the | mechanism works. On one side, policy restrictions might not make the | |||
User-User information available end to end in the PSTN. On the other | User-User information available end to end in the PSTN. On the other | |||
hand, the generation of the User-User Information Element is | hand, the generation of the User-User Information Element is | |||
controlled by the PSTN circuit-switched call protocol, which might | controlled by the PSTN circuit-switched call protocol, which might | |||
not offer enough freedom for generating different values from one | not offer enough freedom for generating different values from one | |||
endpoint to another one, or from one call to another in the same | endpoint to another one or from one call to another in the same | |||
endpoint. This might result in the same value of the User-User | endpoint. This might result in the same value of the User-User | |||
Information Element for all calls. | Information Element for all calls. | |||
5.2.3.4. DTMF Correlation Mechanism | 5.2.3.4. DTMF Correlation Mechanism | |||
We introduce a third mechanism for correlating the circuit-switched | We introduce a third mechanism for correlating the circuit-switched | |||
bearer with the session described with SDP. This is based on | bearer with the session described with SDP. This is based on | |||
agreeing on a sequence of digits that are negotiated in the SDP Offer | agreeing on a sequence of digits that are negotiated in the SDP | |||
/Answer exchange and sent as Dual-Tone Multi-Frequency (DTMF) ITU-T | offer/answer exchange and sent as DTMF tones as described in ITU-T | |||
Recommendation Q.23 [ITU.Q23.1988] tones over the circuit-switched | Recommendation Q.23 [ITU.Q23.1988] over the circuit-switched bearer | |||
bearer once this bearer is established. If the DTMF digit sequence | once this bearer is established. If the DTMF digit sequence received | |||
received through the circuit-switched bearer matches the digit string | through the circuit-switched bearer matches the digit string | |||
negotiated in the SDP, the circuit-switched bearer is correlated with | negotiated in the SDP, the circuit-switched bearer is correlated with | |||
the session described in the SDP. The mechanism is similar to many | the session described in the SDP. The mechanism is similar to many | |||
voice conferencing systems which require the user to enter a PIN code | voice conferencing systems that require the user to enter a PIN code | |||
using DTMF tones in order to be accepted in a voice conference. | using DTMF tones in order to be accepted in a voice conference. | |||
The mechanism works as follows: An endpoint selects a DTMF digit | The mechanism works as follows. An endpoint selects a DTMF digit | |||
sequence. The same sequence is included in the SDP offer or SDP | sequence. The same sequence is included in the SDP offer or SDP | |||
answer, in a "dtmf" subfield of the "cs-correlation" attribute. When | answer, in a "dtmf" subfield of the "cs-correlation" attribute. When | |||
the SDP Offer/Answer exchange is completed, each endpoint has become | the SDP offer/answer exchange is completed, each endpoint has become | |||
aware of the DTMF sequence that will be sent right after the circuit- | aware of the DTMF sequence that will be sent right after the circuit- | |||
switched bearer is set up. The endpoint that initiates the call | switched bearer is set up. The endpoint that initiates the call | |||
setup attempt sends the DTMF digits according to the procedures | setup attempt sends the DTMF digits according to the procedures | |||
defined for the circuit-switched bearer technology used. The | defined for the circuit-switched bearer technology used. The | |||
recipient (passive side of the bearer setup) of the call setup | recipient (passive side of the bearer setup) of the call setup | |||
attempt collects the digits and compares them with the value | attempt collects the digits and compares them with the value | |||
previously received in the SDP. If the digits match, then the call | previously received in the SDP. If the digits match, then the call | |||
setup attempt corresponds to that indicated in the SDP. | setup attempt corresponds to that indicated in the SDP. | |||
Implementations are advised to select a number of DTMF digits that | Note: Implementations are advised to select a number of DTMF | |||
provide enough assurance that the call is related, but on the | digits that provide enough assurance that the call is related but | |||
other hand do not prolong the bearer setup time unnecessarily. A | do not prolong the bearer setup time unnecessarily. A number of 5 | |||
number of 5 to 10 digits is a good compromise. | to 10 digits is a good compromise. | |||
As an example, an endpoint willing to send DTMF tone sequence "14D*3" | As an example, an endpoint willing to send DTMF tone sequence "14D*3" | |||
would include a "cs-correlation" attribute line as follows: | would include an "a=cs-correlation" attribute line as follows: | |||
a=cs-correlation:dtmf:14D*3 | a=cs-correlation:dtmf:14D*3 | |||
If the endpoints successfully agree on the usage of the DTMF digit | If the endpoints successfully agree on the usage of the DTMF digit | |||
correlation mechanism, but the passive side does not receive any DTMF | correlation mechanism but the passive side does not receive any DTMF | |||
digits after successful circuit-switched bearer setup, or receives a | digits after successful circuit-switched bearer setup or receives a | |||
set of DTMF digits that do not match the value of the "dtmf" | set of DTMF digits that do not match the value of the "dtmf" | |||
attribute (including receiving too many digits), the passive side | attribute (including receiving too many digits), the passive side | |||
SHOULD consider that this DTMF mechanism has failed to correlate the | SHOULD consider that this DTMF mechanism has failed to correlate the | |||
incoming call. | incoming call. | |||
5.2.3.5. The external correlation mechanism | 5.2.3.5. External Correlation Mechanism | |||
The fourth correlation mechanism relies on external means for | The fourth correlation mechanism relies on external means for | |||
correlating the incoming call to the session. Since endpoints can | correlating the incoming call to the session. Since endpoints can | |||
select which correlation mechanisms they support, it may happen that | select which correlation mechanisms they support, it may happen that | |||
no other common correlation mechanism is found, or that the selected | no other common correlation mechanism is found or that the selected | |||
correlation mechanism does not succeed due to the required feature | correlation mechanism does not succeed due to the required feature | |||
not being supported by the underlying PSTN network. In these cases, | not being supported by the underlying PSTN network. In these cases, | |||
the human user can do the decision of accepting or rejecting the | the human user can make the decision to accept or reject the incoming | |||
incoming call, thus "correlating" the call with the session. Since | call, thus "correlating" the call with the session. Since not all | |||
not all endpoints are operated by a human user, or if there is no | endpoints are operated by a human user and since there may be no | |||
other external means implemented by the endpoint for the correlation | other external means implemented by the endpoint for the correlation | |||
function, we explicitly define support for such external correlation | function, we explicitly define support for such an external | |||
mechanism. | correlation mechanism. | |||
Endpoints wishing to use this external correlation mechanism would | Endpoints wishing to use this external correlation mechanism would | |||
use a subfield "external" in the "a=cs-correlation" attribute. | use the "external" subfield in the "cs-correlation" attribute. | |||
Unlike the three other correlation mechanism, the "external" subfield | Unlike the other three correlation mechanisms, the "external" | |||
does not accept a value. An example of a "a=cs-correlation" | subfield does not accept a value. The following is an example of an | |||
attribute line would look like this: | "a=cs-correlation" attribute line: | |||
a=cs-correlation:external | a=cs-correlation:external | |||
Endpoints which are willing to only use the three explicit | Endpoints that are willing to only use the three explicit correlation | |||
correlation mechanisms defined in this document ("callerid", "uuie", | mechanisms defined in this document ("callerid", "uuie", and/or | |||
and/or "dtmf") would not include the "external" mechanism in the | "dtmf") would not include the "external" mechanism in the | |||
Offer/Answer exchange. | offer/answer exchange. | |||
The external correlation mechanism typically relies on the human user | The external correlation mechanism typically relies on the human user | |||
to do the decision on whether the call is related to the ongoing | to make the decision on whether or not the call is related to the | |||
session or not. After the user accepts the call, that bearer is | ongoing session. After the user accepts the call, that bearer is | |||
considered as related to the session. There is a small chance that | considered as related to the session. There is a small chance that | |||
the user receives at the same time another circuit-switched call | the user receives at the same time another circuit-switched call that | |||
which is not related to the ongoing session. The user may reject | is not related to the ongoing session. The user may reject this call | |||
this call if he is able to determine (e.g. based on the calling line | if he is able to determine (e.g., based on the calling line | |||
identification) that the call is not related to the session, and | identification) that the call is not related to the session and | |||
continue waiting for another call attempt. If the user accepts the | continue waiting for another call attempt. If the user accepts the | |||
incoming circuit-switched call, but it turns out to be not related to | incoming circuit-switched call, but it turns out to be not related to | |||
the session, the endpoints need to rely on the human user to take | the session, the endpoints need to rely on the human user to take | |||
appropriate action (typically, they would hang up). | appropriate action (typically, the user would hang up). | |||
5.2.3.6. Extensions to correlation mechanisms | 5.2.3.6. Extensions to Correlation Mechanisms | |||
New values for the "cs-correlation" attribute may be specified. The | New values for the "cs-correlation" attribute may be specified. The | |||
registration policy for new values is "Specification Required", see | registration policy for new values is "Specification Required"; see | |||
Section 8. Any such specification MUST include a description of how | Section 8. Any such specification MUST include a description of how | |||
SDP Offer/Answer mechanism is used to negotiate the use of the new | the SDP offer/answer mechanism is used to negotiate the use of the | |||
values, taking into account how endpoints determine which side will | new values, taking into account how endpoints determine which side | |||
become active or passive (see Section 5.3 for more details). | will become active or passive (see Section 5.3 for more details). | |||
If, during the Offer/Answer negotiation, either endpoint encounters | If, during the offer/answer negotiation, either endpoint encounters | |||
an unknown value in the "cs-correlation" attribute, it MUST consider | an unknown value in the "cs-correlation" attribute, it MUST consider | |||
that mechanism as unsupported, and MUST NOT include that value in | that mechanism as unsupported and MUST NOT include that value in | |||
subsequent Offer/Answer negotiation. | subsequent offer/answer negotiation. | |||
5.3. Negotiating the correlation mechanisms | 5.3. Negotiating the Correlation Mechanisms | |||
The four correlation mechanisms presented above (based on called | The four correlation mechanisms presented above (based on Called | |||
party number, User-User Information Element, DTMF digit sending, and | Party Number, User-User Information Element, DTMF digit sending, and | |||
external) are non-exclusive, and can be used independently of each | external) are non-exclusive and can be used independently of each | |||
other. In order to know how to populate the "cs-correlation" | other. In order to know how to populate the "cs-correlation" | |||
attribute, the endpoints need to agree which endpoint will become the | attribute, the endpoints need to agree which endpoint will become the | |||
active party, i.e., the one that will set up the circuit-switched | active party, i.e., the one that will set up the circuit-switched | |||
bearer. | bearer. | |||
5.3.1. Determining the Direction of the Circuit-Switched Bearer Setup | 5.3.1. Determining the Direction of the Circuit-Switched Bearer Setup | |||
In order to avoid a situation where both endpoints attempt to | In order to avoid a situation where both endpoints attempt to | |||
initiate a connection simultaneously, the direction in which the | initiate a connection simultaneously, the direction in which the | |||
circuit-switched bearer is set up MUST be negotiated during the Offer | circuit-switched bearer is set up MUST be negotiated during the | |||
/Answer exchange. | offer/answer exchange. | |||
The framework defined in RFC 4145 [RFC4145] allows the endpoints to | The framework defined in RFC 4145 [RFC4145] allows the endpoints to | |||
agree which endpoint acts as the active endpoint when initiating a | agree which endpoint acts as the active endpoint when initiating a | |||
TCP connection. While RFC 4145 [RFC4145] was originally designed for | TCP connection. While RFC 4145 [RFC4145] was originally designed for | |||
establishing TCP connections, it can be easily extrapolated to the | establishing TCP connections, it can be easily extrapolated to the | |||
connection establishment of circuit-switched bearers. This | connection establishment of circuit-switched bearers. This | |||
specification uses the concepts specified in RFC 4145 [RFC4145] for | specification uses the concepts specified in RFC 4145 [RFC4145] for | |||
agreeing on the direction of establishment of a circuit-switched | agreeing on the direction of establishment of a circuit-switched | |||
bearer. | bearer. | |||
RFC 4145 [RFC4145] defines two new attributes in SDP: "setup" and | RFC 4145 [RFC4145] defines two new attributes in SDP: "setup" and | |||
"connection". The "setup" attribute indicates which of the endpoints | "connection". The "setup" attribute indicates which of the endpoints | |||
should initiate the connection establishment of the PSTN circuit- | should initiate the connection establishment of the PSTN circuit- | |||
switched bearer. Four values are defined in Section 4 of RFC 4145 | switched bearer. Four values are defined in Section 4 of RFC 4145 | |||
[RFC4145]: "active", "passive", "actpass", "holdconn". Please refer | [RFC4145]: "active", "passive", "actpass", and "holdconn". Please | |||
to Section 4 of RFC 4145 [RFC4145] for a detailed description of this | refer to Section 4 of RFC 4145 [RFC4145] for a detailed description | |||
attribute. | of this attribute. | |||
The "connection" attribute indicates whether a new connection is | The "connection" attribute indicates whether a new connection is | |||
needed or an existing connection is reused. The attribute can take | needed or an existing connection is reused. The attribute can take | |||
the values "new" or "existing". Please refer to Section 5 of RFC | the values "new" or "existing". Please refer to Section 5 of RFC | |||
4145 [RFC4145] for a detailed description of this attribute. | 4145 [RFC4145] for a detailed description of this attribute. | |||
Implementations according to this specification MUST support the | Implementations that are compliant with this specification MUST | |||
"setup" and "connection" attributes specified in RFC 4145 [RFC4145], | support the "setup" and "connection" attributes specified in RFC 4145 | |||
but applied to circuit-switched bearers in the PSTN. | [RFC4145], but applied to circuit-switched bearers in the PSTN. | |||
We define the active party as the one that initiates the circuit- | We define the active party as the one that initiates the circuit- | |||
switched bearer after the Offer/Answer exchange. The passive party | switched bearer after the offer/answer exchange. The passive party | |||
is the one receiving the circuit-switched bearer. Either party may | is the one receiving the circuit-switched bearer. Either party may | |||
indicate its desire to become the active or passive party during the | indicate its desire to become the active or passive party during the | |||
Offer/Answer exchange using the procedures described in Section 5.6. | offer/answer exchange using the procedures described in Section 5.6. | |||
5.3.2. Populating the cs-correlation attribute | 5.3.2. Populating the "cs-correlation" Attribute | |||
By defining values for the subfields in the "a=cs-correlation" | By defining values for the subfields in the "cs-correlation" | |||
attribute, the endpoint indicates that it is willing to become the | attribute, the endpoint indicates that it is willing to become the | |||
active party, and that it can use those values in the Calling party | active party and that it can use those values in the Calling Party | |||
number, User-User Information Element, or as DTMF tones during the | Number, in the User-User Information Element, or as DTMF tones during | |||
circuit-switched bearer setup. | the circuit-switched bearer setup. | |||
Thus, the following rules apply: | Thus, the following rules apply: | |||
An endpoint that can only become the active party in the circuit- | o An endpoint that can only become the active party in the circuit- | |||
switched bearer setup MUST include all correlation mechanisms it | switched bearer setup MUST include all correlation mechanisms it | |||
supports in the "a=cs-correlation" attribute, and MUST also | supports in the "cs-correlation" attribute and MUST also specify | |||
specify values for the "callerid", "uuie" and "dtmf" subfields. | values for the "callerid", "uuie", and "dtmf" subfields. Notice | |||
Notice that the "external" subfield does not accept a value. | that the "external" subfield does not accept a value. | |||
An endpoint that can only become the passive party in the circuit- | o An endpoint that can only become the passive party in the circuit- | |||
switched bearer setup MUST include all correlation mechanisms it | switched bearer setup MUST include all correlation mechanisms it | |||
supports in the "a=cs-correlation" attribute, but MUST NOT specify | supports in the "cs-correlation" attribute but MUST NOT specify | |||
values for the subfields. | values for the subfields. | |||
An endpoint that is willing to become either the active or passive | o An endpoint that is willing to become either the active or passive | |||
party (by including the "a=setup:actpass" attribute in the Offer), | party (by including the "a=setup:actpass" attribute in the offer) | |||
MUST include all correlation mechanisms it supports in the "a=cs- | MUST include all correlation mechanisms it supports in the | |||
correlation" attribute, and MUST also specify values for the | "cs-correlation" attribute and MUST also specify values for the | |||
"callerid", "uuie" and "dtmf" subfields. Notice that the | "callerid", "uuie", and "dtmf" subfields. Notice that the | |||
"external" subfield does not accept a value. | "external" subfield does not accept a value. | |||
5.3.3. Considerations on correlations | 5.3.3. Considerations for Correlations | |||
Passive endpoints should expect an incoming CS call for setting up | Passive endpoints should expect an incoming circuit-switched (CS) | |||
the audio bearer. Passive endpoints MAY suppress the incoming CS | call for setting up the audio bearer. Passive endpoints MAY suppress | |||
alert during a certain time periods. Additional restrictions can be | the incoming CS alert during certain time periods. Additional | |||
applied, such as the passive endpoint not alerting incoming calls | restrictions can be applied, such as the passive endpoint not | |||
originated from the number that was observed during the offer/answer | alerting incoming calls originated from the number that was observed | |||
negotiation. | during the offer/answer negotiation. | |||
There may be cases when an endpoint is not willing to include one or | There may be cases when an endpoint is not willing to include one or | |||
more correlation mechanisms in the "a=cs-correlation" attribute line | more correlation mechanisms in the "a=cs-correlation" attribute line | |||
even if it supports it. For example, some correlation mechanisms can | even if it supports it. For example, some correlation mechanisms can | |||
be omitted if the endpoint is certain that the PSTN network does not | be omitted if the endpoint is certain that the PSTN network does not | |||
support carrying the correlation identifier. Also, since using the | support carrying the correlation identifier. Also, since using the | |||
DTMF based correlation mechanism requires the call to be accepted | DTMF-based correlation mechanism requires the call to be accepted | |||
before DTMF tones cane be sent, some endpoints may enforce a policy | before DTMF tones can be sent, some endpoints may enforce a policy | |||
restricting this due to for example cost associated with received | restricting this due to, for example, cost associated with received | |||
calls, making the DTMF based mechanism unusable. | calls, making the DTMF-based mechanism unusable. | |||
Note that it cannot be guaranteed that the correlation mechanisms | Note that it cannot be guaranteed that the correlation mechanisms | |||
relying on caller identification, User-User Information Element and | relying on caller identification, User-User Information Element, and | |||
DTMF sending will succeed even if the usage of those was agreed | DTMF sending will succeed even if the usage of those was agreed | |||
beforehand. This is due to the fact that the correlation mechanisms | beforehand. This is due to the fact that correlation mechanisms | |||
require support from the circuit-switched bearer technology used. | require support from the circuit-switched bearer technology used. | |||
Therefore, even a single positive indication using any of these | Therefore, even a single positive indication using any of these | |||
mechanisms SHOULD be interpreted by the passive endpoint so that the | mechanisms SHOULD be interpreted by the passive endpoint so that the | |||
circuit-switched bearer establishment is related to the ongoing | circuit-switched bearer establishment is related to the ongoing | |||
session, even if the other correlation mechanisms fail. | session, even if the other correlation mechanisms fail. | |||
If, after successfully negotiating any of the "callerid", "uuie" or | If, after successfully negotiating any of the "callerid", "uuie", or | |||
"dtmf" correlation mechanisms in the SDP offer/answer exchange, an | "dtmf" correlation mechanisms in the SDP offer/answer exchange, an | |||
endpoint receives an incoming establishment of a circuit-switched | endpoint receives an incoming establishment of a circuit-switched | |||
bearer with no correlation information present, the endpoint first | bearer with no correlation information present, the endpoint first | |||
checks whether the offer/answer exchange was used to successfully | checks whether or not the offer/answer exchange was also used to | |||
negotiate also the "external" correlation mechanism. If it was, the | successfully negotiate the "external" correlation mechanism. If it | |||
endpoint should leave the decision to be made by this external means, | was, the endpoint should let the decision be made by external means, | |||
typically the human user. If the "external" correlation mechanism | typically the human user. If the "external" correlation mechanism | |||
was not successfully negotiated, the endpoint should treat the call | was not successfully negotiated, the endpoint should treat the call | |||
as unrelated to the ongoing session in the IP domain. | as unrelated to the ongoing session in the IP domain. | |||
5.4. Considerations for Usage of Existing SDP | 5.4. Considerations for Usage of Existing SDP | |||
5.4.1. Originator of the Session | 5.4.1. Originator of the Session | |||
According to SDP [RFC4566], the origin line in SDP has the following | According to SDP [RFC4566], the origin line in SDP has the following | |||
syntax: | syntax: | |||
skipping to change at page 19, line 40 | skipping to change at page 20, line 5 | |||
Of interest here are the <nettype> and <addrtype> fields, which | Of interest here are the <nettype> and <addrtype> fields, which | |||
indicate the type of network and type of address, respectively. | indicate the type of network and type of address, respectively. | |||
Typically, this field carries the IP address of the originator of the | Typically, this field carries the IP address of the originator of the | |||
session. Even if the SDP was used to negotiate an audio or video | session. Even if the SDP was used to negotiate an audio or video | |||
media stream transported over a circuit-switched bearer, the | media stream transported over a circuit-switched bearer, the | |||
originator is using SDP over an IP bearer. Therefore, <nettype> and | originator is using SDP over an IP bearer. Therefore, <nettype> and | |||
<addrtype> fields in the "o=" line should be populated with the IP | <addrtype> fields in the "o=" line should be populated with the IP | |||
address identifying the source of the signaling. | address identifying the source of the signaling. | |||
5.4.2. Contact information | 5.4.2. Contact Information | |||
SDP [RFC4566] defines the "p=" line which may include the phone | SDP [RFC4566] defines the "p=" line, which may include the phone | |||
number of the person responsible for the conference. Even though | number of the person responsible for the conference. Even though | |||
this line can carry a phone number, it is not suited for the purpose | this line can carry a phone number, it is not suited for the purpose | |||
of defining a connection address for the media. Therefore, we have | of defining a connection address for the media. Therefore, we have | |||
selected to define the PSTN specific connection addresses in the "c=" | selected to define the PSTN-specific connection addresses in the "c=" | |||
line. | line. | |||
5.5. Considerations for Usage of Third Party Call Control (3PCC) | 5.5. Considerations for Usage of Third Party Call Control (3PCC) | |||
Best Current Practices for Third Party Call Control (3pcc) in the | "Best Current Practices for Third Party Call Control (3PCC) in the | |||
Session Initiation Protocol (SIP) [RFC3725] outlines several flows | Session Initiation Protocol (SIP)" [RFC3725] outlines several flows | |||
which are possible in third party call control scenarios and | that are possible in third party call control scenarios and | |||
recommends some flows for specific situations. | recommends some flows for specific situations. | |||
One of the assumptions in [RFC3725] is that an SDP Offer may include | One of the assumptions in [RFC3725] is that an SDP offer may include | |||
a "black hole" connection address, which has the property that | a "black hole" connection address, which has the property that | |||
packets sent to it will never leave the host which sent them. For | packets sent to it will never leave the host that sent them. For | |||
IPv4, this "black hole" connection address is 0.0.0.0, or a domain | IPv4, this "black hole" connection address is 0.0.0.0 or a domain | |||
name within the .invalid DNS top level domain. | name within the .invalid DNS top level domain. | |||
When using an E.164 address scheme in the context of third-party call | When using an E.164 address scheme in the context of third party call | |||
control, when the User Agent needs to indicate an unknown phone | control, when the User Agent needs to indicate an unknown phone | |||
number, it MUST populate the <addrtype> of the SDP "c=" line with a | number, it MUST populate the <addrtype> of the SDP "c=" line with a | |||
"-" string. | "-" string. | |||
Note that this may result in the recipient of the initial offer | Note: This may result in the recipient of the initial offer | |||
rejecting such offer if the recipient of the offer was not aware | rejecting such offer if the recipient of the offer was not aware | |||
of its own E.164 number. Consequently it will not be possible to | of its own E.164 number. Consequently, it will not be possible to | |||
establish a circuit-switched bearer, since neither party is aware | establish a circuit-switched bearer, since neither party is aware | |||
of their E.164 number. | of its E.164 number. | |||
5.6. Offer/Answer mode extensions | 5.6. Offer/Answer Mode Extensions | |||
In this section, we define extensions to the Offer/Answer model | In this section, we define extensions to the offer/answer model | |||
defined in The Offer/Answer Model in SDP [RFC3264] to allow for PSTN | defined in "An Offer/Answer Model with the Session Description | |||
addresses to be used with the Offer/Answer model. | Protocol (SDP)" [RFC3264] to allow for PSTN addresses to be used with | |||
the offer/answer model. | ||||
5.6.1. Generating the Initial Offer | 5.6.1. Generating the Initial Offer | |||
The Offerer, wishing to use PSTN audio or video stream, MUST populate | The offerer, wishing to use PSTN audio or video stream, MUST populate | |||
the "c=" and "m=" lines as follows. | the "c=" and "m=" lines as follows. | |||
The endpoint MUST set the <nettype> in the "c=" line to "PSTN", and | The endpoint MUST set the <nettype> in the "c=" line to "PSTN" and | |||
the <addrtype> to "E164". Furthermore, the endpoint SHOULD set the | the <addrtype> to "E164". Furthermore, the endpoint SHOULD set the | |||
<connection-address> field to its own international E.164 number | <connection-address> field to its own international E.164 number | |||
(with a leading "+"). If the endpoint is not aware of its own E.164 | (with a leading "+"). If the endpoint is not aware of its own E.164 | |||
number, it MUST set the <connection-address> to "-". | number, it MUST set the <connection-address> to "-". | |||
In the "m=" line, the endpoint MUST set the <media> subfield to | In the "m=" line, the endpoint MUST set the <media> subfield to | |||
"audio" or "video", depending on the media type, and the <proto> | "audio" or "video", depending on the media type, and the <proto> | |||
subfield to "PSTN". The <port> subfield SHOULD be set to "9" (the | subfield to "PSTN". The <port> subfield SHOULD be set to "9" (the | |||
discard port). The values "audio" or "video" in the <media> subfield | discard port). The values "audio" or "video" in the <media> subfield | |||
MUST NOT be set by the endpoint unless it has knowledge that these | MUST NOT be set by the endpoint unless it has knowledge that these | |||
skipping to change at page 21, line 21 | skipping to change at page 21, line 39 | |||
the PSTN bearer. In case the endpoint is not aware of the codecs | the PSTN bearer. In case the endpoint is not aware of the codecs | |||
available for the circuit-switched media streams, it MUST include a | available for the circuit-switched media streams, it MUST include a | |||
dash ("-") in the <fmt> subfield. | dash ("-") in the <fmt> subfield. | |||
The mapping table of static payload types numbers to payload types is | The mapping table of static payload types numbers to payload types is | |||
initially specified in [RFC3551] and maintained by IANA. For dynamic | initially specified in [RFC3551] and maintained by IANA. For dynamic | |||
payload types, the endpoint MUST define the set of valid encoding | payload types, the endpoint MUST define the set of valid encoding | |||
names and related parameters using the "a=rtpmap" attribute line. | names and related parameters using the "a=rtpmap" attribute line. | |||
See Section 6 of RFC 4566 [RFC4566] for details. | See Section 6 of RFC 4566 [RFC4566] for details. | |||
When generating the Offer, the Offerer MUST include an attribute line | When generating the offer, the offerer MUST include an | |||
"a=cs-correlation" in the SDP offer. The Offerer MUST NOT include | "a=cs-correlation" attribute line in the SDP offer. The offerer MUST | |||
more than one "cs-correlation" attribute per media description. The | NOT include more than one "cs-correlation" attribute per media | |||
"a=cs-correlation" line SHOULD contain an enumeration of all the | description. The "a=cs-correlation" line SHOULD contain an | |||
correlation mechanisms supported by the Offerer, in the format of | enumeration of all the correlation mechanisms supported by the | |||
subfields. See Section 5.3.3 for more information on usage of the | offerer, in the format of subfields. See Section 5.3.3 for more | |||
correlation mechanisms. | information on usage of the correlation mechanisms. | |||
The current list of subfields include "callerid", "uuie", "dtmf", and | The current list of subfields include "callerid", "uuie", "dtmf", and | |||
"extenal", and they refer to the correlation mechanisms defined in | "external", and they refer to the correlation mechanisms defined in | |||
Section 5.2.3.2, Section 5.2.3.3, Section 5.2.3.4, and | Sections 5.2.3.2, 5.2.3.3, 5.2.3.4, and 5.2.3.5, respectively. | |||
Section 5.2.3.5 respectively. | ||||
If the Offerer supports any of the correlation mechanisms defined in | If the offerer supports any of the correlation mechanisms defined in | |||
this memo, and is willing to become the active party, the Offerer | this memo and is willing to become the active party, the offerer MUST | |||
MUST add the "callerid", "uuie", "dtmf" and/or "extern" subfields and | add the "callerid", "uuie", "dtmf", and/or "external" subfields and | |||
MUST specify values for them as follows: | MUST specify values for them as follows: | |||
o the international E.164 number as the value in the "callerid" | o The international E.164 number as the value in the "callerid" | |||
subfield, | subfield. | |||
o the contents of the User-User information element as the value of | o The contents of the User-User Information Element as the value of | |||
the "uuie" subfield, and/or | the "uuie" subfield. | |||
o the DTMF tone string as the value of the "dtmf" subfield | o The DTMF tone string as the value of the "dtmf" subfield. | |||
o for the "external" subfield, the endpoint MUST NOT specify any | o The endpoint MUST NOT specify any value for the "external" | |||
value. | subfield. | |||
If the Offerer is only able to become the passive party in the | If the offerer is only able to become the passive party in the | |||
circuit-switched bearer setup, it MUST add at least one of the | circuit-switched bearer setup, it MUST add at least one of the | |||
possible correlation mechanisms, but MUST NOT specify values for | possible correlation mechanisms but MUST NOT specify values for those | |||
those subfields. | subfields. | |||
For example, if the Offerer is willing to use the User-User | For example, if the offerer is willing to use the User-User | |||
Information element and DTMF digit sending mechanisms but can only | Information Element and DTMF digit-sending mechanisms but can only | |||
become the passive party, and is also able to let the human user | become the passive party, and is also able to let the human user | |||
decide whether the correlation should be done or not, it includes the | decide whether the correlation should be done or not, it includes the | |||
following lines in the SDP: | following lines in the SDP: | |||
a=cs-correlation:uuie dtmf external | a=cs-correlation:uuie dtmf external | |||
a=setup:passive | a=setup:passive | |||
If, on the other hand, the Offerer is willing to use the User-User | If, on the other hand, the offerer is willing to use the User-User | |||
Information element and the DTMF correlation mechanisms and is able | Information Element and the DTMF correlation mechanisms and is able | |||
to become the active or passive side, and is also able to let the | to become the active or passive side, and is also able to let the | |||
human user decide whether the correlation should be done or no, it | human user decide whether the correlation should be done or not, it | |||
includes the following lines in the SDP: | includes the following lines in the SDP: | |||
a=cs-correlation:uuie:56A390F3D2B7310023 dtmf:14D*3 external | a=cs-correlation:uuie:56A390F3D2B7310023 dtmf:14D*3 external | |||
a=setup:actpass | a=setup:actpass | |||
The negotiation of the value of the 'setup' attribute takes place as | The negotiation of the value of the "setup" attribute takes place as | |||
defined in Section 4.1 of RFC4145 [RFC4145]. | defined in Section 4.1 of RFC 4145 [RFC4145]. | |||
The Offerer states which role or roles it is willing to perform; and | The offerer states which role or roles it is willing to perform; the | |||
the Answerer, taking the Offerer's willingness into consideration, | answerer, taking the offerer's willingness into consideration, | |||
chooses which roles both endpoints will actually perform during the | chooses which roles both endpoints will actually perform during the | |||
circuit-switched bearer setup. | circuit-switched bearer setup. | |||
By 'active' endpoint, we refer to an endpoint that will establish the | By "active" endpoint, we refer to an endpoint that will establish the | |||
circuit-switched bearer; and by 'passive' endpoint, we refer to an | circuit-switched bearer; by "passive" endpoint, we refer to an | |||
endpoint that will receive a circuit-switched bearer. | endpoint that will receive a circuit-switched bearer. | |||
If an Offerer does not know its international E.164 number, it MUST | If an offerer does not know its international E.164 number, it MUST | |||
set the 'a=setup' attribute to the value 'active'. If the Offerer | set the "setup" attribute to the value "active". If the offerer | |||
knows its international E.164 number, it SHOULD set the value to | knows its international E.164 number, it SHOULD set the value to | |||
either 'actpass' or 'passive'. | either "actpass" or "passive". | |||
Also 'holdconn' is a permissible value in the 'a=setup' attribute. | Also "holdconn" is a permissible value in the "setup" attribute. It | |||
It indicates that the connection should not be established for the | indicates that the connection should not be established for the time | |||
time being. | being. | |||
The Offerer uses the "a=connection" attribute to decide whether a new | The offerer uses the "connection" attribute to decide whether a new | |||
circuit-switched bearer is to be established or not. For the initial | circuit-switched bearer is to be established or not. For the initial | |||
Offer, the Offerer MUST use value 'new'. | offer, the offerer MUST use value "new". | |||
5.6.2. Generating the Answer | 5.6.2. Generating the Answer | |||
If the Offer contained a circuit-switched audio or video stream, the | If the offer contained a circuit-switched audio or video stream, the | |||
Answerer first determines whether it is able to accept and use such | answerer first determines whether it is able to accept and use such | |||
streams on the circuit-switched network. If the Answerer does not | streams on the circuit-switched network. If the answerer does not | |||
support or is not willing to use circuit-switched media for the | support or is not willing to use circuit-switched media for the | |||
session, it MUST construct an Answer where the port number for such | session, it MUST construct an answer where the port number for such | |||
media stream(s) is set to zero, according to Section 6 of [RFC3264]. | media stream(s) is set to zero, according to Section 6 of [RFC3264]. | |||
If the Answerer is willing to use circuit-switched media for the | If the answerer is willing to use circuit-switched media for the | |||
session, it MUST ignore the received port number (unless the port | session, it MUST ignore the received port number (unless the port | |||
number is set to zero). | number is set to zero). | |||
If the Offer included a "-" as the payload type number, it indicates | If the offer included a "-" as the payload type number, it indicates | |||
that the Offerer is not willing or able to define any specific | that the offerer is not willing or able to define any specific | |||
payload type. Most often, a "-" is expected to be used instead of | payload type. Most often, a "-" is expected to be used instead of | |||
the payload type when the endpoint is not aware of or not willing to | the payload type when the endpoint is not aware of or not willing to | |||
define the codecs which will eventually be used on the circuit- | define the codecs that will eventually be used on the circuit- | |||
switched bearer. The circuit-switched signaling protocols have their | switched bearer. The circuit-switched signaling protocols have their | |||
own means of negotiating or indicating the codecs, therefore an | own means of negotiating or indicating the codecs; therefore, an | |||
Answerer SHOULD accept such Offers, and SHOULD set the payload type | answerer SHOULD accept such offers and SHOULD set the payload type to | |||
to "-" also in the Answer. | "-" in the answer. | |||
If the Answerer explicitly wants to specify a codec for the circuit- | If the answerer explicitly wants to specify a codec for the circuit- | |||
switched media, it MAY set the respective payload numbers in the | switched media, it MAY set the respective payload numbers in the | |||
<fmt> subfield in the answer. This behavior, however, is NOT | <fmt> subfield in the answer. This behavior, however, is NOT | |||
RECOMMENDED. | RECOMMENDED. | |||
When receiving the Offer, the Answerer MUST determine whether it | When receiving the offer, the answerer MUST determine whether it | |||
becomes the active or passive party. | becomes the active or passive party. | |||
If the SDP in the Offer indicates that the Offerer is only able to | If the SDP in the offer indicates that the offerer is only able to | |||
become the active party, the Answerer needs to determine whether it | become the active party, the answerer needs to determine whether it | |||
is able to become the passive party. If this is not possible e.g. | is able to become the passive party. If this is not possible, e.g., | |||
due to the Answerer not knowing its international E.164 number, the | due to the answerer not knowing its international E.164 number, the | |||
Answerer MUST reject the circuit-switched media by setting the port | answerer MUST reject the circuit-switched media by setting the port | |||
number to zero on the Answer. If the Answerer is aware of its | number to zero on the answer. If the answerer is aware of its | |||
international E.164 number, it MUST include the "a=setup" attribute | international E.164 number, it MUST include the "setup" attribute in | |||
in the Answer and set it to value "passive" or "holdconn". The | the answer and set it to value "passive" or "holdconn". The answerer | |||
Answerer MUST also include its E.164 number in the "c=" line. | MUST also include its E.164 number in the "c=" line. | |||
If the SDP in the Offer indicates that the Offerer is only able to | If the SDP in the offer indicates that the offerer is only able to | |||
become the passive party, the Answerer MUST verify that the Offerer's | become the passive party, the answerer MUST verify that the offerer's | |||
E.164 number is included in the "c=" line of the Offer. If the | E.164 number is included in the "c=" line of the offer. If the | |||
number is included, the Answerer MUST include the "a=setup" attribute | number is included, the answerer MUST include the "setup" attribute | |||
in the Answer and set it to value "active" or "holdconn". If the | in the answer and set it to value "active" or "holdconn". If the | |||
number is not included, or the recipient of the Offer is not willing | number is not included, the recipient of the offer is not willing to | |||
to establish a connection the E.164 based on a priori knowledge of | establish a connection the E.164 based on a priori knowledge of cost, | |||
cost, or other reasons, call establishment is not possible, and the | or other reasons, call establishment is not possible, and the | |||
Answerer MUST reject the circuit-switched media by setting the port | answerer MUST reject the circuit-switched media by setting the port | |||
number to zero in the Answer. | number to zero in the answer. | |||
If the SDP in the Offer indicates that the Offerer is able to become | If the SDP in the offer indicates that the offerer is able to become | |||
either the active or passive party, the Answerer determines which | either the active or passive party, the answerer determines which | |||
role it will take. If the Offer includes an international E.164 | role it will take. If the offer includes an international E.164 | |||
number in the "c=" line, the Answerer SHOULD become the active party. | number in the "c=" line, the answerer SHOULD become the active party. | |||
If the Answerer does not become the active party, and if the Answerer | If the answerer does not become the active party and if the answerer | |||
is aware of its E.164 number, it MUST become the passive party. If | is aware of its E.164 number, it MUST become the passive party. If | |||
the Answerer does not become the active or the passive party, it MUST | the answerer does not become the active or the passive party, it MUST | |||
reject the circuit-switched media by setting the port number to zero | reject the circuit-switched media by setting the port number to zero | |||
in the Answer. | in the answer. | |||
For each media description where the Offer includes a "a=cs- | For each media description where the offer includes a | |||
correlation" attribute, the Answerer MUST select from the Offer those | "cs-correlation" attribute, the answerer MUST select from the offer | |||
correlation mechanisms it supports, and include in the Answer one "a | those correlation mechanisms it supports and include in the answer | |||
=cs-correlation" attribute line containing those mechanisms it is | one "a=cs-correlation" attribute line containing those mechanisms it | |||
willing to use. The Answerer MUST only add one "a=cs-correlation" | is willing to use. The answerer MUST only add one "cs-correlation" | |||
attribute in those media descriptions where also the Offer included a | attribute in those media descriptions where also the offer included a | |||
"a=cs-correlation" attribute. The Answerer MUST NOT add any | "cs-correlation" attribute. The answerer MUST NOT add any mechanisms | |||
mechanisms which were not included in the offer. If there are more | that were not included in the offer. If there is more than one | |||
than one "cs-correlation" attributes per media description in the | "cs-correlation" attribute per media description in the offer, the | |||
Offer, the Answerer MUST discard all but the first for any media | answerer MUST discard all but the first for any media description. | |||
description. Also, the Answerer MUST discard all unknown "cs- | Also, the answerer MUST discard all unknown "cs-correlation" | |||
correlation" attribute values. | attribute values. | |||
If the Answerer becomes the active party, it MUST add a value to any | If the answerer becomes the active party, it MUST add a value to any | |||
of the possible subfields. | of the possible subfields. | |||
If the Answerer becomes the passive party, it MUST NOT add any values | If the answerer becomes the passive party, it MUST NOT add any values | |||
to the subfields in the "cs-correlation" attribute. | to the subfields in the "cs-correlation" attribute. | |||
After generating and sending the Answer, if the Answerer became the | After generating and sending the answer, if the answerer became the | |||
active party, it | active party, it | |||
o MUST extract the E.164 number from the "c=" line of the Offer and | o MUST extract the E.164 number from the "c=" line of the offer and | |||
MUST establish a circuit-switched bearer to that address. | MUST establish a circuit-switched bearer to that address. | |||
o if the SDP Answer contained a value for the "callerid" subfield, | o if the SDP answer contained a value for the "callerid" subfield, | |||
MUST set the Calling Party Number Information Element to that | MUST set the Calling Party Number Information Element to that | |||
number, | number. | |||
o if the SDP Answer contained a value for the "uuie" subfield, MUST | o if the SDP answer contained a value for the "uuie" subfield, MUST | |||
send the User-User Information element according to the rules | send the User-User Information Element according to the rules | |||
defined for the circuit-switched technology used, and set the | defined for the circuit-switched technology used and set the value | |||
value of the Information Element to that received in the SDP | of the Information Element to that received in the SDP offer. | |||
Offer, | ||||
o if the SDP Answer contained a value for the "dtmf" subfield, MUST | o if the SDP answer contained a value for the "dtmf" subfield, MUST | |||
send those DTMF digits according to the circuit-switched | send those DTMF digits according to the circuit-switched | |||
technology used. | technology used. | |||
If, on the other hand, the Answerer became the passive party, it | If, on the other hand, the answerer became the passive party, it | |||
o MUST be prepared to receive a circuit-switched bearer, | o MUST be prepared to receive a circuit-switched bearer, | |||
o if the Offer contained a value for the "callerid" subfield, MUST | o if the offer contained a value for the "callerid" subfield, MUST | |||
compare that value to the Calling Party Number Information Element | compare that value to the Calling Party Number Information Element | |||
of the circuit-switched bearer. If the received Calling Party | of the circuit-switched bearer. If the received Calling Party | |||
Number Information Element matches the value of the "callerid" | Number Information Element matches the value of the "callerid" | |||
subfield, the call SHOULD be treated as correlated to the ongoing | subfield, the call SHOULD be treated as correlated to the ongoing | |||
session. | session. | |||
o if the Offer contained a value for the "dtmf" subfield, MUST be | o if the offer contained a value for the "dtmf" subfield, MUST be | |||
prepared to receive and collect DTMF digits once the circuit- | prepared to receive and collect DTMF digits once the circuit- | |||
switched bearer is set up. The Answerer MUST compare the received | switched bearer is set up. The answerer MUST compare the received | |||
DTMF digits to the value of the "dtmf" subfield. If the received | DTMF digits to the value of the "dtmf" subfield. If the received | |||
DTMF digits match the value of the "dtmf" subfield in the "cs- | DTMF digits match the value of the "dtmf" subfield in the | |||
correlation" attribute, the call SHOULD be treated as correlated | "cs-correlation" attribute, the call SHOULD be treated as | |||
to the ongoing session. | correlated to the ongoing session. | |||
o if the Offer contained a value for the "uuie" subfield, MUST be | o if the offer contained a value for the "uuie" subfield, MUST be | |||
prepared to receive a User-User Information element once the | prepared to receive a User-User Information Element once the | |||
circuit-switched bearer is set up. The Answerer MUST compare the | circuit-switched bearer is set up. The answerer MUST compare the | |||
received UUI to the value of the "uuie" subfield. If the value of | received UUIE to the value of the "uuie" subfield. If the value | |||
the received UUI matches the value of the "uuie" subfield, the | of the received UUIE matches the value of the "uuie" subfield, the | |||
call SHOULD be treated as correlated to the ongoing session. | call SHOULD be treated as correlated to the ongoing session. | |||
o if the Offer contained a "external" subfield, MUST be prepared to | o if the offer contained an "external" subfield, MUST be prepared to | |||
receive a circuit-switched call and use the external means | receive a circuit-switched call and use the external means | |||
(typically the human user) for accepting or rejecting the call. | (typically, the human user) for accepting or rejecting the call. | |||
If the Answerer becomes the active party, generates an SDP answer, | If the answerer becomes the active party, generates an SDP answer, | |||
and then it finds out that the circuit-switched call cannot be | and then it finds out that the circuit-switched call cannot be | |||
established, then the Answerer MUST create a new SDP offer where | established, then the answerer MUST create a new SDP offer where the | |||
circuit-switched stream is removed from the session (actually, by | circuit-switched stream is removed from the session (actually, by | |||
setting the corresponding port in the m= line to zero) and send it to | setting the corresponding port in the "m=" line to zero) and send it | |||
its counterpart. This is to synchronize both parties (and potential | to its counterpart. This is to synchronize both parties (and | |||
intermediaries) on the state of the session. | potential intermediaries) on the state of the session. | |||
5.6.3. Offerer processing the Answer | 5.6.3. Offerer Processing the Answer | |||
When receiving the Answer, if the SDP does not contain "a=cs- | When receiving the answer, if the SDP does not contain an | |||
correlation" attribute line, the Offerer should take that as an | "a=cs-correlation" attribute line, the offerer should take that as an | |||
indication that the other party does not support or is not willing to | indication that the other party does not support or is not willing to | |||
use the procedures defined in the document for this session, and MUST | use the procedures defined in the document for this session and MUST | |||
revert to normal processing of SDP. | revert to normal processing of SDP. | |||
When receiving the Answer, the Offerer MUST first determine whether | When receiving the answer, the offerer MUST first determine whether | |||
it becomes the active or passive party, as described in | it becomes the active or passive party, as described in | |||
Section 5.3.1. | Section 5.3.1. | |||
If the Offerer becomes the active party, it | If the offerer becomes the active party, it | |||
o MUST extract the E.164 number from the "c=" line and MUST | o MUST extract the E.164 number from the "c=" line and MUST | |||
establish a circuit-switched bearer to that address. | establish a circuit-switched bearer to that address. | |||
o if the SDP Answer contained a value for the "uuie" subfield, MUST | o if the SDP answer contained a value for the "uuie" subfield, MUST | |||
send the User-User Information element according to the rules | send the User-User Information Element according to the rules | |||
defined for the circuit-switched technology used, and set the | defined for the circuit-switched technology used and set the value | |||
value of the Information Element to that received in the SDP | of the Information Element to that received in the SDP answer. | |||
Answer, | ||||
o if the SDP Answer contained a value for the "dtmf" subfield, MUST | o if the SDP answer contained a value for the "dtmf" subfield, MUST | |||
send those DTMF digits according to the circuit-switched | send those DTMF digits according to the circuit-switched | |||
technology used. | technology used. | |||
If the Offerer becomes the passive party, it | If the offerer becomes the passive party: | |||
o MUST be prepared to receive a circuit-switched bearer, | o It MUST be prepared to receive a circuit-switched bearer. | |||
o Note that if delivery of the Answer is delayed for some reason, | o Note that if delivery of the answer is delayed for some reason, | |||
the circuit-switched call attempt may arrive at the Offerer before | the circuit-switched call attempt may arrive at the offerer before | |||
the Answer has been processed. In this case, since the | the answer has been processed. In this case, since the | |||
correlation mechanisms are negotiated as part of the Offer/Answer | correlation mechanisms are negotiated as part of the offer/answer | |||
exchange, the Answerer cannot know whether or not the incoming | exchange, the answerer cannot know whether or not the incoming | |||
circuit-switched call attempt is correlated with the session being | circuit-switched call attempt is correlated with the session being | |||
negotiated, the Offerer SHOULD answer the circuit-switched call | negotiated; thus, the offerer SHOULD answer the circuit-switched | |||
attempt only after it has received and processed the Answer. | call attempt only after it has received and processed the answer. | |||
o If the Answer contained a value for the "dtmf" subfield, the | o If the answer contained a value for the "dtmf" subfield, the | |||
Offerer MUST be prepared to receive and collect DTMF digits once | offerer MUST be prepared to receive and collect DTMF digits once | |||
the circuit-switched bearer is set up. The Offerer SHOULD compare | the circuit-switched bearer is set up. The offerer SHOULD compare | |||
the received DTMF digits to the value of the "dtmf" subfield. If | the received DTMF digits to the value of the "dtmf" subfield. If | |||
the received DTMF digits match the value of the "dtmf" subfield in | the received DTMF digits match the value of the "dtmf" subfield in | |||
the "cs-correlation" attribute, the call SHOULD be treated as | the "cs-correlation" attribute, the call SHOULD be treated as | |||
correlated to the ongoing session. | correlated to the ongoing session. | |||
o If the Answer contained a value for the "uuie" subfield, the | o If the answer contained a value for the "uuie" subfield, the | |||
Offerer MUST be prepared to receive a User-User Information | offerer MUST be prepared to receive a User-User Information | |||
element once the circuit-switched bearer is set up. The Offerer | Element once the circuit-switched bearer is set up. The offerer | |||
SHOULD compare the received UUI to the value of the "uuie" | SHOULD compare the received UUIE to the value of the "uuie" | |||
subfield. If the value of the received UUI matches the value of | subfield. If the value of the received UUIE matches the value of | |||
the "uuie" subfield, the call SHOULD be treated as correlated to | the "uuie" subfield, the call SHOULD be treated as correlated to | |||
the ongoing session. | the ongoing session. | |||
o If the Answer contained a "external" subfield, the Offerer MUST be | o If the answer contained an "external" subfield, the offerer MUST | |||
prepared to receive a circuit-switched call and use the external | be prepared to receive a circuit-switched call and use the | |||
means (typically the human user) for accepting or rejecting the | external means (typically, the human user) for accepting or | |||
call. | rejecting the call. | |||
According the Offer/Answer Model with SDP [RFC3264], the Offerer | According the "An Offer/Answer Model with the Session Description | |||
needs to be ready to receive media as soon as the Offer has been | Protocol (SDP)" [RFC3264], the offerer needs to be ready to receive | |||
sent. It may happen that the Answerer, if it became the active | media as soon as the offer has been sent. It may happen that the | |||
party, will initiate a circuit-switched bearer setup which will | answerer, if it became the active party, will initiate a circuit- | |||
arrive at the Offerer before the Answer has arrived. However, the | switched bearer setup that will arrive at the offerer before the | |||
Offerer needs to receive the Answer and examine the information about | answer has arrived. However, the offerer needs to receive the answer | |||
the correlation mechanisms in order to successfully perform | and examine the information about the correlation mechanisms in order | |||
correlation of the circuit-switched call to the session. Therefore, | to successfully perform correlation of the circuit-switched call to | |||
if the Offerer receives an incoming circuit-switched call, it MUST | the session. Therefore, if the offerer receives an incoming circuit- | |||
NOT accept the call before the Answer has been received. If no | switched call, it MUST NOT accept the call before the answer has been | |||
Answer is received during an implementation specific time, the | received. If no answer is received during an implementation-specific | |||
Offerer MUST either modify the session according to [RFC3264] or | time, the offerer MUST either modify the session according to | |||
terminate it according to the session signaling procedures in | [RFC3264] or terminate it according to the session signaling | |||
question (for terminating a SIP session, see Section 15 of | procedures in question (for terminating a SIP session, see Section 15 | |||
[RFC3261]). | of [RFC3261]). | |||
5.6.4. Modifying the session | 5.6.4. Modifying the Session | |||
If, at a later time, one of the parties wishes to modify the session, | If, at a later time, one of the parties wishes to modify the session, | |||
e.g., by adding new media stream, or by changing properties used on | e.g., by adding a new media stream or by changing properties used on | |||
an existing stream, it may do so via the mechanisms defined for An | an existing stream, it may do so via the mechanisms defined in "An | |||
Offer/Answer Model with SDP [RFC3264]. | Offer/Answer Model with the Session Description Protocol (SDP)" | |||
[RFC3264]. | ||||
If there is an existing circuit-switched bearer between the | If there is an existing circuit-switched bearer between the endpoints | |||
endpoints, and the Offerer wants to reuse that, the Offerer MUST set | and the offerer wants to reuse that, the offerer MUST set the value | |||
the value of the "a=connection" attribute to 'existing'. | of the "connection" attribute to "existing". | |||
If either party removes the circuit-switched media from the session | If either party removes the circuit-switched media from the session | |||
(by setting the port number to zero), it MUST terminate the circuit- | (by setting the port number to zero), it MUST terminate the circuit- | |||
switched bearer using whatever mechanism is appropriate for the | switched bearer using whatever mechanism is appropriate for the | |||
technology in question. | technology in question. | |||
If either party wishes to drop and reestablish an existing call, that | If either party wishes to drop and reestablish an existing call, that | |||
party MUST first remove the circuit-switched media from the session | party MUST first remove the circuit-switched media from the session | |||
by setting the port number to zero, and then use another Offer/Answer | by setting the port number to zero and then use another offer/answer | |||
exchange where it MUST set the "a=connection" attribute to 'new'". | exchange where it MUST set the "connection" attribute to "new". If | |||
If the media types are different (for example, a different codec will | the media types are different (for example, a different codec will be | |||
be used for the circuit-switched bearer), the media descriptions for | used for the circuit-switched bearer), the media descriptions for | |||
terminating the existing bearer and the new bearer can be in the same | terminating the existing bearer and the new bearer can be in the same | |||
Offer. | offer. | |||
If either party would like to remove existing RTP based media from | If either party would like to remove existing RTP-based media from | |||
the session and replace that with a circuit-switched bearer, it would | the session and replace that with a circuit-switched bearer, it would | |||
create a new Offer to add the circuit-switched media as described in | create a new offer to add the circuit-switched media as described in | |||
Section 5.6.1 above, replacing the RTP based media description by the | Section 5.6.1 above, replacing the RTP-based media description with | |||
circuit-switched media description, as specified in RFC 3264 | the circuit-switched media description, as specified in RFC 3264 | |||
[RFC3264]. | [RFC3264]. | |||
Once the Offer/Answer exchange is done, but the circuit-switched | Once the offer/answer exchange is done, but the circuit-switched | |||
bearer is not yet established, there may be a period of time when no | bearer is not yet established, there may be a period of time when no | |||
media is available. Also, it may happen that correlating the | media is available. Also, it may happen that correlating the | |||
circuit-switched call fails for reasons discussed in Section 5.3.3. | circuit-switched call fails for reasons discussed in Section 5.3.3. | |||
In this case, even if the Offer/Answer exchange was successful, | In this case, even if the offer/answer exchange was successful, | |||
endpoints are not able to receive or send media. It is up to the | endpoints are not able to receive or send media. It is up to the | |||
implementation to decide the behavior in this case; if nothing else | implementation to decide the behavior in this case; if nothing else | |||
is done, the user most likely hangs up after a while if there was no | is done, the user most likely hangs up after a while if there is no | |||
other media in the session. Note that this may also happen when | other media in the session. Note that this may also happen when | |||
switching from RTP media to another RTP media (for example when | switching from one RTP media to another RTP media (for example, when | |||
firewall blocks the new media stream). | firewall blocks the new media stream). | |||
If either party would like to remove existing circuit-switched media | If either party would like to remove existing circuit-switched media | |||
from the session and replace that with RTP based media, it would | from the session and replace that with RTP-based media, it would | |||
modify the media description as per the procedures defined in RFC | modify the media description as per the procedures defined in RFC | |||
3264 [RFC3264]. The endpoint MUST then terminate the circuit- | 3264 [RFC3264]. The endpoint MUST then terminate the circuit- | |||
switched bearer using whatever mechanism is appropriate for the | switched bearer using whatever mechanism is appropriate for the | |||
technology in question. | technology in question. | |||
5.7. Formal Syntax | 5.7. Formal Syntax | |||
The following is the formal Augmented Backus-Naur Form (ABNF) | The following is the formal Augmented Backus-Naur Form (ABNF) | |||
[RFC5234] syntax that supports the extensions defined in this | [RFC5234] syntax that supports the extensions defined in this | |||
specification. The syntax is built above the SDP [RFC4566] and the | specification. The syntax is built above the SDP [RFC4566] and the | |||
tel URI [RFC3966] grammars. Implementations according to this | tel URI [RFC3966] grammars. Implementations that are compliant with | |||
specification MUST be compliant with this syntax. | this specification MUST be compliant with this syntax. | |||
Figure 2 shows the formal syntax of the extensions defined in this | Figure 2 shows the formal syntax of the extensions defined in this | |||
memo. | memo. | |||
; extension to the connection field originally specified | ; extension to the connection field originally specified | |||
; in RFC4566 | ; in RFC 4566 | |||
connection-field = [%x63 "=" nettype SP addrtype SP | connection-field = [%x63 "=" nettype SP addrtype SP | |||
connection-address CRLF] | connection-address CRLF] | |||
; CRLF defined in RFC5234 | ; CRLF defined in RFC 5234 | |||
;nettype and addrtype are defined in RFC 4566 | ;nettype and addrtype are defined in RFC 4566 | |||
connection-address /= global-number-digits / "-" | connection-address =/ global-number-digits / "-" | |||
; global-number-digits specified in RFC3966 | ; global-number-digits specified in RFC 3966 | |||
;subrules for correlation attribute | ;subrules for correlation attribute | |||
attribute /= cs-correlation-attr | attribute =/ cs-correlation-attr | |||
; attribute defined in RFC4566 | ; attribute defined in RFC 4566 | |||
cs-correlation-attr = "cs-correlation:" corr-mechanisms | cs-correlation-attr = "cs-correlation:" corr-mechanisms | |||
corr-mechanisms = corr-mech *(SP corr-mech) | corr-mechanisms = corr-mech *(SP corr-mech) | |||
corr-mech = caller-id-mech / uuie-mech / | corr-mech = caller-id-mech / uuie-mech / | |||
dtmf-mech / external-mech / | dtmf-mech / external-mech / | |||
ext-mech | ext-mech | |||
caller-id-mech = "callerid" [":" caller-id-value] | caller-id-mech = "callerid" [":" caller-id-value] | |||
caller-id-value = "+" 1*15DIGIT | caller-id-value = "+" 1*15DIGIT | |||
; DIGIT defined in RFC5234 | ; DIGIT defined in RFC 5234 | |||
uuie-mech = "uuie" [":" uuie-value] | uuie-mech = "uuie" [":" uuie-value] | |||
uuie-value = 1*65(HEXDIG HEXDIG) | uuie-value = 1*65(HEXDIG HEXDIG) | |||
;This represents up to 130 HEXDIG | ;This represents up to 130 HEXDIG | |||
; (65 octets) | ; (65 octets) | |||
;HEXDIG defined in RFC5234 | ;HEXDIG defined in RFC 5234 | |||
;HEXDIG defined as 0-9, A-F | ;HEXDIG defined as 0-9, A-F | |||
dtmf-mech = "dtmf" [":" dtmf-value] | dtmf-mech = "dtmf" [":" dtmf-value] | |||
dtmf-value = 1*32(DIGIT / %x41-44 / %x23 / %x2A ) | dtmf-value = 1*32(DIGIT / %x41-44 / %x23 / %x2A ) | |||
;0-9, A-D, '#' and '*' | ;0-9, A-D, '#' and '*' | |||
external-mech = "external" | external-mech = "external" | |||
ext-mech = ext-mech-name [":" ext-mech-value] | ext-mech = ext-mech-name [":" ext-mech-value] | |||
ext-mech-name = token | ext-mech-name = token | |||
ext-mech-value = token | ext-mech-value = token | |||
; token is specified in RFC4566 | ; token is specified in RFC 4566 | |||
Figure 2: Syntax of the SDP extensions | Figure 2: Syntax of the SDP Extensions | |||
6. Examples | 6. Examples | |||
In the examples below, where an SDP line is too long to be displayed | In the examples below, where an SDP line is too long to be displayed | |||
as a single line, a breaking character "\" indicates continuation in | as a single line, a breaking character "\" indicates continuation in | |||
the following line. Note that this character is included for display | the following line. Note that this character is included for display | |||
purposes only. Implementations MUST write a single line without | purposes only. Implementations MUST write a single line without | |||
breaks. | breaks. | |||
6.1. Single PSTN audio stream | 6.1. Single PSTN Audio Stream | |||
Endpoint A Endpoint B | Endpoint A Endpoint B | |||
| | | | | | |||
| (1) SDP Offer (PSTN audio) | | | (1) SDP offer (PSTN audio) | | |||
|--------------------------------->| | |--------------------------------->| | |||
| | | | | | |||
| (2) SDP Answer (PSTN audio) | | | (2) SDP answer (PSTN audio) | | |||
|<---------------------------------| | |<---------------------------------| | |||
| | | | | | |||
| PSTN call setup | | | PSTN call setup | | |||
|<---------------------------------| | |<---------------------------------| | |||
| | | | | | |||
|<==== media over PSTN bearer ====>| | |<==== media over PSTN bearer ====>| | |||
| | | | | | |||
Figure 3: Basic flow | Figure 3: Basic Flow | |||
Figure 3 shows a basic example that describes a single audio media | Figure 3 shows a basic example that describes a single audio media | |||
stream over a circuit-switched bearer. Endpoint A generates a SDP | stream over a circuit-switched bearer. Endpoint A generates an SDP | |||
Offer which is shown in Figure 4. The Offer describes a PSTN | offer, which is shown in Figure 4. The offer describes a PSTN | |||
circuit-switched bearer in the "m=" and "c=" line where it also | circuit-switched bearer in the "m=" and "c=" line where it also | |||
indicates its international E.164 number format. Additionally, | indicates its international E.164 number format. Additionally, | |||
Endpoint A expresses that it can initiate the circuit-switched bearer | Endpoint A expresses that it can initiate the circuit-switched bearer | |||
or be the recipient of it in the "a=setup" attribute line. The SDP | or be the recipient of it in the "a=setup" attribute line. The SDP | |||
Offer also includes correlation identifiers that this endpoint will | offer also includes correlation identifiers that this endpoint will | |||
insert in the Calling Party Number and/or User-User Information | insert in the Calling Party Number and/or User-User Information | |||
Element of the PSTN call setup if eventually this endpoint initiates | Element of the PSTN call setup if eventually this endpoint initiates | |||
the PSTN call. Endpoint A also includes the "external" as one | the PSTN call. Endpoint A also includes "external" as one | |||
correlation mechanism indicating that it can use the human user to | correlation mechanism, indicating that it can use the human user to | |||
perform correlation in case other mechanisms fail. | perform correlation in case other mechanisms fail. | |||
v=0 | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 192.0.2.5 | o=alice 2890844526 2890842807 IN IP4 192.0.2.5 | |||
s= | s= | |||
t=0 0 | t=0 0 | |||
m=audio 9 PSTN - | m=audio 9 PSTN - | |||
c=PSTN E164 +441134960123 | c=PSTN E164 +441134960123 | |||
a=setup:actpass | a=setup:actpass | |||
a=connection:new | a=connection:new | |||
a=cs-correlation:callerid:+441134960123 \ | a=cs-correlation:callerid:+441134960123 \ | |||
uuie:56A390F3D2B7310023 external | uuie:56A390F3D2B7310023 external | |||
Figure 4: SDP offer (1) | Figure 4: SDP Offer (1) | |||
Endpoint B generates a SDP Answer (Figure 5), describing a PSTN audio | Endpoint B generates an SDP answer (Figure 5), describing a PSTN | |||
media on port 9 without information on the media sub-type on the "m=" | audio media on port 9 without information on the media subtype on the | |||
line. The "c=" line contains B's international E.164 number. In the | "m=" line. The "c=" line contains B's international E.164 number. | |||
"a=setup" line Endpoint B indicates that it is willing to become the | In the "a=setup" line, Endpoint B indicates that it is willing to | |||
active endpoint when establishing the PSTN call, and it also includes | become the active endpoint when establishing the PSTN call, and it | |||
the "a=cs-correlation" attribute line containing the values it is | also includes the "a=cs-correlation" attribute line containing the | |||
going to include in the Calling Party Number and User-User IE of the | values it is going to include in the Calling Party Number and User- | |||
PSTN call establishment. Endpoint B is also able to perform | User Information Element of the PSTN call establishment. Endpoint B | |||
correlation by external means, in case other correlation mechanisms | is also able to perform correlation by external means, in case other | |||
fail. | correlation mechanisms fail. | |||
v=0 | v=0 | |||
o=- 2890973824 2890987289 IN IP4 192.0.2.7 | o=- 2890973824 2890987289 IN IP4 192.0.2.7 | |||
s= | s= | |||
t=0 0 | t=0 0 | |||
m=audio 9 PSTN - | m=audio 9 PSTN - | |||
c=PSTN E164 +441134960124 | c=PSTN E164 +441134960124 | |||
a=setup:active | a=setup:active | |||
a=connection:new | a=connection:new | |||
a=cs-correlation:callerid:+441134960124 \ | a=cs-correlation:callerid:+441134960124 \ | |||
uuie:74B9027A869D7966A2 external | uuie:74B9027A869D7966A2 external | |||
Figure 5: SDP Answer with circuit-switched media | Figure 5: SDP Answer with Circuit-Switched Media | |||
When Endpoint A receives the Answer, it examines that B is willing to | When Endpoint A receives the answer, it examines that B is willing to | |||
become the active endpoint when setting up the PSTN call. Endpoint A | become the active endpoint when setting up the PSTN call. Endpoint A | |||
temporarily stores B's E.164 number and the User-User IE value of the | temporarily stores B's E.164 number and the User-User IE value of the | |||
"cs-correlation" attribute, and waits for a circuit-switched bearer | "cs-correlation" attribute and waits for a circuit-switched bearer | |||
establishment. | establishment. | |||
Endpoint B initiates a circuit-switched bearer using whatever | Endpoint B initiates a circuit-switched bearer using whatever | |||
circuit-switched technology is available for it. The called party | circuit-switched technology is available for it. The Called Party | |||
number is set to A's number, and calling party number is set to B's | Number is set to A's number, and the Calling Party Number is set to | |||
own number. Endpoint B also sets the User-User Information Element | B's own number. Endpoint B also sets the User-User Information | |||
value to the one contained in the SDP Answer. | Element value to the one contained in the SDP answer. | |||
When Endpoint A receives the circuit-switched bearer establishment, | When Endpoint A receives the circuit-switched bearer establishment, | |||
it examines the UUIE and the calling party number, and by comparing | it examines the UUIE and the Calling Party Number and, by comparing | |||
those received during O/A exchange determines that the call is | those received during the offer/answer exchange, determines that the | |||
related to the SDP session. | call is related to the SDP session. | |||
It may also be that neither the UUIE nor the calling party number is | It may also be that neither the UUIE nor the Calling Party Number is | |||
received by the called party, or the format of the calling party | received by the called party, or the format of the Calling Party | |||
number is changed by the PSTN. Implementations may still accept such | Number is changed by the PSTN. Implementations may still accept such | |||
call establishment attempts as being related to the session that was | call establishment attempts as being related to the session that was | |||
established in the IP network. As it cannot be guaranteed that the | established in the IP network. As it cannot be guaranteed that the | |||
values used for correlation are always passed intact through the | values used for correlation are always passed intact through the | |||
network, they should be treated as additional hints that the circuit- | network, they should be treated as additional hints that the circuit- | |||
switched bearer is actually related to the session. | switched bearer is actually related to the session. | |||
6.2. Advanced SDP example: Circuit-Switched Audio and Video Streams | 6.2. Advanced SDP Example: Circuit-Switched Audio and Video Streams | |||
Endpoint A Endpoint B | Endpoint A Endpoint B | |||
| | | | | | |||
| (1) SDP Offer (PSTN audio and video) | | | (1) SDP offer (PSTN audio and video) | | |||
|------------------------------------------->| | |------------------------------------------->| | |||
| | | | | | |||
| (2) SDP Answer (PSTN audio) | | | (2) SDP answer (PSTN audio) | | |||
|<-------------------------------------------| | |<-------------------------------------------| | |||
| | | | | | |||
| PSTN call setup | | | PSTN call setup | | |||
|<-------------------------------------------| | |<-------------------------------------------| | |||
| | | | | | |||
|<======== media over PSTN bearer ==========>| | |<======== media over PSTN bearer ==========>| | |||
| | | | | | |||
Figure 6: Circuit-Switched Audio and Video streams | Figure 6: Circuit-Switched Audio and Video Streams | |||
Figure 6 shows an example of negotiating audio and video media | Figure 6 shows an example of negotiating audio and video media | |||
streams over circuit-switched bearers. | streams over circuit-switched bearers. | |||
v=0 | v=0 | |||
o=alice 2890844526 2890842807 IN IP4 192.0.2.5 | o=alice 2890844526 2890842807 IN IP4 192.0.2.5 | |||
s= | s= | |||
t=0 0 | t=0 0 | |||
a=setup:actpass | a=setup:actpass | |||
a=connection:new | a=connection:new | |||
c=PSTN E164 +441134960123 | c=PSTN E164 +441134960123 | |||
m=audio 9 PSTN - | m=audio 9 PSTN - | |||
a=cs-correlation:dtmf:1234536 | a=cs-correlation:dtmf:1234536 | |||
m=video 9 PSTN 34 | m=video 9 PSTN 34 | |||
a=rtpmap:34 H263/90000 | a=rtpmap:34 H263/90000 | |||
a=cs-correlation:callerid:+441134960123 | a=cs-correlation:callerid:+441134960123 | |||
Figure 7: SDP offer with circuit-switched audio and video (1) | Figure 7: SDP Offer with Circuit-Switched Audio and Video (1) | |||
Upon receiving the SDP offer described in Figure 7, Endpoint B | Upon receiving the SDP offer described in Figure 7, Endpoint B | |||
rejects the video stream as the device does not currently support | rejects the video stream as the device does not currently support | |||
video, but accepts the circuit-switched audio stream. As Endpoint A | video, but it accepts the circuit-switched audio stream. As Endpoint | |||
indicated that it is able to become either the active or passive | A indicated that it is able to become either the active or passive | |||
party, Endpoint B gets to select which role it would like to take. | party, Endpoint B gets to select which role it would like to take. | |||
Since the Offer contained the international E.164 number of Endpoint | Since the offer contained the international E.164 number of Endpoint | |||
A, Endpoint B decides that it becomes the active party in setting up | A, Endpoint B decides that it becomes the active party in setting up | |||
the circuit-switched bearer. B includes a new value in the "dtmf" | the circuit-switched bearer. B includes a new value in the "dtmf" | |||
subfield of the "cs-correlation" attribute, which it is going to send | subfield of the "cs-correlation" attribute, which it is going to send | |||
as DTMF tones once the bearer setup is complete. The Answer is | as DTMF tones once the bearer setup is complete. The answer is | |||
described in Figure 8 | described in Figure 8. | |||
v=0 | v=0 | |||
o=- 2890973824 2890987289 IN IP4 192.0.2.7 | o=- 2890973824 2890987289 IN IP4 192.0.2.7 | |||
s= | s= | |||
t=0 0 | t=0 0 | |||
a=setup:active | a=setup:active | |||
a=connection:new | a=connection:new | |||
c=PSTN E164 +441134960124 | c=PSTN E164 +441134960124 | |||
m=audio 9 PSTN - | m=audio 9 PSTN - | |||
a=cs-correlation:dtmf:654321 | a=cs-correlation:dtmf:654321 | |||
m=video 0 PSTN 34 | m=video 0 PSTN 34 | |||
a=cs-correlation:callerid:+441134960124 | a=cs-correlation:callerid:+441134960124 | |||
Figure 8: SDP answer with circuit-switched audio and video (2) | Figure 8: SDP Answer with Circuit-Switched Audio and Video (2) | |||
7. Security Considerations | 7. Security Considerations | |||
This document provides an extension on top of RFC 4566 [RFC4566], and | This document provides an extension to RFC 4566 [RFC4566] and RFC | |||
RFC 3264 [RFC3264]. As such, the security considerations of those | 3264 [RFC3264]. As such, the security considerations of those | |||
documents apply. | documents apply. | |||
This memo provides mechanisms to agree on a correlation identifier or | This memo provides mechanisms to agree on a correlation identifier or | |||
identifiers that are used to evaluate whether an incoming circuit- | identifiers that are used to evaluate whether an incoming circuit- | |||
switched bearer is related to an ongoing session in the IP domain. | switched bearer is related to an ongoing session in the IP domain. | |||
If an attacker replicates the correlation identifier and establishes | If an attacker replicates the correlation identifier and establishes | |||
a call within the time window the receiving endpoint is expecting a | a call within the time window the receiving endpoint is expecting a | |||
call, the attacker may be able to hijack the circuit-switched bearer. | call, the attacker may be able to hijack the circuit-switched bearer. | |||
These types of attacks are not specific to the mechanisms presented | These types of attacks are not specific to the mechanisms presented | |||
in this memo. For example, caller ID spoofing is a well-known attack | in this memo. For example, Caller ID spoofing is a well-known attack | |||
in the PSTN. Users are advised to use the same caution before | in the PSTN. Users are advised to use the same caution before | |||
revealing sensitive information as they would on any other phone | revealing sensitive information as they would on any other phone | |||
call. Furthermore, users are advised that mechanisms that may be in | call. Furthermore, users are advised that mechanisms that may be in | |||
use in the IP domain for securing the media, like Secure RTP (SRTP) | use in the IP domain for securing the media, like Secure RTP (SRTP) | |||
[RFC3711], are not available in the CS domain. | [RFC3711], are not available in the CS domain. | |||
For the purposes of establishing a circuit-switched bearer, the | For the purposes of establishing a circuit-switched bearer, the | |||
active endpoint needs to know the passive endpoint's phone number. | active endpoint needs to know the passive endpoint's phone number. | |||
Phone numbers are sensitive information, and some people may choose | Phone numbers are sensitive information, and some people may choose | |||
not to reveal their phone numbers when calling using supplementary | not to reveal their phone numbers when calling using supplementary | |||
services like Calling Line Identification Restriction (CLIR) in GSM. | services like Calling Line Identification Restriction (CLIR) in GSM. | |||
Implementations should take the caller's preferences regarding | Implementations should take the caller's preferences regarding | |||
calling line identification into account if possible, by restricting | calling line identification into account if possible, by restricting | |||
the inclusion of the phone number in SDP "c=" line if the caller has | the inclusion of the phone number in the SDP "c=" line if the caller | |||
chosen to use CLIR. If this is not possible, implementations may | has chosen to use CLIR. If this is not possible, implementations may | |||
present a prompt informing the user that their phone number may be | present a prompt informing the user that their phone number may be | |||
transmitted to the other party. | transmitted to the other party. | |||
Similarly as with IP addresses, if there is a desire to protect the | As with IP addresses, if there is a desire to protect the SDP | |||
SDP containing phone numbers carried in SIP, implementers are advised | containing phone numbers carried in SIP, implementers are advised to | |||
to follow the security mechanisms defined in [RFC3261]. | follow the security mechanisms defined in [RFC3261]. | |||
It is possible that an attacker creates a circuit-switched session | It is possible that an attacker creates a circuit-switched session | |||
whereby the attacked endpoint should dial a circuit-switched number, | whereby the attacked endpoint should dial a circuit-switched number, | |||
perhaps even a premium-rate telephone number. To mitigate the | perhaps even a premium-rate telephone number. To mitigate the | |||
consequences of this attack, endpoints MUST authenticate and trust | consequences of this attack, endpoints MUST authenticate and trust | |||
remote endpoints users who try to remain passive in the circuit- | remote endpoints users who try to remain passive in the circuit- | |||
switched connection establishment. It is RECOMMENDED that endpoints | switched connection establishment. It is RECOMMENDED that endpoints | |||
have local policies precluding the active establishment of circuit | have local policies precluding the active establishment of circuit- | |||
switched connections to certain numbers (e.g., international, | switched connections to certain numbers (e.g., international, | |||
premium, long distance). Additionally, it is strongly RECOMMENDED | premium, and long distance). Additionally, it is strongly | |||
that the end user is asked for consent prior to the endpoint | RECOMMENDED that the end user is asked for consent prior to the | |||
initiating a circuit-switched connection. | endpoint initiating a circuit-switched connection. | |||
8. IANA Considerations | 8. IANA Considerations | |||
This document instructs IANA to register a number of SDP tokens | IANA has registered a number of SDP tokens according to the following | |||
according to the following data. | data. | |||
8.1. Registration of new cs-correlation SDP attribute | 8.1. Registration of the New "cs-correlation" SDP Attribute | |||
Contact: Miguel Garcia <miguel.a.garcia@ericsson.com> | Contact: Miguel Garcia <miguel.a.garcia@ericsson.com> | |||
Attribute name: cs-correlation | Attribute name: cs-correlation | |||
Long-form attribute name: PSTN Correlation Identifier | Long-form attribute name: PSTN Correlation Identifier | |||
Type of attribute: media level only | Type of attribute: media level only | |||
Subject to charset: No | Subject to charset: No | |||
Description: This attribute provides the Correlation Identifier | Description: This attribute provides the Correlation Identifier | |||
used in PSTN signaling | used in PSTN signaling | |||
Appropriate values:see Section 5.2.3.1 | Appropriate values: see Section 5.2.3.1 | |||
Specification: RFC XXXX | Specification: RFC 7195 | |||
The IANA is requested to create a subregistry for 'cs-correlation' | The IANA has created a subregistry for the "cs-correlation" attribute | |||
attribute under the Session Description Protocol (SDP) Parameters | under the "Session Description Protocol (SDP) Parameters" registry. | |||
registry. The initial values for the subregistry are presented in | The initial values for the subregistry are presented in the | |||
the following, and IANA is requested to add them into its database: | following; IANA has registered these values accordingly: | |||
Value of 'cs-correlation' attribute Reference Description | Value of "cs-correlation" attribute Reference Description | |||
----------------------------------- --------- ----------- | ----------------------------------- --------- ------------------- | |||
callerid RFC XXXX Caller ID | callerid RFC 7195 Caller ID | |||
uuie RFC XXXX User-User | uuie RFC 7195 User-User | |||
Information Element | Information Element | |||
dtmf RFC XXXX Dual-tone | dtmf RFC 7195 Dual-Tone | |||
Multi-Frequency | Multi-Frequency | |||
external RFC XXXX External | external RFC 7195 External | |||
Note for the RFC Editor: 'RFC XXXX' above should be replaced by a | ||||
reference to the RFC number of this draft. | ||||
As per the terminology in [RFC5226], the registration policy for new | As per the terminology in [RFC5226], the registration policy for new | |||
values of 'cs-correlation' parameter is 'Specification Required'. | values of the "cs-correlation" attribute is "Specification Required". | |||
8.2. Registration of a new "nettype" value | 8.2. Registration of a New "nettype" Value | |||
This memo provides instructions to IANA to register a new "nettype" | IANA has registered a new "nettype" in the "Session Description | |||
in the Session Description Protocol Parameters registry [1]. The | Protocol (SDP) Parameters" registry [IANA]. The registration data, | |||
registration data, according to RFC 4566 [RFC4566] follows. | according to RFC 4566 [RFC4566], is as follows. | |||
Type SDP Name Reference | Type SDP Name Reference | |||
---- ------------------ --------- | -------------- ------------------ --------- | |||
nettype PSTN [RFCxxxx] | nettype PSTN RFC 7195 | |||
8.3. Registration of new "addrtype" value | 8.3. Registration of a New "addrtype" Value | |||
This memo provides instructions to IANA to register a new "addrtype" | IANA has registered a new "addrtype" in the "Session Description | |||
in the Session Description Protocol Parameters registry [2]. The | Protocol (SDP) Parameters" registry [IANA]. The registration data, | |||
registration data, according to RFC 4566 [RFC4566] follows. | according to RFC 4566 [RFC4566], is as follows. | |||
Type SDP Name Reference | Type SDP Name Reference | |||
---- ------------------ --------- | -------------- ------------------ --------- | |||
addrtype E164 [RFCxxxx] | addrtype E164 RFC 7195 | |||
Note: RFC XXXX defines the "E164" addrtype in the context of the | Note: This document defines the "E164" addrtype in the context of the | |||
"PSTN" nettype only. Please refer to the relevant RFC for a | "PSTN" nettype only. RFC 3108 [RFC3108] also defines address type | |||
description of that representation. | "E.164". This definition is distinct from the one defined by this | |||
memo and shall not be used with <nettype> "PSTN". | ||||
8.4. Registration of a new "proto" value | 8.4. Registration of a New "proto" Value | |||
This memo provides instructions to IANA to register a new "proto" in | IANA has registered a new "proto" in the "Session Description | |||
the Session Description Protocol Parameters registry [3]. The | Protocol (SDP) Parameters" registry [IANA]. The registration data, | |||
registration data, according to RFC 4566 [RFC4566] follows. | according to RFC 4566 [RFC4566], is as follows. | |||
Type SDP Name Reference | Type SDP Name Reference | |||
-------------- --------------------------- --------- | -------------- ------------------ --------- | |||
proto PSTN [RFCxxxx] | proto PSTN RFC 7195 | |||
The related "fmt" namespace re-uses the conventions and payload type | The related "fmt" namespace reuses the conventions and payload type | |||
number defined for RTP/AVP. In RFC XXXX, the RTP audio and video | number defined for RTP/AVP. In this document, the RTP audio and | |||
media types, when applied to PSTN circuit-switched bearers, represent | video media types, when applied to PSTN circuit-switched bearers, | |||
merely an audio or video codec in its native format directly on top | represent merely an audio or video codec in its native format | |||
of a single PSTN bearer. | directly on top of a single PSTN bearer. | |||
In come cases, the endpoint is not able to determine the list of | In some cases, the endpoint is not able to determine the list of | |||
available codecs for circuit-switched media streams. In this case, | available codecs for circuit-switched media streams. In this case, | |||
in order to be syntactically compliant with SDP [RFC4566], the | in order to be syntactically compliant with SDP [RFC4566], the | |||
endpoint MUST include a single dash ("-") in the <fmt> subfield. | endpoint MUST include a single dash ("-") in the <fmt> subfield. | |||
9. Acknowledgments | 9. Acknowledgments | |||
The authors want to thank Paul Kyzivat, Flemming Andreasen, Thomas | The authors want to thank Paul Kyzivat, Flemming Andreasen, Thomas | |||
Belling, John Elwell, Jari Mutikainen, Miikka Poikselka, Jonathan | Belling, John Elwell, Jari Mutikainen, Miikka Poikselka, Jonathan | |||
Rosenberg, Ingemar Johansson, Christer Holmberg, Alf Heidermark, Tom | Rosenberg, Ingemar Johansson, Christer Holmberg, Alf Heidermark, Tom | |||
Taylor, Thomas Belling, Keith Drage, and Andrew Allen for providing | Taylor, Thomas Belling, Keith Drage, and Andrew Allen for providing | |||
their insight and comments on this document. | their insight and comments on this document. | |||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[ITU.Q931.1998] | [ITU.Q931.1998] | |||
"Digital Subscriber Signalling System No. 1 (DSS 1) - ISDN | International Telecommunications Union, "Digital | |||
User - Network Interface Layer 3 Specification for Basic | Subscriber Signalling System No. 1 - ISDN User-Network | |||
Call Control", ISO Standard 9594-1, May 1998. | Interface Layer 3 Specification for Basic Call Control", | |||
ITU-T Recommendation Q931, May 1998. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | |||
with Session Description Protocol (SDP)", RFC 3264, June | with Session Description Protocol (SDP)", RFC 3264, June | |||
2002. | 2002. | |||
[RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC | [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC | |||
3966, December 2004. | 3966, December 2004. | |||
[RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in | [RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in | |||
the Session Description Protocol (SDP)", RFC 4145, | the Session Description Protocol (SDP)", RFC 4145, | |||
September 2005. | September 2005. | |||
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | |||
Description Protocol", RFC 4566, July 2006. | Description Protocol", RFC 4566, July 2006. | |||
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
Encodings", RFC 4648, October 2006. | Encodings", RFC 4648, October 2006. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
May 2008. | May 2008. | |||
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, January 2008. | |||
10.2. Informative References | 10.2. Informative References | |||
[I-D.ietf-cuss-sip-uui] | [IANA] IANA, "Session Description Protocol (SDP) Parameters | |||
Johnston, A. and J. Rafferty, "A Mechanism for | Registry", <http://www.iana.org/assignments/ | |||
Transporting User to User Call Control Information in | sdp-parameters>. | |||
SIP", draft-ietf-cuss-sip-uui-12 (work in progress), | ||||
January 2014. | ||||
[ITU.E164.1991] | [ITU.E164.2010] | |||
International Telecommunications Union, "The International | International Telecommunications Union, "The | |||
Public Telecommunication Numbering Plan", ITU-T | International Public Telecommunication Numbering Plan", | |||
Recommendation E.164, 1991. | ITU-T Recommendation E.164, 2010. | |||
[ITU.Q23.1988] | [ITU.Q23.1988] | |||
International Telecommunications Union, "Technical | International Telecommunications Union, "Technical | |||
features of push-button telephone sets", ITU-T Technical | features of push-button telephone sets", ITU-T Technical | |||
Recommendation Q.23, 1988. | Recommendation Q.23, 1988. | |||
[RFC3108] Kumar, R. and M. Mostafa, "Conventions for the use of the | ||||
Session Description Protocol (SDP) for ATM Bearer | ||||
Connections", RFC 3108, May 2001. | ||||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | ||||
A., Peterson, J., Sparks, R., Handley, M., and E. | ||||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | ||||
June 2002. | ||||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | ||||
Jacobson, "RTP: A Transport Protocol for Real-Time | ||||
Applications", STD 64, RFC 3550, July 2003. | ||||
[RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and | [RFC3108] Kumar, R. and M. Mostafa, "Conventions for the use of the | |||
Video Conferences with Minimal Control", STD 65, RFC 3551, | Session Description Protocol (SDP) for ATM Bearer | |||
July 2003. | Connections", RFC 3108, May 2001. | |||
[RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
Norrman, "The Secure Real-time Transport Protocol (SRTP)", | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
RFC 3711, March 2004. | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
June 2002. | ||||
[RFC3725] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Camarillo, "Best Current Practices for Third Party Call | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Control (3pcc) in the Session Initiation Protocol (SIP)", | Applications", STD 64, RFC 3550, July 2003. | |||
BCP 85, RFC 3725, April 2004. | ||||
[RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message | [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and | |||
Session Relay Protocol (MSRP)", RFC 4975, September 2007. | Video Conferences with Minimal Control", STD 65, RFC | |||
3551, July 2003. | ||||
[TS.24.008] | [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | |||
3GPP, "Mobile radio interface Layer 3 specification; Core | Norrman, "The Secure Real-time Transport Protocol | |||
network protocols; Stage 3", 3GPP TS 24.008 3.20.0, | (SRTP)", RFC 3711, March 2004. | |||
December 2005. | ||||
10.3. URIs | [RFC3725] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. | |||
Camarillo, "Best Current Practices for Third Party Call | ||||
Control (3pcc) in the Session Initiation Protocol (SIP)", | ||||
BCP 85, RFC 3725, April 2004. | ||||
[1] http://www.iana.org/assignments/sdp-parameters | [RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message | |||
Session Relay Protocol (MSRP)", RFC 4975, September 2007. | ||||
[2] http://www.iana.org/assignments/sdp-parameters | [SIP-UUI] Johnston, A. and J. Rafferty, "A Mechanism for | |||
Transporting User to User Call Control Information in | ||||
SIP", Work in Progress, April 2014. | ||||
[3] http://www.iana.org/assignments/sdp-parameters | [TS.24.008] 3GPP, "Mobile radio interface Layer 3 specification; Core | |||
network protocols; Stage 3", 3GPP TS 24.008 3.20.0, | ||||
December 2005. | ||||
Authors' Addresses | Authors' Addresses | |||
Miguel A. Garcia-Martin | Miguel A. Garcia-Martin | |||
Ericsson | Ericsson | |||
Calle Via de los Poblados 13 | Calle Via de los Poblados 13 | |||
Madrid, ES 28033 | Madrid, ES 28033 | |||
Spain | Spain | |||
Email: miguel.a.garcia@ericsson.com | EMail: miguel.a.garcia@ericsson.com | |||
Simo Veikkolainen | Simo Veikkolainen | |||
Nokia | Nokia | |||
P.O. Box 226 | P.O. Box 226 | |||
NOKIA GROUP, FI 00045 | NOKIA GROUP, FI 00045 | |||
Finland | Finland | |||
Phone: +358 50 486 4463 | Phone: +358 50 486 4463 | |||
Email: simo.veikkolainen@nokia.com | EMail: simo.veikkolainen@nokia.com | |||
End of changes. 280 change blocks. | ||||
722 lines changed or deleted | 706 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/ |