draft-ietf-mmusic-data-channel-sdpneg-06.txt | draft-ietf-mmusic-data-channel-sdpneg-07.txt | |||
---|---|---|---|---|
MMUSIC K. Drage, Ed. | MMUSIC K. Drage, Ed. | |||
Internet-Draft M. Makaraju | Internet-Draft M. Makaraju | |||
Intended status: Standards Track J. Stoetzer-Bradler | Intended status: Standards Track J. Stoetzer-Bradler | |||
Expires: April 21, 2016 Alcatel-Lucent | Expires: June 2, 2016 Alcatel-Lucent | |||
R. Ejzak | R. Ejzak | |||
J. Marcon | J. Marcon | |||
Unaffiliated | Unaffiliated | |||
October 19, 2015 | November 30, 2015 | |||
SDP-based Data Channel Negotiation | SDP-based Data Channel Negotiation | |||
draft-ietf-mmusic-data-channel-sdpneg-06 | draft-ietf-mmusic-data-channel-sdpneg-07 | |||
Abstract | Abstract | |||
The Real-Time Communication in WEB-browsers (RTCWeb) working group is | The Real-Time Communication in WEB-browsers (RTCWeb) working group is | |||
charged to provide protocols to support direct interactive rich | charged to provide protocols to support direct interactive rich | |||
communications using audio, video, and data between two peers' web- | communications using audio, video, and data between two peers' web- | |||
browsers. For the support of data communication, the RTCWeb working | browsers. For the support of data communication, the RTCWeb working | |||
group has in particular defined the concept of bi-directional data | group has in particular defined the concept of bi-directional data | |||
channels over SCTP, where each data channel might be used to | channels over SCTP (Stream Control Transmission Protocol), where each | |||
transport other protocols, called sub-protocols. Data channel setup | data channel might be used to transport other protocols, called | |||
can be done using either the in-band Data Channel Establishment | subprotocols. Data channel setup can be done using either the in- | |||
Protocol (DCEP) or using some out-of-band non-DCEP protocol. This | band Data Channel Establishment Protocol (DCEP) or using some out-of- | |||
document specifies how the SDP offer/answer exchange can be used to | band non-DCEP protocol. This document specifies how the SDP (Session | |||
achieve such an out-of-band non-DCEP negotiation. Even though data | Description Protocol) offer/answer exchange can be used to achieve | |||
channels are designed for RTCWeb use initially they may be used by | such an out-of-band non-DCEP negotiation. Even though data channels | |||
other protocols like, but not limited to, the CLUE protocol. This | are designed for RTCWeb use initially, they may be used by other | |||
document is intended to be used wherever data channels are used. | protocols like, but not limited to, the CLUE protocol (which is | |||
defined by the IETF "ControLling mUltiple streams for tElepresence" | ||||
working group). This document is intended to be used wherever data | ||||
channels are used. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on June 2, 2016. | ||||
This Internet-Draft will expire on April 21, 2016. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
skipping to change at page 2, line 30 | skipping to change at page 2, line 31 | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Applicability Statement . . . . . . . . . . . . . . . . . . . 5 | 4. Applicability Statement . . . . . . . . . . . . . . . . . . . 5 | |||
5. SDP Offer/Answer Negotiation . . . . . . . . . . . . . . . . 5 | 5. SDP Offer/Answer Negotiation . . . . . . . . . . . . . . . . 5 | |||
5.1. SDP Syntax . . . . . . . . . . . . . . . . . . . . . . . 5 | 5.1. SDP Syntax . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5.1.1. SDP Attribute for Data Channel Parameter Negotiation 5 | 5.1.1. SDP Attribute for Data Channel Parameter Negotiation 5 | |||
5.1.1.1. dcmap Attribute . . . . . . . . . . . . . . . . . 6 | 5.1.1.1. dcmap Attribute . . . . . . . . . . . . . . . . . 6 | |||
5.1.1.2. dcmap Multiplexing Category . . . . . . . . . . . 8 | 5.1.1.2. dcmap Multiplexing Category . . . . . . . . . . . 7 | |||
5.1.1.3. dcmap-stream-id Parameter . . . . . . . . . . . . 8 | 5.1.1.3. dcmap-stream-id Parameter . . . . . . . . . . . . 8 | |||
5.1.1.4. label Parameter . . . . . . . . . . . . . . . . . 8 | 5.1.1.4. label Parameter . . . . . . . . . . . . . . . . . 8 | |||
5.1.1.5. subprotocol Parameter . . . . . . . . . . . . . . 9 | 5.1.1.5. subprotocol Parameter . . . . . . . . . . . . . . 8 | |||
5.1.1.6. max-retr Parameter . . . . . . . . . . . . . . . 9 | 5.1.1.6. max-retr Parameter . . . . . . . . . . . . . . . 8 | |||
5.1.1.7. max-time Parameter . . . . . . . . . . . . . . . 9 | 5.1.1.7. max-time Parameter . . . . . . . . . . . . . . . 9 | |||
5.1.1.8. ordered Parameter . . . . . . . . . . . . . . . . 9 | 5.1.1.8. ordered Parameter . . . . . . . . . . . . . . . . 9 | |||
5.1.2. Other Media Level Attributes . . . . . . . . . . . . 10 | 5.1.1.9. priority Parameter . . . . . . . . . . . . . . . 9 | |||
5.1.2. Other Media Level Attributes . . . . . . . . . . . . 9 | ||||
5.1.2.1. dcsa Attribute . . . . . . . . . . . . . . . . . 10 | 5.1.2.1. dcsa Attribute . . . . . . . . . . . . . . . . . 10 | |||
5.1.2.2. dcsa Multiplexing Category . . . . . . . . . . . 11 | 5.1.2.2. dcsa Multiplexing Category . . . . . . . . . . . 11 | |||
5.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.2. Procedures . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.2.1. Managing Stream Identifiers . . . . . . . . . . . . . 11 | 5.2.1. Managing Stream Identifiers . . . . . . . . . . . . . 11 | |||
5.2.2. Negotiating Data Channel Parameters . . . . . . . . . 12 | 5.2.2. Negotiating Data Channel Parameters . . . . . . . . . 12 | |||
5.2.3. Opening a Data Channel . . . . . . . . . . . . . . . 13 | 5.2.3. Opening a Data Channel . . . . . . . . . . . . . . . 13 | |||
5.2.4. Closing a Data Channel . . . . . . . . . . . . . . . 15 | 5.2.4. Closing a Data Channel . . . . . . . . . . . . . . . 15 | |||
5.2.5. Various SDP Offer/Answer Scenarios and Considerations 16 | 5.2.5. Various SDP Offer/Answer Scenarios and Considerations 16 | |||
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
skipping to change at page 3, line 4 | skipping to change at page 3, line 7 | |||
5.2.3. Opening a Data Channel . . . . . . . . . . . . . . . 13 | 5.2.3. Opening a Data Channel . . . . . . . . . . . . . . . 13 | |||
5.2.4. Closing a Data Channel . . . . . . . . . . . . . . . 15 | 5.2.4. Closing a Data Channel . . . . . . . . . . . . . . . 15 | |||
5.2.5. Various SDP Offer/Answer Scenarios and Considerations 16 | 5.2.5. Various SDP Offer/Answer Scenarios and Considerations 16 | |||
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
8.1. Subprotocol Identifiers . . . . . . . . . . . . . . . . . 19 | 8.1. Subprotocol Identifiers . . . . . . . . . . . . . . . . . 19 | |||
8.2. New SDP Attributes . . . . . . . . . . . . . . . . . . . 20 | 8.2. New SDP Attributes . . . . . . . . . . . . . . . . . . . 20 | |||
8.2.1. dcmap . . . . . . . . . . . . . . . . . . . . . . . . 20 | 8.2.1. dcmap . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
8.2.2. dcsa . . . . . . . . . . . . . . . . . . . . . . . . 20 | 8.2.2. dcsa . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
10. CHANGE LOG . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 10. CHANGE LOG . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
10.1. Changes against 'draft-ietf-mmusic-data-channel- | 10.1. Changes against 'draft-ietf-mmusic-data-channel- | |||
sdpneg-05' . . . . . . . . . . . . . . . . . . . . . . . 21 | sdpneg-06' . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
10.2. Changes against 'draft-ietf-mmusic-data-channel- | 10.2. Changes against 'draft-ietf-mmusic-data-channel- | |||
sdpneg-04' . . . . . . . . . . . . . . . . . . . . . . . 22 | sdpneg-05' . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
10.3. Changes against 'draft-ietf-mmusic-data-channel- | 10.3. Changes against 'draft-ietf-mmusic-data-channel- | |||
sdpneg-03' . . . . . . . . . . . . . . . . . . . . . . . 23 | sdpneg-04' . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
10.4. Changes against 'draft-ietf-mmusic-data-channel- | 10.4. Changes against 'draft-ietf-mmusic-data-channel- | |||
sdpneg-02' . . . . . . . . . . . . . . . . . . . . . . . 24 | sdpneg-03' . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
10.5. Changes against 'draft-ietf-mmusic-data-channel- | 10.5. Changes against 'draft-ietf-mmusic-data-channel- | |||
sdpneg-01' . . . . . . . . . . . . . . . . . . . . . . . 25 | sdpneg-02' . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
10.6. Changes against 'draft-ietf-mmusic-data-channel- | 10.6. Changes against 'draft-ietf-mmusic-data-channel- | |||
sdpneg-01' . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
10.7. Changes against 'draft-ietf-mmusic-data-channel- | ||||
sdpneg-00' . . . . . . . . . . . . . . . . . . . . . . . 27 | sdpneg-00' . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
10.7. Changes against 'draft-ejzak-mmusic-data-channel- | 10.8. Changes against 'draft-ejzak-mmusic-data-channel- | |||
sdpneg-02' . . . . . . . . . . . . . . . . . . . . . . . 30 | sdpneg-02' . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
10.8. Changes against '-01' . . . . . . . . . . . . . . . . . 31 | 10.9. Changes against '-01' . . . . . . . . . . . . . . . . . 31 | |||
10.9. Changes against '-00' . . . . . . . . . . . . . . . . . 31 | 10.10. Changes against '-00' . . . . . . . . . . . . . . . . . 31 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 31 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 32 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 32 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 32 | 11.2. Informative References . . . . . . . . . . . . . . . . . 32 | |||
Appendix A. Generic Data Channel Negotiation Aspects When Not | Appendix A. Generic Data Channel Negotiation Aspects When Not | |||
Using DCEP . . . . . . . . . . . . . . . . . . . . . 34 | Using DCEP . . . . . . . . . . . . . . . . . . . . . 33 | |||
A.1. Stream Identifier Numbering . . . . . . . . . . . . . . . 34 | A.1. Stream Identifier Numbering . . . . . . . . . . . . . . . 34 | |||
A.2. Generic Data Channel Negotiation Not Using DCEP . . . . . 35 | A.2. Generic Data Channel Negotiation Not Using DCEP . . . . . 34 | |||
A.2.1. Overview . . . . . . . . . . . . . . . . . . . . . . 35 | A.2.1. Overview . . . . . . . . . . . . . . . . . . . . . . 34 | |||
A.2.2. Opening a Data Channel . . . . . . . . . . . . . . . 35 | A.2.2. Opening a Data Channel . . . . . . . . . . . . . . . 35 | |||
A.2.3. Closing a Data Channel . . . . . . . . . . . . . . . 36 | A.2.3. Closing a Data Channel . . . . . . . . . . . . . . . 36 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
1. Introduction | 1. Introduction | |||
The RTCWeb working group has defined the concept of bi-directional | The RTCWeb working group has defined the concept of bi-directional | |||
data channels running on top of SCTP/DTLS. RTCWeb leaves it open for | data channels running on top of SCTP/DTLS (SCTP over the Datagram | |||
other applications to use data channels and its in-band DCEP or other | Transport Layer Security protocol). RTCWeb allows applications to | |||
in-band or out-of-band protocols for creating them. Each data | use data channels. RTCWeb defines an in-band DCEP, however other in- | |||
channel consists of paired SCTP streams sharing the same SCTP Stream | band or out-of-band protocols may be used for establishing data | |||
Identifier. Data channels are created by endpoint applications | channels. Each data channel consists of paired SCTP streams sharing | |||
through the WebRTC API, or other users of data channel like CLUE, and | the same SCTP Stream Identifier. Data channels are created by | |||
can be used to transport proprietary or well-defined protocols, which | endpoint applications through the WebRTC API (Application Programming | |||
in the latter case can be signaled by the data channel "sub-protocol" | Interface), or other users of a data channel like CLUE. They can be | |||
parameter, conceptually similar to the WebSocket "sub-protocol". | used to transport proprietary or well-defined protocols, which in the | |||
However, apart from the "sub-protocol" value transmitted to the peer, | latter case can be signaled by the data channel "subprotocol" | |||
parameter, conceptually similar to the WebSocket "subprotocol". | ||||
However, apart from the "subprotocol" value transmitted to the peer, | ||||
RTCWeb leaves it open how endpoint applications can agree on how to | RTCWeb leaves it open how endpoint applications can agree on how to | |||
instantiate a given sub-protocol on a data channel, and whether it is | instantiate a given subprotocol on a data channel, and whether it is | |||
signaled in-band using DCEP or out-of-band using a non-DCEP protocol | signaled in-band using DCEP or out-of-band using a non-DCEP protocol | |||
(or both). In particular, the SDP offer generated by the RTCweb data | (or both). In particular, the SDP offer generated by the RTCweb data | |||
channel stack includes no channel-specific information. | channel stack includes no channel-specific information. | |||
This document defines SDP offer/answer negotiation procedures to | This document defines SDP offer/answer negotiation procedures to | |||
establish data channels for transport of well-defined sub-protocols, | establish data channels for transport of well-defined subprotocols, | |||
to enable out-of-band negotiation. | to enable out-of-band negotiation. | |||
This document makes use of MSRP in many of the examples. It does not | This document makes use of MSRP (Message Session Relay Protocol) in | |||
provide a complete specification of how to negotiate the use of a | many of the examples. It does not provide a complete specification | |||
data channel to transport MSRP. Procedures specific to each sub- | of how to negotiate the use of a data channel to transport MSRP. | |||
protocol such as MSRP will be documented elsewhere. The use of MSRP | Procedures specific to each subprotocol such as MSRP are documented | |||
in some examples is only to show how the generic procedures described | elsewhere. The use of MSRP in some examples is only to show how the | |||
herein might apply to a specific sub-protocol. | generic procedures described herein might apply to a specific | |||
subprotocol. | ||||
2. Conventions | 2. Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
3. Terminology | 3. Terminology | |||
This document uses the following terms: | This document uses the following terms: | |||
skipping to change at page 5, line 13 | skipping to change at page 5, line 22 | |||
perspective of the SDP answerer, the peer is the SDP offerer. | perspective of the SDP answerer, the peer is the SDP offerer. | |||
SCTP Stream Sequence Number (SSN): the SCTP stream sequence number | SCTP Stream Sequence Number (SSN): the SCTP stream sequence number | |||
as specified in [RFC4960]. | as specified in [RFC4960]. | |||
Stream identifier: The identifier of the outbound and inbound SCTP | Stream identifier: The identifier of the outbound and inbound SCTP | |||
streams composing a data channel. | streams composing a data channel. | |||
4. Applicability Statement | 4. Applicability Statement | |||
The mechanism in this specification only applies to the Session | The mechanism in this document only applies to the Session | |||
Description Protocol (SDP) [RFC4566], when used together with the SDP | Description Protocol (SDP) [RFC4566], when used together with the SDP | |||
offer/answer mechanism [RFC3264]. Declarative usage of SDP is out of | offer/answer mechanism [RFC3264]. Declarative usage of SDP is out of | |||
scope of this document, and is thus undefined. | scope of this document, and is thus undefined. | |||
5. SDP Offer/Answer Negotiation | 5. SDP Offer/Answer Negotiation | |||
This section defines an SDP extension by which two clients can | This section defines an SDP extension by which two clients can | |||
negotiate data channel-specific and sub-protocol-specific parameters | negotiate data channel-specific and subprotocol-specific parameters | |||
without using DCEP [I-D.ietf-rtcweb-data-protocol]. This SDP | without using DCEP [I-D.ietf-rtcweb-data-protocol]. This SDP | |||
extension only defines usage in the context of SDP offer/answer. | extension only defines usage in the context of SDP offer/answer. | |||
Appendix A provides information how data channels work in general and | Appendix A provides information how data channels work in general and | |||
especially summarizes some key aspects, which should be considered | especially summarizes some key aspects, which should be considered | |||
for the negotiation of data channels if DCEP is not used. | for the negotiation of data channels if DCEP is not used. | |||
5.1. SDP Syntax | 5.1. SDP Syntax | |||
Two new SDP attributes are defined to support SDP offer/answer | Two new SDP attributes are defined to support SDP offer/answer | |||
negotiation of data channels. The first attribute provides for | negotiation of data channels. The first attribute provides for | |||
negotiation of channel-specific parameters. The second attribute | negotiation of channel-specific parameters. The second attribute | |||
provides for negotiation of sub-protocol-specific parameters. | provides for negotiation of subprotocol-specific parameters. | |||
5.1.1. SDP Attribute for Data Channel Parameter Negotiation | 5.1.1. SDP Attribute for Data Channel Parameter Negotiation | |||
Associated with the SDP "m" line that defines the SCTP association | Associated with the SDP "m" line that defines the SCTP association | |||
for data channels (defined in Section 4), each SDP offer and answer | for data channels (defined in Section 3), each SDP offer and answer | |||
includes one "a=dcmap:" attribute that defines the data channel | includes one "a=dcmap:" attribute that defines the data channel | |||
parameters for each data channel to be negotiated. Each such | parameters for each data channel to be negotiated. Each such | |||
attribute line specifies the following parameters for a data channel: | attribute line specifies the following parameters for a data channel: | |||
SCTP stream identifier, sub-protocol, label, reliability, order of | SCTP stream identifier, subprotocol, label, maximal number of | |||
delivery, and priority. | retransmissions, maximal retransmission time, order of delivery, and | |||
priority. | ||||
The intention in exchanging these attributes is to create, on two | The intention in exchanging these attributes is to create, on two | |||
peers, without use of DCEP [I-D.ietf-rtcweb-data-protocol], matched | peers, without use of DCEP [I-D.ietf-rtcweb-data-protocol], matched | |||
pairs of oppositely directed data channels having the same set of | pairs of oppositely directed data channels having the same set of | |||
attributes. It is assumed that the data channel properties | attributes. It is assumed that the data channel properties | |||
(reliable/partially reliable, ordered/unordered) are suitable per the | (reliable/partially reliable, ordered/unordered) are suitable per the | |||
sub-protocol transport requirements. | subprotocol transport requirements. | |||
5.1.1.1. dcmap Attribute | 5.1.1.1. dcmap Attribute | |||
"a=dcmap:" is a media level attribute having following ABNF syntax. | "a=dcmap:" is a media level attribute having following ABNF | |||
(Augmented Backus-Naur Form, [RFC5234]) syntax. | ||||
Formal Syntax: | Formal Syntax: | |||
Name: dcmap | Name: dcmap | |||
Value: dcmap-value | Value: dcmap-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
dcmap-value = dcmap-stream-id | dcmap-value = dcmap-stream-id | |||
[ SP dcmap-opt *(";" dcmap-opt) ] | [ SP dcmap-opt *(";" dcmap-opt) ] | |||
dcmap-opt = ordering-opt / subprotocol-opt / label-opt | dcmap-opt = ordering-opt / subprotocol-opt / label-opt | |||
/ maxretr-opt / maxtime-opt | / maxretr-opt / maxtime-opt / priority-opt | |||
; Either only maxretr-opt or maxtime-opt | ; Either only maxretr-opt or maxtime-opt | |||
; is present. | ; is present. | |||
dcmap-stream-id = 1*DIGIT | dcmap-stream-id = 1*DIGIT | |||
ordering-opt = "ordered=" ordering-value | ordering-opt = "ordered=" ordering-value | |||
ordering-value = "true" / "false" | ordering-value = "true" / "false" | |||
subprotocol-opt = "subprotocol=" quoted-string | subprotocol-opt = "subprotocol=" quoted-string | |||
label-opt = "label=" quoted-string | label-opt = "label=" quoted-string | |||
maxretr-opt = "max-retr=" maxretr-value | maxretr-opt = "max-retr=" maxretr-value | |||
maxretr-value = <from-Reliability-Parameter of | maxretr-value = "0" / integer | |||
I-D.ietf-rtcweb-data-protocol> | ; number of retransmissions, | |||
; number of retransmissions | ; less than 2^32, | |||
; derived from 'Reliability Parameter' of | ||||
; [I-D.ietf-rtcweb-data-protocol] | ||||
maxtime-opt = "max-time=" maxtime-value | maxtime-opt = "max-time=" maxtime-value | |||
maxtime-value = <from-Reliability-Parameter of | maxtime-value = "0" / integer | |||
I-D.ietf-rtcweb-data-protocol> | ; milliseconds, | |||
; milliseconds | ; less than 2^32, | |||
; derived from 'Reliability Parameter' of | ||||
; [I-D.ietf-rtcweb-data-protocol] | ||||
priority-opt = "priority=" priority-value | ||||
priority-value = "0" / integer | ||||
; unsigned integer value indicating the priority of | ||||
; the data channel, | ||||
; less than 2^16, | ||||
; derived from 'Priority' of | ||||
; [I-D.ietf-rtcweb-data-protocol] | ||||
quoted-string = DQUOTE *(quoted-char / escaped-char) DQUOTE | quoted-string = DQUOTE *(quoted-char / escaped-char) DQUOTE | |||
quoted-char = SP / quoted-visible | quoted-char = SP / quoted-visible | |||
quoted-visible = %21 / %23-24 / %26-7E ; VCHAR without " or % | quoted-visible = %21 / %23-24 / %26-7E ; VCHAR without " or % | |||
escaped-char = "%" HEXDIG HEXDIG | escaped-char = "%" HEXDIG HEXDIG | |||
DQUOTE = <from-RFC5234> | DQUOTE = <from-RFC5234> | |||
integer = <from-RFC5234> | integer = <from-RFC4566> | |||
Examples: | Examples: | |||
a=dcmap:0 | a=dcmap:0 | |||
a=dcmap:1 subprotocol="BFCP";max-time=60000 | a=dcmap:1 subprotocol="BFCP";max-time=60000;priority=512 | |||
a=dcmap:2 subprotocol="MSRP";ordered=true;label="MSRP" | a=dcmap:2 subprotocol="MSRP";ordered=true;label="MSRP" | |||
a=dcmap:3 label="Label 1";ordered=false;max-retr=5 | a=dcmap:3 label="Label 1";ordered=false;max-retr=5;priority=128 | |||
a=dcmap:4 label="foo%09bar";ordered=true;max-time=15000;max-retr=3 | a=dcmap:4 label="foo%09bar";ordered=true;max-time=15000 | |||
Note: The last example (a=dcmap:4) shows a 'label' parameter value | Note: The last example (a=dcmap:4) shows a 'label' parameter value | |||
which contains one non-printable 'escaped-char' character (the | which contains one non-printable 'escaped-char' character (the | |||
tabulator character). | tabulator character). | |||
Within an 'a=dcmap:' attribute line's 'dcmap-opt' value either only | Within an 'a=dcmap:' attribute line's 'dcmap-opt' value either only | |||
one 'maxretr-opt' parameter or one 'maxtime-opt' parameter MAY be | one 'maxretr-opt' parameter or one 'maxtime-opt' parameter MAY be | |||
present. Both MUST NOT be present. | present. Both MUST NOT be present. | |||
5.1.1.2. dcmap Multiplexing Category | 5.1.1.2. dcmap Multiplexing Category | |||
Multiplexing characteristics of SDP attributes are described in | Multiplexing characteristics of SDP attributes are described in | |||
[I-D.ietf-mmusic-sdp-mux-attributes]. Various SDP attribute | [I-D.ietf-mmusic-sdp-mux-attributes]. Various SDP attribute | |||
multiplexing categories are introduced there. | multiplexing categories are introduced there. | |||
The multiplexing category of the "a=dcmap:" attribute is SPECIAL. | The multiplexing category of the "a=dcmap:" attribute is SPECIAL. | |||
As the usage of multiple SCTP associations on top of a single DTLS | As the usage of multiple SCTP associations on top of a single DTLS | |||
connection is outside the scope of [I-D.ietf-mmusic-sctp-sdp], no | connection is outside the scope of [I-D.ietf-mmusic-sctp-sdp], no | |||
"a=dcmap:" attribute multiplexing rules are specified for the | "a=dcmap:" attribute multiplexing rules are specified for the | |||
UDP/DTLS/SCTP and TCP/DTLS/SCTP proto values. This document does | UDP/DTLS/SCTP and TCP/DTLS/SCTP proto values. This document also | |||
also not specify multiplexing rules for this attribute for SCTP or | does not specify multiplexing rules for this attribute for SCTP or | |||
SCTP/DTLS proto values. If future extensions of | SCTP/DTLS proto values. If future extensions of | |||
[I-D.ietf-mmusic-sctp-sdp] define how to negotiate multiplexing of | [I-D.ietf-mmusic-sctp-sdp] define how to negotiate multiplexing of | |||
multiple SCTP associations on top of a single DTLS connection, or how | multiple SCTP associations on top of a single DTLS connection, or how | |||
to add multiple SCTP associations to one BUNDLE group, then | to add multiple SCTP associations to one BUNDLE group, then | |||
multiplexing rules for the "a=dcmap:" attribute need to be defined as | multiplexing rules for the "a=dcmap:" attribute need to be defined as | |||
well, for instance in an extension of this SDP based data channel | well, for instance in an extension of this SDP based data channel | |||
negotiation specification. | negotiation specification. | |||
5.1.1.3. dcmap-stream-id Parameter | 5.1.1.3. dcmap-stream-id Parameter | |||
The 'dcmap-stream-id' parameter indicates the SCTP stream identifier | The 'dcmap-stream-id' parameter indicates the SCTP stream identifier | |||
skipping to change at page 8, line 48 | skipping to change at page 8, line 27 | |||
5.1.1.4. label Parameter | 5.1.1.4. label Parameter | |||
The 'label' parameter indicates the name of the channel. It | The 'label' parameter indicates the name of the channel. It | |||
represents a label that can be used to distinguish, in the context of | represents a label that can be used to distinguish, in the context of | |||
the WebRTC API [WebRtcAPI], an RTCDataChannel object from other | the WebRTC API [WebRtcAPI], an RTCDataChannel object from other | |||
RTCDataChannel objects. This parameter maps to the 'Label' parameter | RTCDataChannel objects. This parameter maps to the 'Label' parameter | |||
defined in [I-D.ietf-rtcweb-data-protocol]. The 'label' parameter is | defined in [I-D.ietf-rtcweb-data-protocol]. The 'label' parameter is | |||
optional. If it is not present, then its value defaults to the empty | optional. If it is not present, then its value defaults to the empty | |||
string. | string. | |||
Note: The empty string MAY also be explicitly used as 'label' value, | Note: The empty string MAY also be explicitly used as a 'label' | |||
such that 'label=""' is equivalent to the 'label' parameter not being | value, such that 'label=""' is equivalent to the 'label' parameter | |||
present at all. [I-D.ietf-rtcweb-data-protocol] allows the | not being present at all. [I-D.ietf-rtcweb-data-protocol] allows the | |||
DATA_CHANNEL_OPEN message's 'Label' value to be an empty string. | DATA_CHANNEL_OPEN message's 'Label' value to be an empty string. | |||
5.1.1.5. subprotocol Parameter | 5.1.1.5. subprotocol Parameter | |||
The 'subprotocol' parameter indicates which protocol the client | The 'subprotocol' parameter indicates which protocol the client | |||
expects to exchange via the channel. This parameter maps to the | expects to exchange via the channel. This parameter maps to the | |||
'Protocol' parameter defined in [I-D.ietf-rtcweb-data-protocol]. | 'Protocol' parameter defined in [I-D.ietf-rtcweb-data-protocol]. | |||
Section 8.1 specifies how new sub-protocol parameter values are | Section 8.1 specifies how new subprotocol parameter values are | |||
registered. 'Subprotocol' is an optional parameter. If the | registered. 'Subprotocol' is an optional parameter. If the | |||
'subprotocol' parameter is not present, then its value defaults to | 'subprotocol' parameter is not present, then its value defaults to an | |||
the empty string. | empty string. | |||
Note: The empty string MAY also be explicitly used as 'subprotocol' | Note: The empty string MAY also be explicitly used as 'subprotocol' | |||
value, such that 'subprotocol=""' is equivalent to the 'subprotocol' | value, such that 'subprotocol=""' is equivalent to the 'subprotocol' | |||
parameter not being present at all. [I-D.ietf-rtcweb-data-protocol] | parameter not being present at all. [I-D.ietf-rtcweb-data-protocol] | |||
allows the DATA_CHANNEL_OPEN message's 'Subprotocol' value to be an | allows the DATA_CHANNEL_OPEN message's 'Subprotocol' value to be an | |||
empty string. | empty string. | |||
5.1.1.6. max-retr Parameter | 5.1.1.6. max-retr Parameter | |||
This parameter indicates that the data channel is partially reliable. | This parameter indicates that the data channel is partially reliable. | |||
skipping to change at page 10, line 5 | skipping to change at page 9, line 33 | |||
The 'ordered' parameter with value "true" indicates that the receiver | The 'ordered' parameter with value "true" indicates that the receiver | |||
MUST dispatch DATA chunks in the data channel to the upper layer | MUST dispatch DATA chunks in the data channel to the upper layer | |||
while preserving the order. The ordered parameter is optional and | while preserving the order. The ordered parameter is optional and | |||
takes two values: "true" for ordered and "false" for unordered | takes two values: "true" for ordered and "false" for unordered | |||
delivery with "true" as the default value. Any other value is | delivery with "true" as the default value. Any other value is | |||
ignored and default "ordered=true" is assumed. In the absence of | ignored and default "ordered=true" is assumed. In the absence of | |||
this parameter "ordered=true" is assumed. This parameter maps to the | this parameter "ordered=true" is assumed. This parameter maps to the | |||
ordered or unordered data channel types as defined in | ordered or unordered data channel types as defined in | |||
[I-D.ietf-rtcweb-data-protocol]. | [I-D.ietf-rtcweb-data-protocol]. | |||
5.1.1.9. priority Parameter | ||||
The 'priority' parameter indicates the data channel's priority | ||||
relative to the priorities of other data channels, which may | ||||
additionally exist over the same SCTP association. The 'priority' | ||||
parameter maps to the 'Priority' parameter defined in | ||||
[I-D.ietf-rtcweb-data-protocol]. The 'priority' parameter is | ||||
optional. In the absence of this parameter "priority=256" is | ||||
assumed. | ||||
5.1.2. Other Media Level Attributes | 5.1.2. Other Media Level Attributes | |||
In the SDP, each data channel declaration MAY also be followed by | In the SDP, each data channel declaration MAY also be followed by | |||
other media level SDP attributes, which are either specifically | other media level SDP attributes, which are either specifically | |||
defined for or applied to the sub-protocol in use. Each of these | defined for or applied to the subprotocol in use. Each of these | |||
attributes is represented by one new attribute line, and it includes | attributes is represented by one new attribute line, and it includes | |||
the contents of a media-level SDP attribute already defined for use | the contents of a media-level SDP attribute already defined for use | |||
with this (sub-)protocol in another IETF specification. Sub-protocol | with this (sub)protocol in another IETF (Internet Engineering Task | |||
specific attributes MAY also be defined for exclusive use with data | Force) document. Subprotocol specific attributes MAY also be defined | |||
channel transport, but SHOULD use the same syntax described here for | for exclusive use with data channel transport, but SHOULD use the | |||
other sub-protocol related attributes. | same syntax described here for other subprotocol related attributes. | |||
5.1.2.1. dcsa Attribute | 5.1.2.1. dcsa Attribute | |||
Each sub-protocol related SDP attribute that would normally be used | Each subprotocol related SDP attribute that would normally be used to | |||
to negotiate the sub-protocol using SDP is replaced with an attribute | negotiate the subprotocol using SDP is replaced with an attribute of | |||
of the form "a=dcsa:stream-id original-attribute", where dcsa stands | the form "a=dcsa:stream-id original-attribute", where dcsa stands for | |||
for "data channel sub-protocol attribute", stream-id is the SCTP | "data channel subprotocol attribute", stream-id is the SCTP stream | |||
stream identifier assigned to this sub-protocol instance, and | identifier assigned to this subprotocol instance, and original- | |||
original-attribute represents the contents of the sub-protocol | attribute represents the contents of the subprotocol related | |||
related attribute to be included. | attribute to be included. | |||
The same syntax applies to any other SDP attribute required for | The same syntax applies to any other SDP attribute required for | |||
negotiation of this instance of the sub-protocol. | negotiation of this instance of the subprotocol. | |||
Formal Syntax: | Formal Syntax: | |||
Name: dcsa | Name: dcsa | |||
Value: dcsa-value | Value: dcsa-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
dcsa-value = stream-id SP attribute | dcsa-value = stream-id SP attribute | |||
attribute = <from-RFC4566> | attribute = <from-RFC4566> | |||
Example: | Example: | |||
a=dcsa:2 accept-types:text/plain | a=dcsa:2 accept-types:text/plain | |||
Note that the above reference to RFC 4566 defines where the attribute | Note that the above reference to [RFC4566] defines where the | |||
definition can be found; it does not provide any limitation on | attribute definition can be found; it does not provide any limitation | |||
support of attributes defined in other documents in accordance with | on support of attributes defined in other documents in accordance | |||
this attribute definition. Note however that not all SDP attributes | with this attribute definition. Note however that not all SDP | |||
are suitable as "a=dcsa:" parameter. [IANA-SDP-Parameters] contains | attributes are suitable as a "a=dcsa:" parameter. | |||
the lists of IANA registered session and media level or media level | [IANA-SDP-Parameters] contains the lists of IANA (Internet Assigned | |||
Numbers Authority) registered session and media level or media level | ||||
only SDP attributes. | only SDP attributes. | |||
Thus in the example above, the original attribute line "a=accept- | Thus in the example above, the original attribute line "a=accept- | |||
types:text/plain" is represented by the attribute line "a=dcsa:2 | types:text/plain" is represented by the attribute line "a=dcsa:2 | |||
accept-types:text/plain", which specifies that this instance of the | accept-types:text/plain", which specifies that this instance of the | |||
MSRP sub-protocol being transported on the SCTP association using the | MSRP subprotocol being transported on the SCTP association using the | |||
data channel with stream id 2 accepts plain text files. | data channel with stream id 2 accepts plain text files. | |||
As opposed to the data channel "a=dcmap:" attribute parameters, these | As opposed to the data channel "a=dcmap:" attribute parameters, these | |||
parameters are subject to offer/answer negotiation following the | parameters are subject to offer/answer negotiation following the | |||
procedures defined in the sub-protocol specific documents. | procedures defined in the subprotocol specific documents. | |||
5.1.2.2. dcsa Multiplexing Category | 5.1.2.2. dcsa Multiplexing Category | |||
The multiplexing category of the "a=dcsa:" attribute is SPECIAL. | The multiplexing category of the "a=dcsa:" attribute is SPECIAL. | |||
As the usage of multiple SCTP associations on top of a single DTLS | As the usage of multiple SCTP associations on top of a single DTLS | |||
connection is outside the scope of [I-D.ietf-mmusic-sctp-sdp], no | connection is outside the scope of [I-D.ietf-mmusic-sctp-sdp], no | |||
"a=dcsa:" attribute multiplexing rules are specified for the | "a=dcsa:" attribute multiplexing rules are specified for the | |||
UDP/DTLS/SCTP and TCP/DTLS/SCTP proto values. This document does | UDP/DTLS/SCTP and TCP/DTLS/SCTP proto values. This document does | |||
also not specify multiplexing rules for this attribute for SCTP or | also not specify multiplexing rules for this attribute for SCTP or | |||
skipping to change at page 11, line 39 | skipping to change at page 11, line 32 | |||
multiple SCTP associations on top of a single DTLS connection, or how | multiple SCTP associations on top of a single DTLS connection, or how | |||
to add multiple SCTP associations to one BUNDLE group, then | to add multiple SCTP associations to one BUNDLE group, then | |||
multiplexing rules for the "a=dcsa:" attribute need to be defined as | multiplexing rules for the "a=dcsa:" attribute need to be defined as | |||
well, for instance in an extension of this SDP based data channel | well, for instance in an extension of this SDP based data channel | |||
negotiation specification. | negotiation specification. | |||
5.2. Procedures | 5.2. Procedures | |||
5.2.1. Managing Stream Identifiers | 5.2.1. Managing Stream Identifiers | |||
If an SDP offer/answer exchange (could be the initial or a subsequent | If a SDP offer/answer exchange (could be the initial or a subsequent | |||
one) results in a UDP/DTLS/SCTP or TCP/DTLS/SCTP based media | one) results in a UDP/DTLS/SCTP or TCP/DTLS/SCTP based media | |||
description being accepted, and if this SDP offer/answer exchange | description being accepted, and if this SDP offer/answer exchange | |||
results in the establishment of a new SCTP association, then the SDP | results in the establishment of a new SCTP association, then the SDP | |||
offerer owns the even SCTP stream ids of this new SCTP association | offerer owns the even SCTP stream ids of this new SCTP association | |||
and the answerer owns the odd SCTP stream identifiers. If this "m" | and the answerer owns the odd SCTP stream identifiers. If this "m" | |||
line is removed from the signaling session (its port number set to | line is removed from the signaling session (its port number set to | |||
zero), and if usage of this or of a new UDP/DTLS/SCTP or TCP/DTLS/ | zero), and if usage of this or of a new UDP/DTLS/SCTP or TCP/DTLS/ | |||
SCTP based "m" line is renegotiated later on, then the even and odd | SCTP based "m" line is renegotiated later on, then the even and odd | |||
SCTP stream identifier ownership is redetermined as well as described | SCTP stream identifier ownership is re-determined as described above. | |||
above. | ||||
This specification allows simultaneous use of SDP offer/answer and | This document allows simultaneous use of SDP offer/answer and DCEP | |||
DCEP negotiation. However, an SCTP stream MUST NOT be referenced in | negotiation. However, an SCTP stream MUST NOT be referenced in a | |||
a "a=dcmap:" or "a=dcsa:" attribute of an SDP offer/answer exchange | "a=dcmap:" or "a=dcsa:" attribute of an SDP offer/answer exchange if | |||
if the associated SCTP stream has already been negotiated via DCEP. | the associated SCTP stream has already been negotiated via DCEP. | |||
Stream ids that are not currently used in SDP can be used for DCEP | Stream ids that are not currently used in SDP can be used for DCEP | |||
negotiation. Stream id allocation per SDP offer/answer negotiation | negotiation. Stream id allocation per SDP offer/answer negotiation | |||
may not align with DTLS role based allocation. This could cause | may not align with DTLS role based allocation. This could cause | |||
glare conditions when one side trying to do SDP offer/answer | glare conditions when one side tries to do SDP offer/answer | |||
negotiation on a stream id while the other end trying to open a data | negotiation on a stream id while the other end tries to open a data | |||
channel on the same stream id using DCEP negotiation. To avoid these | channel on the same stream id using DCEP negotiation. To avoid these | |||
glare conditions this specification recommends that the data channel | glare conditions this document recommends that the data channel stack | |||
stack user always selects stream ids per above described SDP offer/ | user always selects stream ids per the above described SDP offer/ | |||
answer rule even when DCEP negotiation is used. To avoid glare | answer rule even when DCEP negotiation is used. To avoid glare | |||
conditions, it is possible to come up with a different stream id | conditions, it is possible to come up with a different stream id | |||
allocation scheme, but such schemes are outside the scope of this | allocation scheme, but such schemes are outside the scope of this | |||
specification. | document. | |||
5.2.2. Negotiating Data Channel Parameters | 5.2.2. Negotiating Data Channel Parameters | |||
Conveying a reliable data channel is achieved by including neither | Conveying a reliable data channel is achieved by including neither | |||
'max-retr' nor 'max-time' in corresponding SDP offer's or answer's | 'max-retr' nor 'max-time' in corresponding SDP offer's or answer's | |||
"a=dcmap:" attribute line. Conveying a partially reliable data | "a=dcmap:" attribute line. Conveying a partially reliable data | |||
channel is achieved by including only one of 'max-retr' or 'max- | channel is achieved by including only one of 'max-retr' or 'max- | |||
time'. By definition max-retr and max-time are mutually exclusive, | time'. By definition max-retr and max-time are mutually exclusive, | |||
so at most one of them MAY be present in the "a=dcmap:" attribute | so at most one of them MAY be present in the "a=dcmap:" attribute | |||
line. If an SDP offer contains both of these parameters then the | line. If a SDP offer contains both of these parameters then the | |||
receiver of such an SDP offer MUST reject the SDP offer. If an SDP | receiver of such an SDP offer MUST reject the SDP offer. If a SDP | |||
answer contains both of these parameters then the offerer MAY treat | answer contains both of these parameters then the offerer MAY treat | |||
it as an error and MAY assume the associated SDP offer/answer failed | it as an error and MAY assume the associated SDP offer/answer failed | |||
and MAY take appropriate recovery actions. These recovery options | and MAY take appropriate recovery actions. These recovery options | |||
are outside the scope of this specification. | are outside the scope of this document. | |||
The SDP answer SHALL echo the same sub-protocol, max-retr, max-time, | The SDP answer SHALL echo the same subprotocol, max-retr, max-time, | |||
ordered parameters, if those were present in the offer, and MAY | ordered parameters, if those were present in the offer, and MAY | |||
include a label parameter. They MAY appear in any order, which could | include a label parameter. They MAY appear in any order, which could | |||
be different from the SDP offer, in the SDP answer. | be different from the SDP offer, in the SDP answer. | |||
When sending a subsequent offer or an answer, and for as long as the | When sending a subsequent offer or an answer, and for as long as the | |||
data channel is still open, the sender MUST replicate the same | data channel is still open, the sender MUST replicate the same | |||
information. | information. | |||
Data channel types defined in [I-D.ietf-rtcweb-data-protocol] are | Data channel types defined in [I-D.ietf-rtcweb-data-protocol] are | |||
mapped to SDP in the following manner, where "ordered=true" is the | mapped to SDP in the following manner, where "ordered=true" is the | |||
skipping to change at page 14, line 9 | skipping to change at page 14, line 9 | |||
data channel, as described in Section 5.1 and in Section 5.2.2. | data channel, as described in Section 5.1 and in Section 5.2.2. | |||
o Sends the SDP offer. | o Sends the SDP offer. | |||
The peer receiving such an SDP offer performs the following: | The peer receiving such an SDP offer performs the following: | |||
o Parses and applies the SDP offer. Note that the typical parser | o Parses and applies the SDP offer. Note that the typical parser | |||
normally ignores unknown SDP attributes, which includes data | normally ignores unknown SDP attributes, which includes data | |||
channel related attributes. | channel related attributes. | |||
o Analyzes the channel parameters and sub-protocol attributes to | o Analyzes the channel parameters and subprotocol attributes to | |||
determine whether to accept each offered data channel. | determine whether to accept each offered data channel. | |||
o For accepted data channels, it creates peer instances for the data | o For accepted data channels, it creates peer instances for the data | |||
channels with the agent using the channel parameters described in | channels with the agent using the channel parameters described in | |||
the SDP offer. Note that the agent is asked to create data | the SDP offer. Note that the agent is asked to create data | |||
channels with SCTP stream identifiers contained in the SDP offer | channels with SCTP stream identifiers contained in the SDP offer | |||
if the SDP offer is accepted. | if the SDP offer is accepted. | |||
o Generates an SDP answer. | o Generates an SDP answer. | |||
o Completes the SDP answer with the "a=dcmap:" and optional | o Completes the SDP answer with the "a=dcmap:" and optional | |||
"a=dcsa:" attributes needed for each SDP offer/answer negotiated | "a=dcsa:" attributes needed for each SDP offer/answer negotiated | |||
data channel, as described in Section 5.1 and in Section 5.2.2. | data channel, as described in Section 5.1 and in Section 5.2.2. | |||
o Sends the SDP answer. | o Sends the SDP answer. | |||
The agent receiving such an SDP answer performs the following: | The agent receiving such an SDP answer performs the following: | |||
o Closes any created data channels for which the expected "a=dcmap:" | o Closes any created data channels as described in Section 5.2.4 for | |||
and "a=dcsa:" attributes are not present in the SDP answer. | which the expected "a=dcmap:" and "a=dcsa:" attributes are not | |||
present in the SDP answer. | ||||
o Applies the SDP answer. | o Applies the SDP answer. | |||
Each agent application MUST wait to send data until it has | Each agent application MUST wait to send data until it has | |||
confirmation that the data channel at the peer is instantiated. For | confirmation that the data channel at the peer is instantiated. For | |||
WebRTC, this is when both data channel stacks have channel parameters | WebRTC, this is when both data channel stacks have channel parameters | |||
instantiated. This occurs: | instantiated. This occurs: | |||
o At both peers when a data channel is created without an | o At both peers when a data channel is created without an | |||
established SCTP association, as soon as the SCTP association is | established SCTP association, as soon as the SCTP association is | |||
skipping to change at page 15, line 14 | skipping to change at page 15, line 14 | |||
Note: DCEP is not used, that is neither the SDP offerer nor the SDP | Note: DCEP is not used, that is neither the SDP offerer nor the SDP | |||
answerer send an in-band DCEP DATA_CHANNEL_OPEN message. | answerer send an in-band DCEP DATA_CHANNEL_OPEN message. | |||
5.2.4. Closing a Data Channel | 5.2.4. Closing a Data Channel | |||
When the application requests the closing of a data channel that was | When the application requests the closing of a data channel that was | |||
negotiated via SDP offer/answer, the data channel stack always | negotiated via SDP offer/answer, the data channel stack always | |||
performs an SCTP SSN reset for this channel. | performs an SCTP SSN reset for this channel. | |||
It is specific to the sub-protocol whether this closing MUST in | It is specific to the subprotocol whether this closing MUST in | |||
addition be signaled to the peer via a new SDP offer/answer exchange. | addition be signaled to the peer via a new SDP offer/answer exchange. | |||
The intention to close a data channel can be signaled by sending a | The intention to close a data channel can be signaled by sending a | |||
new SDP offer which excludes the "a=dcmap:" and "a=dcsa:" attribute | new SDP offer which excludes the "a=dcmap:" and "a=dcsa:" attribute | |||
lines for the data channel. The offerer SHOULD NOT change the port | lines for the data channel. The offerer SHOULD NOT change the port | |||
value for the "m" line (e.g. to zero) when closing a data channel | value for the "m" line (e.g. to zero) when closing a data channel | |||
(unless all data channels are being closed and the SCTP association | (unless all data channels are being closed and the SCTP association | |||
is no longer needed), since this would close the SCTP association and | is no longer needed), since this would close the SCTP association and | |||
impact all of the data channels. If the answerer accepts the SDP | impact all of the data channels. If the answerer accepts the SDP | |||
offer then the answerer MUST close those data channels whose | offer then the answerer MUST close those data channels whose | |||
skipping to change at page 16, line 5 | skipping to change at page 16, line 5 | |||
then the client SHOULD generate an SDP offer which excludes this | then the client SHOULD generate an SDP offer which excludes this | |||
closed data channel. | closed data channel. | |||
The application MUST also close any data channel that was negotiated | The application MUST also close any data channel that was negotiated | |||
via SDP offer/answer, for which the stream identifiers are not listed | via SDP offer/answer, for which the stream identifiers are not listed | |||
in an incoming SDP offer. | in an incoming SDP offer. | |||
A closed data channel using local close (SCTP SSN reset), without an | A closed data channel using local close (SCTP SSN reset), without an | |||
additional SDP offer/answer to close it, may be reused for a new data | additional SDP offer/answer to close it, may be reused for a new data | |||
channel. This can only be done via new SDP offer/answer, describing | channel. This can only be done via new SDP offer/answer, describing | |||
the new sub-protocol and its attributes, only after the corresponding | the new subprotocol and its attributes, only after the corresponding | |||
data channel close acknowledgement is received from the peer (i.e. | data channel close acknowledgement is received from the peer (i.e. | |||
SCTP SSN reset of both incoming and outgoing streams is completed). | SCTP SSN reset of both incoming and outgoing streams is completed). | |||
This restriction is to avoid the race conditions between arrival of | This restriction is to avoid the race conditions between arrival of | |||
"SDP offer which reuses stream" with "SCTP SSN reset which closes | "SDP offer which reuses stream" with "SCTP SSN reset which closes | |||
outgoing stream" at the peer. | outgoing stream" at the peer. | |||
5.2.5. Various SDP Offer/Answer Scenarios and Considerations | 5.2.5. Various SDP Offer/Answer Scenarios and Considerations | |||
SDP offer has no "a=dcmap:" attributes | SDP offer has no "a=dcmap:" attributes. | |||
* Initial SDP offer: No data channel is negotiated yet. The DTLS | * Initial SDP offer: No data channel is negotiated yet. The DTLS | |||
connection and SCTP association is negotiated and, if agreed, | connection and SCTP association is negotiated and, if agreed, | |||
established as per [I-D.ietf-mmusic-sctp-sdp]. | established as per [I-D.ietf-mmusic-sctp-sdp]. | |||
* Subsequent SDP offer: All the SDP offer/answer negotiated data | * Subsequent SDP offer: All the SDP offer/answer negotiated data | |||
channels are expected be closed now. The DTLS/SCTP association | channels are expected be closed now. The DTLS/SCTP association | |||
remains open for SDP offer/answer or DCEP negotiation of data | remains open for SDP offer/answer or DCEP negotiation of data | |||
channels. | channels. | |||
SDP answer has no "a=dcmap:" attributes | SDP answer has no "a=dcmap:" attributes. | |||
* Initial SDP answer: Either the peer does not support "a=dcmap:" | * Initial SDP answer: Either the peer does not support "a=dcmap:" | |||
attributes or it rejected all the data channels. In either | attributes or it rejected all the data channels. In either | |||
case the offerer closes all the SDP offer/answer negotiated | case the offerer closes all the SDP offer/answer negotiated | |||
data channels that were open at the time of initial offer. The | data channels that were open at the time of initial offer. The | |||
DTLS connection and SCTP association will still be setup. | DTLS connection and SCTP association will still be setup. | |||
* Subsequent SDP answer: All the SDP offer/answer negotiated data | * Subsequent SDP answer: All the SDP offer/answer negotiated data | |||
channels are expected be closed now. The DTLS/SCTP association | channels are expected be closed now. The DTLS/SCTP association | |||
remains open for future SDP offer/answer or DCEP negotiation of | remains open for future SDP offer/answer or DCEP negotiation of | |||
data channels. | data channels. | |||
SDP offer or answer has no "a=dcmap:" attributes but has "a=dcsa:" | ||||
attributes. | ||||
* This is considered an error case. In this case the receiver of | ||||
such an SDP offer or answer SHOULD ignore the "a=dcsa:" | ||||
attributes and SHOULD process the SDP offer or answer as per | ||||
above case 'SDP offer has no "a=dcmap:" attributes' or case | ||||
'SDP answer has no "a=dcmap:" attributes'. | ||||
SDP offer has no "a=dcsa:" attributes for a data channel. | SDP offer has no "a=dcsa:" attributes for a data channel. | |||
* This is allowed and indicates there are no sub-protocol | * This is allowed and indicates there are no subprotocol | |||
parameters to convey. | parameters to convey. | |||
SDP answer has no "a=dcsa:" attributes for a data channel. | SDP answer has no "a=dcsa:" attributes for a data channel. | |||
* This is allowed and indicates there are no sub-protocol | * This is allowed and indicates there are no subprotocol | |||
parameters to convey in the SDP answer. The number of | parameters to convey in the SDP answer. The number of | |||
"a=dcsa:" attributes in the SDP answer does not have to match | "a=dcsa:" attributes in the SDP answer does not have to match | |||
the number of "a=dcsa:" attributes in the SDP offer. | the number of "a=dcsa:" attributes in the SDP offer. | |||
6. Examples | 6. Examples | |||
SDP offer: | SDP offer: | |||
m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | |||
c=IN IP4 10.10.10.1 | c=IN IP4 10.10.10.1 | |||
a=max-message-size:100000 | a=max-message-size:100000 | |||
skipping to change at page 18, line 35 | skipping to change at page 18, line 35 | |||
a=connection:new | a=connection:new | |||
a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | |||
a=dcmap:2 subprotocol="MSRP";label="MSRP" | a=dcmap:2 subprotocol="MSRP";label="MSRP" | |||
a=dcsa:2 accept-types:message/cpim text/plain | a=dcsa:2 accept-types:message/cpim text/plain | |||
a=dcsa:2 path:msrp://bob.example.com:10002/si438dsaodes;dc | a=dcsa:2 path:msrp://bob.example.com:10002/si438dsaodes;dc | |||
Figure 2: Example 2 | Figure 2: Example 2 | |||
In the above example the SDP offer contains data channels for BFCP | In the above example the SDP offer contains data channels for BFCP | |||
and MSRP sub-protocols. The SDP answer rejected BFCP and accepted | (Binary Floor Control Protocol) and MSRP subprotocols. The SDP | |||
MSRP. So, the offerer should close the data channel for BFCP and | answer rejected BFCP and accepted MSRP. So, the offerer closes the | |||
both offerer and answerer may start using the MSRP data channel | data channel for BFCP and both offerer and answerer may start using | |||
(after SCTP/DTLS association is setup). The data channel with stream | the MSRP data channel (after SCTP/DTLS association is setup). The | |||
id 0 is free and can be used for future DCEP or SDP offer/answer | data channel with stream id 0 is free and can be used for future DCEP | |||
negotiation. | or SDP offer/answer negotiation. | |||
Continuing on the earlier example in Figure 1. | Continuing the example in Figure 2. | |||
Subsequent SDP offer: | Subsequent SDP offer: | |||
m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | |||
c=IN IP4 10.10.10.1 | c=IN IP4 10.10.10.1 | |||
a=max-message-size:100000 | a=max-message-size:100000 | |||
a=sctp-port:5000 | a=sctp-port:5000 | |||
a=setup:actpass | a=setup:actpass | |||
a=connection:existing | a=connection:existing | |||
a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | |||
skipping to change at page 19, line 33 | skipping to change at page 19, line 33 | |||
a=setup:passive | a=setup:passive | |||
a=connection:existing | a=connection:existing | |||
a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | |||
a=dcmap:4 subprotocol="MSRP";label="MSRP" | a=dcmap:4 subprotocol="MSRP";label="MSRP" | |||
a=dcsa:4 accept-types:message/cpim text/plain | a=dcsa:4 accept-types:message/cpim text/plain | |||
a=dcsa:4 path:msrp://bob.example.com:10002/si438dsaodes;dc | a=dcsa:4 path:msrp://bob.example.com:10002/si438dsaodes;dc | |||
Figure 3: Example 3 | Figure 3: Example 3 | |||
The above example is a continuation of the example in Figure 1. The | The above example is a continuation of the example in Figure 2. The | |||
SDP offer now removes the MSRP data channel with stream id 2, but | SDP offer now removes the MSRP data channel with stream id 2, but | |||
opens a new MSRP data channel with stream id 4. The answerer accepts | opens a new MSRP data channel with stream id 4. The answerer accepts | |||
the entire offer. As a result the offerer closes the earlier | the entire offer. As a result the offerer closes the earlier | |||
negotiated MSRP related data channel and both offerer and answerer | negotiated MSRP related data channel and both offerer and answerer | |||
may start using new the MSRP related data channel. | may start using new the MSRP related data channel. | |||
7. Security Considerations | 7. Security Considerations | |||
No security considerations are envisaged beyond those already | No security considerations are envisaged beyond those already | |||
documented in [RFC4566]. | documented in [RFC4566]. | |||
8. IANA Considerations | 8. IANA Considerations | |||
8.1. Subprotocol Identifiers | 8.1. Subprotocol Identifiers | |||
Registration of new sub-protocol identifiers is performed using the | Registration of new subprotocol identifiers is performed using the | |||
existing IANA table "WebSocket Subprotocol Name Registry". | existing IANA "WebSocket Subprotocol Name Registry" table. | |||
The following text should be added following the title of the table. | The following text should be added following the title of the table. | |||
"This table also includes subprotocol identifiers specified for usage | "This table also includes subprotocol identifiers specified for usage | |||
within a WebRTC data channel." | within a WebRTC data channel." | |||
The following reference should be added to under the heading | The following reference should be added to under the heading | |||
reference: "RFC XXXX". | reference: "RFC XXXX". | |||
This document assigns no new values to this table. | This document assigns no new values to this table. | |||
skipping to change at page 21, line 10 | skipping to change at page 21, line 10 | |||
RFC. | RFC. | |||
This document defines a new SDP media-level attribute "a=dcsa:" as | This document defines a new SDP media-level attribute "a=dcsa:" as | |||
follows: | follows: | |||
+---------------------+---------------------------------------------+ | +---------------------+---------------------------------------------+ | |||
| Attribute name: | dcsa | | | Attribute name: | dcsa | | |||
| Type of attribute: | media | | | Type of attribute: | media | | |||
| Mux category: | SPECIAL | | | Mux category: | SPECIAL | | |||
| Charset Dependent: | No | | | Charset Dependent: | No | | |||
| Purpose: | Define data channel sub-protocol specific | | | Purpose: | Define data channel subprotocol specific | | |||
| | attributes | | | | attributes | | |||
| Appropriate values: | As defined in Section 5.1.2 | | | Appropriate values: | As defined in Section 5.1.2.1 | | |||
| Contact name: | MMUSIC Chairs | | | Contact name: | MMUSIC Chairs | | |||
| Contact e-mail: | mmusic-chairs@ietf.org | | | Contact e-mail: | mmusic-chairs@ietf.org | | |||
| Reference: | RFCXXXX | | | Reference: | RFCXXXX | | |||
+---------------------+---------------------------------------------+ | +---------------------+---------------------------------------------+ | |||
9. Acknowledgments | 9. Acknowledgments | |||
The authors wish to acknowledge the borrowing of ideas from other | The authors wish to acknowledge the borrowing of ideas from other | |||
internet drafts by Salvatore Loreto, Gonzalo Camarillo, Peter Dunkley | internet drafts by Salvatore Loreto, Gonzalo Camarillo, Peter Dunkley | |||
and Gavin Llewellyn, and to thank Roni Even, Christian Groves, Gunnar | and Gavin Llewellyn, and to thank Roni Even, Christian Groves, Gunnar | |||
Hellstrom, Christer Holmberg, Paul Kyzivat, Jonathan Lennox, and Uwe | Hellstrom, Christer Holmberg, Paul Kyzivat, Jonathan Lennox, and Uwe | |||
Rauschenbach for their invaluable comments. | Rauschenbach for their invaluable comments. | |||
10. CHANGE LOG | 10. CHANGE LOG | |||
10.1. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-05' | 10.1. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-06' | |||
o Changes addressing Christian Grove's WGLC review comments raised | ||||
in http://www.ietf.org/mail-archive/web/mmusic/current/ | ||||
msg15357.html and http://www.ietf.org/mail- | ||||
archive/web/mmusic/current/msg15359.html. | ||||
10.2. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-05' | ||||
o In IANA registration Section 8.2.1 and Section 8.2.2 replacement | o In IANA registration Section 8.2.1 and Section 8.2.2 replacement | |||
of contact name and e-mail address with "MMUSIC Chairs" and | of contact name and e-mail address with "MMUSIC Chairs" and | |||
"mmusic-chairs@ietf.org". | "mmusic-chairs@ietf.org". | |||
o In Section 5.1.2.1 replacement of "Thus in the example above, the | o In Section 5.1.2.1 replacement of "Thus in the example above, the | |||
original attribute line "a=accept- types:text/plain" is | original attribute line "a=accept- types:text/plain" is | |||
represented by the attribute line "a=dcsa:2 accept-types:text/ | represented by the attribute line "a=dcsa:2 accept-types:text/ | |||
plain", which specifies that this instance of MSRP being | plain", which specifies that this instance of MSRP being | |||
transported on the SCTP association using the data channel with | transported on the SCTP association using the data channel with | |||
stream id 2 accepts plain text files." with "... which specifies | stream id 2 accepts plain text files." with "... which specifies | |||
that this instance of the MSRP sub-protocol being transported | that this instance of the MSRP subprotocol being transported ...". | |||
...". | ||||
o The last paragraph of Section 5.1.2.1 started with "Note: This | o The last paragraph of Section 5.1.2.1 started with "Note: This | |||
document does not provide a complete specification ...". Removal | document does not provide a complete specification ...". Removal | |||
of "Note:" and move of this paragraph to the introduction in | of "Note:" and move of this paragraph to the introduction in | |||
Section 1 as last paragraph. | Section 1 as last paragraph. | |||
o Section 5.1.2's headline was "Sub-Protocol Specific Attributes". | o Section 5.1.2's headline was "Subprotocol Specific Attributes". | |||
Change of this headline to "Other Media Level Attributes" and | Change of this headline to "Other Media Level Attributes" and | |||
adaptations of the first paragraph of this section and the first | adaptations of the first paragraph of this section and the first | |||
paragraph of Section 5.1.2.1 in order to clarify that not only | paragraph of Section 5.1.2.1 in order to clarify that not only | |||
those attributes may be encapsulated in a "dcsa" attribute, which | those attributes may be encapsulated in a "dcsa" attribute, which | |||
are specifically defined for the sub-protocol, but that also other | are specifically defined for the subprotocol, but that also other | |||
attributes may be encapsulated if they are related to the specific | attributes may be encapsulated if they are related to the specific | |||
sub-protocol instance. | subprotocol instance. | |||
o Move of the last but one paragraph of Section 5.1.2.1 starting | o Move of the last but one paragraph of Section 5.1.2.1 starting | |||
with "The same syntax applies to ..." right in front of the formal | with "The same syntax applies to ..." right in front of the formal | |||
syntax definition of the "dcsa" attribute. | syntax definition of the "dcsa" attribute. | |||
o Modifications of the text in Section 5.1.1.2 and Section 5.1.2.2 | o Modifications of the text in Section 5.1.1.2 and Section 5.1.2.2 | |||
in order not to explicitly restrict usage of the "a=dcmap:" and | in order not to explicitly restrict usage of the "a=dcmap:" and | |||
"a=dcsa:" attributes to "m" lines with proto values "UDP/DTLS/ | "a=dcsa:" attributes to "m" lines with proto values "UDP/DTLS/ | |||
SCTP" or "TCP/DTLS/SCTP". | SCTP" or "TCP/DTLS/SCTP". | |||
10.2. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-04' | 10.3. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-04' | |||
o In Section 5.1.1.5 the first (and only) paragraph was "The | o In Section 5.1.1.5 the first (and only) paragraph was "The | |||
'subprotocol' parameter indicates which protocol the client | 'subprotocol' parameter indicates which protocol the client | |||
expects to exchange via the channel. 'Subprotocol' is an optional | expects to exchange via the channel. 'Subprotocol' is an optional | |||
parameter. If the 'subprotocol' parameter is not present, then | parameter. If the 'subprotocol' parameter is not present, then | |||
its value defaults to the empty string." Replacement of this | its value defaults to the empty string." Replacement of this | |||
paragraph with following two paragraphs: | paragraph with following two paragraphs: | |||
* The 'subprotocol' parameter indicates which protocol the client | * The 'subprotocol' parameter indicates which protocol the client | |||
expects to exchange via the channel. This parameter maps to | expects to exchange via the channel. This parameter maps to | |||
the 'Protocol' parameter defined in | the 'Protocol' parameter defined in | |||
[I-D.ietf-rtcweb-data-protocol]. Section 8.1 specifies how new | [I-D.ietf-rtcweb-data-protocol]. Section 8.1 specifies how new | |||
sub-protocol parameter values are registered. 'Subprotocol' is | subprotocol parameter values are registered. 'Subprotocol' is | |||
an optional parameter. If the 'subprotocol' parameter is not | an optional parameter. If the 'subprotocol' parameter is not | |||
present, then its value defaults to the empty string. | present, then its value defaults to the empty string. | |||
* Note: The empty string MAY also be explicitly used as | * Note: The empty string MAY also be explicitly used as | |||
'subprotocol' value, such that 'subprotocol=""' is equivalent | 'subprotocol' value, such that 'subprotocol=""' is equivalent | |||
to the 'subprotocol' parameter not being present at all. | to the 'subprotocol' parameter not being present at all. | |||
[I-D.ietf-rtcweb-data-protocol] allows the DATA_CHANNEL_OPEN | [I-D.ietf-rtcweb-data-protocol] allows the DATA_CHANNEL_OPEN | |||
message's 'Subprotocol' value to be an empty string. | message's 'Subprotocol' value to be an empty string. | |||
o Addition of [I-D.ietf-mmusic-sdp-mux-attributes] to list the of | o Addition of [I-D.ietf-mmusic-sdp-mux-attributes] to list the of | |||
skipping to change at page 23, line 10 | skipping to change at page 23, line 17 | |||
o Addition of new Section 5.1.1.2 describing the mux category of the | o Addition of new Section 5.1.1.2 describing the mux category of the | |||
dcmap SDP attribute. This section and the new "a=dcsa:" attribute | dcmap SDP attribute. This section and the new "a=dcsa:" attribute | |||
related mux category section are similar to the "Mux Category" | related mux category section are similar to the "Mux Category" | |||
sections of the "a=sctp-port:" and "a=max-message-size:" | sections of the "a=sctp-port:" and "a=max-message-size:" | |||
attributes in [I-D.ietf-mmusic-sctp-sdp]. | attributes in [I-D.ietf-mmusic-sctp-sdp]. | |||
o Addition of new Section 5.1.2.2 describing the mux category of the | o Addition of new Section 5.1.2.2 describing the mux category of the | |||
dcsa SDP attribute. | dcsa SDP attribute. | |||
10.3. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-03' | 10.4. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-03' | |||
o In Section 1 replacement of "RTCWeb leaves it open for other | o In Section 1 replacement of "RTCWeb leaves it open for other | |||
applications to use data channels and its in-band DCEP or out-of- | applications to use data channels and its in-band DCEP or out-of- | |||
band non-DCEP protocols for creating them" with "... to use data | band non-DCEP protocols for creating them" with "... to use data | |||
channels and its in-band DCEP or other in-band or out-of-band | channels and its in-band DCEP or other in-band or out-of-band | |||
protocols for creating them". Additionally replacement of "In | protocols for creating them". Additionally replacement of "In | |||
particular, the SDP offer generated by the application includes no | particular, the SDP offer generated by the application includes no | |||
channel-specific information" with "... generated by the RTCweb | channel-specific information" with "... generated by the RTCweb | |||
data channel stack includes no channel-specific information". | data channel stack includes no channel-specific information". | |||
o Move of former section 5 ("Data Channels") to new Appendix A and | o Move of former section 5 ("Data Channels") to new Appendix A and | |||
removal of JavaScript API specific discussions from this moved | removal of JavaScript API specific discussions from this moved | |||
text (like mentioning of data channel stack specific states). | text (like mentioning of data channel stack specific states). | |||
Therefore former section 6 ("SDP Offer/Answer Negotiation") is now | Therefore former section 6 ("SDP Offer/Answer Negotiation") is now | |||
Section 5. | Section 5. | |||
o In Section 5: | o In Section 5: | |||
* Relacement of Section 5's first paragraph "This section defines | * Relacement of Section 5's first paragraph "This section defines | |||
a method of non-DCEP negotiation by which two clients can | a method of non-DCEP negotiation by which two clients can | |||
negotiate data channel-specific and sub-protocol-specific | negotiate data channel-specific and subprotocol-specific | |||
parameters, using the out-of-band SDP offer/answer exchange. | parameters, using the out-of-band SDP offer/answer exchange. | |||
This SDP extension can only be used with the SDP offer/answer | This SDP extension can only be used with the SDP offer/answer | |||
model." with "This section defines an SDP extension by which | model." with "This section defines an SDP extension by which | |||
two clients can negotiate data channel-specific and sub- | two clients can negotiate data channel-specific and | |||
protocol-specific parameters without using DCEP | subprotocol-specific parameters without using DCEP | |||
[I-D.ietf-rtcweb-data-protocol]. This SDP extension only | [I-D.ietf-rtcweb-data-protocol]. This SDP extension only | |||
defines usage in the context of SDP offer/answer." | defines usage in the context of SDP offer/answer." | |||
* Addition of new paragraph: "Appendix A provides information how | * Addition of new paragraph: "Appendix A provides information how | |||
data channels work in general and especially summarizes some | data channels work in general and especially summarizes some | |||
key aspects, which should be considered for the negotiation of | key aspects, which should be considered for the negotiation of | |||
data channels if DCEP is not used." | data channels if DCEP is not used." | |||
o In Section 5.1.1 replacement of "The intention of exchanging these | o In Section 5.1.1 replacement of "The intention of exchanging these | |||
attributes is to create data channels on both the peers with the | attributes is to create data channels on both the peers with the | |||
skipping to change at page 24, line 20 | skipping to change at page 24, line 28 | |||
o In Section 5.2.1 replacement of "However, an SDP offer/answer | o In Section 5.2.1 replacement of "However, an SDP offer/answer | |||
exchange MUST NOT be initiated if the associated SCTP stream is | exchange MUST NOT be initiated if the associated SCTP stream is | |||
already negotiated via DCEP" with "However, an SCTP stream MUST | already negotiated via DCEP" with "However, an SCTP stream MUST | |||
NOT be referenced in a dcmap or dcsa attribute of an SDP offer/ | NOT be referenced in a dcmap or dcsa attribute of an SDP offer/ | |||
answer exchange if the associated SCTP stream has already been | answer exchange if the associated SCTP stream has already been | |||
negotiated via DCEP". | negotiated via DCEP". | |||
o In the examples in Section 6 addition of the previously missing | o In the examples in Section 6 addition of the previously missing | |||
colons to the "a=sctp-port" attribute lines. | colons to the "a=sctp-port" attribute lines. | |||
10.4. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-02' | 10.5. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-02' | |||
o Move of reference [I-D.ietf-rtcweb-jsep] from the list of | o Move of reference [I-D.ietf-rtcweb-jsep] from the list of | |||
normative references to the list of informative references. | normative references to the list of informative references. | |||
o Addition of [IANA-SDP-Parameters] to the list of informative | o Addition of [IANA-SDP-Parameters] to the list of informative | |||
references and addition of following two sentences to the first | references and addition of following two sentences to the first | |||
paragraph after the ABNF definition: "Note however that not all | paragraph after the ABNF definition: "Note however that not all | |||
SDP attributes are suitable as "a=dcsa:" parameter. | SDP attributes are suitable as "a=dcsa:" parameter. | |||
[IANA-SDP-Parameters] contains the lists of IANA registered | [IANA-SDP-Parameters] contains the lists of IANA registered | |||
session and media level or media level only SDP attributes." | session and media level or media level only SDP attributes." | |||
o In the introduction replacement of last sentence "This document | o In the introduction replacement of last sentence "This document | |||
defines SDP-based out-of-band negotiation procedures to establish | defines SDP-based out-of-band negotiation procedures to establish | |||
data channels for transport of well-defined sub-protocols" with | data channels for transport of well-defined subprotocols" with | |||
"This document defines SDP offer/answer negotiation procedures to | "This document defines SDP offer/answer negotiation procedures to | |||
establish data channels for transport of well-defined sub- | establish data channels for transport of well-defined | |||
protocols, to enable out-of-band negotiation". | subprotocols, to enable out-of-band negotiation". | |||
o Throughout the document replacement of "external negotiation" with | o Throughout the document replacement of "external negotiation" with | |||
"SDP offer/answer negotiation" and removal of term "external | "SDP offer/answer negotiation" and removal of term "external | |||
negotiation" from the terminology list in Section 3. | negotiation" from the terminology list in Section 3. | |||
o Throughout the document replacement of "internal negotiation" with | o Throughout the document replacement of "internal negotiation" with | |||
"DCEP" and removal of terms "internal negotiation" and "in-band | "DCEP" and removal of terms "internal negotiation" and "in-band | |||
negotiation" from the terminology list in Section 3. | negotiation" from the terminology list in Section 3. | |||
o Addition of "SCTP Stream Sequence Number (SSN)" to the list of | o Addition of "SCTP Stream Sequence Number (SSN)" to the list of | |||
skipping to change at page 25, line 21 | skipping to change at page 25, line 31 | |||
a=dcmap". | a=dcmap". | |||
o Move of reference [WebRtcAPI] from list of normative references to | o Move of reference [WebRtcAPI] from list of normative references to | |||
list of informative references. | list of informative references. | |||
o Removal of almost all text parts, which discussed JavaScript or | o Removal of almost all text parts, which discussed JavaScript or | |||
other API specific aspects. Such API specific aspects were mainly | other API specific aspects. Such API specific aspects were mainly | |||
discussed in sub-sections of Section 5 and Section 5 of draft- | discussed in sub-sections of Section 5 and Section 5 of draft- | |||
ietf-mmusic-data-channel-sdpneg-02. | ietf-mmusic-data-channel-sdpneg-02. | |||
10.5. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-01' | 10.6. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-01' | |||
o New Section 4 regarding applicability to SDP offer/answer only. | o New Section 4 regarding applicability to SDP offer/answer only. | |||
o Addition of new Section 8.1 "Subprotocol identifiers" as | o Addition of new Section 8.1 "Subprotocol identifiers" as | |||
subsection of the "IANA Considerations" related Section 8. Also | subsection of the "IANA Considerations" related Section 8. Also | |||
removal of the temporary note "To be completed. As [I-D.ietf- | removal of the temporary note "To be completed. As [I-D.ietf- | |||
rtcweb-data-protocol] this document should refer to IANA's | rtcweb-data-protocol] this document should refer to IANA's | |||
WebSocket Subprotocol Name Registry defined in [RFC6455]." | WebSocket Subprotocol Name Registry defined in [RFC6455]." | |||
o In Section 5.2.2: | o In Section 5.2.2: | |||
skipping to change at page 27, line 29 | skipping to change at page 27, line 36 | |||
* In the last but one paragraph replacement of "must" with "The | * In the last but one paragraph replacement of "must" with "The | |||
application MUST also close...". | application MUST also close...". | |||
o In Section 5.1.2 addition of following note after the formal | o In Section 5.1.2 addition of following note after the formal | |||
definition of the 'a=dcsa' attribute: "Note that the above | definition of the 'a=dcsa' attribute: "Note that the above | |||
reference to RFC 4566 defines were the attribute definition can be | reference to RFC 4566 defines were the attribute definition can be | |||
found; it does not provide any limitation on support of attributes | found; it does not provide any limitation on support of attributes | |||
defined in other documents in accordance with this attribute | defined in other documents in accordance with this attribute | |||
definition." | definition." | |||
10.6. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-00' | 10.7. Changes against 'draft-ietf-mmusic-data-channel-sdpneg-00' | |||
o In Section 3 "WebRTC data channel" was defined as "A bidirectional | o In Section 3 "WebRTC data channel" was defined as "A bidirectional | |||
channel consisting of paired SCTP outbound and inbound streams." | channel consisting of paired SCTP outbound and inbound streams." | |||
Replacement of this definition with "Data channel: A WebRTC data | Replacement of this definition with "Data channel: A WebRTC data | |||
channel as specified in [I-D.ietf-rtcweb-data-channel]", and | channel as specified in [I-D.ietf-rtcweb-data-channel]", and | |||
consistent usage of "data channel" in the remainder of the | consistent usage of "data channel" in the remainder of the | |||
document including the document's headline." | document including the document's headline." | |||
o In Section 5 removal of following note: 'OPEN ISSUE: The syntax in | o In Section 5 removal of following note: 'OPEN ISSUE: The syntax in | |||
[I-D.ietf-mmusic-sctp-sdp] may change as that document progresses. | [I-D.ietf-mmusic-sctp-sdp] may change as that document progresses. | |||
skipping to change at page 27, line 51 | skipping to change at page 28, line 11 | |||
general term.' | general term.' | |||
o Consistent usage of '"m" line' in whole document as per [RFC4566]. | o Consistent usage of '"m" line' in whole document as per [RFC4566]. | |||
o In Section 5.1.1 removal of the example dcmap attribute line | o In Section 5.1.1 removal of the example dcmap attribute line | |||
'a=dcmap:2 subprotocol="BFCP";label="channel 2' as there are | 'a=dcmap:2 subprotocol="BFCP";label="channel 2' as there are | |||
already four examples right after the ABNF rules in | already four examples right after the ABNF rules in | |||
Section 5.1.1.1. Corresponding removal of following related note: | Section 5.1.1.1. Corresponding removal of following related note: | |||
"Note: This document does not provide a complete specification of | "Note: This document does not provide a complete specification of | |||
how to negotiate the use of a WebRTC data channel to transport | how to negotiate the use of a WebRTC data channel to transport | |||
BFCP. Procedures specific to each sub-protocol such as BFCP will | BFCP. Procedures specific to each subprotocol such as BFCP will | |||
be documented elsewhere. The use of BFCP is only an example of | be documented elsewhere. The use of BFCP is only an example of | |||
how the generic procedures described herein might apply to a | how the generic procedures described herein might apply to a | |||
specific sub-protocol." | specific subprotocol." | |||
o In Section 5.1.1 removal of following note: "Note: This attribute | o In Section 5.1.1 removal of following note: "Note: This attribute | |||
is derived from attribute "webrtc-DataChannel", which was defined | is derived from attribute "webrtc-DataChannel", which was defined | |||
in old version 03 of the following draft, but which was removed | in old version 03 of the following draft, but which was removed | |||
along with any support for SDP external negotiation in subsequent | along with any support for SDP external negotiation in subsequent | |||
versions: [I-D.ietf-mmusic-sctp-sdp]." | versions: [I-D.ietf-mmusic-sctp-sdp]." | |||
o Insertion of following new sentence to the beginning of | o Insertion of following new sentence to the beginning of | |||
Section 5.1.1.1: "dcmap is a media level attribute having | Section 5.1.1.1: "dcmap is a media level attribute having | |||
following ABNF syntax:" | following ABNF syntax:" | |||
skipping to change at page 30, line 14 | skipping to change at page 30, line 22 | |||
to handle cases where a successful SDP answer is not received, in | to handle cases where a successful SDP answer is not received, in | |||
which case the state of the session SHOULD be kept per the last | which case the state of the session SHOULD be kept per the last | |||
successful SDP offer/answer." | successful SDP offer/answer." | |||
o Although dedicated to "a=dcmap" and "a=dcsa" SDP syntax aspects | o Although dedicated to "a=dcmap" and "a=dcsa" SDP syntax aspects | |||
Section 5.1.1 contained already procedural descriptions related to | Section 5.1.1 contained already procedural descriptions related to | |||
data channel reliability negotiation. Creation of new | data channel reliability negotiation. Creation of new | |||
Section 5.2.2 and moval of reliability negotiation related text to | Section 5.2.2 and moval of reliability negotiation related text to | |||
this new section. | this new section. | |||
10.7. Changes against 'draft-ejzak-mmusic-data-channel-sdpneg-02' | 10.8. Changes against 'draft-ejzak-mmusic-data-channel-sdpneg-02' | |||
o Removal of note "[ACTION ITEM]" from section "subprotocol | o Removal of note "[ACTION ITEM]" from section "subprotocol | |||
parameter". As [I-D.ietf-rtcweb-data-protocol] this document | parameter". As [I-D.ietf-rtcweb-data-protocol] this document | |||
should refer to IANA's WebSocket Subprotocol Name Registry defined | should refer to IANA's WebSocket Subprotocol Name Registry defined | |||
in [RFC6455]. | in [RFC6455]. | |||
o In whole document, replacement of "unreliable" with "partially | o In whole document, replacement of "unreliable" with "partially | |||
reliable", which is used in [I-D.ietf-rtcweb-data-channel] and in | reliable", which is used in [I-D.ietf-rtcweb-data-channel] and in | |||
[I-D.ietf-rtcweb-data-protocol] in most places. | [I-D.ietf-rtcweb-data-protocol] in most places. | |||
skipping to change at page 31, line 16 | skipping to change at page 31, line 24 | |||
o In the "Examples" section, in the first two SDP offer examples in | o In the "Examples" section, in the first two SDP offer examples in | |||
the a=dcmap attribute lines 'label="BGCP"' was replaced with | the a=dcmap attribute lines 'label="BGCP"' was replaced with | |||
'label="BFCP"'. | 'label="BFCP"'. | |||
o In all examples, the "m" line proto value "DTLS/SCTP" was replaced | o In all examples, the "m" line proto value "DTLS/SCTP" was replaced | |||
with "UDP/DTLS/SCTP" and the "a=fmtp" attribute lines were | with "UDP/DTLS/SCTP" and the "a=fmtp" attribute lines were | |||
replaced with "a=max-message-size" attribute lines, as per draft- | replaced with "a=max-message-size" attribute lines, as per draft- | |||
ietf-mmusic-sctp-sdp-12. | ietf-mmusic-sctp-sdp-12. | |||
10.8. Changes against '-01' | 10.9. Changes against '-01' | |||
o Formal syntax for dcmap and dcsa attribute lines. | o Formal syntax for dcmap and dcsa attribute lines. | |||
o Making subprotocol as an optional parameter in dcmap. | o Making subprotocol as an optional parameter in dcmap. | |||
o Specifying disallowed parameter combinations for max-time and max- | o Specifying disallowed parameter combinations for max-time and max- | |||
retr. | retr. | |||
o Clarifications on WebRTC data channel close procedures. | o Clarifications on WebRTC data channel close procedures. | |||
10.9. Changes against '-00' | 10.10. Changes against '-00' | |||
o Revisions to identify difference between internal and external | o Revisions to identify difference between internal and external | |||
negotiation and their usage. | negotiation and their usage. | |||
o Introduction of more generic terminology, e.g. "application" | o Introduction of more generic terminology, e.g. "application" | |||
instead of "browser". | instead of "browser". | |||
o Clarification of how "max-retr and max-time affect the usage of | o Clarification of how "max-retr and max-time affect the usage of | |||
unreliable and reliable WebRTC data channels. | unreliable and reliable WebRTC data channels. | |||
skipping to change at page 33, line 5 | skipping to change at page 33, line 9 | |||
[I-D.ietf-rtcweb-data-protocol] | [I-D.ietf-rtcweb-data-protocol] | |||
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel | Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data Channel | |||
Establishment Protocol", draft-ietf-rtcweb-data- | Establishment Protocol", draft-ietf-rtcweb-data- | |||
protocol-09 (work in progress), January 2015. | protocol-09 (work in progress), January 2015. | |||
[RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol", | [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol", | |||
RFC 4960, DOI 10.17487/RFC4960, September 2007, | RFC 4960, DOI 10.17487/RFC4960, September 2007, | |||
<http://www.rfc-editor.org/info/rfc4960>. | <http://www.rfc-editor.org/info/rfc4960>. | |||
[RFC4975] Campbell, B., Ed., Mahy, R., Ed., and C. Jennings, Ed., | ||||
"The Message Session Relay Protocol (MSRP)", RFC 4975, | ||||
DOI 10.17487/RFC4975, September 2007, | ||||
<http://www.rfc-editor.org/info/rfc4975>. | ||||
[RFC4976] Jennings, C., Mahy, R., and A. Roach, "Relay Extensions | ||||
for the Message Sessions Relay Protocol (MSRP)", RFC 4976, | ||||
DOI 10.17487/RFC4976, September 2007, | ||||
<http://www.rfc-editor.org/info/rfc4976>. | ||||
[RFC5547] Garcia-Martin, M., Isomaki, M., Camarillo, G., Loreto, S., | ||||
and P. Kyzivat, "A Session Description Protocol (SDP) | ||||
Offer/Answer Mechanism to Enable File Transfer", RFC 5547, | ||||
DOI 10.17487/RFC5547, May 2009, | ||||
<http://www.rfc-editor.org/info/rfc5547>. | ||||
[RFC6135] Holmberg, C. and S. Blau, "An Alternative Connection Model | ||||
for the Message Session Relay Protocol (MSRP)", RFC 6135, | ||||
DOI 10.17487/RFC6135, February 2011, | ||||
<http://www.rfc-editor.org/info/rfc6135>. | ||||
[RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol", | ||||
RFC 6455, DOI 10.17487/RFC6455, December 2011, | ||||
<http://www.rfc-editor.org/info/rfc6455>. | ||||
[RFC6714] Holmberg, C., Blau, S., and E. Burger, "Connection | ||||
Establishment for Media Anchoring (CEMA) for the Message | ||||
Session Relay Protocol (MSRP)", RFC 6714, | ||||
DOI 10.17487/RFC6714, August 2012, | ||||
<http://www.rfc-editor.org/info/rfc6714>. | ||||
[I-D.ietf-rtcweb-jsep] | ||||
Uberti, J., Jennings, C., and E. Rescorla, "Javascript | ||||
Session Establishment Protocol", draft-ietf-rtcweb-jsep-12 | ||||
(work in progress), October 2015. | ||||
[IANA-SDP-Parameters] | [IANA-SDP-Parameters] | |||
"Session Description Protocol (SDP) Parameters", Internet | "Session Description Protocol (SDP) Parameters", Internet | |||
Assigned Numbers Authority Protocol Assignments Session | Assigned Numbers Authority Protocol Assignments Session | |||
Description Protocol (SDP) Parameters, | Description Protocol (SDP) Parameters, | |||
<http://www.iana.org/assignments/sdp-parameters/ | <http://www.iana.org/assignments/sdp-parameters/ | |||
sdp-parameters.xhtml>. | sdp-parameters.xhtml>. | |||
[WebRtcAPI] | [WebRtcAPI] | |||
Bergkvist, A., Burnett, D., Jennings, C., and A. | Bergkvist, A., Burnett, D., Jennings, C., and A. | |||
Narayanan, "WebRTC 1.0: Real-time Communication Between | Narayanan, "WebRTC 1.0: Real-time Communication Between | |||
skipping to change at page 34, line 20 | skipping to change at page 33, line 31 | |||
<http://www.w3.org/TR/2015/WD-webrtc-20150210/>. | <http://www.w3.org/TR/2015/WD-webrtc-20150210/>. | |||
Appendix A. Generic Data Channel Negotiation Aspects When Not Using | Appendix A. Generic Data Channel Negotiation Aspects When Not Using | |||
DCEP | DCEP | |||
This appendix summarizes how data channels work in general and | This appendix summarizes how data channels work in general and | |||
discusses some key aspects, which should be considered for the out- | discusses some key aspects, which should be considered for the out- | |||
of-band negotiation of data channels if DCEP is not used. | of-band negotiation of data channels if DCEP is not used. | |||
A WebRTC application creates a data channel by providing a number of | A WebRTC application creates a data channel by providing a number of | |||
setup parameters (sub-protocol, label, reliability, order of | setup parameters (subprotocol, label, maximal number of | |||
delivery, priority). The application also specifies if it wants to | retransmissions, maximal retransmission time, order of delivery, | |||
make use of the negotiation using the DCEP | priority). The application also specifies if it wants to make use of | |||
[I-D.ietf-rtcweb-data-protocol], or if the application intends to | the negotiation using the DCEP [I-D.ietf-rtcweb-data-protocol], or if | |||
negotiate data channels using the SDP offer/answer protocol. | the application intends to negotiate data channels using the SDP | |||
offer/answer protocol. | ||||
In any case, the SDP offer generated by the application is per | In any case, the SDP offer generated by the application is per | |||
[I-D.ietf-mmusic-sctp-sdp]. In brief, it contains one "m" line for | [I-D.ietf-mmusic-sctp-sdp]. In brief, it contains one "m" line for | |||
the SCTP association on top of which data channels will run: | the SCTP association on top of which data channels will run: | |||
m=application 54111 UDP/DTLS/SCTP webrtc-datachannel | m=application 54111 UDP/DTLS/SCTP webrtc-datachannel | |||
c=IN IP4 79.97.215.79 | c=IN IP4 79.97.215.79 | |||
a=max-message-size:100000 | a=max-message-size:100000 | |||
a=sctp-port:5000 | a=sctp-port:5000 | |||
a=setup:actpass | a=setup:actpass | |||
a=connection:new | a=connection:new | |||
a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | |||
Note: A WebRTC application will only use "m" line format "webrtc- | Note: A WebRTC application will only use "m" line format "webrtc- | |||
datachannel", and will not use other formats in the "m" line for | datachannel", and will not use other formats in the "m" line for | |||
other protocols such as t38. [I-D.ietf-mmusic-sctp-sdp] supports | other protocols such as t38. [I-D.ietf-mmusic-sctp-sdp] supports | |||
only one SCTP association to be established on top of a DTLS | only one SCTP association to be established on top of a DTLS | |||
association. | association. | |||
Note: Above SDP media description does not contain any channel- | Note: The above SDP media description does not contain any channel- | |||
specific information. | specific information. | |||
A.1. Stream Identifier Numbering | A.1. Stream Identifier Numbering | |||
Independently from the requested type of negotiation, the application | Independently from the requested type of negotiation, the application | |||
creating a data channel can either pass to the data channel stack the | creating a data channel can either pass to the data channel stack the | |||
stream identifier to assign to the data channel or else let the data | stream identifier to assign to the data channel or else let the data | |||
channel stack pick one identifier from the ones unused. | channel stack pick one identifier from the unused ones. | |||
To avoid glare situations, each endpoint can moreover own an | To avoid glare situations, each endpoint can moreover own an | |||
exclusive set of stream identifiers, in which case an endpoint can | exclusive set of stream identifiers, in which case an endpoint can | |||
only create a data channel with a stream identifier it owns. | only create a data channel with a stream identifier it owns. | |||
Which set of stream identifiers is owned by which endpoint is | Which set of stream identifiers is owned by which endpoint is | |||
determined by convention or other means. | determined by convention or other means. | |||
For data channels negotiated with the DCEP, one endpoint owns by | For data channels negotiated with the DCEP, one endpoint owns by | |||
convention the even stream identifiers, whereas the other owns the | convention the even stream identifiers, whereas the other owns the | |||
skipping to change at page 35, line 27 | skipping to change at page 34, line 38 | |||
[I-D.ietf-rtcweb-data-protocol]. | [I-D.ietf-rtcweb-data-protocol]. | |||
For data channels negotiated via some protocol different from | For data channels negotiated via some protocol different from | |||
DCEP, no convention is defined by default. | DCEP, no convention is defined by default. | |||
A.2. Generic Data Channel Negotiation Not Using DCEP | A.2. Generic Data Channel Negotiation Not Using DCEP | |||
A.2.1. Overview | A.2.1. Overview | |||
DCEP negotiation only provides for negotiation of data channel | DCEP negotiation only provides for negotiation of data channel | |||
transport parameters and does not provide for negotiation of sub- | transport parameters and does not provide for negotiation of | |||
protocol specific parameters. DCEP-less data channel negotiation can | subprotocol specific parameters. DCEP-less data channel negotiation | |||
be defined to allow negotiation of parameters beyond those handled by | can be defined to allow negotiation of parameters beyond those | |||
DCEP, e.g., parameters specific to the sub-protocol instantiated on a | handled by DCEP, e.g., parameters specific to the subprotocol | |||
particular data channel. | instantiated on a particular data channel. | |||
The following procedures are common to all methods of data channel | The following procedures are common to all methods of data channel | |||
negotiation not using DCEP, whether in-band (communicated using | negotiation not using DCEP, whether in-band (communicated using | |||
proprietary means on an already established data channel) or out-of- | proprietary means on an already established data channel) or out-of- | |||
band (using SDP offer/answer or some other protocol associated with | band (using SDP offer/answer or some other protocol associated with | |||
the signaling channel). | the signaling channel). | |||
A.2.2. Opening a Data Channel | A.2.2. Opening a Data Channel | |||
In the case of DCEP-less negotiation, the endpoint application has | In the case of DCEP-less negotiation, the endpoint application has | |||
the option to fully control the stream identifier assignments. | the option to fully control the stream identifier assignments. | |||
However these assignments have to coexist with the assignments | However these assignments have to coexist with the assignments | |||
controlled by the data channel stack for the DCEP negotiated data | controlled by the data channel stack for the DCEP negotiated data | |||
channels (if any). It is the responsibility of the application to | channels (if any). It is the responsibility of the application to | |||
ensure consistent assignment of stream identifiers. | ensure consistent assignment of stream identifiers. | |||
When the application requests the creation of a new data channel to | When the application requests the creation of a new data channel to | |||
be set up via DCEP-less negotiation, the data channel stack creates | be set up via DCEP-less negotiation, the data channel stack creates | |||
the data channel locally without sending any DATA_CHANNEL_OPEN | the data channel locally without sending any DATA_CHANNEL_OPEN | |||
message in-band. However, even if the ICE, DTLS and SCTP procedures | message in-band. However, even if the ICE (Interactive Connectivity | |||
were already successfully completed, the application can't send data | Establishment), DTLS and SCTP procedures were already successfully | |||
on this data channel until the negotiation is complete with the peer. | completed, the application can't send data on this data channel until | |||
This is because the peer needs to be aware of and accept the usage of | the negotiation is complete with the peer. This is because the peer | |||
this data channel. The peer, after accepting the data channel offer, | needs to be aware of and accept the usage of this data channel. The | |||
can start sending data immediately. This implies that the offerer | peer, after accepting the data channel offer, can start sending data | |||
may receive data channel sub-protocol messages before the negotiation | immediately. This implies that the offerer may receive data channel | |||
is complete and the application should be ready to handle it. | subprotocol messages before the negotiation is complete and the | |||
application should be ready to handle it. | ||||
If the peer rejects the data channel part of the offer then it | If the peer rejects the data channel part of the offer then it | |||
doesn't have to do anything as the data channel was not created using | doesn't have to do anything as the data channel was not created using | |||
the stack. The offerer on the other hand needs to close the data | the stack. The offerer on the other hand needs to close the data | |||
channel that was opened by invoking relevant data channel stack API | channel that was opened by invoking relevant data channel stack API | |||
procedures. | procedures. | |||
It is also worth noting that a data channel stack implementation may | It is also worth noting that a data channel stack implementation may | |||
not provide any API to create and close data channels; instead the | not provide any API to create and close data channels; instead the | |||
data channels may be used on the fly as needed just by communicating | data channels may be used on the fly as needed just by communicating | |||
via non-DCEP means or by even having some local configuration/ | via non-DCEP means or by even having some local configuration/ | |||
assumptions on both the peers. | assumptions on both the peers. | |||
The application then negotiates the data channel properties and sub- | The application then negotiates the data channel properties and | |||
protocol properties with the peer's application using a mechanism | subprotocol properties with the peer's application using a mechanism | |||
different from DCEP. | different from DCEP. | |||
The peer then symmetrically creates a data channel with these | The peer then symmetrically creates a data channel with these | |||
negotiated data channel properties. This is the only way for the | negotiated data channel properties. This is the only way for the | |||
peer's data channel stack to know which properties to apply when | peer's data channel stack to know which properties to apply when | |||
transmitting data on this channel. The data channel stack must allow | transmitting data on this channel. The data channel stack must allow | |||
data channel creation with any non-conflicting stream identifier so | data channel creation with any non-conflicting stream identifier so | |||
that both peers can create the data channel with the same stream | that both peers can create the data channel with the same stream | |||
identifier. | identifier. | |||
A.2.3. Closing a Data Channel | A.2.3. Closing a Data Channel | |||
When the application requests the closing of a data channel | When the application requests the closing of a data channel | |||
negotiated without DCEP, the data channel stack always performs an | negotiated without DCEP, the data channel stack always performs an | |||
SCTP SSN reset for this channel. | SCTP SSN reset for this channel. | |||
Depending upon the method used for DCEP-less negotiation and the sub- | Depending upon the method used for DCEP-less negotiation and the | |||
protocol associated with the data channel, the closing might in | subprotocol associated with the data channel, the closing might in | |||
addition be signaled to the peer via SDP offer/answer negotiation. | addition be signaled to the peer via SDP offer/answer negotiation. | |||
Authors' Addresses | Authors' Addresses | |||
Keith Drage (editor) | Keith Drage (editor) | |||
Alcatel-Lucent | Alcatel-Lucent | |||
Quadrant, Stonehill Green, Westlea | Quadrant, Stonehill Green, Westlea | |||
Swindon | Swindon | |||
UK | UK | |||
Email: keith.drage@alcatel-lucent.com | Email: keith.drage@alcatel-lucent.com | |||
Maridi R. Makaraju (Raju) | Maridi R. Makaraju (Raju) | |||
Alcatel-Lucent | Alcatel-Lucent | |||
End of changes. 102 change blocks. | ||||
217 lines changed or deleted | 232 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |