rfc8832xml2.original.xml | rfc8832.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
<?rfc symrefs='yes'?> | nsus="true" docName="draft-ietf-rtcweb-data-protocol-09" indexInclude="true" ipr | |||
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'> | ="trust200902" number="8832" prepTime="2021-01-16T21:37:59" scripts="Common,Lati | |||
<?rfc toc='yes' ?> | n" sortRefs="false" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude | |||
<?rfc compact='yes' ?> | ="true" xml:lang="en"> | |||
<?rfc subcompact='no' ?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-rtcweb-data-protocol-0 | |||
<?rfc sortrefs='no' ?> | 9" rel="prev"/> | |||
<?rfc strict='yes' ?> | <link href="https://dx.doi.org/10.17487/rfc8832" rel="alternate"/> | |||
<link href="urn:issn:2070-1721" rel="alternate"/> | ||||
<rfc category='std' | <front> | |||
ipr='trust200902' | <title>WebRTC Data Channel Establishment Protocol</title> | |||
number="XXXX" | <seriesInfo name="RFC" value="8832" stream="IETF"/> | |||
submissionType="IETF" | <author initials="R." surname="Jesup" fullname="Randell Jesup"> | |||
consensus="yes" | <organization showOnFrontPage="true">Mozilla</organization> | |||
> | <address> | |||
<front> | <postal> | |||
<title>WebRTC Data Channel Establishment Protocol</title> | <street/> | |||
<code/> | ||||
<author initials='R.' surname='Jesup' fullname='Randell Jesup'> | <city/> | |||
<organization>Mozilla</organization> | <country>United States of America</country> | |||
<address> | </postal> | |||
<postal> | <email>randell-ietf@jesup.org</email> | |||
<street></street> | </address> | |||
<code></code> | </author> | |||
<city></city> | <author initials="S." surname="Loreto" fullname="Salvatore Loreto"> | |||
<country>United States of America</country> | <organization showOnFrontPage="true">Ericsson</organization> | |||
</postal> | <address> | |||
<email>randell-ietf@jesup.org</email> | <postal> | |||
</address> | <street>Hirsalantie 11</street> | |||
</author> | <code>02420</code> | |||
<city>Jorvas</city> | ||||
<author initials='S.' surname='Loreto' fullname='Salvatore Loreto'> | <country>Finland</country> | |||
<organization>Ericsson</organization> | </postal> | |||
<address> | <email>salvatore.loreto@ericsson.com</email> | |||
<postal> | </address> | |||
<street>Hirsalantie 11</street> | </author> | |||
<code>02420</code> | <author initials="M." surname="Tüxen" fullname="Michael Tüxen"> | |||
<city>Jorvas</city> | <organization abbrev="Münster Univ. of Appl. Sciences" showOnFrontPage="tr | |||
<country>Finland</country> | ue">Münster University of Applied Sciences</organization> | |||
</postal> | <address> | |||
<email>salvatore.loreto@ericsson.com</email> | <postal> | |||
</address> | <street>Stegerwaldstrasse 39</street> | |||
</author> | <code>48565</code> | |||
<city> Steinfurt</city> | ||||
<author initials='M.' surname='Tuexen' fullname='Michael Tuexen'> | <country>Germany</country> | |||
<organization abbrev='Muenster Univ. of Appl. Sciences'> | </postal> | |||
Muenster University of Applied Sciences</organization> | <email>tuexen@fh-muenster.de</email> | |||
<address> | </address> | |||
<postal> | </author> | |||
<street>Stegerwaldstrasse 39</street> | <date month="01" year="2021"/> | |||
<code>48565</code> | <abstract pn="section-abstract"> | |||
<city> Steinfurt</city> | <t indent="0" pn="section-abstract-1">The WebRTC framework specifies proto | |||
<country>Germany</country> | col support for direct interactive | |||
</postal> | ||||
<email>tuexen@fh-muenster.de</email> | ||||
</address> | ||||
</author> | ||||
<date month="October" year="2018" /> | ||||
<area>RAI</area> | ||||
<!-- [rfced] Please insert any keywords (beyond those that appear in | ||||
the title) for use on https://www.rfc-editor.org/search. | ||||
<keyword>example</keyword> | ||||
<abstract> | ||||
<t>The WebRTC framework specifies protocol support for direct interactive | ||||
rich communication using audio, video, and data between two peers' web browsers. | rich communication using audio, video, and data between two peers' web browsers. | |||
This document specifies a simple protocol for establishing symmetric | This document specifies a simple protocol for establishing symmetric | |||
data channels between the peers. It uses a two-way handshake and allows | data channels between the peers. It uses a two-way handshake and allows | |||
sending of user data without waiting for the handshake to complete.</t> | sending of user data without waiting for the handshake to complete.</t> | |||
</abstract> | </abstract> | |||
</front> | <boilerplate> | |||
<section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
<middle> | "exclude" pn="section-boilerplate.1"> | |||
<section title='Introduction'> | <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | |||
<t>The Data Channel Establishment Protocol (DCEP) is designed to provide, in the | > | |||
WebRTC data channel context <xref target='RFCYYYY'/>, | <t indent="0" pn="section-boilerplate.1-1"> | |||
This is an Internet Standards Track document. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-2"> | ||||
This document is a product of the Internet Engineering Task Force | ||||
(IETF). It represents the consensus of the IETF community. It has | ||||
received public review and has been approved for publication by | ||||
the Internet Engineering Steering Group (IESG). Further | ||||
information on Internet Standards is available in Section 2 of | ||||
RFC 7841. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-3"> | ||||
Information about the current status of this document, any | ||||
errata, and how to provide feedback on it may be obtained at | ||||
<eref target="https://www.rfc-editor.org/info/rfc8832" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t indent="0" pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2021 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
Introduction</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | ||||
ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-conventions">C | ||||
onventions</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref der | ||||
ivedContent="3" format="counter" sectionFormat="of" target="section-3"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-terminology">T | ||||
erminology</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4"> | ||||
<t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-protocol-overview">Protocol Overvi | ||||
ew</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-message-formats">Message Formats</ | ||||
xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.5.2"> | ||||
<li pn="section-toc.1-1.5.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent= | ||||
"5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-data_channel_open-mess | ||||
age">DATA_CHANNEL_OPEN Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent= | ||||
"5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-data_channel_ack-messa | ||||
ge">DATA_CHANNEL_ACK Message</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-procedures">Procedures</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
ations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.8.2"> | ||||
<li pn="section-toc.1-1.8.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent= | ||||
"8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-sctp-payload-protocol- | ||||
ident">SCTP Payload Protocol Identifier</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent= | ||||
"8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-new-standalone-registr | ||||
y-for">New Standalone Registry for DCEP</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.8.2.2.2"> | ||||
<li pn="section-toc.1-1.8.2.2.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.2.2.1.1"><xref derived | ||||
Content="8.2.1" format="counter" sectionFormat="of" target="section-8.2.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-new-messag | ||||
e-type-registry">New Message Type Registry</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.2.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.2.2.2.1"><xref derived | ||||
Content="8.2.2" format="counter" sectionFormat="of" target="section-8.2.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-new-channe | ||||
l-type-registry">New Channel Type Registry</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.9"> | ||||
<t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-references">References</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.9.2"> | ||||
<li pn="section-toc.1-1.9.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent= | ||||
"9.1" format="counter" sectionFormat="of" target="section-9.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-normative-references"> | ||||
Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.9.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent= | ||||
"9.2" format="counter" sectionFormat="of" target="section-9.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-informative-references | ||||
">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.10"> | ||||
<t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" form | ||||
at="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent=" | ||||
" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgeme | ||||
nts</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.11"> | ||||
<t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" form | ||||
at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
resses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | ||||
<middle> | ||||
<section numbered="true" toc="include" removeInRFC="false" pn="section-1"> | ||||
<name slugifiedName="name-introduction">Introduction</name> | ||||
<t indent="0" pn="section-1-1">The Data Channel Establishment Protocol (DC | ||||
EP) is designed to provide, in the | ||||
WebRTC data channel context <xref target="RFC8831" format="default" sectionForma | ||||
t="of" derivedContent="RFC8831"/>, | ||||
a simple in-band method for opening symmetric data channels. | a simple in-band method for opening symmetric data channels. | |||
As discussed in <xref target='RFCYYYY'/>, the protocol uses | As discussed in <xref target="RFC8831" format="default" sectionFormat="of" deriv | |||
the Stream Control Transmission Protocol (SCTP) <xref target='RFC4960'/> | edContent="RFC8831"/>, the protocol uses | |||
encapsulated in the Datagram Transport Layer Security (DTLS) (described in | the Stream Control Transmission Protocol (SCTP) <xref target="RFC4960" format="d | |||
<xref target='RFC8261'/>). This allows the DCEP to benefit from the | efault" sectionFormat="of" derivedContent="RFC4960"/> | |||
encapsulated in Datagram Transport Layer Security (DTLS) (described in | ||||
<xref target="RFC8261" format="default" sectionFormat="of" derivedContent="RFC82 | ||||
61"/>). This allows DCEP to benefit from the | ||||
already standardized transport | already standardized transport | |||
and security features of SCTP and DTLS. DTLS 1.0 is defined in <xref target='RFC | and security features of SCTP and DTLS. | |||
4347'/>, and the | DTLS 1.0 is defined in <xref target="RFC4347" format="default" sectionFormat="of | |||
present latest version, DTLS 1.2, is defined in <xref target='RFC6347'/>. | " derivedContent="RFC4347"/>; the present | |||
</t> | latest version, DTLS 1.2, is defined in <xref target="RFC6347" format="default" | |||
</section> | sectionFormat="of" derivedContent="RFC6347"/>; and | |||
an upcoming version, DTLS 1.3, is defined in <xref target="I-D.ietf-tls-dtls13" | ||||
<section title='Conventions'> | format="default" sectionFormat="of" derivedContent="TLS-DTLS13"/>.</t> | |||
<t> | </section> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | <name slugifiedName="name-conventions">Conventions</name> | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | <t indent="0" pn="section-2-1"> | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOUL | ||||
D</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>N | ||||
OT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP?14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor | ||||
mat="of" derivedContent="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | when, and only when, they appear in all capitals, as shown here. | |||
</t> | </t> | |||
</section> | ||||
</section> | <section numbered="true" toc="include" removeInRFC="false" pn="section-3"> | |||
<name slugifiedName="name-terminology">Terminology</name> | ||||
<section title='Terminology'> | <t indent="0" pn="section-3-1">This document uses the following terms: | |||
<t>This document uses the following terms: | </t> | |||
<list style='hanging'> | <dl newline="false" spacing="normal" indent="3" pn="section-3-2"> | |||
<t hangText='Association:'> | <dt pn="section-3-2.1">Association:</dt> | |||
An SCTP association.</t> | <dd pn="section-3-2.2">An SCTP association.</dd> | |||
<t hangText='Stream:'> | <dt pn="section-3-2.3">Stream:</dt> | |||
<dd pn="section-3-2.4"> | ||||
A unidirectional stream of an SCTP association. It is uniquely identified | A unidirectional stream of an SCTP association. It is uniquely identified | |||
by an SCTP stream identifier (0-65534). | by an SCTP stream identifier (0-65534). | |||
Note: The SCTP stream identifier 65535 is reserved due to SCTP INIT and | Note: The SCTP stream identifier 65535 is reserved due to SCTP INIT and | |||
INIT-ACK chunks only allowing a maximum of 65535 Streams to be | INIT-ACK chunks only allowing a maximum of 65535 streams to be | |||
negotiated (0-65534).</t> | negotiated (0-65534).</dd> | |||
<t hangText='stream identifier:'> | <dt pn="section-3-2.5">Stream Identifier:</dt> | |||
The SCTP stream identifier uniquely identifying a Stream.</t> | <dd pn="section-3-2.6"> | |||
<t hangText='Data Channel:'> | The SCTP stream identifier uniquely identifying a stream.</dd> | |||
Two Streams with the same stream identifier, one in each direction, | <dt pn="section-3-2.7">Data Channel:</dt> | |||
which are managed together.</t> | <dd pn="section-3-2.8"> | |||
</list></t> | Two streams with the same stream identifier, one in each direction, | |||
</section> | which are managed together.</dd> | |||
</dl> | ||||
<section title='Protocol Overview'> | </section> | |||
<t>The Data Channel Establishment Protocol is a simple, low-overhead way | <section numbered="true" toc="include" removeInRFC="false" pn="section-4"> | |||
<name slugifiedName="name-protocol-overview">Protocol Overview</name> | ||||
<t indent="0" pn="section-4-1">The Data Channel Establishment Protocol is | ||||
a simple, low-overhead way | ||||
to establish bidirectional data channels over an SCTP association with a | to establish bidirectional data channels over an SCTP association with a | |||
consistent set of properties.</t> | consistent set of properties.</t> | |||
<t>The set of consistent properties includes: | <t indent="0" pn="section-4-2">The set of consistent properties includes: | |||
<list style='symbols'> | </t> | |||
<t>reliable or unreliable message transmission. In case of unreliable | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4-3 | |||
transmissions, the same level of unreliability is used.</t> | "> | |||
<t>in-order or out-of-order message delivery.</t> | <li pn="section-4-3.1">reliable or unreliable message transmission. In c | |||
<t>the priority of the data channel.</t> | ase of unreliable | |||
<t>an optional label for the data channel.</t> | transmissions, the same level of unreliability is used.</li> | |||
<t>an optional protocol for the data channel.</t> | <li pn="section-4-3.2">in-order or out-of-order message delivery.</li> | |||
<t>the Streams.</t> | <li pn="section-4-3.3">the priority of the data channel.</li> | |||
</list></t> | <li pn="section-4-3.4">an optional label for the data channel.</li> | |||
<t>This protocol uses a two-way handshake to open a data channel. | <li pn="section-4-3.5">an optional protocol for the data channel.</li> | |||
The handshake pairs one incoming and one outgoing Stream, both having the | <li pn="section-4-3.6">the streams.</li> | |||
</ul> | ||||
<t indent="0" pn="section-4-4">This protocol uses a two-way handshake to o | ||||
pen a data channel. | ||||
The handshake pairs one incoming and one outgoing stream, both having the | ||||
same stream identifier, into a single bidirectional data channel. | same stream identifier, into a single bidirectional data channel. | |||
The peer that initiates opening a data channel selects a Stream | The peer that initiates opening a data channel selects a stream | |||
Identifier for which the corresponding incoming and outgoing Streams | identifier for which the corresponding incoming and outgoing streams | |||
are unused and sends a DATA_CHANNEL_OPEN message on the outgoing Stream. | are unused and sends a DATA_CHANNEL_OPEN message on the outgoing stream. | |||
The peer responds with a DATA_CHANNEL_ACK message on its corresponding | The peer responds with a DATA_CHANNEL_ACK message on its corresponding | |||
outgoing Stream. Then the data channel is open. | outgoing stream. Then the data channel is open. | |||
DCEP messages are sent on the same Stream as | DCEP messages are sent on the same stream as | |||
the user messages belonging to the data channel. | the user messages belonging to the data channel. | |||
The demultiplexing is based on the SCTP payload protocol identifier (PPID), | The demultiplexing is based on the SCTP Payload Protocol Identifier (PPID), | |||
since the Data Channel Establishment Protocol uses a specific PPID.</t> | since DCEP uses a specific PPID.</t> | |||
<t>Note: The opening side MAY send user messages before the DATA_CHANNEL_ACK | <aside pn="section-4-5"> | |||
<t indent="0" pn="section-4-5.1">Note: The opening side <bcp14>MAY</bcp1 | ||||
4> send user messages before the DATA_CHANNEL_ACK | ||||
is received.</t> | is received.</t> | |||
<t>To avoid collisions where both sides try to open a data channel with | </aside> | |||
the same stream identifiers, each side MUST use Streams with either even or | <t indent="0" pn="section-4-6">To avoid collisions where both sides try to | |||
open a data channel with | ||||
the same stream identifiers, each side <bcp14>MUST</bcp14> use streams with eith | ||||
er even or | ||||
odd stream identifiers when sending a DATA_CHANNEL_OPEN message. | odd stream identifiers when sending a DATA_CHANNEL_OPEN message. | |||
When using SCTP over DTLS <xref target='RFC8261'/>, | When using SCTP over DTLS <xref target="RFC8261" format="default" sectionFormat= "of" derivedContent="RFC8261"/>, | |||
the method used to determine which side uses odd or even is based on the | the method used to determine which side uses odd or even is based on the | |||
underlying DTLS connection role: | underlying DTLS connection role: | |||
the side acting as the DTLS client MUST use Streams with even | the side acting as the DTLS client <bcp14>MUST</bcp14> use streams with even | |||
stream identifiers; the side acting as the DTLS server MUST use Streams | stream identifiers; the side acting as the DTLS server <bcp14>MUST</bcp14> use s | |||
treams | ||||
with odd stream identifiers.</t> | with odd stream identifiers.</t> | |||
<t>Note: There is no attempt to ensure uniqueness for the label; | <aside pn="section-4-7"> | |||
<t indent="0" pn="section-4-7.1">Note: There is no attempt to ensure uni | ||||
queness for the label; | ||||
if both sides open a data channel labeled "x" at the same time, there will be | if both sides open a data channel labeled "x" at the same time, there will be | |||
two data channels labeled "x" -- one on an even Stream pair, one on an odd pair. | two data channels labeled "x" -- one on an even stream pair, one on an odd pair. | |||
</t> | </t> | |||
<!--[rfced] FYI, we changed the following sentence for clarity; please check | </aside> | |||
that it still conveys the intended meaning. | <t indent="0" pn="section-4-8">The purpose of the protocol field is to eas | |||
e cross-application interoperation ("federation") | ||||
Original: | ||||
The protocol field is to ease cross-application interoperation | ||||
("federation") by identifying the user data being passed with an | ||||
IANA-registered string ('WebSocket Subprotocol Name Registry' defined | ||||
in [RFC6455]), and may be useful for homogeneous applications which | ||||
may create more than one type of Data Channel. | ||||
New: | ||||
The purpose of the protocol field is to ease cross-application | ||||
interoperation ("federation") by identifying the user data being | ||||
passed by means of an IANA-registered string from the "WebSocket | ||||
Subprotocol Name Registry" defined in [RFC6455]. The field may be | ||||
useful for homogeneous applications that may create more than one | ||||
type of data channel. | ||||
<t>The purpose of the protocol field is to ease cross-application interoperation | ||||
("federation") | ||||
by identifying the user data being passed by means of an IANA-registered string | by identifying the user data being passed by means of an IANA-registered string | |||
from the "WebSocket Subprotocol Name Registry" defined in <xref target='RFC6455' />. | from the "WebSocket Subprotocol Name Registry" defined in <xref target="RFC6455" format="default" sectionFormat="of" derivedContent="RFC6455"/>. | |||
The field may be useful for homogeneous applications that may create more than o ne | The field may be useful for homogeneous applications that may create more than o ne | |||
type of data channel. | type of data channel. | |||
Please note that there is no attempt to ensure uniqueness for the protocol | Note that there is no attempt to ensure uniqueness for the protocol | |||
field.</t> | field.</t> | |||
</section> | </section> | |||
<section anchor="msg_format" numbered="true" toc="include" removeInRFC="fals | ||||
<section title='Message Formats' | e" pn="section-5"> | |||
anchor='msg_format'> | <name slugifiedName="name-message-formats">Message Formats</name> | |||
<t>Every DCEP message starts with a one-byte | <t indent="0" pn="section-5-1">Every DCEP message starts with a one-byte | |||
field called "Message Type" that indicates the type of the message. | field called "Message Type" that indicates the type of the message. | |||
The corresponding values are managed by IANA | The corresponding values are managed by IANA | |||
(see <xref target='iana_msg_type'/>).</t> | (see <xref target="iana_msg_type" format="default" sectionFormat="of" derivedCon | |||
tent="Section 8.2.1"/>).</t> | ||||
<section title='DATA_CHANNEL_OPEN Message' | <section anchor="open_msg_format" numbered="true" toc="include" removeInRF | |||
anchor='open_msg_format'> | C="false" pn="section-5.1"> | |||
<t>This message is initially sent using the data channel on the Stream used | <name slugifiedName="name-data_channel_open-message">DATA_CHANNEL_OPEN M | |||
essage</name> | ||||
<t indent="0" pn="section-5.1-1">This message is initially sent using th | ||||
e data channel on the stream used | ||||
for user messages.</t> | for user messages.</t> | |||
<figure> | <artwork align="center" name="" type="" alt="" pn="section-5.1-2"> | |||
<artwork align='center'> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Message Type | Channel Type | Priority | | | Message Type | Channel Type | Priority | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reliability Parameter | | | Reliability Parameter | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Label Length | Protocol Length | | | Label Length | Protocol Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
\ / | \ / | |||
| Label | | | Label | | |||
/ \ | / \ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
\ / | \ / | |||
| Protocol | | | Protocol | | |||
/ \ | / \ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | <dl newline="true" spacing="normal" indent="3" pn="section-5.1-3"> | |||
</figure> | <dt pn="section-5.1-3.1">Message Type: 1 byte (unsigned integer)</dt> | |||
<t><list style='hanging'> | <dd pn="section-5.1-3.2"> | |||
<t hangText='Message Type: 1 byte (unsigned integer)'> | <t indent="0" pn="section-5.1-3.2.1"> | |||
<vspace blankLines='0'/> | ||||
This field holds the IANA-defined message type for the DATA_CHANNEL_OPEN | This field holds the IANA-defined message type for the DATA_CHANNEL_OPEN | |||
message. The value of this field is 0x03, as specified in | message. The value of this field is 0x03, as specified in | |||
<xref target='iana_msg_type'/>.</t> | <xref target="iana_msg_type" format="default" sectionFormat="of" derivedContent= | |||
<t hangText='Channel Type: 1 byte (unsigned integer)'> | "Section 8.2.1"/>.</t> | |||
<vspace blankLines='0'/> | </dd> | |||
<dt pn="section-5.1-3.3">Channel Type: 1 byte (unsigned integer)</dt> | ||||
<dd pn="section-5.1-3.4"> | ||||
<t indent="0" pn="section-5.1-3.4.1"> | ||||
This field specifies the type of data channel to be opened. The | This field specifies the type of data channel to be opened. The | |||
values are managed by IANA (see <xref target='iana_channel_type'/>): | values are managed by IANA (see <xref target="iana_channel_type" format="default | |||
<list style='hanging'> | " sectionFormat="of" derivedContent="Section 8.2.2"/>): | |||
<t hangText='DATA_CHANNEL_RELIABLE (0x00):'> | </t> | |||
The data channel provides a reliable in-order bidirectional communication.</t> | <dl newline="false" spacing="normal" indent="3" pn="section-5.1-3.4. | |||
<t hangText='DATA_CHANNEL_RELIABLE_UNORDERED (0x80):'> | 2"> | |||
The data channel provides a reliable unordered bidirectional communication.</t> | <dt pn="section-5.1-3.4.2.1">DATA_CHANNEL_RELIABLE (0x00):</dt> | |||
<dd pn="section-5.1-3.4.2.2"> | ||||
<!--[rfced] The rest of this document refers to "partial reliable" | The data channel provides a reliable in-order bidirectional communication.</dd> | |||
communication, but the following sentence uses "partially | <dt pn="section-5.1-3.4.2.3">DATA_CHANNEL_RELIABLE_UNORDERED (0x80 | |||
reliable". Please let us know which wording, if any, should be changed. | ):</dt> | |||
<dd pn="section-5.1-3.4.2.4"> | ||||
ORIGINAL: | The data channel provides a reliable unordered bidirectional communication.</dd> | |||
The Data Channel provides a partially reliable in-order bidirectional | <dt pn="section-5.1-3.4.2.5">DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT | |||
communication. | (0x01):</dt> | |||
<t hangText='DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT (0x01):'> | <dd pn="section-5.1-3.4.2.6"> | |||
The data channel provides a partially reliable in-order bidirectional | The data channel provides a partially reliable in-order bidirectional | |||
communication. User messages will not be retransmitted more times | communication. User messages will not be retransmitted more times | |||
than specified in the Reliability Parameter.</t> | than specified in the Reliability Parameter.</dd> | |||
<t hangText='DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_UNORDERED (0x81):'> | <dt pn="section-5.1-3.4.2.7">DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_ | |||
The data channel provides a partial reliable unordered bidirectional | UNORDERED (0x81):</dt> | |||
<dd pn="section-5.1-3.4.2.8"> | ||||
The data channel provides a partially reliable unordered bidirectional | ||||
communication. User messages will not be retransmitted more times | communication. User messages will not be retransmitted more times | |||
than specified in the Reliability Parameter.</t> | than specified in the Reliability Parameter.</dd> | |||
<t hangText='DATA_CHANNEL_PARTIAL_RELIABLE_TIMED (0x02):'> | <dt pn="section-5.1-3.4.2.9">DATA_CHANNEL_PARTIAL_RELIABLE_TIMED ( | |||
The data channel provides a partial reliable in-order bidirectional | 0x02):</dt> | |||
<dd pn="section-5.1-3.4.2.10"> | ||||
The data channel provides a partially reliable in-order bidirectional | ||||
communication. User messages might not be transmitted or | communication. User messages might not be transmitted or | |||
retransmitted after a specified lifetime given in milliseconds in the | retransmitted after a specified lifetime given in milliseconds in the | |||
Reliability Parameter. This lifetime starts when providing the user | Reliability Parameter. This lifetime starts when providing the user | |||
message to the protocol stack.</t> | message to the protocol stack.</dd> | |||
<t hangText='DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_UNORDERED (0x82):'> | <dt pn="section-5.1-3.4.2.11">DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_ | |||
The data channel provides a partial reliable unordered bidirectional | UNORDERED (0x82):</dt> | |||
<dd pn="section-5.1-3.4.2.12"> | ||||
The data channel provides a partially reliable unordered bidirectional | ||||
communication. User messages might not be transmitted or | communication. User messages might not be transmitted or | |||
retransmitted after a specified lifetime given in milliseconds in the | retransmitted after a specified lifetime given in milliseconds in the | |||
Reliability Parameter. This lifetime starts when providing the user | Reliability Parameter. This lifetime starts when providing the user | |||
message to the protocol stack.</t> | message to the protocol stack.</dd> | |||
</list></t> | </dl> | |||
<t hangText='Priority: 2 bytes (unsigned integer)'> | </dd> | |||
<vspace blankLines='0'/> | <dt pn="section-5.1-3.5">Priority: 2 bytes (unsigned integer)</dt> | |||
<dd pn="section-5.1-3.6"> | ||||
<t indent="0" pn="section-5.1-3.6.1"> | ||||
The priority of the data channel, as described in | The priority of the data channel, as described in | |||
<xref target='RFCYYYY'/>.</t> | <xref target="RFC8831" format="default" sectionFormat="of" derivedContent="RFC88 | |||
<t hangText='Reliability Parameter: 4 bytes (unsigned integer)'> | 31"/>.</t> | |||
<vspace blankLines='0'/> | </dd> | |||
For reliable data channels, this field MUST be set to 0 on the sending side | <dt pn="section-5.1-3.7">Reliability Parameter: 4 bytes (unsigned inte | |||
and MUST be ignored on the receiving side. | ger)</dt> | |||
If a partial reliable data channel with a limited number of retransmissions is | <dd pn="section-5.1-3.8"> | |||
used, this field specifies the number of retransmissions. If a partial | <t indent="0" pn="section-5.1-3.8.1"> | |||
For reliable data channels, this field <bcp14>MUST</bcp14> be set to 0 on the se | ||||
nding side | ||||
and <bcp14>MUST</bcp14> be ignored on the receiving side. | ||||
If a partially reliable data channel with a limited number of retransmissions is | ||||
used, this field specifies the number of retransmissions. If a partially | ||||
reliable data channel with a limited lifetime is used, this field specifies | reliable data channel with a limited lifetime is used, this field specifies | |||
the maximum lifetime in milliseconds. The following table summarizes this:</t> | the maximum lifetime in milliseconds. The following table summarizes this:</t> | |||
</list></t> | </dd> | |||
<texttable> | </dl> | |||
<ttcol align='left'>Channel Type</ttcol> | <table align="center" pn="table-1"> | |||
<ttcol align='center'>Reliability Parameter</ttcol> | <thead> | |||
<c>DATA_CHANNEL_RELIABLE</c> <c>Ignored</c> | <tr> | |||
<c>DATA_CHANNEL_RELIABLE_UNORDERED</c> <c>Ignored</c> | <th align="left" colspan="1" rowspan="1">Channel Type</th> | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT</c> <c>Number of RTX</c> | <th align="center" colspan="1" rowspan="1">Reliability Parameter</ | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_UNORDERED</c><c>Number of RTX</c> | th> | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_TIMED</c> <c>Lifetime in ms</c> | </tr> | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_UNORDERED</c> <c>Lifetime in ms</c> | </thead> | |||
</texttable> | <tbody> | |||
<t><list style='hanging'> | <tr> | |||
<t hangText='Label Length: 2 bytes (unsigned integer)'> | <td align="left" colspan="1" rowspan="1">DATA_CHANNEL_RELIABLE</td | |||
<vspace blankLines='0'/> | > | |||
<td align="center" colspan="1" rowspan="1">Ignored</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_RELIABLE_UNO | ||||
RDERED</td> | ||||
<td align="center" colspan="1" rowspan="1">Ignored</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RELI | ||||
ABLE_REXMIT</td> | ||||
<td align="center" colspan="1" rowspan="1">Number of RTX</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RELI | ||||
ABLE_REXMIT_UNORDERED</td> | ||||
<td align="center" colspan="1" rowspan="1">Number of RTX</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RELI | ||||
ABLE_TIMED</td> | ||||
<td align="center" colspan="1" rowspan="1">Lifetime in ms</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RELI | ||||
ABLE_TIMED_UNORDERED</td> | ||||
<td align="center" colspan="1" rowspan="1">Lifetime in ms</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<dl newline="true" spacing="normal" indent="3" pn="section-5.1-5"> | ||||
<dt pn="section-5.1-5.1">Label Length: 2 bytes (unsigned integer)</dt> | ||||
<dd pn="section-5.1-5.2"> | ||||
<t indent="0" pn="section-5.1-5.2.1"> | ||||
The length of the label field in bytes.</t> | The length of the label field in bytes.</t> | |||
<t hangText='Protocol Length: 2 bytes (unsigned integer)'> | </dd> | |||
<vspace blankLines='0'/> | <dt pn="section-5.1-5.3">Protocol Length: 2 bytes (unsigned integer)</ | |||
dt> | ||||
<dd pn="section-5.1-5.4"> | ||||
<t indent="0" pn="section-5.1-5.4.1"> | ||||
The length of the protocol field in bytes.</t> | The length of the protocol field in bytes.</t> | |||
<t hangText='Label: Variable Length (sequence of characters)'> | </dd> | |||
<vspace blankLines='0'/> | <dt pn="section-5.1-5.5">Label: Variable Length (sequence of character | |||
s)</dt> | ||||
<dd pn="section-5.1-5.6"> | ||||
<t indent="0" pn="section-5.1-5.6.1"> | ||||
The name of the data channel as a UTF-8-encoded string, as specified in | The name of the data channel as a UTF-8-encoded string, as specified in | |||
<xref target='RFC3629'/>. This may be an empty string.</t> | <xref target="RFC3629" format="default" sectionFormat="of" derivedContent="RFC36 | |||
<t hangText='Protocol: Variable Length (sequence of characters)'> | 29"/>. This may be an empty string.</t> | |||
<vspace blankLines='0'/> | </dd> | |||
<dt pn="section-5.1-5.7">Protocol: Variable Length (sequence of charac | ||||
ters)</dt> | ||||
<dd pn="section-5.1-5.8"> | ||||
<t indent="0" pn="section-5.1-5.8.1"> | ||||
If this is an empty string, the protocol is unspecified. | If this is an empty string, the protocol is unspecified. | |||
If it is a non-empty string, it specifies a protocol registered in the | If it is a non-empty string, it specifies a protocol registered in the | |||
"WebSocket Subprotocol Name Registry" created in | "WebSocket Subprotocol Name Registry" created in | |||
<xref target='RFC6455'/>. This string is UTF-8 encoded, as specified in | <xref target="RFC6455" format="default" sectionFormat="of" derivedContent="RFC64 | |||
<xref target='RFC3629'/>.</t> | 55"/>. This string is UTF-8 encoded, as specified in | |||
</list></t> | <xref target="RFC3629" format="default" sectionFormat="of" derivedContent="RFC36 | |||
</section> | 29"/>.</t> | |||
</dd> | ||||
<section title='DATA_CHANNEL_ACK Message'> | </dl> | |||
<t>This message is sent in response to a | </section> | |||
DATA_CHANNEL_OPEN_RESPONSE message. It is sent on the Stream used for user | <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2 | |||
"> | ||||
<name slugifiedName="name-data_channel_ack-message">DATA_CHANNEL_ACK Mes | ||||
sage</name> | ||||
<t indent="0" pn="section-5.2-1">This message is sent in response to a | ||||
DATA_CHANNEL_OPEN_RESPONSE message. It is sent on the stream used for user | ||||
messages using the data channel. | messages using the data channel. | |||
Reception of this message tells the opener that the data channel setup | Reception of this message tells the opener that the data channel setup | |||
handshake is complete.</t> | handshake is complete.</t> | |||
<figure> | <artwork align="center" name="" type="" alt="" pn="section-5.2-2"> | |||
<artwork align='center'> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Message Type | | | Message Type | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | <dl newline="true" spacing="normal" indent="3" pn="section-5.2-3"> | |||
</figure> | <dt pn="section-5.2-3.1">Message Type: 1 byte (unsigned integer)</dt> | |||
<t><list style='hanging'> | <dd pn="section-5.2-3.2"> | |||
<t hangText='Message Type: 1 byte (unsigned integer)'> | <t indent="0" pn="section-5.2-3.2.1"> | |||
<vspace blankLines='0'/> | ||||
This field holds the IANA-defined message type for the DATA_CHANNEL_ACK | This field holds the IANA-defined message type for the DATA_CHANNEL_ACK | |||
message. The value of this field is 0x02, as specified in | message. The value of this field is 0x02, as specified in | |||
<xref target='iana_msg_type'/>.</t> | <xref target="iana_msg_type" format="default" sectionFormat="of" derivedContent= | |||
</list></t> | "Section 8.2.1"/>.</t> | |||
</section> | </dd> | |||
</section> | </dl> | |||
</section> | ||||
<section title='Procedures'> | </section> | |||
<t>All DCEP messages MUST be sent using ordered delivery and reliable | <section numbered="true" toc="include" removeInRFC="false" pn="section-6"> | |||
transmission. They MUST be sent on the same outgoing Stream as the user messages | <name slugifiedName="name-procedures">Procedures</name> | |||
<t indent="0" pn="section-6-1">All DCEP messages <bcp14>MUST</bcp14> be se | ||||
nt using ordered delivery and reliable | ||||
transmission. They <bcp14>MUST</bcp14> be sent on the same outgoing stream as th | ||||
e user messages | ||||
belonging to the corresponding data channel. | belonging to the corresponding data channel. | |||
Multiplexing and demultiplexing is done by using the SCTP payload protocol | Multiplexing and demultiplexing is done by using the SCTP PPID. | |||
identifier (PPID). | Therefore, a DCEP message <bcp14>MUST</bcp14> be sent with the | |||
Therefore, a DCEP message MUST be sent with the | ||||
assigned PPID for the Data Channel Establishment Protocol | assigned PPID for the Data Channel Establishment Protocol | |||
(see <xref target='iana_ppid'/>). | (see <xref target="iana_ppid" format="default" sectionFormat="of" derivedContent | |||
Other messages MUST NOT be sent using this PPID.</t> | ="Section 8.1"/>). | |||
<t>The peer that initiates opening a data channel selects a stream identifier | Other messages <bcp14>MUST NOT</bcp14> be sent using this PPID.</t> | |||
for which the corresponding incoming and outgoing Streams are unused. | <t indent="0" pn="section-6-2">The peer that initiates opening a data chan | |||
If the side is the DTLS client, it MUST choose an even stream identifier; | nel selects a stream identifier | |||
if the side is the DTLS server, it MUST choose an odd one. The initiating peer | for which the corresponding incoming and outgoing streams are unused. | |||
If the side is acting as the DTLS client, it <bcp14>MUST</bcp14> choose an even | ||||
stream identifier; | ||||
if the side is acting as the DTLS server, it <bcp14>MUST</bcp14> choose an odd o | ||||
ne. The initiating peer | ||||
fills in the parameters of the DATA_CHANNEL_OPEN message and sends it on | fills in the parameters of the DATA_CHANNEL_OPEN message and sends it on | |||
the chosen Stream.</t> | the chosen stream.</t> | |||
<t>If a DATA_CHANNEL_OPEN message is received on an unused Stream, | <t indent="0" pn="section-6-3">If a DATA_CHANNEL_OPEN message is received | |||
on an unused stream, | ||||
the stream identifier corresponds to the role of the peer, and | the stream identifier corresponds to the role of the peer, and | |||
all parameters in the DATA_CHANNEL_OPEN message are valid, | all parameters in the DATA_CHANNEL_OPEN message are valid, | |||
then a corresponding DATA_CHANNEL_ACK message is sent on the Stream with the | then a corresponding DATA_CHANNEL_ACK message is sent on the stream with the | |||
same stream identifier as the one the DATA_CHANNEL_OPEN message was | same stream identifier as the one the DATA_CHANNEL_OPEN message was | |||
received on.</t> | received on.</t> | |||
<t>If the DATA_CHANNEL_OPEN message doesn't satisfy the conditions above, the | <t indent="0" pn="section-6-4">If the DATA_CHANNEL_OPEN message doesn't sa | |||
receiver MUST close the corresponding data channel using the procedure | tisfy the conditions above, the | |||
described in <xref target='RFCYYYY'/> and MUST NOT send a DATA_CHANNEL_ACK | receiver <bcp14>MUST</bcp14> close the corresponding data channel using the proc | |||
edure | ||||
described in <xref target="RFC8831" format="default" sectionFormat="of" derivedC | ||||
ontent="RFC8831"/> and <bcp14>MUST NOT</bcp14> send a DATA_CHANNEL_ACK | ||||
message in response to the received message. This might occur if, for example, | message in response to the received message. This might occur if, for example, | |||
a DATA_CHANNEL_OPEN message is received on an already used Stream, there are | a DATA_CHANNEL_OPEN message is received on an already used stream, there are | |||
problems with parameters within the DATA_CHANNEL_OPEN | problems with parameters within the DATA_CHANNEL_OPEN | |||
message, the odd/even rule is violated, or the DATA_CHANNEL_OPEN message itself | message, the odd/even rule is violated, or the DATA_CHANNEL_OPEN message itself | |||
is not well formed. Therefore, receiving an SCTP Stream-reset request for a Stre am on which | is not well formed. Therefore, receiving an SCTP stream-reset request for a stre am on which | |||
no DATA_CHANNEL_ACK message has been received indicates to the sender of the | no DATA_CHANNEL_ACK message has been received indicates to the sender of the | |||
corresponding DATA_CHANNEL_OPEN message the failure of the data channel | corresponding DATA_CHANNEL_OPEN message the failure of the data channel | |||
setup procedure. After also successfully resetting the corresponding outgoing | setup procedure. After also successfully resetting the corresponding outgoing | |||
Stream, which concludes the data channel closing initiated by the peer, | stream, which concludes the data channel closing initiated by the peer, | |||
a new DATA_CHANNEL_OPEN message can be sent on the Stream.</t> | a new DATA_CHANNEL_OPEN message can be sent on the stream.</t> | |||
<t indent="0" pn="section-6-5">After the DATA_CHANNEL_OPEN message has bee | ||||
<t>After the DATA_CHANNEL_OPEN message has been sent, the sender of that message | n sent, the sender of that message | |||
MAY start sending messages containing user data without | <bcp14>MAY</bcp14> start sending messages containing user data without | |||
waiting for the reception of the corresponding DATA_CHANNEL_ACK message. | waiting for the reception of the corresponding DATA_CHANNEL_ACK message. | |||
However, before the DATA_CHANNEL_ACK message or any other message has been | However, before the DATA_CHANNEL_ACK message or any other message has been | |||
received on a data channel, all other messages containing user data and | received on a data channel, all other messages containing user data and | |||
belonging to this data channel MUST be sent ordered, no matter whether the | belonging to this data channel <bcp14>MUST</bcp14> be sent ordered, no matter | |||
data channel is ordered or not. | whether the data channel is ordered or not. | |||
After the DATA_CHANNEL_ACK or any other message has been received on the | After the DATA_CHANNEL_ACK or any other message has been received on the | |||
data channel, messages containing user data MUST be sent ordered on ordered | data channel, messages containing user data <bcp14>MUST</bcp14> be sent ordered | |||
data channels and MUST be sent unordered on unordered data channels. | on ordered | |||
Therefore, receiving a message containing user data on an unused Stream | data channels and <bcp14>MUST</bcp14> be sent unordered on unordered data channe | |||
indicates an error. In that case, the corresponding data channel MUST be closed, | ls. | |||
as described | Therefore, receiving a message containing user data on an unused stream | |||
in <xref target='RFCYYYY'/>.</t> | indicates an error. In that case, the corresponding data channel <bcp14>MUST</bc | |||
</section> | p14> be closed, as described | |||
in <xref target="RFC8831" format="default" sectionFormat="of" derivedContent="RF | ||||
<section title='Security Considerations' | C8831"/>.</t> | |||
anchor='sec-security'> | </section> | |||
<t>The DATA_CHANNEL_OPEN message contains two variable-length fields: | <section anchor="sec-security" numbered="true" toc="include" removeInRFC="fa | |||
lse" pn="section-7"> | ||||
<name slugifiedName="name-security-considerations">Security Considerations | ||||
</name> | ||||
<t indent="0" pn="section-7-1">The DATA_CHANNEL_OPEN message contains two | ||||
variable-length fields: | ||||
the protocol and the label. A receiver must be prepared to receive | the protocol and the label. A receiver must be prepared to receive | |||
DATA_CHANNEL_OPEN messages where these field have the maximum length of | DATA_CHANNEL_OPEN messages where these fields have the maximum length of | |||
65535 bytes. Error cases such as using inconsistent lengths of fields, | 65535 bytes. Error cases such as using inconsistent lengths of fields, | |||
using unknown parameter values, or violating the odd/even rule must also be hand led | using unknown parameter values, or violating the odd/even rule must also be hand led | |||
by closing the corresponding data channel. An end point must also be prepared | by closing the corresponding data channel. An end point must also be prepared | |||
for the peer to open the maximum number of data channels.</t> | for the peer to open the maximum number of data channels.</t> | |||
<t>This protocol does not provide privacy, integrity, or authentication. | <t indent="0" pn="section-7-2">This protocol does not provide privacy, int egrity, or authentication. | |||
It needs to be used as part of a protocol suite that contains all these things. | It needs to be used as part of a protocol suite that contains all these things. | |||
Such a protocol suite is specified in | Such a protocol suite is specified in | |||
<xref target='RFC8261'/>.</t> | <xref target="RFC8261" format="default" sectionFormat="of" derivedContent="RFC82 | |||
<t>For general considerations, see <xref target='SECURITY'/> and | 61"/>.</t> | |||
<xref target='SECURITY-ARCH'/>.</t> | <t indent="0" pn="section-7-3">For general considerations, see <xref targe | |||
</section> | t="RFC8826" format="default" sectionFormat="of" derivedContent="RFC8826"/> and | |||
<xref target="RFC8827" format="default" sectionFormat="of" derivedContent="RFC88 | ||||
<section title='IANA Considerations'> | 27"/>.</t> | |||
<t>IANA is asked to update the reference of an already existing SCTP PPID | </section> | |||
assignment (<xref target='iana_ppid'/>) and create a new standalone registry | <section numbered="true" toc="include" removeInRFC="false" pn="section-8"> | |||
with its own URL for the DCEP (<xref target='iana_dcep_registry'/>) containing | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
two new registration tables (Sections <xref format="counter" target='iana_msg_ty | <t indent="0" pn="section-8-1">IANA has updated the reference of an alread | |||
pe'/> and | y existing SCTP PPID | |||
<xref format="counter" target='iana_channel_type'/>).</t> | assignment (<xref target="iana_ppid" format="default" sectionFormat="of" derived | |||
Content="Section 8.1"/>) and created a new | ||||
standalone registry with its own URL for DCEP (<xref target="iana_dcep_registry" | ||||
format="default" sectionFormat="of" derivedContent="Section 8.2"/>) containing | ||||
two new | ||||
registration tables (Sections <xref format="counter" target="iana_msg_type" sect | ||||
ionFormat="of" derivedContent="8.2.1"/> | ||||
and <xref format="counter" target="iana_channel_type" sectionFormat="of" derived | ||||
Content="8.2.2"/>).</t> | ||||
<section anchor="iana_ppid" numbered="true" toc="include" removeInRFC="fal | ||||
se" pn="section-8.1"> | ||||
<name slugifiedName="name-sctp-payload-protocol-ident">SCTP Payload Prot | ||||
ocol Identifier</name> | ||||
<t indent="0" pn="section-8.1-1">This document uses an SCTP Payload Prot | ||||
ocol | ||||
Identifier (PPID) previously registered as "WebRTC Control". | ||||
<section title='SCTP Payload Protocol Identifier' | <xref target="RFC4960" format="default" sectionFormat="of" derivedContent="RFC49 | |||
anchor='iana_ppid'> | 60"/> created the | |||
<t>This document uses one already registered SCTP Payload Protocol | "SCTP Payload Protocol Identifiers" registry, in which this identifier was assig | |||
Identifier (PPID) named "WebRTC Control". | ned. | |||
<xref target='RFC4960'/> creates the registry | IANA has updated the PPID name from "WebRTC Control" to "WebRTC DCEP" and has | |||
"SCTP Payload Protocol Identifiers", from which this identifier was assigned. | updated the reference to point to this document. The corresponding date has been | |||
IANA is requested to update name of the registry and update the reference of | ||||
this assignment to point to this document. The corresponding date should be | ||||
kept.</t> | kept.</t> | |||
<t>Therefore, this assignment should be updated to read:</t> | <t indent="0" pn="section-8.1-2">Therefore, this assignment now appears | |||
<texttable> | as follows:</t> | |||
<ttcol align='left'>Value</ttcol> | <table align="center" pn="table-2"> | |||
<ttcol align='left'>SCTP PPID</ttcol> | <thead> | |||
<ttcol align='left'>Reference</ttcol> | <tr> | |||
<ttcol align='left'>Date</ttcol> | <th align="left" colspan="1" rowspan="1">Value</th> | |||
<c>WebRTC DCEP</c> <c>50</c> <c>[RFCXXXX]</c> <c>2013-09-20</c> | <th align="left" colspan="1" rowspan="1">SCTP PPID</th> | |||
</texttable> | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
</section> | <th align="left" colspan="1" rowspan="1">Date</th> | |||
</tr> | ||||
<section title='New Standalone Registry for the DCEP' | </thead> | |||
anchor='iana_dcep_registry'> | <tbody> | |||
<t>IANA is requested to create a new standalone registry (a.k.a. webpage) with | <tr> | |||
its own URL for the Data Channel Establishment Protocol (DCEP). | <td align="left" colspan="1" rowspan="1">WebRTC DCEP</td> | |||
The title should be "Data Channel Establishment Protocol (DCEP) Parameters". | <td align="left" colspan="1" rowspan="1">50</td> | |||
It will contain the two tables provided in Sections <xref format="counter" targe | <td align="left" colspan="1" rowspan="1">RFC 8832</td> | |||
t='iana_msg_type'/> | <td align="left" colspan="1" rowspan="1">2013-09-20</td> | |||
and <xref format="counter" target='iana_channel_type'/>.</t> | </tr> | |||
</tbody> | ||||
<section title='New Message Type Registry' | </table> | |||
anchor ='iana_msg_type'> | </section> | |||
<t>IANA is requested to create a new registration table, "Message Type Registry" | <section anchor="iana_dcep_registry" numbered="true" toc="include" removeI | |||
, | nRFC="false" pn="section-8.2"> | |||
for the Data Channel Establishment Protocol (DCEP) to manage the one-byte | <name slugifiedName="name-new-standalone-registry-for">New Standalone Re | |||
"Message Type" field in DCEP messages (see <xref target='msg_format'/>). | gistry for DCEP</name> | |||
This registration table should be part of the registry described in | <t indent="0" pn="section-8.2-1">IANA has created the "Data Channel Esta | |||
<xref target='iana_dcep_registry'/>.</t> | blishment Protocol (DCEP) | |||
<!-- [rfced] The following RFC has been obsoleted. We have updated this | Parameters" registry. It contains the two tables provided in Sections | |||
reference as follows. Please let us know any objections. | <xref format="counter" target="iana_msg_type" sectionFormat="of" derivedC | |||
ontent="8.2.1"/> | ||||
Original: | and <xref format="counter" target="iana_channel_type" sectionFormat="of" derived | |||
The assignment of new message types is done through an RFC Required | Content="8.2.2"/>.</t> | |||
action, as defined in [RFC5226]. | <section anchor="iana_msg_type" numbered="true" toc="include" removeInRF | |||
C="false" pn="section-8.2.1"> | ||||
New: | <name slugifiedName="name-new-message-type-registry">New Message Type | |||
The assignment of new message types is done through an RFC Required | Registry</name> | |||
action, as defined in [RFC8126]. | <t indent="0" pn="section-8.2.1-1">IANA has created the "Message Types | |||
<t>The assignment of new message types is done through an RFC Required action, | " registry for DCEP to manage | |||
as defined in <xref target='RFC8126'/>. | the one-byte "Message Type" field in DCEP messages (see <xref target="m | |||
Documentation of the new message type MUST contain the following information: | sg_format" format="default" sectionFormat="of" derivedContent="Section 5"/>). Th | |||
<list style="numbers"> | is registration table | |||
<t>A name for the new message type;</t> | is a subregistry of the registry described in <xref target="iana_dcep_r | |||
<t>A detailed procedural description of the use of messages with the new type | egistry" format="default" sectionFormat="of" derivedContent="Section 8.2"/>.</t> | |||
within the operation of the Data Channel Establishment Protocol.</t> | <t indent="0" pn="section-8.2.1-2">The assignment of new message types | |||
</list></t> | is done through an RFC Required action, | |||
<t>Initially, the following values need to be registered:</t> | as defined in <xref target="RFC8126" format="default" sectionFormat="of" derived | |||
<texttable> | Content="RFC8126"/>. | |||
<ttcol align='left'>Name</ttcol> | Documentation of new message types <bcp14>MUST</bcp14> contain the following inf | |||
<ttcol align='left'>Type</ttcol> | ormation: | |||
<ttcol align='left'>Reference</ttcol> | </t> | |||
<c>Reserved</c> <c>0x00 </c> <c>[RFCXXXX]</c> | <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section- | |||
<c>Reserved</c> <c>0x01 </c> <c>[RFCXXXX]</c> | 8.2.1-3"> | |||
<c>DATA_CHANNEL_ACK</c> <c>0x02 </c> <c>[RFCXXXX]</c> | <li pn="section-8.2.1-3.1" derivedCounter="1.">A name for the new me | |||
<c>DATA_CHANNEL_OPEN</c> <c>0x03 </c> <c>[RFCXXXX]</c> | ssage type.</li> | |||
<c>Unassigned</c> <c>0x04-0xfe</c> <c> </c> | <li pn="section-8.2.1-3.2" derivedCounter="2.">A detailed procedural | |||
<c>Reserved</c> <c>0xff </c> <c>[RFCXXXX]</c> | description of how each message type is used with | |||
</texttable> | within DCEP.</li> | |||
</ol> | ||||
<!--[rfced] In the following sentence, does "the document" refer to this | <t indent="0" pn="section-8.2.1-4">The following are the initial regis | |||
document? | trations:</t> | |||
<table align="center" pn="table-3"> | ||||
Original: | <thead> | |||
Please note that the values 0x00 and 0x01 are reserved to avoid | <tr> | |||
interoperability problems, since they have been used in earlier | <th align="left" colspan="1" rowspan="1">Name</th> | |||
versions of the document. | <th align="left" colspan="1" rowspan="1">Type</th> | |||
<th align="left" colspan="1" rowspan="1">Reference</th> | ||||
Perhaps: | </tr> | |||
Please note that the values 0x00 and 0x01 are reserved to avoid | </thead> | |||
interoperability problems, since they have been used in draft | <tbody> | |||
versions of this document. | <tr> | |||
<t>Please note that the values 0x00 and 0x01 are reserved to avoid | <td align="left" colspan="1" rowspan="1">Reserved</td> | |||
interoperability problems, since they have been used in earlier versions | <td align="left" colspan="1" rowspan="1">0x00 </td> | |||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">0x01 </td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_ACK</td> | ||||
<td align="left" colspan="1" rowspan="1">0x02 </td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_OPEN</td> | ||||
<td align="left" colspan="1" rowspan="1">0x03 </td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">Unassigned</td> | ||||
<td align="left" colspan="1" rowspan="1">0x04-0xfe</td> | ||||
<td align="left" colspan="1" rowspan="1"> </td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">0xff </td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t indent="0" pn="section-8.2.1-6">Note that values 0x00 and 0x01 are | ||||
reserved to avoid | ||||
interoperability problems, since they have been used in draft versions | ||||
of the document. | of the document. | |||
The value 0xff has been reserved for future extensibility. | The value 0xff has been reserved for future extensibility. | |||
The range of possible values is from 0x00 to 0xff.</t> | The range of possible values is from 0x00 to 0xff.</t> | |||
</section> | </section> | |||
<section anchor="iana_channel_type" numbered="true" toc="include" remove | ||||
<section title='New Channel Type Registry' | InRFC="false" pn="section-8.2.2"> | |||
anchor='iana_channel_type'> | <name slugifiedName="name-new-channel-type-registry">New Channel Type | |||
<t>IANA is requested to create a new registration table, "Channel Type Registry" | Registry</name> | |||
, | <t indent="0" pn="section-8.2.2-1">IANA has created the "Channel Types | |||
for the Data Channel Establishment Protocol to manage the one-byte | " registry | |||
for DCEP to manage the one-byte | ||||
"Channel Type" field in DATA_CHANNEL_OPEN messages | "Channel Type" field in DATA_CHANNEL_OPEN messages | |||
(see <xref target='open_msg_format'/>). | (see <xref target="open_msg_format" format="default" sectionFormat="of" derivedC | |||
This registration table should be part of the registry described in | ontent="Section 5.1"/>). | |||
<xref target='iana_dcep_registry'/>.</t> | This registration table is a subregistry within the registry described in | |||
<t>The assignment of new message types is done through an RFC Required action, | <xref target="iana_dcep_registry" format="default" sectionFormat="of" derivedCon | |||
as defined in <xref target='RFC8126'/>. | tent="Section 8.2"/>.</t> | |||
Documentation of the new Channel Type MUST contain the following information: | <t indent="0" pn="section-8.2.2-2">The assignment of new message types | |||
<list style="numbers"> | is done through an RFC Required action, | |||
<t>A name for the new Channel Type;</t> | as defined in <xref target="RFC8126" format="default" sectionFormat="of" derived | |||
<t>A detailed procedural description of the user message handling for | Content="RFC8126"/>. | |||
data channels using this new Channel Type.</t> | Documentation of new Channel Types <bcp14>MUST</bcp14> contain the following inf | |||
</list> | ormation: | |||
Please note that if new Channel Types support ordered and unordered message | </t> | |||
delivery, the high-order bit MUST be used to indicate whether the message | <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section- | |||
delivery is unordered or not.</t> | 8.2.2-3"> | |||
<t>Initially, the following values need to be registered:</t> | <li pn="section-8.2.2-3.1" derivedCounter="1.">A name for the new Ch | |||
<texttable> | annel Type.</li> | |||
<ttcol align='left'>Name</ttcol> | <li pn="section-8.2.2-3.2" derivedCounter="2.">A detailed procedural | |||
<ttcol align='left'>Type</ttcol> | description of the user message handling for | |||
<ttcol align='left'>Reference</ttcol> | data channels using this new Channel Type.</li> | |||
<c>DATA_CHANNEL_RELIABLE</c> <c>0x00</c> <c>[RFCXXXX]</ | </ol> | |||
c> | <t indent="0" pn="section-8.2.2-4"> | |||
<c>DATA_CHANNEL_RELIABLE_UNORDERED</c> <c>0x80</c> <c>[RFCXXXX]</ | If new Channel Types support ordered and unordered message | |||
c> | delivery, the high-order bit <bcp14>MUST</bcp14> be used to indicate whether | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT</c> <c>0x01</c> <c>[RFCXXXX]</ | or not the message delivery is unordered.</t> | |||
c> | <t indent="0" pn="section-8.2.2-5">The following are the initial regis | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_UNORDERED</c> <c>0x81</c> <c>[RFCXXXX]</ | trations:</t> | |||
c> | <table align="center" pn="table-4"> | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_TIMED</c> <c>0x02</c> <c>[RFCXXXX]</ | <thead> | |||
c> | <tr> | |||
<c>DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_UNORDERED</c> <c>0x82</c> <c>[RFCXXXX]</ | <th align="left" colspan="1" rowspan="1">Name</th> | |||
c> | <th align="left" colspan="1" rowspan="1">Type</th> | |||
<c>Reserved</c> <c>0x7f</c> <c>[RFCXXXX]</ | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
c> | </tr> | |||
<c>Reserved</c> <c>0xff</c> <c>[RFCXXXX]</ | </thead> | |||
c> | <tbody> | |||
<c>Unassigned</c> <c>rest</c> <c> </ | <tr> | |||
c> | <td align="left" colspan="1" rowspan="1">DATA_CHANNEL_RELIABLE</ | |||
</texttable> | td> | |||
<t>Please note that the values 0x7f and 0xff have been reserved for future | <td align="left" colspan="1" rowspan="1">0x00</td> | |||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_RELIABLE_U | ||||
NORDERED</td> | ||||
<td align="left" colspan="1" rowspan="1">0x80</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RE | ||||
LIABLE_REXMIT</td> | ||||
<td align="left" colspan="1" rowspan="1">0x01</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RE | ||||
LIABLE_REXMIT_UNORDERED</td> | ||||
<td align="left" colspan="1" rowspan="1">0x81</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RE | ||||
LIABLE_TIMED</td> | ||||
<td align="left" colspan="1" rowspan="1">0x02</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">DATA_CHANNEL_PARTIAL_RE | ||||
LIABLE_TIMED_UNORDERED</td> | ||||
<td align="left" colspan="1" rowspan="1">0x82</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">0x7f</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">0xff</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8832</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">Unassigned</td> | ||||
<td align="left" colspan="1" rowspan="1">rest</td> | ||||
<td align="left" colspan="1" rowspan="1"> </td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t indent="0" pn="section-8.2.2-7">Values 0x7f and 0xff have been rese | ||||
rved for future | ||||
extensibility. | extensibility. | |||
The range of possible values is from 0x00 to 0xff.</t> | The range of possible values is from 0x00 to 0xff.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
</middle> | ||||
</middle> | <back> | |||
<displayreference target="I-D.ietf-tls-dtls13" to="TLS-DTLS13"/> | ||||
<back> | <references pn="section-9"> | |||
<references title='Normative References'> | <name slugifiedName="name-references">References</name> | |||
<?rfc include='reference.RFC.2119'?> | <references pn="section-9.1"> | |||
<?rfc include='reference.RFC.8174'?> | <name slugifiedName="name-normative-references">Normative References</na | |||
<?rfc include='reference.RFC.3629'?> | me> | |||
<?rfc include='reference.RFC.4347'?> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
<?rfc include='reference.RFC.4960'?> | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
<?rfc include='reference.RFC.8126'?> | <front> | |||
<?rfc include='reference.RFC.6347'?> | <title>Key words for use in RFCs to Indicate Requirement Levels</tit | |||
<?rfc include='reference.RFC.8261'?> | le> | |||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
<reference anchor="RFCYYYY" target="https://www.rfc-editor.org/info/rfcYYYY"> | <organization showOnFrontPage="true"/> | |||
<front> | </author> | |||
<title>WebRTC Data Channels</title> | <date year="1997" month="March"/> | |||
<author initials='R' surname='Jesup' fullname='Randell Jesup'> | <abstract> | |||
<organization/> | <t indent="0">In many standards track documents several words are | |||
</author> | used to signify the requirements in the specification. These words are often ca | |||
<author initials='S' surname='Loreto' fullname='Salvatore Loreto'> | pitalized. This document defines these words as they should be interpreted in IE | |||
<organization/> | TF documents. This document specifies an Internet Best Current Practices for th | |||
</author> | e Internet Community, and requests discussion and suggestions for improvements.< | |||
<author initials='M' surname='Tuexen' fullname='Michael Tuexen'> | /t> | |||
<organization/> | </abstract> | |||
</author> | </front> | |||
<date month='October' year='2018'/> | <seriesInfo name="BCP" value="14"/> | |||
</front> | <seriesInfo name="RFC" value="2119"/> | |||
<seriesInfo name="RFC" value="YYYY"/> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
<seriesInfo name="DOI" value="10.17487/RFCYYYY"/> | </reference> | |||
</reference> | <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | |||
174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
</references> | <front> | |||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
<references title='Informative References'> | tle> | |||
<?rfc include='reference.RFC.6455'?> | <author initials="B." surname="Leiba" fullname="B. Leiba"> | |||
<organization showOnFrontPage="true"/> | ||||
<!-- draft-ietf-rtcweb-security-10 exists --> | </author> | |||
<reference anchor='SECURITY'> | <date year="2017" month="May"/> | |||
<front> | <abstract> | |||
<title>Security Considerations for WebRTC</title> | <t indent="0">RFC 2119 specifies common key words that may be used | |||
<author initials='E' surname='Rescorla' fullname='Eric Rescorla'> | in protocol specifications. This document aims to reduce the ambiguity by cla | |||
<organization /> | rifying that only UPPERCASE usage of the key words have the defined special mea | |||
</author> | nings.</t> | |||
</abstract> | ||||
<date month='January' day='22' year='2018' /> | </front> | |||
<seriesInfo name="BCP" value="14"/> | ||||
</front> | <seriesInfo name="RFC" value="8174"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
<seriesInfo name='Work in Progress,' value='draft-ietf-rtcweb-security-10' /> | </reference> | |||
<reference anchor="RFC3629" target="https://www.rfc-editor.org/info/rfc3 | ||||
</reference> | 629" quoteTitle="true" derivedAnchor="RFC3629"> | |||
<front> | ||||
<!-- draft-ietf-rtcweb-security-arch-15 exists --> | <title>UTF-8, a transformation format of ISO 10646</title> | |||
<reference anchor='SECURITY-ARCH'> | <author initials="F." surname="Yergeau" fullname="F. Yergeau"> | |||
<front> | <organization showOnFrontPage="true"/> | |||
<title>WebRTC Security Architecture</title> | </author> | |||
<date year="2003" month="November"/> | ||||
<author initials='E' surname='Rescorla' fullname='Eric Rescorla'> | <abstract> | |||
<organization /> | <t indent="0">ISO/IEC 10646-1 defines a large character set called | |||
</author> | the Universal Character Set (UCS) which encompasses most of the world's writing | |||
systems. The originally proposed encodings of the UCS, however, were not compa | ||||
<date month='July' day='17' year='2018' /> | tible with many current applications and protocols, and this has led to the deve | |||
lopment of UTF-8, the object of this memo. UTF-8 has the characteristic of pres | ||||
</front> | erving the full US-ASCII range, providing compatibility with file systems, parse | |||
rs and other software that rely on US-ASCII values but are transparent to other | ||||
<seriesInfo name='Work in Progress,' value='draft-ietf-rtcweb-security-arch-15' | values. This memo obsoletes and replaces RFC 2279.</t> | |||
/> | </abstract> | |||
</front> | ||||
<seriesInfo name="STD" value="63"/> | ||||
<seriesInfo name="RFC" value="3629"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3629"/> | ||||
</reference> | ||||
<reference anchor="RFC4960" target="https://www.rfc-editor.org/info/rfc4 | ||||
960" quoteTitle="true" derivedAnchor="RFC4960"> | ||||
<front> | ||||
<title>Stream Control Transmission Protocol</title> | ||||
<author initials="R." surname="Stewart" fullname="R. Stewart" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="September"/> | ||||
<abstract> | ||||
<t indent="0">This document obsoletes RFC 2960 and RFC 3309. It d | ||||
escribes the Stream Control Transmission Protocol (SCTP). SCTP is designed to t | ||||
ransport Public Switched Telephone Network (PSTN) signaling messages over IP net | ||||
works, but is capable of broader applications.</t> | ||||
<t indent="0">SCTP is a reliable transport protocol operating on t | ||||
op of a connectionless packet network such as IP. It offers the following servi | ||||
ces to its users:</t> | ||||
<t indent="0">-- acknowledged error-free non-duplicated transfer | ||||
of user data,</t> | ||||
<t indent="0">-- data fragmentation to conform to discovered path | ||||
MTU size,</t> | ||||
<t indent="0">-- sequenced delivery of user messages within multi | ||||
ple streams, with an option for order-of-arrival delivery of individual user mes | ||||
sages,</t> | ||||
<t indent="0">-- optional bundling of multiple user messages into | ||||
a single SCTP packet, and</t> | ||||
<t indent="0">-- network-level fault tolerance through supporting | ||||
of multi-homing at either or both ends of an association.</t> | ||||
<t indent="0"> The design of SCTP includes appropriate congestion | ||||
avoidance behavior and resistance to flooding and masquerade attacks. [STANDARD | ||||
S-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4960"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4960"/> | ||||
</reference> | ||||
<reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8 | ||||
126" quoteTitle="true" derivedAnchor="RFC8126"> | ||||
<front> | ||||
<title>Guidelines for Writing an IANA Considerations Section in RFCs | ||||
</title> | ||||
<author initials="M." surname="Cotton" fullname="M. Cotton"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T." surname="Narten" fullname="T. Narten"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="June"/> | ||||
<abstract> | ||||
<t indent="0">Many protocols make use of points of extensibility t | ||||
hat use constants to identify various protocol parameters. To ensure that the v | ||||
alues in these fields do not have conflicting uses and to promote interoperabili | ||||
ty, their allocations are often coordinated by a central record keeper. For IET | ||||
F protocols, that role is filled by the Internet Assigned Numbers Authority (IAN | ||||
A).</t> | ||||
<t indent="0">To make assignments in a given registry prudently, g | ||||
uidance describing the conditions under which new values should be assigned, as | ||||
well as when and how modifications to existing values can be made, is needed. T | ||||
his document defines a framework for the documentation of these guidelines by sp | ||||
ecification authors, in order to assure that the provided guidance for the IANA | ||||
Considerations is clear and addresses the various issues that are likely in the | ||||
operation of a registry.</t> | ||||
<t indent="0">This is the third edition of this document; it obsol | ||||
etes RFC 5226.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="26"/> | ||||
<seriesInfo name="RFC" value="8126"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8126"/> | ||||
</reference> | ||||
<reference anchor="RFC8261" target="https://www.rfc-editor.org/info/rfc8 | ||||
261" quoteTitle="true" derivedAnchor="RFC8261"> | ||||
<front> | ||||
<title>Datagram Transport Layer Security (DTLS) Encapsulation of SCT | ||||
P Packets</title> | ||||
<author initials="M." surname="Tuexen" fullname="M. Tuexen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Stewart" fullname="R. Stewart"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Jesup" fullname="R. Jesup"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Loreto" fullname="S. Loreto"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="November"/> | ||||
<abstract> | ||||
<t indent="0">The Stream Control Transmission Protocol (SCTP) is a | ||||
transport protocol originally defined to run on top of the network protocols IP | ||||
v4 or IPv6. This document specifies how SCTP can be used on top of the Datagram | ||||
Transport Layer Security (DTLS) protocol. Using the encapsulation method descr | ||||
ibed in this document, SCTP is unaware of the protocols being used below DTLS; h | ||||
ence, explicit IP addresses cannot be used in the SCTP control chunks. As a con | ||||
sequence, the SCTP associations carried over DTLS can only be single-homed.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8261"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8261"/> | ||||
</reference> | ||||
<reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8 | ||||
831" quoteTitle="true" derivedAnchor="RFC8831"> | ||||
<front> | ||||
<title>WebRTC Data Channels</title> | ||||
<author initials="R" surname="Jesup" fullname="Randell Jesup"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8831"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8831"/> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-9.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="RFC4347" target="https://www.rfc-editor.org/info/rfc4 | ||||
347" quoteTitle="true" derivedAnchor="RFC4347"> | ||||
<front> | ||||
<title>Datagram Transport Layer Security</title> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N." surname="Modadugu" fullname="N. Modadugu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2006" month="April"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies Version 1.0 of the Datagram | ||||
Transport Layer Security (DTLS) protocol. The DTLS protocol provides communicat | ||||
ions privacy for datagram protocols. The protocol allows client/server applicat | ||||
ions to communicate in a way that is designed to prevent eavesdropping, tamperin | ||||
g, or message forgery. The DTLS protocol is based on the Transport Layer Securi | ||||
ty (TLS) protocol and provides equivalent security guarantees. Datagram semanti | ||||
cs of the underlying transport are preserved by the DTLS protocol. [STANDARDS-T | ||||
RACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4347"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4347"/> | ||||
</reference> | ||||
<reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6 | ||||
347" quoteTitle="true" derivedAnchor="RFC6347"> | ||||
<front> | ||||
<title>Datagram Transport Layer Security Version 1.2</title> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N." surname="Modadugu" fullname="N. Modadugu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="January"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies version 1.2 of the Datagram | ||||
Transport Layer Security (DTLS) protocol. The DTLS protocol provides communicat | ||||
ions privacy for datagram protocols. The protocol allows client/server applicat | ||||
ions to communicate in a way that is designed to prevent eavesdropping, tamperin | ||||
g, or message forgery. The DTLS protocol is based on the Transport Layer Securi | ||||
ty (TLS) protocol and provides equivalent security guarantees. Datagram semanti | ||||
cs of the underlying transport are preserved by the DTLS protocol. This documen | ||||
t updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6347"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6347"/> | ||||
</reference> | ||||
<reference anchor="RFC6455" target="https://www.rfc-editor.org/info/rfc6 | ||||
455" quoteTitle="true" derivedAnchor="RFC6455"> | ||||
<front> | ||||
<title>The WebSocket Protocol</title> | ||||
<author initials="I." surname="Fette" fullname="I. Fette"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Melnikov" fullname="A. Melnikov"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2011" month="December"/> | ||||
<abstract> | ||||
<t indent="0">The WebSocket Protocol enables two-way communication | ||||
between a client running untrusted code in a controlled environment to a remote | ||||
host that has opted-in to communications from that code. The security model us | ||||
ed for this is the origin-based security model commonly used by web browsers. T | ||||
he protocol consists of an opening handshake followed by basic message framing, | ||||
layered over TCP. The goal of this technology is to provide a mechanism for bro | ||||
wser-based applications that need two-way communication with servers that does n | ||||
ot rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or < | ||||
iframe>s and long polling). [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6455"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6455"/> | ||||
</reference> | ||||
<reference anchor="RFC8826" target="https://www.rfc-editor.org/info/rfc8 | ||||
826" quoteTitle="true" derivedAnchor="RFC8826"> | ||||
<front> | ||||
<title>Security Considerations for WebRTC</title> | ||||
<author initials="E." surname="Rescorla" fullname="Eric Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8826"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8826"/> | ||||
</reference> | ||||
<reference anchor="RFC8827" target="https://www.rfc-editor.org/info/rfc8 | ||||
827" quoteTitle="true" derivedAnchor="RFC8827"> | ||||
<front> | ||||
<title>WebRTC Security Architecture</title> | ||||
<author initials="E." surname="Rescorla" fullname="Eric Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8827"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8827"/> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-tls-dtls13" quoteTitle="true" target="https: | ||||
//tools.ietf.org/html/draft-ietf-tls-dtls13-39" derivedAnchor="TLS-DTLS13"> | ||||
<front> | ||||
<title>The Datagram Transport Layer Security (DTLS) Protocol Version | ||||
1.3</title> | ||||
<author initials="E." surname="Rescorla" fullname="Eric Rescorla"> | ||||
<organization showOnFrontPage="true">RTFM, Inc.</organization> | ||||
</author> | ||||
<author initials="H." surname="Tschofenig" fullname="Hannes Tschofen | ||||
ig"> | ||||
<organization showOnFrontPage="true">Arm Limited</organization> | ||||
</author> | ||||
<author initials="N." surname="Modadugu" fullname="Nagendra Modadugu | ||||
"> | ||||
<organization showOnFrontPage="true">Google, Inc.</organization> | ||||
</author> | ||||
<date month="November" day="2" year="2020"/> | ||||
<abstract> | ||||
<t indent="0"> This document specifies Version 1.3 of the Datagr | ||||
am Transport Layer | ||||
Security (DTLS) protocol. DTLS 1.3 allows client/server applications | ||||
to communicate over the Internet in a way that is designed to prevent | ||||
eavesdropping, tampering, and message forgery. | ||||
</reference> | The DTLS 1.3 protocol is intentionally based on the Transport Layer | |||
Security (TLS) 1.3 protocol and provides equivalent security | ||||
guarantees with the exception of order protection/non-replayability. | ||||
Datagram semantics of the underlying transport are preserved by the | ||||
DTLS protocol. | ||||
</references> | </t> | |||
<section title='Acknowledgments' numbered="no"> | </abstract> | |||
<t>The authors wish to thank | </front> | |||
Harald Alvestrand, | <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-39"/> | |||
Richard Barnes, | <format type="TXT" target="https://www.ietf.org/internet-drafts/draft- | |||
Adam Bergkvist, | ietf-tls-dtls13-39.txt"/> | |||
Spencer Dawkins, | <refcontent>Work in Progress</refcontent> | |||
Barry Dingle, | </reference> | |||
Stefan Haekansson, | </references> | |||
Cullen Jennings, | </references> | |||
Paul Kyzivat, | <section numbered="false" toc="include" removeInRFC="false" pn="section-appe | |||
Doug Leonard, | ndix.a"> | |||
Alexey Melnikov, | <name slugifiedName="name-acknowledgements">Acknowledgements</name> | |||
Pete Resnick, | <t indent="0" pn="section-appendix.a-1">The authors wish to thank | |||
Irene Ruengeler, | <contact fullname="Harald Alvestrand"/>, | |||
Randall Stewart, | <contact fullname="Richard Barnes"/>, | |||
Peter Thatcher, | <contact fullname="Adam Bergkvist"/>, | |||
Martin Thompson, | <contact fullname="Spencer Dawkins"/>, | |||
Justin Uberti, | <contact fullname="Barry Dingle"/>, | |||
<contact fullname="Stefan Håkansson"/>, | ||||
<contact fullname="Cullen Jennings"/>, | ||||
<contact fullname="Paul Kyzivat"/>, | ||||
<contact fullname="Doug Leonard"/>, | ||||
<contact fullname="Alexey Melnikov"/>, | ||||
<contact fullname="Pete Resnick"/>, | ||||
<contact fullname="Irene Rüngeler"/>, | ||||
<contact fullname="Randall Stewart"/>, | ||||
<contact fullname="Peter Thatcher"/>, | ||||
<contact fullname="Martin Thomson"/>, | ||||
<contact fullname="Justin Uberti"/>, | ||||
and many others for their invaluable comments.</t> | and many others for their invaluable comments.</t> | |||
</section> | </section> | |||
</back> | <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | |||
="include" pn="section-appendix.b"> | ||||
<name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
<author initials="R." surname="Jesup" fullname="Randell Jesup"> | ||||
<organization showOnFrontPage="true">Mozilla</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<code/> | ||||
<city/> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>randell-ietf@jesup.org</email> | ||||
</address> | ||||
</author> | ||||
<author initials="S." surname="Loreto" fullname="Salvatore Loreto"> | ||||
<organization showOnFrontPage="true">Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Hirsalantie 11</street> | ||||
<code>02420</code> | ||||
<city>Jorvas</city> | ||||
<country>Finland</country> | ||||
</postal> | ||||
<email>salvatore.loreto@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="M." surname="Tüxen" fullname="Michael Tüxen"> | ||||
<organization abbrev="Münster Univ. of Appl. Sciences" showOnFrontPage=" | ||||
true">Münster University of Applied Sciences</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Stegerwaldstrasse 39</street> | ||||
<code>48565</code> | ||||
<city> Steinfurt</city> | ||||
<country>Germany</country> | ||||
</postal> | ||||
<email>tuexen@fh-muenster.de</email> | ||||
</address> | ||||
</author> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 57 change blocks. | ||||
533 lines changed or deleted | 1193 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |