| rfc8864xml2.original.xml | rfc8864.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" [ | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | |||
| <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | nsus="true" docName="draft-ietf-mmusic-data-channel-sdpneg-28" indexInclude="tru | |||
| nce.RFC.2119.xml"> | e" ipr="trust200902" number="8864" prepTime="2021-01-18T22:48:58" scripts="Commo | |||
| <!ENTITY RFC3264 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | n,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocIn | |||
| nce.RFC.3264.xml"> | clude="true"> | |||
| <!ENTITY RFC3629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <link href="https://datatracker.ietf.org/doc/draft-ietf-mmusic-data-channel-sd | |||
| nce.RFC.3629.xml"> | pneg-28" rel="prev"/> | |||
| <!ENTITY RFC3758 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <link href="https://dx.doi.org/10.17487/rfc8864" rel="alternate"/> | |||
| nce.RFC.3758.xml"> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| <!ENTITY RFC4960 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <front> | |||
| nce.RFC.4960.xml"> | <title abbrev="SDP-Based Data Channel Negotiation">Negotiation Data Channels | |||
| <!ENTITY RFC4582 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | Using the Session Description Protocol (SDP)</title> | |||
| nce.RFC.4582.xml"> | <seriesInfo name="RFC" value="8864" stream="IETF"/> | |||
| <!ENTITY RFC4975 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <author initials="K." surname="Drage" fullname="Keith Drage"> | |||
| nce.RFC.4975.xml"> | <organization showOnFrontPage="true">Unaffiliated</organization> | |||
| <!ENTITY RFC5234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <address> | |||
| nce.RFC.5234.xml"> | <email>drageke@ntlworld.com</email> | |||
| <!ENTITY RFC6455 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | </address> | |||
| nce.RFC.6455.xml"> | </author> | |||
| <!ENTITY RFC6525 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <author initials="M." surname="Makaraju" fullname="Maridi R. Makaraju (Raju) | |||
| nce.RFC.6525.xml"> | "> | |||
| <!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | <organization showOnFrontPage="true">Unaffiliated</organization> | |||
| nce.RFC.8174.xml"> | <address> | |||
| <!ENTITY DATAREQ SYSTEM "http://xml.resource.org/public/rfc/bibxml3/refer | <email>mmraju@gmail.com</email> | |||
| ence.I-D.ietf-rtcweb-data-channel.xml"> | </address> | |||
| <!ENTITY DATAPROTO SYSTEM "http://xml.resource.org/public/rfc/bibxml3/ref | </author> | |||
| erence.I-D.ietf-rtcweb-data-protocol.xml"> | <author fullname="Richard Ejzak" initials="R." surname="Ejzak"> | |||
| <!ENTITY SDPSCTP SYSTEM "http://xml.resource.org/public/rfc/bibxml3/refer | <organization showOnFrontPage="true">Unaffiliated</organization> | |||
| ence.I-D.ietf-mmusic-sctp-sdp.xml"> | <address> | |||
| <!ENTITY SDPBIS SYSTEM "http://xml.resource.org/public/rfc/bibxml3/refere | <email>richard.ejzak@gmail.com</email> | |||
| nce.I-D.draft-ietf-mmusic-rfc4566bis-32.xml"> | </address> | |||
| <!ENTITY SDPMUXATTR SYSTEM "http://xml.resource.org/public/rfc/bibxml3/re | </author> | |||
| ference.I-D.ietf-mmusic-sdp-mux-attributes.xml"> | <author fullname="Jerome Marcon" initials="J." surname="Marcon"> | |||
| <!ENTITY CLUEDATA SYSTEM "http://xml.resource.org/public/rfc/bibxml3/refe | <organization showOnFrontPage="true">Unaffiliated</organization> | |||
| rence.I-D.ietf-clue-datachannel.xml"> | <address> | |||
| <!ENTITY MSRPDATA SYSTEM "http://xml.resource.org/public/rfc/bibxml3/refe | <email>jeromee.marcon@free.fr</email> | |||
| rence.I-D.ietf-mmusic-msrp-usage-data-channel.xml"> | </address> | |||
| ]> | </author> | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | <author initials="R." surname="Even" fullname="Roni Even" role="editor"> | |||
| <?rfc toc="yes" ?> | <organization showOnFrontPage="true"/> | |||
| <?rfc symrefs="yes" ?> | <address> | |||
| <?rfc iprnotified="no" ?> | <email>ron.even.tlv@gmail.com</email> | |||
| <?rfc strict="no" ?> | </address> | |||
| <?rfc compact="yes" ?> | </author> | |||
| <?rfc subcompact="no"?> | <date month="01" year="2021"/> | |||
| <?rfc sortrefs="yes" ?> | <abstract pn="section-abstract"> | |||
| <rfc category="std" docName="draft-ietf-mmusic-data-channel-sdpneg-28" ipr="trus | <t indent="0" pn="section-abstract-1"> Data channel setup can be done usi | |||
| t200902"> | ng either the in-band Data Channel Establishment Protocol (DCEP) or some out-of- | |||
| <front> | band non-DCEP protocol. This document specifies how the SDP (Session | |||
| <title abbrev="SDP-based Data Channel Negotiation"> | ||||
| SDP-based Data Channel Negotiation | ||||
| </title> | ||||
| <author initials="K. E." surname="Drage" fullname="Keith Drage"> | ||||
| <organization>Unaffiliated</organization> | ||||
| <address> | ||||
| <email>drageke@ntlworld.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M. R." surname="Makaraju" fullname="Maridi R. M | ||||
| akaraju (Raju)"> | ||||
| <organization>Nokia</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>2000 Lucent Lane</street> | ||||
| <city>Naperville</city> | ||||
| <region>Illinois</region> | ||||
| <country>US</country> | ||||
| </postal> | ||||
| <email> Raju.Makaraju@nokia.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Richard Ejzak" initials="R.P." surname="Ejzak"> | ||||
| <organization>Unaffiliated</organization> | ||||
| <address> | ||||
| <email>richard.ejzak@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Jerome Marcon" initials="J.M." surname="Marcon" | ||||
| > | ||||
| <organization>Unaffiliated</organization> | ||||
| <address> | ||||
| <email>jeromee.marcon@free.fr</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="R. E." surname="Even" fullname="Roni Even" role | ||||
| ="editor"> | ||||
| <organization>Huawei</organization> | ||||
| <address> | ||||
| <email>roni.even@huawei.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="May" year="2019"/> | ||||
| <area>ART</area> | ||||
| <workgroup>MMUSIC</workgroup> | ||||
| <abstract> | ||||
| <t> Data channel setup can be done using either the in-b | ||||
| and Data Channel Establishment Protocol (DCEP) or using some out-of-band non-DCE | ||||
| P protocol. This document specifies how the SDP (Session | ||||
| Description Protocol) offer/answer exchange can be used to achieve | Description Protocol) offer/answer exchange can be used to achieve | |||
| an out-of-band non-DCEP negotiation for establishing a data channel. | an out-of-band non-DCEP negotiation for establishing a data channel. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | <boilerplate> | |||
| <middle> | <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | |||
| <section title="Introduction" anchor="introduction"> | "exclude" pn="section-boilerplate.1"> | |||
| <t> The concept of establishing a bi-directional | <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | |||
| > | ||||
| <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/rfc8864" 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-applicability-statement">Applicabi | ||||
| lity Statement</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-sdp-data-channel-attributes">SDP D | ||||
| ata Channel Attributes</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-sdp-dcmap-attribute">S | ||||
| DP DCMAP Attribute</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.5.2.1.2"> | ||||
| <li pn="section-toc.1-1.5.2.1.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.1.1"><xref derived | ||||
| Content="5.1.1" format="counter" sectionFormat="of" target="section-5.1.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcmap-attr | ||||
| ibute-syntax">DCMAP Attribute Syntax</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.2.1"><xref derived | ||||
| Content="5.1.2" format="counter" sectionFormat="of" target="section-5.1.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcmap-stre | ||||
| am-id-parameter">'dcmap-stream-id' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.3.1"><xref derived | ||||
| Content="5.1.3" format="counter" sectionFormat="of" target="section-5.1.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-label-para | ||||
| meter">'label' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.4.1"><xref derived | ||||
| Content="5.1.4" format="counter" sectionFormat="of" target="section-5.1.4"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-subprotoco | ||||
| l-parameter">'subprotocol' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.5.1"><xref derived | ||||
| Content="5.1.5" format="counter" sectionFormat="of" target="section-5.1.5"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-max-retr-p | ||||
| arameter">'max-retr' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.6.1"><xref derived | ||||
| Content="5.1.6" format="counter" sectionFormat="of" target="section-5.1.6"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-max-time-p | ||||
| arameter">'max-time' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.7"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.7.1"><xref derived | ||||
| Content="5.1.7" format="counter" sectionFormat="of" target="section-5.1.7"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-ordered-pa | ||||
| rameter">'ordered' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.8"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.8.1"><xref derived | ||||
| Content="5.1.8" format="counter" sectionFormat="of" target="section-5.1.8"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-priority-p | ||||
| arameter">'priority' Parameter</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.1.2.9"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.2.9.1"><xref derived | ||||
| Content="5.1.9" format="counter" sectionFormat="of" target="section-5.1.9"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcmap-mult | ||||
| iplexing-category">DCMAP Multiplexing Category</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-sdp-dcsa-attribute">SD | ||||
| P DCSA Attribute</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.5.2.2.2"> | ||||
| <li pn="section-toc.1-1.5.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derived | ||||
| Content="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcsa-attri | ||||
| bute-syntax">DCSA Attribute Syntax</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.2.2.1"><xref derived | ||||
| Content="5.2.2" format="counter" sectionFormat="of" target="section-5.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcsa-multi | ||||
| plexing-category">DCSA Multiplexing Category</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-sdp-offer-answer-procedures">SDP O | ||||
| ffer/Answer Procedures</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.6.2"> | ||||
| <li pn="section-toc.1-1.6.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
| "6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-managing-stream-identi | ||||
| fiers">Managing Stream Identifiers</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
| "6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-negotiating-data-chann | ||||
| el-pa">Negotiating Data Channel Parameters</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent= | ||||
| "6.3" format="counter" sectionFormat="of" target="section-6.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-generating-the-initial | ||||
| -offe">Generating the Initial Offer for a Data Channel</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent= | ||||
| "6.4" format="counter" sectionFormat="of" target="section-6.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-generating-the-sdp-ans | ||||
| wer">Generating the SDP Answer</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent= | ||||
| "6.5" format="counter" sectionFormat="of" target="section-6.5"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-offerer-processing-of- | ||||
| the-s">Offerer Processing of the SDP Answer</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.6.1"><xref derivedContent= | ||||
| "6.6" format="counter" sectionFormat="of" target="section-6.6"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-modifying-the-session" | ||||
| >Modifying the Session</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.6.2.6.2"> | ||||
| <li pn="section-toc.1-1.6.2.6.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.6.2.1.1"><xref derived | ||||
| Content="6.6.1" format="counter" sectionFormat="of" target="section-6.6.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-closing-a- | ||||
| data-channel">Closing a Data Channel</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6.2.7"> | ||||
| <t indent="0" pn="section-toc.1-1.6.2.7.1"><xref derivedContent= | ||||
| "6.7" format="counter" sectionFormat="of" target="section-6.7"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-various-sdp-offer-answ | ||||
| er-co">Various SDP Offer/Answer Considerations</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-examples">Examples</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-security-considerations">Security | ||||
| Considerations</xref></t> | ||||
| </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-iana-considerations">IANA Consider | ||||
| ations</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-subprotocol-identifier | ||||
| s">Subprotocol Identifiers</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-new-sdp-attributes">Ne | ||||
| w SDP Attributes</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.9.2.2.2"> | ||||
| <li pn="section-toc.1-1.9.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.2.2.1.1"><xref derived | ||||
| Content="9.2.1" format="counter" sectionFormat="of" target="section-9.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcmap">dcm | ||||
| ap</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.2.2.2.1"><xref derived | ||||
| Content="9.2.2" format="counter" sectionFormat="of" target="section-9.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-dcsa">dcsa | ||||
| </xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent= | ||||
| "9.3" format="counter" sectionFormat="of" target="section-9.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-registering-attributes | ||||
| -for-">Registering Attributes for Use with Data Channels</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
| rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.10.2"> | ||||
| <li pn="section-toc.1-1.10.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent | ||||
| ="10.1" format="counter" sectionFormat="of" target="section-10.1"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
| s">Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent | ||||
| ="10.2" format="counter" sectionFormat="of" target="section-10.2"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
| ces">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="Append | ||||
| ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-generic-data-ch | ||||
| annel-negoti">Generic Data Channel Negotiation Aspects when Not Using DCEP</xref | ||||
| ></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.11.2"> | ||||
| <li pn="section-toc.1-1.11.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent | ||||
| ="A.1" format="counter" sectionFormat="of" target="section-a.1"/>. <xref derive | ||||
| dContent="" format="title" sectionFormat="of" target="name-stream-identifier-num | ||||
| bering">Stream Identifier Numbering</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent | ||||
| ="A.2" format="counter" sectionFormat="of" target="section-a.2"/>. <xref derive | ||||
| dContent="" format="title" sectionFormat="of" target="name-generic-data-channel- | ||||
| negotia">Generic Data Channel Negotiation Not Using DCEP</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.11.2.2.2"> | ||||
| <li pn="section-toc.1-1.11.2.2.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.2.2.1.1"><xref derive | ||||
| dContent="A.2.1" format="counter" sectionFormat="of" target="section-a.2.1"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-overview" | ||||
| >Overview</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.2.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.2.2.2.1"><xref derive | ||||
| dContent="A.2.2" format="counter" sectionFormat="of" target="section-a.2.2"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-opening-a | ||||
| -data-channel">Opening a Data Channel</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11.2.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.11.2.2.2.3.1"><xref derive | ||||
| dContent="A.2.3" format="counter" sectionFormat="of" target="section-a.2.3"/>. | ||||
| <xref derivedContent="" format="title" sectionFormat="of" target="name-closing-a | ||||
| -data-channel-2">Closing a Data Channel</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgeme | ||||
| nts</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13"> | ||||
| <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-contributors">Contributors</xre | ||||
| f></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14"> | ||||
| <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
| resses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | ||||
| <middle> | ||||
| <section anchor="introduction" numbered="true" removeInRFC="false" toc="incl | ||||
| ude" pn="section-1"> | ||||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1"> The concept of establishing a bidirectio | ||||
| nal | ||||
| data channel running on top of the Stream Control Transmission | data channel running on top of the Stream Control Transmission | |||
| Protocol (SCTP) is in | Protocol (SCTP) is discussed in | |||
| <xref target="I-D.ietf-rtcweb-data-channel"/> allowing applications to use data | <xref target="RFC8831" format="default" sectionFormat="of" derivedContent="RFC8 | |||
| channels. An in-band Data | 831"/>, allowing applications to use data channels. An in-band Data | |||
| Channel Establishment Protocol (DCEP) is in <xref target="I-D.ietf-rtcweb-dat | Channel Establishment Protocol (DCEP) is described in <xref target="RFC8832" | |||
| a-protocol"/>, | format="default" sectionFormat="of" derivedContent="RFC8832"/>; | |||
| however other in-band or out-of-band | however, other in-band or out-of-band | |||
| protocols may be used for establishing data channels. Each data | protocols may be used for establishing data channels. Each data | |||
| channel consists of paired SCTP streams sharing the same SCTP Stream | channel consists of paired SCTP streams sharing the same SCTP Stream | |||
| Identifier. Data channels are created by endpoint applications using | Identifier. Data channels are created by endpoint applications using | |||
| the WebRTC API (Application Programming Interface), or other protocols | (1) the WebRTC API (Application Programming Interface) <xref target="WebRtcAP | |||
| like CLUE | I" format="default" sectionFormat="of" derivedContent="WebRtcAPI"/> or (2) othe | |||
| <xref target="I-D.ietf-clue-datachannel"/>. The protocols can be signaled | r protocols | |||
| by the data channel "subprotocol" parameter, conceptually similar to | (e.g., Controlling Multiple Streams for Telepresence (CLUE) | |||
| the WebSocket <xref target="RFC5234"/> "subprotocol". However, apart from the | <xref target="RFC8850" format="default" sectionFormat="of" derivedContent="RFC8 | |||
| 850"/>). The protocols can be signaled | ||||
| by the data channel 'subprotocol' parameter, conceptually similar to | ||||
| a WebSocket subprotocol as described in <xref target="RFC6455" format="defaul | ||||
| t" sectionFormat="of" derivedContent="RFC6455"/>. | ||||
| However, apart from the | ||||
| "subprotocol" value transmitted to the peer, an endpoint application can agre e on how to instantiate a given | "subprotocol" value transmitted to the peer, an endpoint application can agre e on how to instantiate a given | |||
| subprotocol on a data channel, and whether it is signaled in-band | subprotocol on a data channel, and whether it is signaled in-band | |||
| using DCEP or out-of-band using a non-DCEP protocol (or both). </t> | using DCEP or out-of-band using a non-DCEP protocol (or both).</t> | |||
| <t>This document defines SDP offer/answer <xref target="R | <t indent="0" pn="section-1-2">This document defines Session Description P | |||
| FC3264"/> procedures that enable out-of-band negotiation | rotocol (SDP) offer/answer | |||
| procedures <xref target="RFC3264" format="default" sectionFormat="of" deri | ||||
| vedContent="RFC3264"/> that enable out-of-band negotiation | ||||
| for establishing data channels for transport of well-defined subprotocols. | for establishing data channels for transport of well-defined subprotocols. | |||
| These procedures are based on generic SDP offer/answer negotiation rules for | These procedures are based on generic SDP offer/answer negotiation rules for | |||
| SCTP | SCTP-based media transport as specified in <xref target="RFC8841" format="defaul | |||
| based media transport as specified in <xref target="I-D.ietf-mmusic-sctp-sdp" | t" sectionFormat="of" derivedContent="RFC8841"/> for | |||
| /> for | the SDP "m=" line proto values UDP/DTLS/SCTP and TCP/DTLS/SCTP. | |||
| the SDP "m" line proto values UDP/DTLS/SCTP and TCP/DTLS/SCTP. | </t> | |||
| <t indent="0" pn="section-1-3">This document uses MSRP (the Message Sessio | ||||
| </t> | n Relay Protocol) <xref target="RFC4975" format="default" sectionFormat="of" der | |||
| <t>This document uses MSRP (Message Session Relay Protoco | ivedContent="RFC4975"/> | |||
| l) <xref target="RFC4975"/> | and BFCP (the Binary Floor Control Protocol) <xref target="RFC8855" format="d | |||
| and BFCP (Binary Floor Control Protocol) <xref target="RFC4582"/> in many of | efault" sectionFormat="of" derivedContent="RFC8855"/> in several examples. It do | |||
| the examples. It does not provide a | es not provide a | |||
| complete specification of how to negotiate the use of a data channel to trans port | complete specification of how to negotiate the use of a data channel to trans port | |||
| MSRP. Procedures specific to each | MSRP. Procedures specific to each | |||
| subprotocol would have to be documented elsewhere. For MSRP they are document ed in <xref target="I-D.ietf-mmusic-msrp-usage-data-channel"/> . The use of MSRP in some examples is only to show how the generic | subprotocol would have to be documented elsewhere. For MSRP, they are documen ted in <xref target="RFC8873" format="default" sectionFormat="of" derivedContent ="RFC8873"/>. The use of MSRP in some examples is only to show how the generic | |||
| procedures described herein might apply to a specific subprotocol. | procedures described herein might apply to a specific subprotocol. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Conventions"> | <section numbered="true" removeInRFC="false" toc="include" pn="section-2"> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", | <name slugifiedName="name-conventions">Conventions</name> | |||
| "SHALL NOT", | <t indent="0" pn="section-2-1">The key words "<bcp14>MUST</bcp14>", "<bcp1 | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED","MAY", and "OPTIONAL | 4>MUST NOT</bcp14>", | |||
| " in this | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
| document are to be interpreted as described in BCP14 <xref target="RFC2119"/ | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
| > | "<bcp14>SHOULD NOT</bcp14>", | |||
| <xref target="RFC8174"/> when, and only when, the | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| y | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| appear in all capitals, as shown here. | to be interpreted as described in BCP 14 <xref target="RFC2119" format="def | |||
| ault" sectionFormat="of" derivedContent="RFC2119"/> | ||||
| </t> | <xref target="RFC8174" format="default" sectionFormat="of" derivedConten | |||
| </section> | t="RFC8174"/> when, and only when, they appear in all capitals, | |||
| <section title="Terminology" anchor="terminology"> | as shown here.</t> | |||
| <t>This document uses the following terms: | </section> | |||
| <list style="hanging"> | <section anchor="terminology" numbered="true" removeInRFC="false" toc="inclu | |||
| <t>Data channel: A WebRTC data channel as | de" pn="section-3"> | |||
| specified in | <name slugifiedName="name-terminology">Terminology</name> | |||
| <xref target="I-D.ietf-rtcweb-data-channel"/>.</t> | <t indent="0" pn="section-3-1">This document uses the following terms: | |||
| <t>Data channel stack: An entity which, u | </t> | |||
| pon application request, | <dl newline="false" spacing="normal" indent="3" pn="section-3-2"> | |||
| runs the data channel protocol to keep track of states, sending and receivi | <dt pn="section-3-2.1">Data channel:</dt> | |||
| ng | <dd pn="section-3-2.2">A WebRTC data channel as specified in | |||
| data. If the application is a browser based JavaScript application | <xref target="RFC8831" format="default" sectionFormat="of" derivedContent=" | |||
| RFC8831"/>.</dd> | ||||
| <dt pn="section-3-2.3">Data channel stack:</dt> | ||||
| <dd pn="section-3-2.4">An entity that, upon application request, | ||||
| runs the data channel protocol to keep track of states as well as the | ||||
| sending and receiving of data. If the application is a browser-based JavaSc | ||||
| ript application, | ||||
| then this stack resides in the browser. If the application is a | then this stack resides in the browser. If the application is a | |||
| native application then this stack resides in the application and is access | native application, then this stack resides in the application and is acces | |||
| ible | sible | |||
| via some sort of APIs.</t> | via some sort of API or APIs.</dd> | |||
| <t>Data channel properties: Fixed propert | <dt pn="section-3-2.5">Data channel properties:</dt> | |||
| ies assigned to a data | <dd pn="section-3-2.6">Fixed properties assigned to a data | |||
| channel at the time of its creation. Some of these properties | channel at the time of its creation. Some of these properties | |||
| determine the way the data channel stack transmits data on this | determine the way the data channel stack transmits data on this | |||
| channel (e.g., stream identifier, reliability, order of delivery, etc.).</t | channel (e.g., stream identifier, reliability, order of delivery).</dd> | |||
| > | <dt pn="section-3-2.7">Data channel subprotocol:</dt> | |||
| <t>Data channel subprotocol: The applicat | <dd pn="section-3-2.8">The application protocol that is transported | |||
| ion protocol which is transported | ||||
| over a single data channel. Data channel subprotocol messages are sent as d ata | over a single data channel. Data channel subprotocol messages are sent as d ata | |||
| channel payload over an established data channel. SDP offer/answer exchange can be used | channel payload over an established data channel. An SDP offer/answer excha nge can be used | |||
| as specified in this document to negotiate the establishment of data channe ls, | as specified in this document to negotiate the establishment of data channe ls, | |||
| corresponding data channel properties, associated data channel subprotocols | corresponding data channel properties, associated data channel subprotocols | |||
| and data | , and data | |||
| channel subprotocol properties. In this case the data channel subprotocols | channel subprotocol properties. In this case, the data channel subprotocols | |||
| may be identified | may be identified | |||
| by the values of the "subprotocol" parameters of the SDP "a=dcmap" attribut | by the values of the 'subprotocol' parameters of the SDP "a=dcmap:" attribu | |||
| e as | te as | |||
| described in <xref target="subprotocol-parameter"/>. Within this document t | described in <xref target="subprotocol-parameter" format="default" sectionF | |||
| he term | ormat="of" derivedContent="Section 5.1.4"/>. Within this document, the term | |||
| "data channel subprotocol" is often abbreviated as just "subprotocol". | "data channel subprotocol" is often abbreviated as just "subprotocol". | |||
| </t> | </dd> | |||
| <t>DCEP: Data Channel Establishment Proto | <dt pn="section-3-2.9">DCEP:</dt> | |||
| col defined in | <dd pn="section-3-2.10">Data Channel Establishment Protocol, as defined | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>.</t> | in | |||
| <t>In-band: Transmission through the peer | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent=" | |||
| -to-peer SCTP association.</t> | RFC8832"/>.</dd> | |||
| <t>Out-of-band: Transmission through the | <dt pn="section-3-2.11">In-band:</dt> | |||
| application signaling path.</t> | <dd pn="section-3-2.12">Transmission through the peer-to-peer SCTP assoc | |||
| <t>Peer: From the perspective of one of t | iation.</dd> | |||
| he agents in a session, its | <dt pn="section-3-2.13">Out-of-band:</dt> | |||
| <dd pn="section-3-2.14">Transmission through the application signaling p | ||||
| ath.</dd> | ||||
| <dt pn="section-3-2.15">Peer:</dt> | ||||
| <dd pn="section-3-2.16">From the perspective of one of the agents in a s | ||||
| ession, its | ||||
| peer is the other agent. Specifically, from the perspective of the | peer is the other agent. Specifically, from the perspective of the | |||
| SDP offerer, the peer is the SDP answerer. From the perspective of | SDP offerer, the peer is the SDP answerer. From the perspective of | |||
| the SDP answerer, the peer is the SDP offerer.</t> | the SDP answerer, the peer is the SDP offerer.</dd> | |||
| <t>SCTP Stream Sequence Number (SSN): the | <dt pn="section-3-2.17">SCTP Stream Sequence Number (SSN):</dt> | |||
| SCTP stream sequence number as specified | <dd pn="section-3-2.18">The SCTP Stream Sequence Number, as specified | |||
| in <xref target="RFC4960"/>.</t> | in <xref target="RFC4960" format="default" sectionFormat="of" derivedConten | |||
| <t>Stream identifier: The identifier of t | t="RFC4960"/>.</dd> | |||
| he outbound and inbound | <dt pn="section-3-2.19">Stream identifier:</dt> | |||
| SCTP streams composing a data channel.</t> | <dd pn="section-3-2.20">The identifier of the outbound and inbound | |||
| </list> | SCTP streams composing a data channel.</dd> | |||
| </t> | </dl> | |||
| </section> | </section> | |||
| <section title=" Applicability Statement" anchor="appl_statement" | <section anchor="appl_statement" numbered="true" removeInRFC="false" toc="in | |||
| > | clude" pn="section-4"> | |||
| <t> The mechanism in this document only applies to the Se | <name slugifiedName="name-applicability-statement">Applicability Statement | |||
| ssion Description | </name> | |||
| Protocol (SDP) <xref target="I-D.ietf-mmusic-rfc4566bis"/> when used together | <t indent="0" pn="section-4-1"> The mechanism described in this document o | |||
| with the SDP offer/answer | nly applies to SDP <xref target="RFC8866" format="default" sectionFormat="of" de | |||
| mechanism <xref target="RFC3264"/>. Declarative usage of SDP is out of scope | rivedContent="RFC8866"/> when used together with the SDP offer/answer | |||
| for this | mechanism <xref target="RFC3264" format="default" sectionFormat="of" derivedC | |||
| document, and is thus undefined.</t> | ontent="RFC3264"/>. Declarative usage of SDP is out of scope for this | |||
| </section> | document and is thus undefined.</t> | |||
| <section title="SDP Data Channel Attributes" anchor="sdp_synt"> | </section> | |||
| <t>This section defines two new SDP media-level attribute | <section anchor="sdp_synt" numbered="true" removeInRFC="false" toc="include" | |||
| s that can be used together with the SDP Offer/Answer mechanism to negotiate dat | pn="section-5"> | |||
| a channel-specific and subprotocol-specific parameters without the usage of DCEP | <name slugifiedName="name-sdp-data-channel-attributes">SDP Data Channel At | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>. The first attribute provides fo | tributes</name> | |||
| r negotiation of | <t indent="0" pn="section-5-1">This section defines two new SDP media-leve | |||
| channel-specific parameters. The second attribute provides for | l attributes that can be | |||
| used together with the SDP Offer/Answer mechanism to negotiate | ||||
| data-channel-specific and subprotocol-specific parameters without the | ||||
| usage of DCEP <xref target="RFC8832" format="default" sectionFormat="of" d | ||||
| erivedContent="RFC8832"/>. The first attribute (<xref target="subsec-sdp-attr-fo | ||||
| r-dc-par-neg" format="default" sectionFormat="of" derivedContent="Section 5.1"/> | ||||
| ) provides for negotiation of | ||||
| channel-specific parameters. The second attribute (<xref target="prot_att" | ||||
| format="default" sectionFormat="of" derivedContent="Section 5.2"/>) provides for | ||||
| negotiation of subprotocol-specific parameters.</t> | negotiation of subprotocol-specific parameters.</t> | |||
| <t> | <aside pn="section-5-2"> | |||
| Note: Appendix A provides information how data channels work in general and | <t indent="0" pn="section-5-2.1"> | |||
| especially summarizes some key aspects, which should be considered | Note: <xref target="generic-out-of-band-aspects" format="default" sectionFormat= | |||
| for the negotiation of data channels if DCEP is not used. | "of" derivedContent="Appendix A"/> provides information | |||
| </t> | regarding how data channels work in general. In particular, it | |||
| <section title="SDP DCMAP Attribute " anchor="subsec-sdp- | summarizes some key aspects that should be considered | |||
| attr-for-dc-par-neg"> | for the negotiation of data channels if DCEP is not used.</t> | |||
| <t>This section defines a new media level attribu | </aside> | |||
| te "a=dcmap:" that defines the data channel parameters for | <section anchor="subsec-sdp-attr-for-dc-par-neg" numbered="true" removeInR | |||
| FC="false" toc="include" pn="section-5.1"> | ||||
| <name slugifiedName="name-sdp-dcmap-attribute">SDP DCMAP Attribute</name | ||||
| > | ||||
| <t indent="0" pn="section-5.1-1">This section defines a new media-level | ||||
| attribute, "a=dcmap:", that defines the data channel parameters for | ||||
| each data channel to be negotiated. </t> | each data channel to be negotiated. </t> | |||
| <t>The attribute is used to create bi-directional SCTP data channels | <t indent="0" pn="section-5.1-2">This attribute is used to create bidire ctional SCTP data channels | |||
| having the same set of attributes. The data channel properties | having the same set of attributes. The data channel properties | |||
| (reliable/partially reliable, ordered/unordered) need to be suitable per the subprotocol transport requirements. | (reliable / partially reliable, ordered/unordered) need to be suitable per th e subprotocol transport requirements. | |||
| </t> | </t> | |||
| <section title="DCMAP Attribute Syntax" anchor="d | <section anchor="dcmap-attr-definition" numbered="true" removeInRFC="fal | |||
| cmap-attr-definition"> | se" toc="include" pn="section-5.1.1"> | |||
| <t>"a=dcmap:" is a media level attribute | <name slugifiedName="name-dcmap-attribute-syntax">DCMAP Attribute Synt | |||
| having the following ABNF | ax</name> | |||
| (Augmented Backus-Naur Form, <xref target="RFC5234"/>) syntax. | <t indent="0" pn="section-5.1.1-1">"a=dcmap:" is a media-level attribu | |||
| te having the following | ||||
| <figure align="left" title=""> | definition and ABNF (Augmented Backus-Naur Form) syntax <xref target=" | |||
| <artwork align="left"><![ | RFC5234" format="default" sectionFormat="of" derivedContent="RFC5234"/>. | |||
| CDATA[ | ||||
| Formal Syntax: | ||||
| Name: dcmap | ||||
| Value: dcmap-value | ||||
| Usage Level: media | ||||
| Charset Dependent: no | ||||
| Syntax: | ||||
| </t> | ||||
| <table anchor="dcmap-attrib" align="center" pn="table-1"> | ||||
| <name slugifiedName="name-adcmap-attribute-definition">"a=dcmap:" At | ||||
| tribute Definition</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th colspan="2" align="center" rowspan="1">"a=dcmap:" Attribute< | ||||
| /th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Name</td> | ||||
| <td align="left" colspan="1" rowspan="1">dcmap</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Value</td> | ||||
| <td align="left" colspan="1" rowspan="1">dcmap-value</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Usage Level</td> | ||||
| <td align="left" colspan="1" rowspan="1">media</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Charset Dependent</td> | ||||
| <td align="left" colspan="1" rowspan="1">No</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t indent="0" pn="section-5.1.1-3">Formal syntax:</t> | ||||
| <sourcecode name="abnf-1" type="abnf" markers="false" pn="section-5.1. | ||||
| 1-4"> | ||||
| dcmap-value = dcmap-stream-id | dcmap-value = dcmap-stream-id | |||
| [ SP dcmap-opt *(";" dcmap-opt) ] | [ SP dcmap-opt *(";" dcmap-opt) ] | |||
| dcmap-opt = ordering-opt / subprotocol-opt / label-opt | dcmap-opt = ordering-opt / subprotocol-opt / label-opt | |||
| / maxretr-opt / maxtime-opt / priority-opt | / maxretr-opt / maxtime-opt / priority-opt | |||
| ; maxretr-opt and maxtime-opt are mutually exclusive | ; maxretr-opt and maxtime-opt are | |||
| ; | ; mutually exclusive | |||
| dcmap-stream-id = 1*5DIGIT | dcmap-stream-id = 1*5DIGIT | |||
| ordering-opt = "ordered=" ordering-value | ordering-opt = "ordered=" ordering-value | |||
| ordering-value = "true" / "false" | ordering-value = "true" / "false" | |||
| subprotocol-opt = "subprotocol=" quoted-string | subprotocol-opt = "subprotocol=" quoted-string | |||
| label-opt = "label=" quoted-string | label-opt = "label=" quoted-string | |||
| maxretr-opt = "max-retr=" maxretr-value | maxretr-opt = "max-retr=" maxretr-value | |||
| maxretr-value = "0" / integer | maxretr-value = "0" / integer | |||
| ; number of retransmissions, | ; number of retransmissions, | |||
| ; less than 2^32, | ; less than 2^32, | |||
| ; derived from 'Reliability Parameter' of | ; derived from 'Reliability Parameter' [RFC8832] | |||
| ; [I-D.ietf-rtcweb-data-protocol] | ||||
| maxtime-opt = "max-time=" maxtime-value | maxtime-opt = "max-time=" maxtime-value | |||
| maxtime-value = "0" / integer | maxtime-value = "0" / integer | |||
| ; milliseconds, | ; milliseconds, | |||
| ; less than 2^32, | ; less than 2^32, | |||
| ; derived from 'Reliability Parameter' of | ; derived from 'Reliability Parameter' [RFC8832] | |||
| ; [I-D.ietf-rtcweb-data-protocol] | ||||
| priority-opt = "priority=" priority-value | priority-opt = "priority=" priority-value | |||
| priority-value = "0" / integer | priority-value = "0" / integer | |||
| ; unsigned integer value indicating the priority of | ; unsigned integer value indicating the priority of | |||
| ; the data channel, | ; the data channel, | |||
| ; less than 2^16, | ; less than 2^16, | |||
| ; derived from 'Priority' of | ; derived from 'Priority' [RFC8832] | |||
| ; [I-D.ietf-rtcweb-data-protocol] | ||||
| quoted-string = DQUOTE *(quoted-char / escaped-char) DQUOTE | quoted-string = DQUOTE *(quoted-char / escaped-char) DQUOTE | |||
| quoted-char = SP / quoted-visible | quoted-char = SP / quoted-visible | |||
| quoted-visible = %x21 / %x23-24 / %x26-7E ; VCHAR without " or % | quoted-visible = %x21 / %x23-24 / %x26-7E ; VCHAR without " or % | |||
| escaped-char = "%" HEXDIG HEXDIG | escaped-char = "%" HEXDIG HEXDIG | |||
| DQUOTE = <from-RFC5234> | DQUOTE = <from RFC 5234> | |||
| integer = <from-RFC4566> | integer = <from RFC 8866></sourcecode> | |||
| <t indent="0" pn="section-5.1.1-5">Examples:</t> | ||||
| Examples: | <sourcecode name="sdp-1" type="sdp" markers="false" pn="section-5.1.1- | |||
| 6"> | ||||
| a=dcmap:0 | a=dcmap:0 | |||
| a=dcmap:1 subprotocol="bfcp";max-time=60000;priority=512 | a=dcmap:1 subprotocol="bfcp";max-time=60000;priority=512 | |||
| a=dcmap:2 subprotocol="msrp";ordered=true;label="msrp" | a=dcmap:2 subprotocol="msrp";ordered=true;label="msrp" | |||
| a=dcmap:3 label="Label 1";ordered=false;max-retr=5;priority=128 | a=dcmap:3 label="Label 1";ordered=false;max-retr=5;priority=128 | |||
| a=dcmap:4 label="foo%09bar";ordered=true;max-time=15000 | a=dcmap:4 label="foo%09bar";ordered=true;max-time=15000</sourcecode> | |||
| ]]></artwork> | <aside pn="section-5.1.1-7"> | |||
| </figure> | <t indent="0" pn="section-5.1.1-7.1">Note: The last example (a=dcmap | |||
| </t> | :4) shows a 'label' parameter value | |||
| <t> | that contains one nonprintable 'escaped-char' character | |||
| <list style="hanging"> | ||||
| <t>Note: The last example | ||||
| (a=dcmap:4) shows a 'label' parameter value | ||||
| which contains one non-printable 'escaped-char' character | ||||
| (the tabulator character).</t> | (the tabulator character).</t> | |||
| </list> | </aside> | |||
| </t> | <t indent="0" pn="section-5.1.1-8">Within an "a=dcmap:" attribute line | |||
| <t>Within an 'a=dcmap:' attribute line's | 's 'dcmap-opt' value, only one | |||
| 'dcmap-opt' value only one | ||||
| 'maxretr-opt' parameter or one 'maxtime-opt' parameter may be present. | 'maxretr-opt' parameter or one 'maxtime-opt' parameter may be present. | |||
| Both MUST NOT be present.</t> | Both parameters <bcp14>MUST NOT</bcp14> be present.</t> | |||
| </section> | </section> | |||
| <section title="Dcmap-stream-id Parameter" anchor | <section anchor="dcmap-stream-id-param-definition" numbered="true" remov | |||
| ="dcmap-stream-id-param-definition"> | eInRFC="false" toc="include" pn="section-5.1.2"> | |||
| <t>The 'dcmap-stream-id' parameter indica | <name slugifiedName="name-dcmap-stream-id-parameter">'dcmap-stream-id' | |||
| tes the SCTP stream identifier | Parameter</name> | |||
| <t indent="0" pn="section-5.1.2-1">The 'dcmap-stream-id' parameter ind | ||||
| icates the SCTP stream identifier | ||||
| within the SCTP association used to form the data channel.</t> | within the SCTP association used to form the data channel.</t> | |||
| </section> | </section> | |||
| <section title="Label Parameter"> | <section numbered="true" removeInRFC="false" toc="include" pn="section-5 | |||
| <t>The 'label' parameter indicates the na | .1.3"> | |||
| me of the | <name slugifiedName="name-label-parameter">'label' Parameter</name> | |||
| <t indent="0" pn="section-5.1.3-1">The 'label' parameter indicates the | ||||
| name of the | ||||
| channel. It represents a label that can be used to distinguish, | channel. It represents a label that can be used to distinguish, | |||
| in the context of the WebRTC API <xref target="WebRtcAPI"/>, | in the context of the WebRTC API <xref target="WebRtcAPI" format="default " sectionFormat="of" derivedContent="WebRtcAPI"/>, | |||
| an RTCDataChannel object from other RTCDataChannel objects. | an RTCDataChannel object from other RTCDataChannel objects. | |||
| This parameter maps to the 'Label' parameter defined in | This parameter maps to the 'Label' parameter defined in | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>. | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent ="RFC8832"/>. | |||
| The 'label' parameter is optional. If it is not | The 'label' parameter is optional. If it is not | |||
| present, then its value defaults to the empty string. | present, then its value defaults to the empty string. | |||
| </t> | </t> | |||
| <t>In order to communicate with WEbRTC AP | <t indent="0" pn="section-5.1.3-2">In order to communicate with the We | |||
| I the label attribute should: | bRTC API, the 'label' parameter | |||
| <list style="symbols"> | should | |||
| <t>Serialize the WebRTC l | </t> | |||
| abel as a UTF-8 string <xref target="RFC3629"/>.</t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <t>Treat the UTF-8 serial | -5.1.3-3"> | |||
| ization as a series of bytes</t> | <li pn="section-5.1.3-3.1">Serialize the WebRTC label as a UTF-8 str | |||
| <t>For each byte in the s | ing <xref target="RFC3629" format="default" sectionFormat="of" derivedContent="R | |||
| erialization: | FC3629"/>.</li> | |||
| <li pn="section-5.1.3-3.2">Treat the UTF-8 serialization as a series | ||||
| <list style="symb | of bytes.</li> | |||
| ols"> | <li pn="section-5.1.3-3.3"> | |||
| <t>If the | <t indent="0" pn="section-5.1.3-3.3.1">For each byte in the serial | |||
| byte can be expressed as a `quoted-char`, do so</t> | ization, | |||
| <t>Otherw | </t> | |||
| ise, express the byte as an `escaped-char`.</t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="sec | |||
| </list> | tion-5.1.3-3.3.2"> | |||
| </t> | <li pn="section-5.1.3-3.3.2.1">If the byte can be expressed as a | |||
| </list> | 'quoted-char', do so.</li> | |||
| </t> | <li pn="section-5.1.3-3.3.2.2">Otherwise, express the byte as an | |||
| <t>Note: The empty string MAY also be exp | 'escaped-char'.</li> | |||
| licitly used as a 'label' value, | </ul> | |||
| </li> | ||||
| </ul> | ||||
| <aside pn="section-5.1.3-4"> | ||||
| <t indent="0" pn="section-5.1.3-4.1">Note: The empty string can also | ||||
| be explicitly used as a 'label' value, | ||||
| such that 'label=""' is equivalent to the 'label' parameter not being | such that 'label=""' is equivalent to the 'label' parameter not being | |||
| present at all. | present at all. | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/> allows the DATA_CHANNEL_OP EN | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent ="RFC8832"/> allows the DATA_CHANNEL_OPEN | |||
| message's 'Label' value to be an empty string.</t> | message's 'Label' value to be an empty string.</t> | |||
| </section> | </aside> | |||
| <section title="Subprotocol Parameter" anchor="su | </section> | |||
| bprotocol-parameter"> | <section anchor="subprotocol-parameter" numbered="true" removeInRFC="fal | |||
| <t>The 'subprotocol' parameter indicates | se" toc="include" pn="section-5.1.4"> | |||
| which protocol the | <name slugifiedName="name-subprotocol-parameter">'subprotocol' Paramet | |||
| er</name> | ||||
| <t indent="0" pn="section-5.1.4-1">The 'subprotocol' parameter indicat | ||||
| es which protocol the | ||||
| client expects to exchange via the channel. | client expects to exchange via the channel. | |||
| This parameter maps to the 'Protocol' parameter defined in | This parameter maps to the 'Protocol' parameter defined in | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>. | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent | |||
| <xref target="IANA_subproto_ids"/> specifies how new subprotocol paramete | ="RFC8832"/>. | |||
| r | <xref target="IANA_subproto_ids" format="default" sectionFormat="of" deri | |||
| values are registered. | vedContent="Section 9.1"/> specifies how values for new subprotocol parameters a | |||
| re registered. | ||||
| 'subprotocol' is an optional parameter. | 'subprotocol' is an optional parameter. | |||
| If the 'subprotocol' parameter is not present, then its value | If the 'subprotocol' parameter is not present, then its value | |||
| defaults to an empty string.</t> | defaults to an empty string.</t> | |||
| <t> Note: The empty string MAY also be ex | <aside pn="section-5.1.4-2"> | |||
| plicitly used as 'subprotocol' value, | <t indent="0" pn="section-5.1.4-2.1"> Note: The empty string can als | |||
| o be | ||||
| explicitly used as a 'subprotocol' value, | ||||
| such that 'subprotocol=""' is equivalent to the 'subprotocol' parameter n ot being | such that 'subprotocol=""' is equivalent to the 'subprotocol' parameter n ot being | |||
| present at all. <xref target="I-D.ietf-rtcweb-data-protocol"/> allows the | present at all. <xref target="RFC8832" format="default" sectionFormat="of | |||
| DATA_CHANNEL_OPEN message's 'Subprotocol' value to be an empty string. | " derivedContent="RFC8832"/> allows the | |||
| </t> | DATA_CHANNEL_OPEN message's 'Protocol' value to be an empty string. | |||
| </section> | </t> | |||
| <section title="Max-retr Parameter" anchor="max-r | </aside> | |||
| etr-param-definition"> | </section> | |||
| <t>This parameter indicates that the data | <section anchor="max-retr-param-definition" numbered="true" removeInRFC= | |||
| channel is partially reliable. | "false" toc="include" pn="section-5.1.5"> | |||
| <name slugifiedName="name-max-retr-parameter">'max-retr' Parameter</na | ||||
| me> | ||||
| <t indent="0" pn="section-5.1.5-1">This parameter indicates that the d | ||||
| ata channel is partially reliable. | ||||
| The 'max-retr' parameter indicates the maximal number of times a user mes sage will | The 'max-retr' parameter indicates the maximal number of times a user mes sage will | |||
| be retransmitted. The max-retr parameter is optional. If | be retransmitted. The 'max-retr' parameter is optional. If | |||
| the max-retr parameter and the max-time parameter are not present, then r | the 'max-retr' parameter and the 'max-time' parameter are not present, th | |||
| eliable | en reliable | |||
| transmission is performed as specified in <xref target="RFC4960"/>. | transmission is performed as specified in <xref target="RFC4960" format=" | |||
| default" sectionFormat="of" derivedContent="RFC4960"/>. | ||||
| This parameter maps to the 'Number of RTX' parameter | This parameter maps to the 'Number of RTX' parameter | |||
| defined in <xref target="I-D.ietf-rtcweb-data-protocol"/>.</t> | defined in <xref target="RFC8832" format="default" sectionFormat="of" der | |||
| </section> | ivedContent="RFC8832"/>.</t> | |||
| <section title="Max-time Parameter"> | </section> | |||
| <t> This parameter indicates that the dat | <section numbered="true" removeInRFC="false" toc="include" pn="section-5 | |||
| a channel is partially reliable. | .1.6"> | |||
| <name slugifiedName="name-max-time-parameter">'max-time' Parameter</na | ||||
| me> | ||||
| <t indent="0" pn="section-5.1.6-1"> This parameter indicates that the | ||||
| data channel is partially reliable. | ||||
| A user message will no longer be transmitted or retransmitted after | A user message will no longer be transmitted or retransmitted after | |||
| a specified life-time given in milliseconds in the 'max-time' | a specified lifetime, given in milliseconds, in the 'max-time' | |||
| parameter. The life-time starts when providing the user message to the pr | parameter. The lifetime starts when providing the user message to the pro | |||
| otocol stack. | tocol stack. | |||
| The max-time parameter is optional. If the max-retr parameter and the max-time | The 'max-time' parameter is optional. If the 'max-retr' parameter and the 'max- | |||
| parameter are not present, then reliable | time' parameter are not present, then reliable | |||
| transmission is performed as specified in <xref target="RFC4960"/>. | transmission is performed as specified in <xref target="RFC4960" format=" | |||
| default" sectionFormat="of" derivedContent="RFC4960"/>. | ||||
| This parameter maps to the 'Lifetime in ms' parameter | This parameter maps to the 'Lifetime in ms' parameter | |||
| defined in <xref target="I-D.ietf-rtcweb-data-protocol"/>.</t> | defined in <xref target="RFC8832" format="default" sectionFormat="of" der | |||
| </section> | ivedContent="RFC8832"/>.</t> | |||
| <section title="Ordered Parameter" anchor="ordere | </section> | |||
| d-param-description"> | <section anchor="ordered-param-description" numbered="true" removeInRFC= | |||
| <t>The 'ordered' parameter with value "tr | "false" toc="include" pn="section-5.1.7"> | |||
| ue" indicates that the receiver will | <name slugifiedName="name-ordered-parameter">'ordered' Parameter</name | |||
| > | ||||
| <t indent="0" pn="section-5.1.7-1">The 'ordered' parameter with value | ||||
| "true" indicates that the receiver will | ||||
| dispatch DATA chunks in the data channel to the upper layer | dispatch DATA chunks in the data channel to the upper layer | |||
| while preserving the order. The ordered parameter is optional and | while preserving the order. The 'ordered' parameter is optional and | |||
| takes two values: "true" for ordered and "false" for unordered delivery | takes two values -- "true" for ordered delivery and "false" for unordered | |||
| delivery -- | ||||
| with "true" as the default value. | with "true" as the default value. | |||
| Any other value is ignored and default "ordered=true" is assumed. | Any other value is ignored, and the default "ordered=true" is assumed. | |||
| In the absence of this parameter "ordered=true" is assumed. | In the absence of this parameter, "ordered=true" is assumed. | |||
| This parameter maps to | This parameter maps to | |||
| the ordered or unordered data channel types as defined in | the ordered or unordered data channel types as defined in | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>.</t> | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent | |||
| </section> | ="RFC8832"/>.</t> | |||
| <section title="Priority Parameter" anchor="prior | </section> | |||
| ity-param-description"> | <section anchor="priority-param-description" numbered="true" removeInRFC | |||
| <t>The 'priority' parameter indicates the | ="false" toc="include" pn="section-5.1.8"> | |||
| data channel's priority | <name slugifiedName="name-priority-parameter">'priority' Parameter</na | |||
| me> | ||||
| <t indent="0" pn="section-5.1.8-1">The 'priority' parameter indicates | ||||
| the data channel's priority | ||||
| relative to the priorities of other data channels, which may | relative to the priorities of other data channels, which may | |||
| additionally exist over the same SCTP association. | additionally exist over the same SCTP association. | |||
| The 'priority' parameter maps to the 'Priority' parameter defined in | The 'priority' parameter maps to the 'Priority' parameter defined in | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>. | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent ="RFC8832"/>. | |||
| The 'priority' parameter is optional. | The 'priority' parameter is optional. | |||
| In the absence of this parameter "priority=256" is assumed. | In the absence of this parameter, "priority=256" is assumed. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="DCMAP Multiplexing Category" anch | <section anchor="dcmap-mux-category" numbered="true" removeInRFC="false" | |||
| or="dcmap-mux-category"> | toc="include" pn="section-5.1.9"> | |||
| <t>The multiplexing category <xref target | <name slugifiedName="name-dcmap-multiplexing-category">DCMAP Multiplex | |||
| ="I-D.ietf-mmusic-sdp-mux-attributes"/> of the "a=dcmap:" attribute is SPECIAL. | ing Category</name> | |||
| </t> | <t indent="0" pn="section-5.1.9-1">The multiplexing category <xref tar | |||
| <t>As the usage of multiple SCTP associat | get="RFC8859" format="default" sectionFormat="of" derivedContent="RFC8859"/> of | |||
| ions on top of a single DTLS | the "a=dcmap:" attribute is SPECIAL. | |||
| association is outside the scope of <xref target="I-D.ietf-mmusic-sctp-sd | </t> | |||
| p"/>, | <t indent="0" pn="section-5.1.9-2">As the usage of multiple SCTP assoc | |||
| iations on top of a single DTLS | ||||
| association is outside the scope of <xref target="RFC8841" format="defaul | ||||
| t" sectionFormat="of" derivedContent="RFC8841"/>, | ||||
| no "a=dcmap:" attribute multiplexing rules are specified for the UDP/DTLS /SCTP and | no "a=dcmap:" attribute multiplexing rules are specified for the UDP/DTLS /SCTP and | |||
| TCP/DTLS/SCTP proto values. | TCP/DTLS/SCTP proto values. | |||
| If future extensions of <xref target="I-D.ietf-mmusic-sctp-sdp"/> define how to | If future extensions of <xref target="RFC8841" format="default" sectionFo rmat="of" derivedContent="RFC8841"/> define how to | |||
| negotiate multiplexing of multiple SCTP associations on top of a single D TLS | negotiate multiplexing of multiple SCTP associations on top of a single D TLS | |||
| association, or how to add multiple SCTP associations to one BUNDLE group , then | association or how to add multiple SCTP associations to one BUNDLE group, then | |||
| multiplexing rules for the "a=dcmap:" attribute need to be | multiplexing rules for the "a=dcmap:" attribute need to be | |||
| defined as well, for instance in an extension of this SDP offer/answer ba | defined as well -- for instance, in an extension of this specification. | |||
| sed data channel | </t> | |||
| negotiation specification. | </section> | |||
| </t> | </section> | |||
| </section> | <section anchor="prot_att" numbered="true" removeInRFC="false" toc="includ | |||
| </section> | e" pn="section-5.2"> | |||
| <!-- subsec-sdp-attr-for-dc-par-neg --> | <name slugifiedName="name-sdp-dcsa-attribute">SDP DCSA Attribute</name> | |||
| <section title="SDP DCSA Attribute" anchor="prot_att"> | <t indent="0" pn="section-5.2-1">In the SDP media description, each data | |||
| <t>In the SDP media description, each data channe | channel declaration | |||
| l declaration MAY also be followed | <bcp14>MAY</bcp14> also be followed by other SDP attributes, which | |||
| by other media level SDP attributes, which are either specifically defined | apply to the corresponding data channel and its subprotocol. Each of | |||
| for or | these attributes is represented by one new "a=dcsa:" attribute line | |||
| applied to the subprotocol in use. | that references another SDP attribute defined for use with this data | |||
| Each of these attributes is represented by one new attribute line, and | channel's subprotocol. Instructions for registering attributes for use | |||
| it includes the contents of a media-level SDP attribute already | with a data channel are given in <xref target="IANA-reg-data-channel-att | |||
| defined for use with this (sub)protocol in another IETF document. | ribs" format="default" sectionFormat="of" derivedContent="Section 9.3"/>.</t> | |||
| Subprotocol specific attributes MAY also be defined for exclusive | <t indent="0" pn="section-5.2-2">Each SDP attribute that is related to t | |||
| use with data channel transport, but MUST use the same syntax | he subprotocol and that would normally | |||
| described here for other subprotocol related attributes.</t> | be used to negotiate the subprotocol using the SDP offer/answer mechanism | |||
| <t>Each SDP attribute, related to the subprotocol | is replaced with | |||
| , that would normally | an attribute of the form "a=dcsa:stream-id original‑attribute", | |||
| be used to negotiate the subprotocol using SDP offer/answer is replaced wi | where "dcsa" stands for "data channel subprotocol attribute", | |||
| th | "stream-id" is the SCTP stream identifier assigned to this subprotocol | |||
| an attribute of the form "a=dcsa:stream-id original-attribute", | instance, and "original-attribute" represents the contents of the | |||
| where dcsa stands for "data channel subprotocol attribute", | subprotocol-related attribute to be included.</t> | |||
| stream-id is the SCTP stream identifier assigned to this subprotocol | <t indent="0" pn="section-5.2-3">The same syntax applies to any other SD | |||
| instance, and original-attribute represents the contents of the | P attribute required for | |||
| subprotocol related attribute to be included.</t> | ||||
| <t>The same syntax applies to any other SDP attri | ||||
| bute required for | ||||
| negotiation of this instance of the subprotocol.</t> | negotiation of this instance of the subprotocol.</t> | |||
| <t>The detailed offer/answer procedures for the d | <t indent="0" pn="section-5.2-4">The detailed offer/answer procedures fo | |||
| csa attribute are dependent on the associated sub-protocol. If no offer/answer p | r the dcsa attribute are | |||
| rocedures exist for the sub-protocol when used outside of the dcsa attribute, no | dependent on the associated subprotocol. If no offer/answer | |||
| specification is needed for use with dcsa. The IANA registration procedures for | procedures exist for the subprotocol when used outside of the dcsa | |||
| the WebSocket Subprotocol Name Registry (<xref target="IANA_subproto_ids"/>) do | attribute, no specification is needed for use with dcsa. The IANA | |||
| not strictly require a specification of the offer/answer procedures for the sub | (Internet Assigned Numbers Authority) registration procedures for the "W | |||
| -protocol when used with dcsa. If the sub-protocol has defined offer/answer proc | ebSocket Subprotocol Name Registry" (<xref target="IANA_subproto_ids" format="de | |||
| edures when used outside of dcsa, such a specification is encouraged to ensure i | fault" sectionFormat="of" derivedContent="Section 9.1"/>) do not strictly requir | |||
| nteroperability. If the sub-protocol has defined offer/answer procedures when us | e a specification of the offer/answer procedures for the subprotocol when used w | |||
| ed outside of dcsa, but no specification exists for the offer/answer procedures | ith dcsa. If the subprotocol has defined offer/answer procedures when used outsi | |||
| for the sub-protocol when used with dcsa, implementations SHOULD assume the use | de of dcsa, such a specification is encouraged to ensure interoperability. If th | |||
| of the default values for all otherwise-negotiable and applicable sub-protocol p | e subprotocol has defined offer/answer procedures when used outside of dcsa but | |||
| arameters. | no specification exists for the offer/answer procedures for the subprotocol when | |||
| used with dcsa, implementations <bcp14>SHOULD</bcp14> assume the use of the def | ||||
| ault values for all otherwise-negotiable and applicable subprotocol parameters. | ||||
| </t> | </t> | |||
| <section title="DCSA Syntax" anchor="dcsa-attribu | <section anchor="dcsa-attribute" numbered="true" removeInRFC="false" toc | |||
| te"> | ="include" pn="section-5.2.1"> | |||
| <t> | <name slugifiedName="name-dcsa-attribute-syntax">DCSA Attribute Syntax | |||
| <figure align="left" title=""> | </name> | |||
| <artwork align="left"><![ | <t indent="0" pn="section-5.2.1-1">"a=dcsa:" is a media-level attribut | |||
| CDATA[ | e having the following definition and | |||
| Formal Syntax: | ABNF (Augmented Backus-Naur Form) syntax <xref target="RFC5234" format="default" | |||
| sectionFormat="of" derivedContent="RFC5234"/>. | ||||
| Name: dcsa | </t> | |||
| <table anchor="dcsa-attrib" align="center" pn="table-2"> | ||||
| Value: dcsa-value | <name slugifiedName="name-adcsa-attribute-definition">"a=dcsa:" Attr | |||
| ibute Definition</name> | ||||
| Usage Level: media | <thead> | |||
| <tr> | ||||
| Charset Dependent: no | <th colspan="2" align="center" rowspan="1">"a=dcsa:" Attribute</ | |||
| th> | ||||
| Syntax: | </tr> | |||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Name</td> | ||||
| <td align="left" colspan="1" rowspan="1">dcsa</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Value</td> | ||||
| <td align="left" colspan="1" rowspan="1">dcsa-value</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Usage Level</td> | ||||
| <td align="left" colspan="1" rowspan="1">media</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left" colspan="1" rowspan="1">Charset Dependent</td> | ||||
| <td align="left" colspan="1" rowspan="1">No</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t indent="0" pn="section-5.2.1-3">Formal syntax:</t> | ||||
| <sourcecode name="abnf-2" type="abnf" markers="false" pn="section-5.2. | ||||
| 1-4"> | ||||
| dcsa-value = stream-id SP attribute | dcsa-value = stream-id SP attribute | |||
| stream-id = 1*5DIGIT | stream-id = 1*5DIGIT | |||
| attribute = <from-RFC4566> | attribute = <from RFC 8866></sourcecode> | |||
| <t indent="0" pn="section-5.2.1-5">Example:</t> | ||||
| Example: | <sourcecode name="sdp-2" type="sdp" markers="false" pn="section-5.2.1- | |||
| 6"> | ||||
| a=dcmap:2 subprotocol="msrp";ordered=true;label="msrp" | a=dcmap:2 subprotocol="msrp";ordered=true;label="msrp" | |||
| a=dcsa:2 accept-types:text/plain | a=dcsa:2 accept-types:text/plain</sourcecode> | |||
| ]]></artwork> | <t indent="0" pn="section-5.2.1-7">The reference to <xref target="RFC8 | |||
| </figure> | 866" format="default" sectionFormat="of" derivedContent="RFC8866"/> defines wher | |||
| </t> | e the | |||
| <t>Note that the reference to <xref targe | ||||
| t="I-D.ietf-mmusic-rfc4566bis"/> defines where the | ||||
| attribute definition can be found; | attribute definition can be found; | |||
| it does not provide any limitation on support of attributes | it does not provide any limitations on support of attributes | |||
| defined in other documents in accordance with this attribute | defined in other documents in accordance with this attribute | |||
| definition. Note however that not all SDP attributes are suitable | definition. However, not all SDP attributes are suitable | |||
| as a "a=dcsa:" parameter. IANA SDP parameters contains | as an "a=dcsa:" parameter. The registry of IANA SDP parameters contains | |||
| the lists of IANA (Internet Assigned Numbers Authority) | the lists of IANA-registered session-level and media-level or | |||
| registered session and media level or | media-level-only SDP attributes. | |||
| media level only SDP attributes.</t> | </t> | |||
| <t>Thus in the example above, the origina | <t indent="0" pn="section-5.2.1-8">Thus, in the example above, the ori | |||
| l attribute line | ginal attribute line | |||
| "a=accept-types:text/plain" is represented by the attribute line | "a=accept‑types:text/plain" is represented by the attribute line | |||
| "a=dcsa:2 accept-types:text/plain", which specifies that this | "a=dcsa:2 accept-types:text/plain", which specifies that this | |||
| instance of the MSRP subprotocol being transported on the SCTP association using | instance of the MSRP subprotocol being transported on the SCTP association using | |||
| the data channel with stream id 2 accepts | the data channel with stream id 2 accepts | |||
| plain text files.</t> | plaintext files.</t> | |||
| <t>As opposed to the data channel "a=dcma | <t indent="0" pn="section-5.2.1-9">As opposed to the data channel "a=d | |||
| p:" attribute parameters, | cmap:" attribute parameters, | |||
| these parameters | these parameters | |||
| are subject to offer/answer negotiation following the procedures | are subject to offer/answer negotiation, following the procedures | |||
| defined in the subprotocol specific documents.</t> | defined in the subprotocol-specific documents.</t> | |||
| <t>It is assumed that in general the usag | <t indent="0" pn="section-5.2.1-10">It is assumed that in general the | |||
| es of subprotocol related media | usages of subprotocol-related | |||
| level attributes are independent from the subprotocol's transport protocol | media-level attributes are independent from the subprotocol's transport pr | |||
| . | otocol. | |||
| Such transport protocol independent subprotocol related attributes are | Such transport-protocol-independent subprotocol-related attributes are | |||
| used in the same way as defined in the original subprotocol specification, | used in the same way as defined in the original subprotocol specification, | |||
| also if the subprotocol is transported over a data channel and if the | also if the subprotocol is transported over a data channel and if the | |||
| attribute is correspondingly embedded in a "a=dcsa" attribute. | attribute is correspondingly embedded in an "a=dcsa:" attribute. | |||
| </t> | </t> | |||
| <t>There may be cases, where the usage of | <t indent="0" pn="section-5.2.1-11">There may be cases where the usage | |||
| a subprotocol related media level | of a subprotocol-related | |||
| media-level | ||||
| attribute depends on the subprotocol's transport protocol. | attribute depends on the subprotocol's transport protocol. | |||
| In such cases the subprotocol related usage of the attribute is expected t | In such cases, the subprotocol-related usage of the attribute is expected | |||
| o be | to be | |||
| described for the data channel transport. A data channel specific usage of | described for the data channel transport. A data-channel-specific usage of | |||
| a | a | |||
| subprotocol attribute is expected to be specified in the same document tha t | subprotocol attribute is expected to be specified in the same document tha t | |||
| registers the subprotocol's identifier for data channel usage as described in | registers the subprotocol's identifier for data channel usage as described in | |||
| <xref target="IANA_subproto_ids"/>. | <xref target="IANA_subproto_ids" format="default" sectionFormat="of" deriv | |||
| </t> | edContent="Section 9.1"/>. | |||
| <t>SDP attributes that are only defined f | </t> | |||
| or use at the | </section> | |||
| dcsa usage level, SHALL use the dcsa usage level when registering the | <section anchor="dcsa-mux-category" numbered="true" removeInRFC="false" | |||
| attribute. If existing media attributes are used in a datachannel | toc="include" pn="section-5.2.2"> | |||
| subprotocol specific way, then a new dcsa usage level | <name slugifiedName="name-dcsa-multiplexing-category">DCSA Multiplexin | |||
| MUST be defined for the existing media attribute. Where the SDP | g Category</name> | |||
| attribute is applicable to a particular subprotocol/s this SHALL also | <t indent="0" pn="section-5.2.2-1">The multiplexing category of the "a | |||
| be registered by indicating the applicable subprotocol identifiers | =dcsa:" attribute is SPECIAL. | |||
| (see /<xref target="I-D.ietf-mmusic-rfc4566bis"/> section-8.5) along with the | </t> | |||
| dcsa usage level. | <t indent="0" pn="section-5.2.2-2">As the usage of multiple SCTP assoc | |||
| iations on top of a single DTLS | ||||
| </t> | association is outside the scope of <xref target="RFC8841" format="defaul | |||
| </section> | t" sectionFormat="of" derivedContent="RFC8841"/>, | |||
| <section title="DCSA Multiplexing Category" ancho | ||||
| r="dcsa-mux-category"> | ||||
| <t>The multiplexing category of the "a=dc | ||||
| sa:" attribute is SPECIAL. | ||||
| </t> | ||||
| <t>As the usage of multiple SCTP associat | ||||
| ions on top of a single DTLS | ||||
| association is outside the scope of <xref target="I-D.ietf-mmusic-sctp-sd | ||||
| p"/>, | ||||
| no "a=dcsa:" attribute multiplexing rules are specified for the UDP/DTLS/ SCTP and | no "a=dcsa:" attribute multiplexing rules are specified for the UDP/DTLS/ SCTP and | |||
| TCP/DTLS/SCTP proto values. | TCP/DTLS/SCTP proto values. | |||
| If future extensions of <xref target="I-D.ietf-mmusic-sctp-sdp"/> define | If future extensions of <xref target="RFC8841" format="default" sectionFo | |||
| how to | rmat="of" derivedContent="RFC8841"/> define how to | |||
| negotiate multiplexing of multiple SCTP associations on top of a single D TLS | negotiate multiplexing of multiple SCTP associations on top of a single D TLS | |||
| association, or how to add multiple SCTP associations to one BUNDLE group , then | association or how to add multiple SCTP associations to one BUNDLE group, then | |||
| multiplexing rules for the "a=dcsa:" attribute need to be | multiplexing rules for the "a=dcsa:" attribute need to be | |||
| defined as well, for instance in an extension of this SDP based data chan | defined as well -- for instance, in an extension of this specification. | |||
| nel | </t> | |||
| negotiation specification. | </section> | |||
| </t> | </section> | |||
| </section> | </section> | |||
| </section> | <section anchor="section_procedures" numbered="true" removeInRFC="false" toc | |||
| <!-- prot_att --> | ="include" pn="section-6"> | |||
| </section> | <name slugifiedName="name-sdp-offer-answer-procedures">SDP Offer/Answer Pr | |||
| <!-- sdp_sync --> | ocedures</name> | |||
| <section title="SDP Offer/Answer Procedures" anchor="section_proc | <t indent="0" pn="section-6-1">This section defines how data channels can | |||
| edures"> | be negotiated using the SDP | |||
| <t>This section defines how data channels can be negotiat | ||||
| ed using the SDP | ||||
| offer/answer mechanism. A given media description can describe multiple | offer/answer mechanism. A given media description can describe multiple | |||
| data channels (each represented by a separate SDP dcmap attribute) that | data channels (each represented by a separate SDP dcmap attribute) that | |||
| can be created, modified and closed using different offer/answer exchange s. | can be created, modified, and closed using different offer/answer exchang es. | |||
| The procedures in this section apply for a given data channel. | The procedures in this section apply for a given data channel. | |||
| </t> | </t> | |||
| <t>The generic offer/answer procedures for negotiating th | <t indent="0" pn="section-6-2">The generic offer/answer procedures for neg | |||
| e SCTP association used to realize data channels are defined in <xref target="I- | otiating the SCTP association used to realize data channels are defined in <xref | |||
| D.ietf-mmusic-sctp-sdp"/>. This section only defines the data channel specific p | target="RFC8841" format="default" sectionFormat="of" derivedContent="RFC8841"/> | |||
| rocedures.</t> | . This section only defines the data-channel-specific procedures.</t> | |||
| <t> “Initial offer” refers to the offer in which a data c | <t indent="0" pn="section-6-3"> "Initial offer" refers to the offer in whi | |||
| hannel is opened. It can be the initial offer, or a subsequent offer, of the ass | ch a data channel is | |||
| ociated SDP session.</t> | opened. It can be either the initial offer or a subsequent offer of the as | |||
| <t>The detailed offer/answer procedures for the dcsa attr | sociated SDP session.</t> | |||
| ibute are dependent on the associated sub-protocol see <xref target="prot_att"/> | <t indent="0" pn="section-6-4">The detailed offer/answer procedures for th | |||
| . | e dcsa attribute are dependent on the associated subprotocol; see <xref target=" | |||
| prot_att" format="default" sectionFormat="of" derivedContent="Section 5.2"/>. | ||||
| </t> | </t> | |||
| <section title="Managing Stream Identifiers" anchor="id_m | <section anchor="id_mgmt" numbered="true" removeInRFC="false" toc="include | |||
| ngt"> | " pn="section-6.1"> | |||
| <t> | <name slugifiedName="name-managing-stream-identifiers">Managing Stream I | |||
| dentifiers</name> | ||||
| In order to avoid SCTP Stream identifier collisio | <t indent="0" pn="section-6.1-1"> | |||
| ns, in alignment with <xref target="I-D.ietf-rtcweb-data-protocol"/>, the endpoi | In order to avoid SCTP Stream identifier collisions, in alignment with | |||
| nt acting as DTLS client (for | <xref target="RFC8832" format="default" sectionFormat="of" derivedConten | |||
| the SCTP association used to realize data channels) MUST use even identifier val | t="RFC8832"/>, the endpoint acting as a DTLS client (for | |||
| ues, | the SCTP association used to realize data channels) <bcp14>MUST</bcp14> use even | |||
| and the endpoint acting as DTLS server MUST use odd identifier values. </t> | identifier values, | |||
| <t>SCTP stream identifiers associated with data c | and the endpoint acting as a DTLS server <bcp14>MUST</bcp14> use odd identifier | |||
| hannels that have been negotiated using DCEP MUST NOT be included in SDP offers | values. </t> | |||
| and answers. | <t indent="0" pn="section-6.1-2">SCTP stream identifiers associated with | |||
| </t> | data channels that have been negotiated using DCEP <bcp14>MUST NOT</bcp14> be i | |||
| </section> | ncluded in SDP offers and answers. | |||
| <!-- id_mngt --> | </t> | |||
| <section title="Negotiating Data Channel Parameters" anch | </section> | |||
| or="param_negotiation"> | <section anchor="param_negotiation" numbered="true" removeInRFC="false" to | |||
| <t> | c="include" pn="section-6.2"> | |||
| The data channel types defined in <xref target="I-D.ietf-rtcweb-data-protocol | <name slugifiedName="name-negotiating-data-channel-pa">Negotiating Data | |||
| "/> are | Channel Parameters</name> | |||
| mapped to the dcmap SDP attribute parameters in the following manner where "o | <t indent="0" pn="section-6.2-1"> | |||
| rdered=true" is the default and may be omitted: | The data channel types defined in <xref target="RFC8832" format="default" sec | |||
| tionFormat="of" derivedContent="RFC8832"/> are | ||||
| mapped to the dcmap SDP attribute parameters in the following manner, where " | ||||
| ordered=true" is the default and may be omitted: | ||||
| </t> | </t> | |||
| <t> | <sourcecode name="data-channel-items" type="sdp" markers="false" pn="sec | |||
| <figure align="left" title=""> | tion-6.2-2"> | |||
| <artwork align="left"><![CDATA[ | ||||
| DATA_CHANNEL_RELIABLE | DATA_CHANNEL_RELIABLE | |||
| ordered=true | ordered=true | |||
| DATA_CHANNEL_RELIABLE_UNORDERED | DATA_CHANNEL_RELIABLE_UNORDERED | |||
| ordered=false | ordered=false | |||
| DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT | DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT | |||
| ordered=true;max-retr=<number of retransmissions> | ordered=true;max-retr=<number of retransmissions> | |||
| DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_UNORDERED | DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_UNORDERED | |||
| ordered=false;max-retr=<number of retransmissions> | ordered=false;max-retr=<number of retransmissions> | |||
| DATA_CHANNEL_PARTIAL_RELIABLE_TIMED | DATA_CHANNEL_PARTIAL_RELIABLE_TIMED | |||
| ordered=true;max-time=<lifetime in milliseconds> | ordered=true;max-time=<lifetime in milliseconds> | |||
| DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_UNORDERED | DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_UNORDERED | |||
| ordered=false;max-time=<lifetime in milliseconds> | ordered=false;max-time=<lifetime in milliseconds></sourcecode> | |||
| ]]></artwork> | <t indent="0" pn="section-6.2-3"> | |||
| </figure> | By definition, 'max-retr' and 'max-time' are mutually exclusive, | |||
| </t> | so both <bcp14>MUST NOT</bcp14> be present in the "a=dcmap:" attribute | |||
| <t> | line. If an SDP offer contains both of these parameters, then the | |||
| By definition max-retr and max-time are mutually exclusive, | receiver of such an SDP offer <bcp14>MUST</bcp14> reject the SDP offer. If a | |||
| so both MUST NOT be present in the "a=dcmap:" attribute | n SDP | |||
| line. If an SDP offer contains both of these parameters then the | answer contains both of these parameters, then the offerer <bcp14>MUST</bcp14 | |||
| receiver of such an SDP offer MUST reject the SDP offer. If an SDP | > treat | |||
| answer contains both of these parameters then the offerer MUST treat | ||||
| the associated SDP offer/answer as failed. </t> | the associated SDP offer/answer as failed. </t> | |||
| </section> | </section> | |||
| <!-- ="Negotiating Data Channel Parameters" --> | <section anchor="opendc" numbered="true" removeInRFC="false" toc="include" | |||
| <section title="Generating the Initial Offer for A Data C | pn="section-6.3"> | |||
| hannel" anchor="opendc"> | <name slugifiedName="name-generating-the-initial-offe">Generating the In | |||
| <t>When an offerer sends an initial offer, in ord | itial Offer for a Data Channel</name> | |||
| er to negotiate an SCTP stream for a data channel, the offerer: | <t indent="0" pn="section-6.3-1">When an offerer sends an initial offer, | |||
| in order to negotiate an SCTP stream for a data channel, the offerer | ||||
| <list style="symbols"> | ||||
| <t>SHALL include an SDP dcmap att | ||||
| ribute (<xref target="sdp_synt"/> and <xref target="param_negotiation"/>) assoc | ||||
| iated with the data channel in the “m=” section representing the SCTP associatio | ||||
| n used to realize the data channel; and | ||||
| </t> | ||||
| <t>MAY include one or more SDP dc | ||||
| sa attributes (<xref target="prot_att"/>) associated with the | ||||
| data channel. The value of the stream-id part of each attribute SHALL matc | ||||
| h the dcmap-stream-id value of the dcmap attribute. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Generating SDP Answer"> | ||||
| <t>When an answerer receives an offer that includ | ||||
| es an “m=" section for an SCTP association, that describes an SCTP stream for a | ||||
| data channel, if the answerer accepts the data channel it: | ||||
| <list style="symbols"> | </t> | |||
| <t>SHALL include an SDP dcmap att | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| ribute (<xref target="sdp_synt"/> and <xref target="param_negotiation"/>) | .3-2"> | |||
| <li pn="section-6.3-2.1"> | ||||
| <bcp14>SHALL</bcp14> include an SDP dcmap attribute | ||||
| (Sections <xref target="subsec-sdp-attr-for-dc-par-neg" format="counte | ||||
| r" sectionFormat="of" derivedContent="5.1"/> and <xref target="param_negotiatio | ||||
| n" format="counter" sectionFormat="of" derivedContent="6.2"/>) associated with t | ||||
| he data channel in the "m=" section representing the SCTP association used to re | ||||
| alize the data channel, and | ||||
| </li> | ||||
| <li pn="section-6.3-2.2"> | ||||
| <bcp14>MAY</bcp14> include one or more SDP dcsa attributes (<xref ta | ||||
| rget="prot_att" format="default" sectionFormat="of" derivedContent="Section 5.2" | ||||
| />) associated with the | ||||
| data channel. The value of the 'stream-id' part of each attribute <bcp14>S | ||||
| HALL</bcp14> match the 'dcmap-stream-id' value of the dcmap attribute. | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-6.4 | ||||
| "> | ||||
| <name slugifiedName="name-generating-the-sdp-answer">Generating the SDP | ||||
| Answer</name> | ||||
| <t indent="0" pn="section-6.4-1">When an answerer receives an offer that | ||||
| includes an "m=" section | ||||
| for an SCTP association, the offer describes an SCTP stream for a data c | ||||
| hannel, if the answerer accepts the data channel, it | ||||
| </t> | ||||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | ||||
| .4-2"> | ||||
| <li pn="section-6.4-2.1"> | ||||
| <bcp14>SHALL</bcp14> include an SDP dcmap attribute | ||||
| (Sections <xref target="subsec-sdp-attr-for-dc-par-neg" format="counte | ||||
| r" sectionFormat="of" derivedContent="5.1"/> and <xref target="param_negotiatio | ||||
| n" format="counter" sectionFormat="of" derivedContent="6.2"/>) | ||||
| associated | associated | |||
| with the data channel in the "m=" section representing the SCTP association used | with the data channel in the "m=" section representing the SCTP association used | |||
| to realize the data channel. The value of the dcmap-stream-id, max-retr and max- | to realize the data channel. The value of the 'dcmap-stream-id', 'max-retr', and | |||
| time | 'max-time' | |||
| values of the dcmap attribute SHALL be identical to the value used for the data | values of the dcmap attribute <bcp14>SHALL</bcp14> be identical to the value use | |||
| channel | d for the data channel | |||
| in the offer; and | in the offer, and | |||
| </li> | ||||
| </t> | <li pn="section-6.4-2.2"> | |||
| <t>MAY include one or more SDP dc | <bcp14>MAY</bcp14> include one or more SDP dcsa attributes (<xref ta | |||
| sa attributes (<xref target="prot_att"/>) associated with the | rget="prot_att" format="default" sectionFormat="of" derivedContent="Section 5.2" | |||
| />) associated with the | ||||
| data channel. | data channel. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | <section numbered="true" removeInRFC="false" toc="include" pn="section-6.5 | |||
| <section title="Offerer Processing of the SDP Answer"> | "> | |||
| <t>An offerer receiving an SDP answer performs th | <name slugifiedName="name-offerer-processing-of-the-s">Offerer Processin | |||
| e following: | g of the SDP Answer</name> | |||
| <t indent="0" pn="section-6.5-1">An offerer receiving an SDP answer perf | ||||
| orms the following: | ||||
| <list style="symbols"> | </t> | |||
| <t>SHALL close any created data c | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| hannels as described in | .5-2"> | |||
| <xref target="close-dc"/> | <li pn="section-6.5-2.1">It <bcp14>SHALL</bcp14> close any created dat | |||
| a channels as described in | ||||
| <xref target="close-dc" format="default" sectionFormat="of" derivedConten | ||||
| t="Section 6.6.1"/> | ||||
| for which the expected "a=dcmap:" attributes are not | for which the expected "a=dcmap:" attributes are not | |||
| present in the SDP answer. If the SDP answer has no "a=dcmap" attribute e | present in the SDP answer. If the SDP answer has no "a=dcmap:" attributes | |||
| ither the peer does not support "a=dcmap:" attributes or | , either the peer does not support "a=dcmap:" attributes or | |||
| it rejected all the data channels. In either case the offerer closes | it rejected all the data channels. In either case, the offerer | |||
| all the SDP offered | closes all the data channels offered by SDP that were open at the ti | |||
| data channels that were open at the time of offer. | me of the offer. | |||
| The DTLS association and SCTP association will still be setup. At th | The DTLS association and SCTP association will still be set up. At t | |||
| is | his | |||
| point the offerer may use DCEP negotiation <xref target="I-D.ietf-rtcweb-data | point, the offerer may use DCEP negotiation <xref target="RFC8832" format="de | |||
| -protocol"/> to open data channels</t> | fault" sectionFormat="of" derivedContent="RFC8832"/> to open data channels.</li> | |||
| </list> | </ul> | |||
| </t> | <t indent="0" pn="section-6.5-3">Each agent application <bcp14>MUST</bcp | |||
| <t>Each agent application MUST wait to send data | 14> wait to send data until it has | |||
| until it has | ||||
| confirmation that the data channel at the peer is instantiated. | confirmation that the data channel at the peer is instantiated. | |||
| For WebRTC, this is when both data channel stacks have channel | For WebRTC, this is when both data channel stacks have channel | |||
| parameters instantiated. This occurs: | parameters instantiated and occurs as follows: | |||
| <list style="symbols"> | </t> | |||
| <t>At both peers when a data chan | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| nel is created without a previously | .5-4"> | |||
| <li pn="section-6.5-4.1">At both peers when a data channel is created | ||||
| without a previously | ||||
| established SCTP association, as soon as the SCTP association | established SCTP association, as soon as the SCTP association | |||
| is successfully established.</t> | is successfully established.</li> | |||
| <t>At the agent receiving an SDP | <li pn="section-6.5-4.2">At the agent receiving an SDP offer for which | |||
| offer for which there is an | there is an | |||
| established SCTP association, as soon as it creates the | established SCTP association, as soon as it creates the | |||
| negotiated data channel based on information | negotiated data channel based on information | |||
| signaled in the SDP offer.</t> | signaled in the SDP offer.</li> | |||
| <t>At the agent sending an SDP of | <li pn="section-6.5-4.3">At the agent sending an SDP offer to create a | |||
| fer to create a new data channel for which there is an established SCTP | new data channel for which there is an established SCTP | |||
| association, when it receives the SDP answer confirming acceptance | association, when it receives the SDP answer confirming acceptance | |||
| of the data channel or when it begins to receive data on the | of the data channel or when it begins to receive data on the | |||
| data channel from the peer, whichever occurs first.</t> | data channel from the peer, whichever occurs first.</li> | |||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | <section numbered="true" removeInRFC="false" toc="include" pn="section-6.6 | |||
| <!-- opendc --> | "> | |||
| <section title="Modifying the Session"> | <name slugifiedName="name-modifying-the-session">Modifying the Session</ | |||
| <t>When an offer sends a subsequent offer, that i | name> | |||
| ncludes information for | <t indent="0" pn="section-6.6-1">When an offerer sends a subsequent offe | |||
| r that includes information for | ||||
| a previously negotiated data channel, unless the offerer intends to | a previously negotiated data channel, unless the offerer intends to | |||
| close the data channel (<xref target="close-dc"/>), the offerer SHALL include the | close the data channel (<xref target="close-dc" format="default" sectionForma t="of" derivedContent="Section 6.6.1"/>), the offerer <bcp14>SHALL</bcp14> inclu de the | |||
| previously negotiated SDP attributes and attribute values associated with the | previously negotiated SDP attributes and attribute values associated with the | |||
| data channel. The answerer may reject the offer. The means for rejecting an o ffer are dependent on | data channel. The answerer may reject the offer. The means for rejecting an o ffer are dependent on | |||
| the higher layer protocol. The offer/answer exchange is atomic; if the answe | the higher-layer protocol. The offer/answer exchange is atomic; if the answe | |||
| r is rejected, the session reverts to the state prior to the | r is rejected, the session reverts to the state prior to the | |||
| offer <xref target="RFC3264"/>. | offer <xref target="RFC3264" format="default" sectionFormat="of" derivedConte | |||
| nt="RFC3264"/>. | ||||
| </t> | ||||
| <section title="Closing a Data Channel" anchor="c | ||||
| lose-dc"> | ||||
| <t>In order to close a data channel, the | ||||
| endpoint that wants to close | ||||
| SHALL send the SCTP SSN reset message <xref target="RFC6525"/>, following the | ||||
| procedures in section 6.7 of <xref target="I-D.ietf-rtcweb-data-channel"/>. | ||||
| In addition, if the closed data channel was negotiated using the offer/answer me | </t> | |||
| chanism <xref target="opendc"/>, the endpoint that closed the data channel SHALL | <section anchor="close-dc" numbered="true" removeInRFC="false" toc="incl | |||
| send a subsequent offer in which it either: | ude" pn="section-6.6.1"> | |||
| <name slugifiedName="name-closing-a-data-channel">Closing a Data Chann | ||||
| el</name> | ||||
| <t indent="0" pn="section-6.6.1-1">In order to close a data channel, t | ||||
| he endpoint that wants to | ||||
| close the data channel | ||||
| <bcp14>SHALL</bcp14> send an SCTP SSN Reset message <xref target="RFC6525" fo | ||||
| rmat="default" sectionFormat="of" derivedContent="RFC6525"/>, following the proc | ||||
| edure in <xref target="RFC8831" sectionFormat="of" section="6.7" format="default | ||||
| " derivedLink="https://rfc-editor.org/rfc/rfc8831#section-6.7" derivedContent="R | ||||
| FC8831"/>. | ||||
| In addition, if the closed data channel was negotiated using the offer/answer | ||||
| mechanism (<xref target="opendc" format="default" sectionFormat="of" derivedCont | ||||
| ent="Section 6.3"/>), the endpoint that closed the data channel | ||||
| <bcp14>SHALL</bcp14> send a subsequent offer in which it does one of the followi | ||||
| ng: | ||||
| </t> | </t> | |||
| <t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section | |||
| <list style="symbols"> | -6.6.1-2"> | |||
| <t> | <li pn="section-6.6.1-2.1">Removes the SDP dcmap attribute and SDP d | |||
| removes the SDP dcmap attribute and SDP dcsa attributes associated with the c | csa attributes | |||
| losed data channel. Once the endpoint receives a successful answer, the SCTP str | associated with the closed data channel. Once the endpoint | |||
| eam identifier value can later be used for a new data channel (negotiated using | receives a successful answer, the SCTP stream identifier value can | |||
| DCTP or using the offer/answer mechanism); or</t> | later be used for a new data channel (negotiated using either SCTP | |||
| <t>after a reset has been | or the offer/answer mechanism), or | |||
| performed re-uses the SCTP stream used for the closed data channel for a new da | </li> | |||
| ta channel, using the procedures in <xref target="opendc"/>. The offerer SHALL u | <li pn="section-6.6.1-2.2">After a reset has been performed, reuses | |||
| se a different SDP dcmap attribute value for the data channel using the same SCT | the SCTP stream used for the closed data channel for a new data channel, followi | |||
| P stream. | ng the procedure in <xref target="opendc" format="default" sectionFormat="of" de | |||
| rivedContent="Section 6.3"/>. The offerer <bcp14>SHALL</bcp14> use a different S | ||||
| </t> | DP dcmap attribute value for the data channel using the same SCTP stream. | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| </section> | </section> | |||
| <!-- Closing a Data Channel --> | </section> | |||
| </section> | <section anchor="various_SDP_OA_considerations" numbered="true" removeInRF | |||
| <section title="Various SDP Offer/Answer Considerations" | C="false" toc="include" pn="section-6.7"> | |||
| anchor="various_SDP_OA_considerations"> | <name slugifiedName="name-various-sdp-offer-answer-co">Various SDP Offer | |||
| <t> | /Answer Considerations</name> | |||
| <list> | <t indent="0" pn="section-6.7-1">An SDP offer or answer has no "a=dcmap: | |||
| <t>An SDP offer or answer has no | " attributes but has "a=dcsa:" attributes: | |||
| "a=dcmap:" attributes but has "a=dcsa:" attributes. | </t> | |||
| <list style="symbols"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| <t>This is consid | .7-2"> | |||
| ered an error case. In this case the receiver of such an | <li pn="section-6.7-2.1">This is considered an error case. In this cas | |||
| SDP offer or answer MUST discard this "a=dcsa:" attributes. | e, the receiver of such an | |||
| </t> | SDP offer or answer <bcp14>MUST</bcp14> discard the "a=dcsa:" attrib | |||
| </list> | utes. | |||
| </t> | </li> | |||
| <t>SDP offer or answer has an "a= | </ul> | |||
| dcsa" attribute, whose subprotocol attribute | <t indent="0" pn="section-6.7-3">An SDP offer or answer has an "a=dcsa:" | |||
| is unknown. | attribute whose subprotocol attribute | |||
| <list style="symbols"> | is unknown: | |||
| <t>The receiver o | </t> | |||
| f such an SDP offer or answer SHOULD ignore this | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| entire "a=dcsa" attribute line. | .7-4"> | |||
| </t> | <li pn="section-6.7-4.1">The receiver of such an SDP offer or answer < | |||
| </list> | bcp14>SHOULD</bcp14> ignore this | |||
| </t> | entire "a=dcsa:" attribute line. | |||
| <t>SDP offer or answer has an "a= | </li> | |||
| dcsa" attribute, whose subprotocol attribute | </ul> | |||
| is known, but whose subprotocol attribute semantic is not known for the | <t indent="0" pn="section-6.7-5">An SDP offer or answer has an "a=dcsa:" | |||
| data channel transport case. | attribute whose subprotocol attribute | |||
| <list style="symbols"> | is known but whose subprotocol attribute semantic is not known for the | |||
| <t>The receiver o | data channel transport case: | |||
| f such an SDP offer or answer SHOULD ignore this | </t> | |||
| entire "a=dcsa" attribute line. | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6 | |||
| </t> | .7-6"> | |||
| </list> | <li pn="section-6.7-6.1">The receiver of such an SDP offer or answer < | |||
| </t> | bcp14>SHOULD</bcp14> ignore this | |||
| </list> | entire "a=dcsa:" attribute line. | |||
| </t> | </li> | |||
| </section> | </ul> | |||
| <!-- various SDP offer/answer ... --> | </section> | |||
| </section> | </section> | |||
| <!-- Procedures --> | <section anchor="examples" numbered="true" removeInRFC="false" toc="include" | |||
| <section title="Examples" anchor="examples"> | pn="section-7"> | |||
| <figure align="left" title="Example 1" anchor="example1"> | <name slugifiedName="name-examples">Examples</name> | |||
| <artwork align="left"><![CDATA[ | <t indent="0" pn="section-7-1"><xref target="example1" format="default" se | |||
| SDP offer: | ctionFormat="of" derivedContent="Figure 1"/> shows an example of an SDP offer an | |||
| d answer | ||||
| where the SDP answerer rejects the data channel | ||||
| with stream id 0 either for explicit reasons or because it does not | ||||
| understand the "a=dcmap:" attribute. | ||||
| As a result, the offerer will close the data channel created with the | ||||
| SDP offer/answer negotiation option. | ||||
| The SCTP association will still be set up over DTLS. | ||||
| At this point, the offerer or the answerer may use DCEP negotiation to open d | ||||
| ata | ||||
| channels.</t> | ||||
| <figure anchor="example1" align="left" suppress-title="false" pn="figure-1 | ||||
| "> | ||||
| <name slugifiedName="name-example-1">Example 1</name> | ||||
| <sourcecode name="example-1-sdp-offer" type="sdp" markers="false" pn="se | ||||
| ction-7-2.1"> | ||||
| m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5000 | a=sctp-port:5000 | |||
| a=setup:actpass | a=setup:actpass | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | |||
| a=tls-id:abc3de65cddef001be82 | a=tls-id:abc3de65cddef001be82 | |||
| a=dcmap:0 subprotocol="bfcp";label="bfcp" | a=dcmap:0 subprotocol="bfcp";label="bfcp"</sourcecode> | |||
| <sourcecode name="example-1-sdp-answer" type="sdp" markers="false" pn="s | ||||
| SDP answer: | ection-7-2.2"> | |||
| m=application 10002 UDP/DTLS/SCTP webrtc-datachannel | m=application 10002 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5002 | a=sctp-port:5002 | |||
| a=setup:passive | a=setup:passive | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | |||
| a=tls-id:dcb3ae65cddef0532d42 | a=tls-id:dcb3ae65cddef0532d42</sourcecode> | |||
| ]]></artwork> | </figure> | |||
| </figure> | <t indent="0" pn="section-7-3"><xref target="example2" format="default" se | |||
| <t>In the example in <xref target="example1"/> the SDP an | ctionFormat="of" derivedContent="Figure 2"/> shows an example of an SDP offer an | |||
| swerer rejected the data channel | d answer | |||
| with stream id 0 either for explicit reasons or because it does not | where the SDP offer contains data channels for BFCP and | |||
| understand the "a=dcmap:" attribute. | MSRP subprotocols. The SDP answer rejects BFCP and accepts MSRP. | |||
| As a result the offerer will close the data channel created with the | So, the offerer closes the data channel for BFCP, and both the offerer | |||
| SDP offer/answer negotiation option. | and the answerer may start using the MSRP data channel | |||
| The SCTP association will still be setup over DTLS. | (after the SCTP association is set up). | |||
| At this point the offerer or the answerer may use DCEP negotiation to open da | The data channel with stream id 0 is free and can be used for future | |||
| ta | DCEP or SDP offer/answer negotiation.</t> | |||
| channels.</t> | <figure anchor="example2" align="left" suppress-title="false" pn="figure-2 | |||
| <figure align="left" title="Example 2" anchor="example2"> | "> | |||
| <artwork align="left"><![CDATA[ | <name slugifiedName="name-example-2">Example 2</name> | |||
| SDP offer: | <sourcecode name="example-2-sdp-offer" type="sdp" markers="false" pn="se | |||
| ction-7-4.1"> | ||||
| m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5000 | a=sctp-port:5000 | |||
| a=setup:actpass | a=setup:actpass | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | |||
| a=tls-id:abc3de65cddef001be82 | a=tls-id:abc3de65cddef001be82 | |||
| a=dcmap:0 subprotocol="bfcp";label="bfcp" | a=dcmap:0 subprotocol="bfcp";label="bfcp" | |||
| a=dcmap:2 subprotocol="msrp";label="msrp" | a=dcmap:2 subprotocol="msrp";label="msrp" | |||
| a=dcsa:2 accept-types:message/cpim text/plain | a=dcsa:2 accept-types:message/cpim text/plain | |||
| a=dcsa:2 path:msrp://alice.example.com:10001/2s93i93idj;dc | a=dcsa:2 path:msrp://alice.example.com:10001/2s93i93idj;dc</sourcecode> | |||
| <sourcecode name="example-2-sdp-answer" type="sdp" markers="false" pn="s | ||||
| SDP answer: | ection-7-4.2"> | |||
| m=application 10002 UDP/DTLS/SCTP webrtc-datachannel | m=application 10002 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5002 | a=sctp-port:5002 | |||
| a=setup:passive | a=setup:passive | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | |||
| a=tls-id:dcb3ae65cddef0532d42 | a=tls-id:dcb3ae65cddef0532d42 | |||
| a=dcmap:2 subprotocol="msrp";label="msrp" | a=dcmap:2 subprotocol="msrp";label="msrp" | |||
| a=dcsa:2 accept-types:message/cpim text/plain | a=dcsa:2 accept-types:message/cpim text/plain | |||
| a=dcsa:2 path:msrp://bob.example.com:10002/si438dsaodes;dc | a=dcsa:2 path:msrp://bob.example.com:10002/si438dsaodes;dc</sourcecode> | |||
| ]]></artwork> | </figure> | |||
| </figure> | <t indent="0" pn="section-7-5">The example in <xref target="example3" form | |||
| <t>In the example in <xref target="example2"/> the SDP of | at="default" sectionFormat="of" derivedContent="Figure 3"/> is a continuation of | |||
| fer contains data channels for BFCP | the example in <xref target="example2" format="default" sectionFormat="of" deri | |||
| (Binary Floor Control Protocol) and | vedContent="Figure 2"/>. | |||
| MSRP subprotocols. The SDP answer rejected BFCP and accepted MSRP. | The SDP offerer now removes the MSRP data channel with stream id 2 | |||
| So, the offerer closes the data channel for BFCP and both offerer | but opens a new MSRP data channel with stream id 4. | |||
| and answerer may start using the MSRP data channel | The answerer accepts the entire offer. | |||
| (after the SCTP association is set up). | As a result, the offerer closes the previously negotiated MSRP-related data c | |||
| The data channel with stream id 0 is free and can be used for future | hannel, | |||
| DCEP or SDP offer/answer negotiation.</t> | and both the offerer and the answerer may start using the new MSRP-related da | |||
| <t>Continuing the example in <xref target="example2"/>.</ | ta | |||
| t> | channel.</t> | |||
| <figure align="left" title="Example 3" anchor="example3"> | <figure anchor="example3" align="left" suppress-title="false" pn="figure-3 | |||
| <artwork align="left"><![CDATA[ | "> | |||
| Subsequent SDP offer: | <name slugifiedName="name-example-3">Example 3</name> | |||
| <sourcecode name="example-3-sdp-offer" type="sdp" markers="false" pn="se | ||||
| ction-7-6.1"> | ||||
| m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | m=application 10001 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5000 | a=sctp-port:5000 | |||
| a=setup:actpass | a=setup:actpass | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | |||
| a=tls-id:abc3de65cddef001be82 | a=tls-id:abc3de65cddef001be82 | |||
| a=dcmap:4 subprotocol="msrp";label="msrp" | a=dcmap:4 subprotocol="msrp";label="msrp" | |||
| a=dcsa:4 accept-types:message/cpim text/plain | a=dcsa:4 accept-types:message/cpim text/plain | |||
| a=dcsa:4 path:msrp://alice.example.com:10001/2s93i93idj;dc | a=dcsa:4 path:msrp://alice.example.com:10001/2s93i93idj;dc</sourcecode> | |||
| <sourcecode name="example-3-sdp-answer" type="sdp" markers="false" pn="s | ||||
| Subsequent SDP answer: | ection-7-6.2"> | |||
| m=application 10002 UDP/DTLS/SCTP webrtc-datachannel | m=application 10002 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5002 | a=sctp-port:5002 | |||
| a=setup:passive | a=setup:passive | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | 5B:AD:67:B1:3E:82:AC:3B:90:02:B1:DF:12:5D:CA:6B:3F:E5:54:FA | |||
| a=tls-id:dcb3ae65cddef0532d42 | a=tls-id:dcb3ae65cddef0532d42 | |||
| a=dcmap:4 subprotocol="msrp";label="msrp" | a=dcmap:4 subprotocol="msrp";label="msrp" | |||
| a=dcsa:4 accept-types:message/cpim text/plain | a=dcsa:4 accept-types:message/cpim text/plain | |||
| a=dcsa:4 path:msrp://bob.example.com:10002/si438dsaodes;dc | a=dcsa:4 path:msrp://bob.example.com:10002/si438dsaodes;dc</sourcecode> | |||
| ]]></artwork> | </figure> | |||
| </figure> | </section> | |||
| <t>The example in <xref target="example3"/> is a continua | <section anchor="sec-cons" numbered="true" removeInRFC="false" toc="include" | |||
| tion of the example in <xref target="example2"/>. | pn="section-8"> | |||
| The SDP offerer now removes the MSRP data channel with stream id 2, | <name slugifiedName="name-security-considerations">Security Considerations | |||
| but opens a new MSRP data channel with stream id 4. | </name> | |||
| The answerer accepts the entire offer. | <t indent="0" pn="section-8-1">This document specifies new SDP attributes | |||
| As a result the offerer closes the earlier negotiated MSRP related data chann | used in the negotiation of data channel parameters. </t> | |||
| el | <t indent="0" pn="section-8-2"> | |||
| and both offerer and answerer may start using new the MSRP related data chann | These parameters are negotiated as part of opening an SCTP channel over DTLS as | |||
| el.</t> | specified in <xref target="RFC8841" format="default" sectionFormat="of" derivedC | |||
| </section> | ontent="RFC8841"/>. Each | |||
| <!-- Examples --> | subprotocol may come with its own security considerations that need to be docume | |||
| <section title="Security Considerations" anchor="sec-cons"> | nted as part of the subprotocol definition. | |||
| <t>This document specifies new SDP attributes used in the | Otherwise, this document does not add any security considerations to those speci | |||
| negotiation of the DATA channel parameters. </t> | fied in <xref target="RFC8841" format="default" sectionFormat="of" derivedConten | |||
| <t> | t="RFC8841"/>. | |||
| These parameter are negotiated as part of opening a SCTP channel over DTLS as sp | </t> | |||
| ecified in <xref target="I-D.ietf-mmusic-sctp-sdp"/>. Each | <t indent="0" pn="section-8-3">Error cases such as the use of unknown para | |||
| subprotocol may come with it’s own security considerations that need to be docum | meter values or violations | |||
| ented as part of the subprotocol definition. | of the odd/even rule (<xref target="id_mgmt" format="default" sectionForma | |||
| Otherwise this document does not add any security considerations to the ones spe | t="of" derivedContent="Section 6.1"/>) <bcp14>MUST</bcp14> | |||
| cified in <xref target="I-D.ietf-mmusic-sctp-sdp"/> | be handled by closing the corresponding data channel.</t> | |||
| </t> | </section> | |||
| <t>Error cases like the use of unknown parameter values o | <section anchor="IANA" numbered="true" removeInRFC="false" toc="include" pn= | |||
| r violation the odd/even rule MUST | "section-9"> | |||
| be handled by closing the corresponding Data Channel.</t> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| </section> | <section anchor="IANA_subproto_ids" numbered="true" removeInRFC="false" to | |||
| <section title="IANA Considerations" anchor="IANA"> | c="include" pn="section-9.1"> | |||
| <section title="Subprotocol Identifiers" anchor="IANA_sub | <name slugifiedName="name-subprotocol-identifiers">Subprotocol Identifie | |||
| proto_ids"> | rs</name> | |||
| <t>Registration of new subprotocol identifiers is | <t indent="0" pn="section-9.1-1">Registration of new subprotocol identif | |||
| performed using the existing IANA | iers is performed using the existing IANA | |||
| "WebSocket Subprotocol Name Registry" table.</t> | "WebSocket Subprotocol Name Registry" table.</t> | |||
| <t>The following text should be added following t | <t indent="0" pn="section-9.1-2">The following text has been added below | |||
| he title of the table.</t> | the title of the table.</t> | |||
| <t>"This table also includes subprotocol identifi | <t indent="0" pn="section-9.1-3">"This table also includes subprotocol i | |||
| ers specified for usage within a | dentifiers specified for usage within a | |||
| WebRTC data channel."</t> | WebRTC data channel."</t> | |||
| <t>The following reference should be added to und | <t indent="0" pn="section-9.1-4">This document (RFC 8864) has been added | |||
| er the heading reference: | to the "Reference" list for | |||
| "RFC XXXX".</t> | the registry.</t> | |||
| <t>This document assigns no new values to this ta | <t indent="0" pn="section-9.1-5">This document assigns no new values to | |||
| ble.</t> | this table.</t> | |||
| <t>A subprotocol may simultaneously be defined fo | <t indent="0" pn="section-9.1-6">A subprotocol may simultaneously be def | |||
| r data channel transport | ined for data channel transport | |||
| and for Websocket transport. | and for WebSocket transport. | |||
| In such a case the "Subprotocol Definition" and "Reference" cells in the | In such a case, the "Subprotocol Definition" and "Reference" cells in the | |||
| subprotocol's row of the IANA "WebSocket Subprotocol Name Registry" table sh ould | subprotocol's row of the IANA "WebSocket Subprotocol Name Registry" table sh ould | |||
| contain two entries. | contain two entries. | |||
| One entry in each of these cells should refer to the Websocket related | One entry in each of these cells should refer to the WebSocket-related | |||
| subprotocol specification, and the other entry should refer to the data | subprotocol specification, and the other entry should refer to the | |||
| channel related subprotocol specification. | data-channel-related subprotocol specification. | |||
| </t> | </t> | |||
| <t>NOTE to RFC Editor: Please replace "XXXX" with | </section> | |||
| the number of this RFC.</t> | <section numbered="true" removeInRFC="false" toc="include" pn="section-9.2 | |||
| </section> | "> | |||
| <section title="New SDP Attributes"> | <name slugifiedName="name-new-sdp-attributes">New SDP Attributes</name> | |||
| <section title="dcmap" anchor="IANA-reg-dcmap"> | <section anchor="IANA-reg-dcmap" numbered="true" removeInRFC="false" toc | |||
| <t>NOTE to RFC Editor: Please replace "XX | ="include" pn="section-9.2.1"> | |||
| XX" with the number of this RFC.</t> | <name slugifiedName="name-dcmap">dcmap</name> | |||
| <t>This document defines a new SDP media- | <t indent="0" pn="section-9.2.1-1">This document defines a new SDP med | |||
| level attribute "a=dcmap:" as follows: | ia-level attribute, "a=dcmap:", as follows: | |||
| </t> | </t> | |||
| <texttable title=""> | <table anchor="dcmap-iana" align="center" pn="table-3"> | |||
| <ttcol align="left" width="35%"/> | <name slugifiedName="name-new-adcmap-attribute">New "a=dcmap:" Attri | |||
| <ttcol align="left" width="65%"/> | bute</name> | |||
| <c>Contact name:</c> | <thead> | |||
| <c>IESG</c> | <tr> | |||
| <c>Contact email:</c> | <th colspan="2" align="center" rowspan="1">"a=dcmap:"</th> | |||
| <c>iesg@ietf.org</c> | </tr> | |||
| <c>Attribute name:</c> | </thead> | |||
| <c>dcmap</c> | <tbody> | |||
| <c>Attribute syntax:</c> | <tr> | |||
| <c>As per <xref target="dcmap-att | <td align="left" colspan="1" rowspan="1">Contact name</td> | |||
| r-definition"/> | <td align="left" colspan="1" rowspan="1">IESG</td> | |||
| </c> | </tr> | |||
| <c>Attribute semantics:</c> | <tr> | |||
| <c>As per <xref target="dcmap-att | <td align="left" colspan="1" rowspan="1">Contact email</td> | |||
| r-definition"/> | <td align="left" colspan="1" rowspan="1">iesg@ietf.org</td> | |||
| </c> | </tr> | |||
| <c>Usage level:</c> | <tr> | |||
| <c>media</c> | <td align="left" colspan="1" rowspan="1">Attribute name</td> | |||
| <c>Charset dependent:</c> | <td align="left" colspan="1" rowspan="1">dcmap</td> | |||
| <c>No</c> | </tr> | |||
| <c>Purpose:</c> | <tr> | |||
| <c>Define data channel specific p | <td align="left" colspan="1" rowspan="1">Attribute syntax</td> | |||
| arameters</c> | <td align="left" colspan="1" rowspan="1">As per <xref target="dc | |||
| <c>Appropriate values:</c> | map-attr-definition" format="default" sectionFormat="of" derivedContent="Section | |||
| <c>As per <xref target="dcmap-att | 5.1.1"/> | |||
| r-definition"/> | </td> | |||
| </c> | </tr> | |||
| <c>O/A procedures:</c> | <tr> | |||
| <c>As per <xref target="section_p | <td align="left" colspan="1" rowspan="1">Attribute semantics</td | |||
| rocedures"/> | > | |||
| </c> | <td align="left" colspan="1" rowspan="1">As per <xref target="dc | |||
| <c>Mux category:</c> | map-attr-definition" format="default" sectionFormat="of" derivedContent="Section | |||
| <c>SPECIAL. See <xref target="dcm | 5.1.1"/> | |||
| ap-mux-category"/> | </td> | |||
| </c> | </tr> | |||
| <c>Reference:</c> | <tr> | |||
| <c>RFCXXXX</c> | <td align="left" colspan="1" rowspan="1">Usage level</td> | |||
| </texttable> | <td align="left" colspan="1" rowspan="1">media</td> | |||
| </section> | </tr> | |||
| <section title="dcsa" anchor="IANA-reg-dcsa"> | <tr> | |||
| <t>NOTE to RFC Editor: Please replace "XX | <td align="left" colspan="1" rowspan="1">Charset dependent</td> | |||
| XX" with the number of this RFC.</t> | <td align="left" colspan="1" rowspan="1">No</td> | |||
| <t>This document defines a new SDP media- | </tr> | |||
| level attribute "a=dcsa:" as follows: | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">Purpose</td> | |||
| <texttable title=""> | <td align="left" colspan="1" rowspan="1">To define data-channel- | |||
| <ttcol align="left" width="35%"/> | specific parameters</td> | |||
| <ttcol align="left" width="65%"/> | </tr> | |||
| <c>Contact name:</c> | <tr> | |||
| <c>IESG</c> | <td align="left" colspan="1" rowspan="1">Appropriate values</td> | |||
| <c>Contact email:</c> | <td align="left" colspan="1" rowspan="1">As per <xref target="dc | |||
| <c>iesg@ietf.org</c> | map-attr-definition" format="default" sectionFormat="of" derivedContent="Section | |||
| <c>Attribute name:</c> | 5.1.1"/> | |||
| <c>dcsa</c> | </td> | |||
| <c>Attribute syntax:</c> | </tr> | |||
| <c>As per <xref target="dcsa-attr | <tr> | |||
| ibute"/> | <td align="left" colspan="1" rowspan="1">O/A procedures</td> | |||
| </c> | <td align="left" colspan="1" rowspan="1">SDP offer/answer proced | |||
| <c>Attribute semantics:</c> | ures as per <xref target="section_procedures" format="default" sectionFormat="of | |||
| <c>As per <xref target="dcsa-attr | " derivedContent="Section 6"/> | |||
| ibute"/> | </td> | |||
| </c> | </tr> | |||
| <c>Usage level:</c> | <tr> | |||
| <c>media</c> | <td align="left" colspan="1" rowspan="1">Mux category</td> | |||
| <c>Charset dependent:</c> | <td align="left" colspan="1" rowspan="1">SPECIAL. See <xref targ | |||
| <c>No</c> | et="dcmap-mux-category" format="default" sectionFormat="of" derivedContent="Sect | |||
| <c>Purpose:</c> | ion 5.1.9"/> | |||
| <c>Define data channel subprotoco | </td> | |||
| l specific attributes</c> | </tr> | |||
| <c>Appropriate values:</c> | <tr> | |||
| <c>As per <xref target="dcsa-attr | <td align="left" colspan="1" rowspan="1">Reference</td> | |||
| ibute"/> | <td align="left" colspan="1" rowspan="1">RFC 8864</td> | |||
| </c> | </tr> | |||
| <c>O/A procedures:</c> | </tbody> | |||
| <c>As per <xref target="section_p | </table> | |||
| rocedures"/> | </section> | |||
| </c> | <section anchor="IANA-reg-dcsa" numbered="true" removeInRFC="false" toc= | |||
| <c>Mux category:</c> | "include" pn="section-9.2.2"> | |||
| <c>SPECIAL. See <xref target="dcs | <name slugifiedName="name-dcsa">dcsa</name> | |||
| a-mux-category"/> | <t indent="0" pn="section-9.2.2-1">This document defines a new SDP med | |||
| </c> | ia-level attribute, "a=dcsa:", as follows: | |||
| <c>Reference:</c> | </t> | |||
| <c>RFCXXXX</c> | <table anchor="dcsa-iana" align="center" pn="table-4"> | |||
| </texttable> | <name slugifiedName="name-new-adcsa-attribute">New "a=dcsa:" Attribu | |||
| </section> | te</name> | |||
| </section> | <thead> | |||
| </section> | <tr> | |||
| <section title="Contributors"> | <th colspan="2" align="center" rowspan="1">"a=dcsa:"</th> | |||
| <t>Juergen Stoetzer-Bradler co-authored this document.</t | </tr> | |||
| > | </thead> | |||
| </section> | <tbody> | |||
| <section title="Acknowledgments"> | <tr> | |||
| <t>The authors wish to acknowledge the borrowing of ideas | <td align="left" colspan="1" rowspan="1">Contact name</td> | |||
| from other | <td align="left" colspan="1" rowspan="1">IESG</td> | |||
| internet drafts by Salvatore Loreto, Gonzalo Camarillo, Peter Dunkley | </tr> | |||
| and Gavin Llewellyn, and to thank Flemming Andreasen, Christian Groves, | <tr> | |||
| Gunnar Hellstrom, Paul Kyzivat, Jonathan Lennox, | <td align="left" colspan="1" rowspan="1">Contact email</td> | |||
| Uwe Rauschenbach and Roman Shpount for their invaluable comments.</t> | <td align="left" colspan="1" rowspan="1">iesg@ietf.org</td> | |||
| <t>Special thanks to Christer Holmberg for helping finish | </tr> | |||
| the document and cleaning the SDP offer/answer section.</t> | <tr> | |||
| </section> | <td align="left" colspan="1" rowspan="1">Attribute name</td> | |||
| <section title="CHANGE LOG"> | <td align="left" colspan="1" rowspan="1">dcsa</td> | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | </tr> | |||
| hannel-sdpneg-15'"> | <tr> | |||
| <t> | <td align="left" colspan="1" rowspan="1">Attribute syntax</td> | |||
| <list style="symbols"> | <td align="left" colspan="1" rowspan="1">As per <xref target="dc | |||
| <t>Editorial changes separate se | sa-attribute" format="default" sectionFormat="of" derivedContent="Section 5.2.1" | |||
| ctions for offer/answer procedures.</t> | /> | |||
| <t>Update security section.</t> | </td> | |||
| </list> | </tr> | |||
| </t> | <tr> | |||
| </section> | <td align="left" colspan="1" rowspan="1">Attribute semantics</td | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | > | |||
| hannel-sdpneg-14'"> | <td align="left" colspan="1" rowspan="1">As per <xref target="dc | |||
| <t> | sa-attribute" format="default" sectionFormat="of" derivedContent="Section 5.2.1" | |||
| <list style="symbols"> | /> | |||
| <t>Change "dtls-id" to "tls-id" a | </td> | |||
| nd assign 20 octet long values</t> | </tr> | |||
| <t>Remove of RFC4566bis draft fro | <tr> | |||
| m list of normative references. | <td align="left" colspan="1" rowspan="1">Usage level</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">media</td> | |||
| </list> | </tr> | |||
| </t> | <tr> | |||
| </section> | <td align="left" colspan="1" rowspan="1">Charset dependent</td> | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | <td align="left" colspan="1" rowspan="1">No</td> | |||
| hannel-sdpneg-12'"> | </tr> | |||
| <t> | <tr> | |||
| <list style="symbols"> | <td align="left" colspan="1" rowspan="1">Purpose</td> | |||
| <t>Modification of Keith's addres | <td align="left" colspan="1" rowspan="1">To define attributes th | |||
| s information. | at are specific to data channel subprotocols</td> | |||
| </t> | </tr> | |||
| </list> | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">Appropriate values</td> | |||
| </section> | <td align="left" colspan="1" rowspan="1">As per <xref target="dc | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | sa-attribute" format="default" sectionFormat="of" derivedContent="Section 5.2.1" | |||
| hannel-sdpneg-11'"> | /> | |||
| <t> | </td> | |||
| <list style="symbols"> | </tr> | |||
| <t>dcmap-stream-id syntax change | <tr> | |||
| to limit size to 5 digits. | <td align="left" colspan="1" rowspan="1">O/A procedures</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">SDP offer/answer proced | |||
| <t>Add missing 'x' prefix to quot | ures as per <xref target="section_procedures" format="default" sectionFormat="of | |||
| ed-visible syntax. | " derivedContent="Section 6"/> | |||
| </t> | </td> | |||
| <t>Align SDP offerer and answerer | </tr> | |||
| handling when both max-retr and max-time are present. | <tr> | |||
| </t> | <td align="left" colspan="1" rowspan="1">Mux category</td> | |||
| <t>Use of TEST-NET-1 ip addresses | <td align="left" colspan="1" rowspan="1">SPECIAL. See <xref targ | |||
| in examples. | et="dcsa-mux-category" format="default" sectionFormat="of" derivedContent="Secti | |||
| </t> | on 5.2.2"/> | |||
| <t>Add missing a=dtls-id in one e | </td> | |||
| xample. | </tr> | |||
| </t> | <tr> | |||
| </list> | <td align="left" colspan="1" rowspan="1">Reference</td> | |||
| </t> | <td align="left" colspan="1" rowspan="1">RFC 8864</td> | |||
| </section> | </tr> | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | </tbody> | |||
| hannel-sdpneg-10'"> | </table> | |||
| <t> | </section> | |||
| <list style="symbols"> | </section> | |||
| <t>Removal of the "a=connection" | <section anchor="IANA-reg-data-channel-attribs" numbered="true" removeInRF | |||
| attribute lines from all SDP examples. | C="false" toc="include" pn="section-9.3"> | |||
| </t> | <name slugifiedName="name-registering-attributes-for-">Registering Attri | |||
| </list> | butes for Use with Data Channels</name> | |||
| </t> | <t indent="0" pn="section-9.3-1">When a subprotocol is defined for use o | |||
| </section> | ver data channels with | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | the SDP offer/answer mechanism, any SDP attributes that may be | |||
| hannel-sdpneg-09'"> | negotiated using the "a=dcsa:" attribute <bcp14>MUST</bcp14> be added to | |||
| <t> | the IANA | |||
| <list style="symbols"> | "attribute-name registry (formerly "att-field")", as specified in | |||
| <t>In the introduction: | <xref target="RFC8866" sectionFormat="comma" section="8.2.4" format="def | |||
| <list style="symbols"> | ault" derivedLink="https://rfc-editor.org/rfc/rfc8866#section-8.2.4" derivedCont | |||
| <t>Replacement of | ent="RFC8866"/>. This | |||
| the sentence "The RTCWeb working group has defined the concept of | document specifies that new Usage Levels of the form "dcsa (foo)" | |||
| bi-directional data channels running on top of SCTP/DTLS (SCTP over the Dat | (where "foo" is a placeholder for the subprotocol name) should be | |||
| agram | registered by documents that specify negotiation of particular | |||
| Transport Layer Security protocol)" with "The RTCWeb working group has defi | subprotocols.</t> | |||
| ned the | <t indent="0" pn="section-9.3-2">IANA has updated the "attribute-name (f | |||
| concept of bi-directional data channels running on top of the Stream Contro | ormerly "att-field")" | |||
| l | registry to point to this document.</t> | |||
| Transmission Protocol (SCTP)". | </section> | |||
| </t> | </section> | |||
| <t>Addition of fo | </middle> | |||
| llowing sentences to the second paragraph: "These procedures are | <back> | |||
| based on generic SDP offer/answer negotiation rules for SCTP | <references pn="section-10"> | |||
| based media transport as specified in <xref target="I-D.ietf-mmusic-sctp-sd | <name slugifiedName="name-references">References</name> | |||
| p"/> for | <references pn="section-10.1"> | |||
| the SDP "m" line proto values UDP/DTLS/SCTP and TCP/DTLS/SCTP. | <name slugifiedName="name-normative-references">Normative References</na | |||
| In the future, data channels could be defined over other SCTP based protoco | me> | |||
| ls, such as | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
| SCTP over IP. However, corresponding potential other "m" line proto values | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
| are not | <front> | |||
| considered in this document." | <title>Key words for use in RFCs to Indicate Requirement Levels</tit | |||
| </t> | le> | |||
| </list> | <author initials="S." surname="Bradner" fullname="S. Bradner"> | |||
| </t> | <organization showOnFrontPage="true"/> | |||
| <t>Replacement of "DTLS connectio | </author> | |||
| n" with "DTLS association" throughout the document. | <date year="1997" month="March"/> | |||
| </t> | <abstract> | |||
| <t>In sections <xref target="dcma | <t indent="0">In many standards track documents several words are | |||
| p-mux-category"/> and | used to signify the requirements in the specification. These words are often ca | |||
| <xref target="dcsa-mux-category"/> removal of the sentences "This document al | pitalized. This document defines these words as they should be interpreted in IE | |||
| so | TF documents. This document specifies an Internet Best Current Practices for th | |||
| does not specify multiplexing rules for this attribute for SCTP or | e Internet Community, and requests discussion and suggestions for improvements.< | |||
| SCTP/DTLS proto values". | /t> | |||
| </t> | </abstract> | |||
| <t>In the text related to "Subseq | </front> | |||
| uent SDP answer" in section | <seriesInfo name="BCP" value="14"/> | |||
| <xref target="various_SDP_OA_considerations"/> replacement of "The DTLS/SCTP | <seriesInfo name="RFC" value="2119"/> | |||
| association remains open ..." with "The SCTP association remains open ...". | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
| </t> | </reference> | |||
| <t>In the text after the second S | <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | |||
| DP answer in section | 264" quoteTitle="true" derivedAnchor="RFC3264"> | |||
| <xref target="examples"/> replacement of "... (after SCTP/DTLS association is | <front> | |||
| setup)" | <title>An Offer/Answer Model with Session Description Protocol (SDP) | |||
| with "... (after the SCTP association is set up)". | </title> | |||
| </t> | <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | |||
| <t>Addition of draft-ietf-mmusic- | <organization showOnFrontPage="true"/> | |||
| dtls-sdp to the list of informative | </author> | |||
| references. | <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | |||
| </t> | "> | |||
| <t>Addition of "a=dtls-id" attrib | <organization showOnFrontPage="true"/> | |||
| ute lines to the SDP offer/answer examples in | </author> | |||
| <xref target="examples"/>. | <date year="2002" month="June"/> | |||
| </t> | <abstract> | |||
| </list> | <t indent="0">This document defines a mechanism by which two entit | |||
| </t> | ies can make use of the Session Description Protocol (SDP) to arrive at a common | |||
| </section> | view of a multimedia session between them. In the model, one participant offer | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | s the other a description of the desired session from their perspective, and the | |||
| hannel-sdpneg-08'"> | other participant answers with the desired session from their perspective. Thi | |||
| <t> | s offer/answer model is most useful in unicast sessions where information from b | |||
| <list style="symbols"> | oth participants is needed for the complete view of the session. The offer/answ | |||
| <t>Addition of definition of "dat | er model is used by protocols like the Session Initiation Protocol (SIP). [STAN | |||
| a channel subprotocol" to | DARDS-TRACK]</t> | |||
| <xref target="terminology"/> as proposed on the MMUSIC list, | </abstract> | |||
| https://www.ietf.org/mail-archive/web/mmusic/current/msg15827.html. | </front> | |||
| </t> | <seriesInfo name="RFC" value="3264"/> | |||
| <t>Addition of RFC4566bis draft | <seriesInfo name="DOI" value="10.17487/RFC3264"/> | |||
| to list of normative references. | </reference> | |||
| </t> | <reference anchor="RFC3629" target="https://www.rfc-editor.org/info/rfc3 | |||
| <t>Updates of tables in <xref tar | 629" quoteTitle="true" derivedAnchor="RFC3629"> | |||
| get="IANA-reg-dcmap"/> and | <front> | |||
| <xref target="IANA-reg-dcsa"/> as per section 8.2.4 | <title>UTF-8, a transformation format of ISO 10646</title> | |||
| of RFC4566bis draft. | <author initials="F." surname="Yergeau" fullname="F. Yergeau"> | |||
| </t> | <organization showOnFrontPage="true"/> | |||
| <t>Addition of new "new-usage-lev | </author> | |||
| el">. | <date year="2003" month="November"/> | |||
| </t> | <abstract> | |||
| </list> | <t indent="0">ISO/IEC 10646-1 defines a large character set called | |||
| </t> | the Universal Character Set (UCS) which encompasses most of the world's writing | |||
| </section> | systems. The originally proposed encodings of the UCS, however, were not compa | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | tible with many current applications and protocols, and this has led to the deve | |||
| hannel-sdpneg-07'"> | lopment of UTF-8, the object of this memo. UTF-8 has the characteristic of pres | |||
| <t> | erving the full US-ASCII range, providing compatibility with file systems, parse | |||
| <list style="symbols"> | rs and other software that rely on US-ASCII values but are transparent to other | |||
| <t>Addition of two new paragraphs | values. This memo obsoletes and replaces RFC 2279.</t> | |||
| to <xref target="dcsa-attribute"/> regarding | </abstract> | |||
| subprotocol attribute relationship with transport protocol. | </front> | |||
| </t> | <seriesInfo name="STD" value="63"/> | |||
| <t>Addition of a note to <xref ta | <seriesInfo name="RFC" value="3629"/> | |||
| rget="IANA_subproto_ids"/> regarding subprotocols | <seriesInfo name="DOI" value="10.17487/RFC3629"/> | |||
| simultaneously defined for data channel and Websocket usage. | </reference> | |||
| </t> | <reference anchor="RFC4960" target="https://www.rfc-editor.org/info/rfc4 | |||
| <t>Addition of two further SDP of | 960" quoteTitle="true" derivedAnchor="RFC4960"> | |||
| fer/answer considerations to | <front> | |||
| <xref target="various_SDP_OA_considerations"/> regarding unknown subprotocol | <title>Stream Control Transmission Protocol</title> | |||
| attributes and known subprotocol attributes with unknown data channel transp | <author initials="R." surname="Stewart" fullname="R. Stewart" role=" | |||
| ort | editor"> | |||
| related semantic. | <organization showOnFrontPage="true"/> | |||
| </t> | </author> | |||
| </list> | <date year="2007" month="September"/> | |||
| </t> | <abstract> | |||
| </section> | <t indent="0">This document obsoletes RFC 2960 and RFC 3309. It d | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | escribes the Stream Control Transmission Protocol (SCTP). SCTP is designed to t | |||
| hannel-sdpneg-06'"> | ransport Public Switched Telephone Network (PSTN) signaling messages over IP net | |||
| <t> | works, but is capable of broader applications.</t> | |||
| <list style="symbols"> | <t indent="0">SCTP is a reliable transport protocol operating on t | |||
| <t>Changes addressing Christian G | op of a connectionless packet network such as IP. It offers the following servi | |||
| roves's WGLC review comments raised in | ces to its users:</t> | |||
| http://www.ietf.org/mail-archive/web/mmusic/current/msg15357.html and | <t indent="0">-- acknowledged error-free non-duplicated transfer | |||
| http://www.ietf.org/mail-archive/web/mmusic/current/msg15359.html. | of user data,</t> | |||
| </t> | <t indent="0">-- data fragmentation to conform to discovered path | |||
| </list> | MTU size,</t> | |||
| </t> | <t indent="0">-- sequenced delivery of user messages within multi | |||
| </section> | ple streams, with an option for order-of-arrival delivery of individual user mes | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | sages,</t> | |||
| hannel-sdpneg-05'"> | <t indent="0">-- optional bundling of multiple user messages into | |||
| <t> | a single SCTP packet, and</t> | |||
| <list style="symbols"> | <t indent="0">-- network-level fault tolerance through supporting | |||
| <t>In IANA registration <xref tar | of multi-homing at either or both ends of an association.</t> | |||
| get="IANA-reg-dcmap"/> and | <t indent="0"> The design of SCTP includes appropriate congestion | |||
| <xref target="IANA-reg-dcsa"/> replacement of contact name and e-mail address | avoidance behavior and resistance to flooding and masquerade attacks. [STANDARD | |||
| with "MMUSIC Chairs" and "mmusic-chairs@ietf.org". | S-TRACK]</t> | |||
| </t> | </abstract> | |||
| <t>In <xref target="dcsa-attribut | </front> | |||
| e"/> replacement of "Thus in the example above, the | <seriesInfo name="RFC" value="4960"/> | |||
| original attribute line "a=accept- | <seriesInfo name="DOI" value="10.17487/RFC4960"/> | |||
| types:text/plain" is represented by the attribute line "a=dcsa:2 | </reference> | |||
| accept-types:text/plain", which specifies that this instance of MSRP | <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5 | |||
| being transported on the SCTP association using the data channel with | 234" quoteTitle="true" derivedAnchor="RFC5234"> | |||
| stream id 2 accepts plain text files." with "... which specifies that this | <front> | |||
| instance of the MSRP subprotocol being transported ...". | <title>Augmented BNF for Syntax Specifications: ABNF</title> | |||
| </t> | <author initials="D." surname="Crocker" fullname="D. Crocker" role=" | |||
| <t>The last paragraph of <xref ta | editor"> | |||
| rget="dcsa-attribute"/> started with | <organization showOnFrontPage="true"/> | |||
| "Note: This document does not provide a complete specification ...". | </author> | |||
| Removal of "Note:" and move of this paragraph to the introduction in | <author initials="P." surname="Overell" fullname="P. Overell"> | |||
| <xref target="introduction"/> as last paragraph. | <organization showOnFrontPage="true"/> | |||
| </t> | </author> | |||
| <t> | <date year="2008" month="January"/> | |||
| <xref target="prot_att"/> | <abstract> | |||
| 's headline was "Subprotocol Specific Attributes". | <t indent="0">Internet technical specifications often need to defi | |||
| Change of this headline to "Other Media Level Attributes" and adaptations of | ne a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF | |||
| the first | ), called Augmented BNF (ABNF), has been popular among many Internet specificati | |||
| paragraph of this section and the first paragraph of <xref target="dcsa-attri | ons. The current specification documents ABNF. It balances compactness and simp | |||
| bute"/> | licity with reasonable representational power. The differences between standard | |||
| in order to clarify that not only those attributes may be | BNF and ABNF involve naming rules, repetition, alternatives, order-independence | |||
| encapsulated in a "dcsa" attribute, which are specifically defined for the | , and value ranges. This specification also supplies additional rule definition | |||
| subprotocol, but that also other attributes may be encapsulated if | s and encoding for a core lexical analyzer of the type common to several Interne | |||
| they are related to the specific subprotocol instance. | t specifications. [STANDARDS-TRACK]</t> | |||
| </t> | </abstract> | |||
| <t>Move of the last but one parag | </front> | |||
| raph of <xref target="dcsa-attribute"/> starting with | <seriesInfo name="STD" value="68"/> | |||
| "The same syntax applies to ..." right in front of the formal syntax definiti | <seriesInfo name="RFC" value="5234"/> | |||
| on of the | <seriesInfo name="DOI" value="10.17487/RFC5234"/> | |||
| "dcsa" attribute. | </reference> | |||
| </t> | <reference anchor="RFC6525" target="https://www.rfc-editor.org/info/rfc6 | |||
| <t>Modifications of the text in < | 525" quoteTitle="true" derivedAnchor="RFC6525"> | |||
| xref target="dcmap-mux-category"/> and | <front> | |||
| <xref target="dcsa-mux-category"/> in order not to explicitly restrict usage | <title>Stream Control Transmission Protocol (SCTP) Stream Reconfigur | |||
| of the | ation</title> | |||
| "a=dcmap:" and "a=dcsa:" attributes to "m" lines with proto values "UDP/DTLS/ | <author initials="R." surname="Stewart" fullname="R. Stewart"> | |||
| SCTP" | <organization showOnFrontPage="true"/> | |||
| or "TCP/DTLS/SCTP". | </author> | |||
| </t> | <author initials="M." surname="Tuexen" fullname="M. Tuexen"> | |||
| </list> | <organization showOnFrontPage="true"/> | |||
| </t> | </author> | |||
| </section> | <author initials="P." surname="Lei" fullname="P. Lei"> | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | <organization showOnFrontPage="true"/> | |||
| hannel-sdpneg-04'"> | </author> | |||
| <t> | <date year="2012" month="February"/> | |||
| <list style="symbols"> | <abstract> | |||
| <t>In <xref target="subprotocol-p | <t indent="0">Many applications that use the Stream Control Transm | |||
| arameter"/> the first (and only) paragraph was | ission Protocol (SCTP) want the ability to "reset" a stream. The intention of r | |||
| "The 'subprotocol' parameter indicates which protocol the | esetting a stream is to set the numbering sequence of the stream back to 'zero' | |||
| client expects to exchange via the channel. | with a corresponding notification to the application layer that the reset has be | |||
| 'subprotocol' is an optional parameter. | en performed. Applications requiring this feature want it so that they can "reu | |||
| If the 'subprotocol' parameter is not present, then its value | se" streams for different purposes but still utilize the stream sequence number | |||
| defaults to the empty string." | so that the application can track the message flows. Thus, without this feature | |||
| Replacement of this paragraph with following two paragraphs: | , a new use of an old stream would result in message numbers greater than expect | |||
| <list style="symbols"> | ed, unless there is a protocol mechanism to "reset the streams back to zero". T | |||
| <t> The 'subproto | his document also includes methods for resetting the transmission sequence numbe | |||
| col' parameter indicates which protocol the | rs, adding additional streams, and resetting all stream sequence numbers. [STAN | |||
| client expects to exchange via the channel. | DARDS-TRACK]</t> | |||
| This parameter maps to the 'Protocol' parameter defined in | </abstract> | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>. | </front> | |||
| <xref target="IANA_subproto_ids"/> specifies how new subprotocol parameter | <seriesInfo name="RFC" value="6525"/> | |||
| values are registered. | <seriesInfo name="DOI" value="10.17487/RFC6525"/> | |||
| 'subprotocol' is an optional parameter. | </reference> | |||
| If the 'subprotocol' parameter is not present, then its value | <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | |||
| defaults to the empty string. | 174" quoteTitle="true" derivedAnchor="RFC8174"> | |||
| </t> | <front> | |||
| <t>Note: The empt | <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | |||
| y string MAY also be explicitly used as 'subprotocol' value, | tle> | |||
| such that 'subprotocol=""' is equivalent to the 'subprotocol' parameter no | <author initials="B." surname="Leiba" fullname="B. Leiba"> | |||
| t being | <organization showOnFrontPage="true"/> | |||
| present at all. <xref target="I-D.ietf-rtcweb-data-protocol"/> allows the | </author> | |||
| DATA_CHANNEL_OPEN message's 'subprotocol' value to be an empty string. | <date year="2017" month="May"/> | |||
| </t> | <abstract> | |||
| </list> | <t indent="0">RFC 2119 specifies common key words that may be used | |||
| </t> | in protocol specifications. This document aims to reduce the ambiguity by cla | |||
| <t>Addition of <xref target="I-D. | rifying that only UPPERCASE usage of the key words have the defined special mea | |||
| ietf-mmusic-sdp-mux-attributes"/> | nings.</t> | |||
| to list the of normative references. | </abstract> | |||
| </t> | </front> | |||
| <t>Addition of dcmap attribute sp | <seriesInfo name="BCP" value="14"/> | |||
| ecific IANA registration | <seriesInfo name="RFC" value="8174"/> | |||
| <xref target="IANA-reg-dcmap"/>. | <seriesInfo name="DOI" value="10.17487/RFC8174"/> | |||
| </t> | </reference> | |||
| <t>Addition of dcsa attribute spe | <reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8 | |||
| cific IANA registration | 831" quoteTitle="true" derivedAnchor="RFC8831"> | |||
| <xref target="IANA-reg-dcsa"/>. | <front> | |||
| </t> | <title>WebRTC Data Channels</title> | |||
| <t>Addition of new <xref target=" | <author initials="R" surname="Jesup" fullname="Randell Jesup"> | |||
| dcmap-mux-category"/> describing the mux category | <organization showOnFrontPage="true"/> | |||
| of the dcmap SDP attribute. This section and the new "a=dcsa:" attribute rel | </author> | |||
| ated | <author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | |||
| mux category section are similar to the "Mux Category" sections of | <organization showOnFrontPage="true"/> | |||
| the "a=sctp-port:" and "a=max-message-size:" attributes in | </author> | |||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/>. | <author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | |||
| </t> | <organization showOnFrontPage="true"/> | |||
| <t>Addition of new <xref target=" | </author> | |||
| dcsa-mux-category"/> describing the mux category | <date month="January" year="2021"/> | |||
| of the dcsa SDP attribute. | </front> | |||
| </t> | <seriesInfo name="RFC" value="8831"/> | |||
| </list> | <seriesInfo name="DOI" value="10.17487/RFC8831"/> | |||
| </t> | </reference> | |||
| </section> | <reference anchor="RFC8832" target="https://www.rfc-editor.org/info/rfc8 | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | 832" quoteTitle="true" derivedAnchor="RFC8832"> | |||
| hannel-sdpneg-03'"> | <front> | |||
| <t> | <title>WebRTC Data Channel Establishment Protocol</title> | |||
| <list style="symbols"> | <author initials="R." surname="Jesup" fullname="Randell Jesup"> | |||
| <t>In <xref target="introduction" | <organization showOnFrontPage="true"/> | |||
| /> replacement of | </author> | |||
| "RTCWeb leaves it open for other applications to use data channels and its in | <author initials="S." surname="Loreto" fullname="Salvatore Loreto"> | |||
| -band | <organization showOnFrontPage="true"/> | |||
| DCEP or out-of-band non-DCEP protocols for creating them" with | </author> | |||
| "... to use data channels and its in-band DCEP or other in-band or out-of-ban | <author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | |||
| d | <organization showOnFrontPage="true"/> | |||
| protocols for creating them". | </author> | |||
| Additionally replacement of | <date month="January" year="2021"/> | |||
| "In particular, the SDP offer generated by the application | </front> | |||
| includes no channel-specific information" with | <seriesInfo name="RFC" value="8832"/> | |||
| "... generated by the RTCweb data channel stack includes | <seriesInfo name="DOI" value="10.17487/RFC8832"/> | |||
| no channel-specific information". | </reference> | |||
| </t> | <reference anchor="RFC8841" target="https://www.rfc-editor.org/info/rfc8 | |||
| <t>Move of former section 5 ("Dat | 841" quoteTitle="true" derivedAnchor="RFC8841"> | |||
| a Channels") to new | <front> | |||
| <xref target="generic-out-of-band-aspects"/> and removal of JavaScript API sp | <title>Session Description Protocol (SDP) Offer/Answer Procedures fo | |||
| ecific | r Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Secu | |||
| discussions from this moved text (like mentioning of data channel stack speci | rity (DTLS) Transport</title> | |||
| fic | <author initials="C." surname="Holmberg" fullname="Christer Holmberg | |||
| states). Therefore former section 6 ("SDP Offer/Answer Negotiation") is now | "> | |||
| <xref target="sdp_synt"/>. | <organization showOnFrontPage="true"/> | |||
| </t> | </author> | |||
| <t>In <xref target="sdp_synt"/>: | <author initials="R." surname="Shpount" fullname="Roman Shpount"> | |||
| <list style="symbols"> | <organization showOnFrontPage="true"/> | |||
| <t>Relacement of | </author> | |||
| <xref target="sdp_synt"/>'s | <author initials="S." surname="Loreto" fullname="Salvatore Loreto"> | |||
| first paragraph | <organization showOnFrontPage="true"/> | |||
| "This section defines a method of non-DCEP negotiation by which two | </author> | |||
| clients can negotiate data channel-specific and subprotocol-specific | <author initials="G." surname="Camarillo" fullname="Gonzalo Camarill | |||
| parameters, using the out-of-band SDP offer/answer exchange. This | o"> | |||
| SDP extension can only be used with the SDP offer/answer model." with | <organization showOnFrontPage="true"/> | |||
| "This section defines an SDP extension by which | </author> | |||
| two clients can negotiate data channel-specific and subprotocol-specific | <date month="January" year="2021"/> | |||
| parameters without using DCEP <xref target="I-D.ietf-rtcweb-data-protocol"/ | </front> | |||
| >. | <seriesInfo name="RFC" value="8841"/> | |||
| This SDP extension only defines usage in the context of SDP offer/answer." | <seriesInfo name="DOI" value="10.17487/RFC8841"/> | |||
| </t> | </reference> | |||
| <t>Addition of ne | <reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8 | |||
| w paragraph: | 859" quoteTitle="true" derivedAnchor="RFC8859"> | |||
| "<xref target="generic-out-of-band-aspects"/> provides information how data | <front> | |||
| channels | <title>A Framework for Session Description Protocol (SDP) Attributes | |||
| work in general and especially summarizes some key aspects, which should be | When Multiplexing</title> | |||
| considered for the negotiation of data channels if DCEP is not used." | <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar | |||
| </t> | "> | |||
| </list> | <organization showOnFrontPage="true"/> | |||
| </t> | </author> | |||
| <t>In <xref target="subsec-sdp-at | <date month="January" year="2021"/> | |||
| tr-for-dc-par-neg"/> replacement of "The intention of | </front> | |||
| exchanging these attributes is to create data channels on both the peers with | <seriesInfo name="RFC" value="8859"/> | |||
| the same | <seriesInfo name="DOI" value="10.17487/RFC8859"/> | |||
| set of attributes without actually using the DCEP | </reference> | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>" with "The intention in exchan | <reference anchor="RFC8866" target="https://www.rfc-editor.org/info/rfc8 | |||
| ging | 866" quoteTitle="true" derivedAnchor="RFC8866"> | |||
| these attributes is to create, on two peers, without use of DCEP | <front> | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>, | <title>SDP: Session Description Protocol</title> | |||
| matched pairs of oppositely directed data channels having the same set of att | <author initials="A" surname="Begen" fullname="Ali Begen"> | |||
| ributes". | <organization showOnFrontPage="true"/> | |||
| </t> | </author> | |||
| <t>In <xref target="max-retr-para | <author initials="P" surname="Kyzivat" fullname="Paul Kyzivat"> | |||
| m-definition"/> replacement of "The 'max-retr' | <organization showOnFrontPage="true"/> | |||
| parameter indicates the maximal number a user message will be retransmitted" | </author> | |||
| with "The | <author initials="C" surname="Perkins" fullname="Colin Perkins"> | |||
| 'max-retr' parameter indicates the maximal number of times a user message wil | <organization showOnFrontPage="true"/> | |||
| l | </author> | |||
| be retransmitted". | <author initials="M" surname="Handley" fullname="Mark Handley"> | |||
| </t> | <organization showOnFrontPage="true"/> | |||
| <t>In <xref target="id_mngt"/> re | </author> | |||
| placement of "However, an SDP offer/answer exchange | <date month="January" year="2021"/> | |||
| MUST NOT be initiated if the associated SCTP stream is already negotiated via | </front> | |||
| DCEP" | <seriesInfo name="RFC" value="8866"/> | |||
| with "However, an SCTP stream MUST NOT be referenced in a dcmap or dcsa | <seriesInfo name="DOI" value="10.17487/RFC8866"/> | |||
| attribute of an SDP offer/answer exchange if the associated SCTP stream has a | </reference> | |||
| lready | </references> | |||
| been negotiated via DCEP". | <references pn="section-10.2"> | |||
| </t> | <name slugifiedName="name-informative-references">Informative References | |||
| <t>In the examples in <xref targe | </name> | |||
| t="examples"/> addition of the previously missing | <reference anchor="RFC4975" target="https://www.rfc-editor.org/info/rfc4 | |||
| colons to the "a=sctp-port" attribute lines. | 975" quoteTitle="true" derivedAnchor="RFC4975"> | |||
| </t> | <front> | |||
| </list> | <title>The Message Session Relay Protocol (MSRP)</title> | |||
| </t> | <author initials="B." surname="Campbell" fullname="B. Campbell" role | |||
| </section> | ="editor"> | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | <organization showOnFrontPage="true"/> | |||
| hannel-sdpneg-02'"> | </author> | |||
| <t> | <author initials="R." surname="Mahy" fullname="R. Mahy" role="editor | |||
| <list style="symbols"> | "> | |||
| <t>Move of reference draft-ietf-r | <organization showOnFrontPage="true"/> | |||
| tcweb-jsep from the list of normative | </author> | |||
| references to the list of informative references. Remover in -07 since not ref | <author initials="C." surname="Jennings" fullname="C. Jennings" role | |||
| erenced</t> | ="editor"> | |||
| <t>Addition of IANA SDP parameter | <organization showOnFrontPage="true"/> | |||
| s to the list of informative | </author> | |||
| references | <date year="2007" month="September"/> | |||
| and addition of following two sentences to the first paragraph after the ABNF | <abstract> | |||
| definition: "Note however that not all SDP attributes are suitable | <t indent="0">This document describes the Message Session Relay Pr | |||
| as "a=dcsa:" parameter. IANA SDP parameters contains | otocol, a protocol for transmitting a series of related instant messages in the | |||
| the lists of IANA registered session and media level or | context of a session. Message sessions are treated like any other media stream | |||
| media level only SDP attributes."</t> | when set up via a rendezvous or session creation protocol such as the Session In | |||
| <t>In the introduction replacemen | itiation Protocol. [STANDARDS-TRACK]</t> | |||
| t of last sentence | </abstract> | |||
| "This document defines SDP-based out-of-band negotiation procedures | </front> | |||
| to establish data channels for transport of well-defined subprotocols" | <seriesInfo name="RFC" value="4975"/> | |||
| with | <seriesInfo name="DOI" value="10.17487/RFC4975"/> | |||
| "This document defines SDP offer/answer negotiation procedures | </reference> | |||
| to establish data channels for transport of well-defined subprotocols, | <reference anchor="RFC6455" target="https://www.rfc-editor.org/info/rfc6 | |||
| to enable out-of-band negotiation". | 455" quoteTitle="true" derivedAnchor="RFC6455"> | |||
| </t> | <front> | |||
| <t>Throughout the document replac | <title>The WebSocket Protocol</title> | |||
| ement of "external negotiation" with | <author initials="I." surname="Fette" fullname="I. Fette"> | |||
| "SDP offer/answer negotiation" and removal of term "external negotiation" from | <organization showOnFrontPage="true"/> | |||
| the | </author> | |||
| terminology list in <xref target="terminology"/>.</t> | <author initials="A." surname="Melnikov" fullname="A. Melnikov"> | |||
| <t> Throughout the document repla | <organization showOnFrontPage="true"/> | |||
| cement of "internal negotiation" with | </author> | |||
| "DCEP" and removal of terms "internal negotiation" and "in-band negotiation" | <date year="2011" month="December"/> | |||
| from the terminology list in <xref target="terminology"/>.</t> | <abstract> | |||
| <t>Addition of "SCTP Stream Seque | <t indent="0">The WebSocket Protocol enables two-way communication | |||
| nce Number (SSN)" to the list of terms.</t> | between a client running untrusted code in a controlled environment to a remote | |||
| <t>In <xref target="id_mngt"/> re | host that has opted-in to communications from that code. The security model us | |||
| placement of sentence | ed for this is the origin-based security model commonly used by web browsers. T | |||
| "However, a single stream is managed using one method at a time." with | he protocol consists of an opening handshake followed by basic message framing, | |||
| "However, an SDP offer/answer exchange MUST NOT be initiated | layered over TCP. The goal of this technology is to provide a mechanism for bro | |||
| if the associated SCTP stream is already negotiated via DCEP".</t> | wser-based applications that need two-way communication with servers that does n | |||
| <t>In <xref target="param_negotia | ot rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or < | |||
| tion"/> replacement of sentence | iframe>s and long polling). [STANDARDS-TRACK]</t> | |||
| "By definition max-retr and max-time are mutually exclusive, so only one of | </abstract> | |||
| them can be present in a=dcmap" with | </front> | |||
| "By definition max-retr and max-time are mutually exclusive, | <seriesInfo name="RFC" value="6455"/> | |||
| so aBoth MUST NOT be present in a=dcmap".</t> | <seriesInfo name="DOI" value="10.17487/RFC6455"/> | |||
| <t>Move of reference <xref target | </reference> | |||
| ="WebRtcAPI"/> from list of normative references | <reference anchor="RFC8850" target="https://www.rfc-editor.org/info/rfc8 | |||
| to list of informative references.</t> | 850" quoteTitle="true" derivedAnchor="RFC8850"> | |||
| <t>Removal of almost all text par | <front> | |||
| ts, which discussed JavaScript or other API specific | <title>Controlling Multiple Streams for Telepresence (CLUE) Protocol | |||
| aspects. Such API specific aspects were mainly discussed in sub-sections of Se | Data Channel</title> | |||
| ction 5 | <author initials="C." surname="Holmberg" fullname="Christer Holmberg | |||
| and <xref target="sdp_synt"/> | "> | |||
| of draft-ietf-mmusic-data-channel-sdpneg-02.</t> | <organization showOnFrontPage="true"/> | |||
| </list> | </author> | |||
| </t> | <date month="January" year="2021"/> | |||
| </section> | </front> | |||
| <section title="Changes against 'draft-ietf-mmusic-data-c | <seriesInfo name="RFC" value="8850"/> | |||
| hannel-sdpneg-01'"> | <seriesInfo name="DOI" value="10.17487/RFC8850"/> | |||
| <t> | </reference> | |||
| <list style="symbols"> | <reference anchor="RFC8855" target="https://www.rfc-editor.org/info/rfc8 | |||
| <t>New <xref target="appl_stateme | 855" quoteTitle="true" derivedAnchor="RFC8855"> | |||
| nt"/> regarding applicability to | <front> | |||
| SDP offer/answer only.</t> | <title>The Binary Floor Control Protocol (BFCP)</title> | |||
| <t>Addition of new <xref target=" | <author initials="G." surname="Camarillo" fullname="Gonzalo Camarill | |||
| IANA_subproto_ids"/> "Subprotocol identifiers" as | o"> | |||
| subsection of the "IANA Considerations" related <xref target="IANA"/>. | <organization showOnFrontPage="true"/> | |||
| Also removal of the temporary note | </author> | |||
| "To be completed. As [I-D.ietf-rtcweb-data-protocol] this document should re | <author initials="K." surname="Drage" fullname="Keith Drage"> | |||
| fer to | <organization showOnFrontPage="true"/> | |||
| IANA's WebSocket Subprotocol Name Registry defined in <xref target="RFC6455"/ | </author> | |||
| >"</t> | <author initials="T." surname="Kristensen" fullname="Tom Kristensen" | |||
| <t> In <xref target="param_negoti | > | |||
| ation"/>: | <organization showOnFrontPage="true"/> | |||
| <list style="symbols"> | </author> | |||
| <t>In the first p | <author initials="J." surname="Ott" fullname="Jörg Ott"> | |||
| aragraph | <organization showOnFrontPage="true"/> | |||
| replacement of the sentence "If an SDP offer | </author> | |||
| contains both of these parameters then such an SDP offer will be rejected." | <author initials="C." surname="Eckel" fullname="Charles Eckel"> | |||
| with "If | <organization showOnFrontPage="true"/> | |||
| an SDP offer contains both of these parameters then the receiver of such an | </author> | |||
| SDP | <date month="January" year="2021"/> | |||
| offer MUST reject the SDP offer." </t> | </front> | |||
| <t>In the second | <seriesInfo name="RFC" value="8855"/> | |||
| paragraph | <seriesInfo name="DOI" value="10.17487/RFC8855"/> | |||
| capitalization of "shall" and "may" such that both sentences now read: | </reference> | |||
| "The SDP answer SHALL echo the same subprotocol, max-retr, max-time, | <reference anchor="RFC8873" target="https://www.rfc-editor.org/info/rfc8 | |||
| ordered parameters, if those were present in the offer, and MAY include | 873" quoteTitle="true" derivedAnchor="RFC8873"> | |||
| a label parameter. They MAY appear in any order, which could be | <front> | |||
| different from the SDP offer, in the SDP answer."</t> | <title>Message Session Relay Protocol (MSRP) over Data Channels</tit | |||
| <t>In the third p | le> | |||
| aragraph | <author initials="JM." surname="Recio" fullname="Jose Recio" role="e | |||
| replacement of the sentence | ditor"> | |||
| "The same information MUST be replicated without changes in any subsequent | <organization showOnFrontPage="true"/> | |||
| offer or | </author> | |||
| answer, as long as the data channel is still opened at the time of offer or | <author initials="C" surname="Holmberg" fullname="Christer Holmberg" | |||
| answer | > | |||
| generation." with | <organization showOnFrontPage="true"/> | |||
| "When sending a subsequent offer or an answer, and for as long as the data | </author> | |||
| channel | <date month="January" year="2021"/> | |||
| is still open, the sender MUST replicate the same information.".</t> | </front> | |||
| </list> | <seriesInfo name="RFC" value="8873"/> | |||
| </t> | <seriesInfo name="DOI" value="10.17487/RFC8873"/> | |||
| <t>In <xref target="param_negotia | </reference> | |||
| tion"/> the mapping of data channel types defined in | <reference anchor="T38" target="https://www.itu.int/rec/T-REC-T.38-20151 | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/> to the SDP "a=dcmap" attribute | 1-I/en" quoteTitle="true" derivedAnchor="T38"> | |||
| parameters were illustrated using example "a=dcmap" attribute lines. | <front> | |||
| Replacement of these example "a=dcmap" attribute lines with just the "a=dcmap | <title>Procedures for real-time Group 3 facsimile communication over | |||
| " | IP networks</title> | |||
| attribute parameters being relevant for the channel type.</t> | <author> | |||
| <t>In <xref target="various_SDP_O | <organization showOnFrontPage="true">International Telecommunicati | |||
| A_considerations"/> the description of bullet | on Union</organization> | |||
| point "SDP offer has no a=dcmap attributes - Initial SDP offer:" was | </author> | |||
| "Initial SDP offer: No data channel negotiated yet." | <date month="November" year="2015"/> | |||
| Replacement of this description with | </front> | |||
| "Initial SDP offer: No data channel is negotiated yet. | <seriesInfo name="ITU-T Recommendation" value="T.38"/> | |||
| The DTLS connection and SCTP association is | </reference> | |||
| negotiated and, if agreed, established as per | <reference anchor="WebRtcAPI" target="https://www.w3.org/TR/webrtc/" quo | |||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/>."</t> | teTitle="true" derivedAnchor="WebRtcAPI"> | |||
| <t>In <xref target="various_SDP_O | <front> | |||
| A_considerations"/> in both bullet points related to | <title>WebRTC 1.0: Real-time Communication Between Browsers</title> | |||
| "Subsequent SDP offer" and "Subsequent SDP answer" replacement of | <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | |||
| "All the externally negotiated data channels must be closed now." with | <organization showOnFrontPage="true"/> | |||
| "All the externally negotiated data channels are expected to be closed now.". | </author> | |||
| </t> | <author initials="H." surname="Boström" fullname="Henrik Boström"> | |||
| <t>In <xref target="ext_open"/>'s | <organization showOnFrontPage="true"/> | |||
| sixth paragraph | </author> | |||
| replacement of the two occurrences of "must" with "MUST".</t> | <author initials="J-I." surname="Bruaroey" fullname="Jan-Ivar Bruaro | |||
| <t>In <xref target="dcmap-attr-de | ey"> | |||
| finition"/> in the definition of the ABNF rule | <organization showOnFrontPage="true"/> | |||
| "dcmap-opt" there was a comment saying that | </author> | |||
| "Only maxretr-opt or maxtime-opt is present. Both MUST NOT be present." | <date/> | |||
| Removal of the second normative sentence and instead addition of following ne | </front> | |||
| w | <refcontent>W3C Proposed Recommendation</refcontent> | |||
| paragraph to the end of this section: | </reference> | |||
| "Within an 'a=dcmap' attribute line's 'dcmap-opt' value only one | </references> | |||
| 'maxretr-opt' parameter or one 'maxtime-opt' parameter is present. | </references> | |||
| Both MUST NOT be present."</t> | <section anchor="generic-out-of-band-aspects" numbered="true" removeInRFC="f | |||
| <t>In <xref target="ordered-param | alse" toc="include" pn="section-appendix.a"> | |||
| -description"/> replacement of the first sentence | <name slugifiedName="name-generic-data-channel-negoti">Generic Data Channe | |||
| "The 'ordered' parameter with value "true" indicates that DATA chunks in the | l Negotiation Aspects when Not Using DCEP</name> | |||
| channel | <t indent="0" pn="section-appendix.a-1">This appendix summarizes how data | |||
| MUST be dispatched to the upper layer by the receiver while preserving the or | channels work in general and discusses | |||
| der." | some key aspects that should be considered for the out-of-band negotiation of | |||
| with | data | |||
| "The 'ordered' parameter with value "true" indicates that the receiver MUST d | ||||
| ispatch | ||||
| DATA chunks in the data channel to the upper layer while preserving the order | ||||
| .".</t> | ||||
| <t>In <xref target="opendc"/>'s f | ||||
| irst paragraph replacement of the one occurrence of | ||||
| "must" with "..., it MUST wait until ...".</t> | ||||
| <t>In <xref target="close-dc"/>: | ||||
| <list style="symbols"> | ||||
| <t>In the second | ||||
| paragraph replacement of "must" with "... whether this closing MUST | ||||
| in addition ..."</t> | ||||
| <t>In the third p | ||||
| aragraph replacement of the sentence | ||||
| "The port value for the "m" line SHOULD NOT be changed (e.g., to zero) | ||||
| when closing a data channel ..." with | ||||
| "The offerer SHOULD NOT change the port value for the "m" line (e.g., to ze | ||||
| ro) when | ||||
| closing a data channel ...".</t> | ||||
| <t>In the last bu | ||||
| t two paragraph replacement of the sentence | ||||
| "... then an SDP offer which excludes this closed data channel SHOULD be ge | ||||
| nerated." | ||||
| with | ||||
| "... then the client SHOULD generate an SDP offer which excludes this close | ||||
| d data | ||||
| channel.".</t> | ||||
| <t>In the last bu | ||||
| t one paragraph replacement of "must" with | ||||
| "The application MUST also close...".</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>In <xref target="prot_att"/> a | ||||
| ddition of following note after the formal definition | ||||
| of the 'a=dcsa' attribute: | ||||
| "Note that the above reference to RFC 4566 defines were the | ||||
| attribute definition can be found; | ||||
| it does not provide any limitation on support of attributes | ||||
| defined in other documents in accordance with this attribute | ||||
| definition."</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Changes against 'draft-ietf-mmusic-data-c | ||||
| hannel-sdpneg-00'"> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t>In <xref target="terminology"/ | ||||
| > "WebRTC data channel" was defined as | ||||
| "A bidirectional channel consisting of paired | ||||
| SCTP outbound and inbound streams." | ||||
| Replacement of this definition with | ||||
| "Data channel: A WebRTC data channel as specified in | ||||
| <xref target="I-D.ietf-rtcweb-data-channel"/>", and consistent usage | ||||
| of "data channel" in the remainder of the document including the | ||||
| document's headline."</t> | ||||
| <t>In Section 5 removal of follow | ||||
| ing note: | ||||
| 'OPEN ISSUE: The syntax in <xref target="I-D.ietf-mmusic-sctp-sdp"/> may | ||||
| change as that document progresses. In particular we expect | ||||
| "webrtc-datachannel" to become a more general term.'</t> | ||||
| <t>Consistent usage of '"m" line' | ||||
| in whole document as per RFC4566.</t> | ||||
| <t>In <xref target="subsec-sdp-at | ||||
| tr-for-dc-par-neg"/> | ||||
| removal of the example dcmap attribute line | ||||
| 'a=dcmap:2 subprotocol="bfcp";label="channel 2' as there are already | ||||
| four examples right after the ABNF rules in | ||||
| <xref target="dcmap-attr-definition"/>. | ||||
| Corresponding removal of following related note: | ||||
| "Note: This document does not provide a complete specification | ||||
| of how to negotiate the use of a WebRTC data channel to transport BFCP. | ||||
| Procedures specific to each subprotocol such as BFCP will be | ||||
| documented elsewhere. The use of BFCP is only an example of how | ||||
| the generic procedures described herein might apply to a specific | ||||
| subprotocol."</t> | ||||
| <t>In <xref target="subsec-sdp-at | ||||
| tr-for-dc-par-neg"/> | ||||
| removal of following note: | ||||
| "Note: This attribute is derived from attribute "webrtc-DataChannel", | ||||
| which was defined in old version 03 of the | ||||
| following draft, but which was removed along with any support for SDP | ||||
| external negotiation in subsequent versions: | ||||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/>."</t> | ||||
| <t>Insertion of following new sen | ||||
| tence to the beginning of | ||||
| <xref target="dcmap-attr-definition"/>: | ||||
| "dcmap is a media level attribute having following ABNF syntax:"</t> | ||||
| <t>Insertion of new <xref target= | ||||
| "dcmap-stream-id-param-definition"/> | ||||
| containing the dcmap-stream-id specifying sentence, which previously | ||||
| was placed right before the formal ABNF rules. | ||||
| Removal of the sentence 'Stream is a mandatory | ||||
| parameter and is noted directly after the "a=dcmap:" attribute's | ||||
| colon' as this information is part of the ABNF specification.</t> | ||||
| <t>In <xref target="dcmap-attr-de | ||||
| finition"/> modification of the | ||||
| 'ordering-value' values from "0" or "1" to "true" or "false". | ||||
| Corresponding text modifications in <xref target="ordered-param-description"/ | ||||
| >.</t> | ||||
| <t>In <xref target="dcmap-attr-de | ||||
| finition"/> the ABNF definition of "quoted-string" | ||||
| referred to rule name "escaped-char", which was not defined. | ||||
| Instead a rule with name "escaped" was defined. Renamed that rule's name | ||||
| to "escaped-char".</t> | ||||
| <t>Insertion of a dedicated note | ||||
| right after the "a=dcmap:4" attribute example | ||||
| in <xref target="dcmap-attr-definition"/> regarding the non-printable | ||||
| "escaped-char" character within the "label" value.</t> | ||||
| <t>In <xref target="prot_att"/>'s | ||||
| second paragraph replacement of | ||||
| "sctp stream identifier" with "SCTP stream identifier".</t> | ||||
| <t>In first paragraph of <xref ta | ||||
| rget="id_mngt"/> replacement of first two sentences | ||||
| 'For the SDP-based external negotiation described in this document, | ||||
| the initial offerer based "SCTP over DTLS" owns by convention the | ||||
| even stream identifiers whereas the initial answerer owns the odd stream | ||||
| identifiers. This ownership is invariant for the whole | ||||
| lifetime of the signaling session, e.g. it does not change if the | ||||
| initial answerer sends a new offer to the initial offerer.' | ||||
| with | ||||
| 'If an SDP offer/answer exchange | ||||
| (could be the initial or a subsequent one) | ||||
| results in a UDP/DTLS/SCTP or TCP/DTLS/SCTP based media description being | ||||
| accepted, and if this SDP offer/answer exchange results in the | ||||
| establishment of a new SCTP association, then the SDP offerer owns the | ||||
| even SCTP stream ids of this new SCTP association and the answerer owns | ||||
| the odd SCTP stream identifiers. | ||||
| If this "m" line is removed from the signaling session (its port number | ||||
| set to zero), and if usage of this or of a new UDP/DTLS/SCTP or | ||||
| TCP/DTLS/SCTP based "m" line is renegotiated later on, | ||||
| then the even and odd SCTP stream identifier | ||||
| ownership is redetermined as well as described above.'</t> | ||||
| <t>In <xref target="opendc"/> the | ||||
| first action of an SDP answerer, | ||||
| when receiving an SDP offer, was described as | ||||
| "Applies the SDP offer. Note that the browser ignores data channel | ||||
| specific attributes in the SDP." | ||||
| Replacement of these two sentences with | ||||
| "Parses and applies the SDP offer. Note that the typical parser | ||||
| normally ignores unknown SDP attributes, which includes data | ||||
| channel related attributes."</t> | ||||
| <t>In <xref target="opendc"/> the | ||||
| second sentence of the third | ||||
| SDP answerer action was | ||||
| "Note that the browser is asked to create data | ||||
| channels with stream identifiers not "owned" by the agent.". | ||||
| Replacement of this sentence with | ||||
| "Note that the agent is asked to | ||||
| create data channels with SCTP stream identifiers | ||||
| contained in the SDP offer if the SDP offer is accepted."</t> | ||||
| <t>In <xref target="close-dc"/> t | ||||
| he third paragraph began with | ||||
| "A data channel can be closed by sending a new SDP offer which | ||||
| excludes the dcmap and dcsa attribute lines for the data channel. | ||||
| The port value for the m line SHOULD NOT be changed (e.g., to zero) | ||||
| when closing a data channel (unless all data channels are being | ||||
| closed and the SCTP association is no longer needed), since this | ||||
| would close the SCTP association and impact all of the data channels. | ||||
| If the answerer accepts the SDP offer then it MUST also exclude the | ||||
| corresponding attribute lines in the answer. ..." | ||||
| Replacement of this part with | ||||
| "The intention to close a data channel can be signaled | ||||
| by sending a new SDP offer which | ||||
| excludes the "a=dcmap:" and "a=dcsa:" attribute lines for the data channel. | ||||
| The port value for the "m" line SHOULD NOT be changed (e.g., to zero) | ||||
| when closing a data channel (unless all data channels are being | ||||
| closed and the SCTP association is no longer needed), since this | ||||
| would close the SCTP association and impact all of the data channels. | ||||
| If the answerer accepts the SDP offer then it MUST close those data channels | ||||
| whose "a=dcmap:" and "a=dcsa:" attribute lines were excluded from the receive | ||||
| d | ||||
| SDP offer, unless those data channels were already closed, | ||||
| and it MUST also exclude the | ||||
| corresponding attribute lines in the answer."</t> | ||||
| <t>In <xref target="close-dc"/> t | ||||
| he hanging text after the third paragraph was | ||||
| "This delayed close is to handle cases where a successful SDP | ||||
| answer is not received, in which case the state of session should | ||||
| be kept per the last successful SDP offer/answer." | ||||
| Replacement of this sentence with | ||||
| "This delayed closure is RECOMMENDED in order | ||||
| to handle cases where a successful SDP answer is not received, in | ||||
| which case the state of the session SHOULD be kept per the last | ||||
| successful SDP offer/answer."</t> | ||||
| <t>Although dedicated to "a=dcmap | ||||
| " and "a=dcsa" SDP syntax aspects | ||||
| <xref target="subsec-sdp-attr-for-dc-par-neg"/> contained already | ||||
| procedural descriptions related to data channel reliability negotiation. | ||||
| Creation of new <xref target="param_negotiation"/> and moval of | ||||
| reliability negotiation related text to this new section.</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Changes against 'draft-ejzak-mmusic-data- | ||||
| channel-sdpneg-02'"> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t>Removal of note "ACTION ITEM" | ||||
| from section "subprotocol parameter". | ||||
| As <xref target="I-D.ietf-rtcweb-data-protocol"/> this document should refer | ||||
| to IANA's | ||||
| WebSocket Subprotocol Name Registry defined in <xref target="RFC6455"/> | ||||
| </t> | ||||
| <t>In whole document, replacement | ||||
| of "unreliable" with "partially reliable", | ||||
| which is used in <xref target="I-D.ietf-rtcweb-data-channel"/> and in | ||||
| <xref target="I-D.ietf-rtcweb-data-protocol"/> in most places.</t> | ||||
| <t>Clarification of the semantic | ||||
| if the "max-retr" parameter is not present in | ||||
| an "a=dcmap" attribute line. In section "max-retr parameter" the sentence | ||||
| "The max-retr parameter is optional with default value unbounded" | ||||
| was replaced with "The max-retr parameter is optional. If | ||||
| the max-retr parameter is not present, then the maximal number of | ||||
| retransmissions is determined as per the generic SCTP retransmission | ||||
| rules as specified in <xref target="RFC4960"/>".</t> | ||||
| <t>Clarification of the semantic | ||||
| if the "max-time" parameter is not present in | ||||
| an "a=dcmap" attribute line. In section "max-time parameter" the sentence | ||||
| "The max-time parameter is optional with default value unbounded" | ||||
| was replaced with "The max-time parameter is optional. If | ||||
| the max-time parameter is not present, then the generic SCTP | ||||
| retransmission timing rules apply as specified in <xref target="RFC4960"/>".< | ||||
| /t> | ||||
| <t>In section "label parameter" t | ||||
| he sentence "Label is a mandatory parameter." | ||||
| was removed and following new sentences (including the note) were added: | ||||
| "The 'label' parameter is optional. If it is not | ||||
| present, then its value defaults to the empty string. | ||||
| Note: The empty string may also be explicitly used as 'label' value, | ||||
| such that 'label=""' is equivalent to the 'label' parameter not being | ||||
| present at all. | ||||
| <xref target="I-D.ietf-rtcweb-data-protocol"/> allows the DATA_CHANNEL_OPEN | ||||
| message's 'Label' value to be an empty string."</t> | ||||
| <t>In section "subprotocol parame | ||||
| ter" the sentence | ||||
| "subprotocol is a mandatory parameter." was replaced with | ||||
| "'subprotocol' is an optional | ||||
| parameter. If the 'subprotocol' parameter is not present, then its | ||||
| value defaults to the empty string."</t> | ||||
| <t>In the "Examples" section, in | ||||
| the first two SDP offer examples in | ||||
| the "a=dcmap" attribute lines 'label="BGCP"' was replaced with 'label="bfcp"' | ||||
| .</t> | ||||
| <t>In all examples, the "m" line | ||||
| proto value "DTLS/SCTP" was replaced with | ||||
| "UDP/DTLS/SCTP" and the "a=fmtp" attribute lines were replaced with | ||||
| "a=max-message-size" attribute lines, as per draft-ietf-mmusic-sctp-sdp-12.</ | ||||
| t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Changes against '-01'"> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t>Formal syntax for dcmap and dc | ||||
| sa attribute lines. </t> | ||||
| <t>Making subprotocol as an optio | ||||
| nal parameter in dcmap. </t> | ||||
| <t>Specifying disallowed paramete | ||||
| r combinations for max-time and max-retr. </t> | ||||
| <t>Clarifications on WebRTC data | ||||
| channel close procedures. </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Changes against '-00'"> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t> Revisions to identify differe | ||||
| nce between internal and external | ||||
| negotiation and their usage.</t> | ||||
| <t>Introduction of more generic t | ||||
| erminology, e.g. "application" instead of | ||||
| "browser".</t> | ||||
| <t>Clarification of how "max-retr | ||||
| and max-time affect the usage of | ||||
| unreliable and reliable WebRTC data channels.</t> | ||||
| <t>Updates of examples to take in | ||||
| to account the SDP syntax changes | ||||
| introduced with draft-ietf-mmusic-sctp-sdp-07.</t> | ||||
| <t>Removal of the SCTP port numbe | ||||
| r from the "a=dcmap" and "a=dcsa" attributes | ||||
| as this is now contained in the a=sctp-port attribute, | ||||
| and as draft-ietf-mmusic-sctp-sdp-07 supports only one SCTP association | ||||
| on top of the DTLS connection.</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| &RFC2119; | ||||
| &RFC4960; | ||||
| &RFC8174; | ||||
| &RFC3264; | ||||
| &RFC5234; | ||||
| &RFC6525; | ||||
| &RFC3629; | ||||
| &DATAREQ; | ||||
| &SDPBIS; | ||||
| &SDPSCTP; | ||||
| &SDPMUXATTR; | ||||
| &DATAPROTO; | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| &RFC4582; | ||||
| &RFC4975; | ||||
| &RFC6455; | ||||
| &CLUEDATA; | ||||
| &MSRPDATA; | ||||
| <reference anchor="WebRtcAPI" target="https://www.w3.org/ | ||||
| TR/2018/CR-webrtc-20180927/"> | ||||
| <front> | ||||
| <title> | ||||
| WebRTC 1.0: Real-time Communication Between Browsers | ||||
| </title> | ||||
| <author initials="A." surname="Bergkvist" | ||||
| fullname="Adam Bergkvist"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="D." surname="Burnett" f | ||||
| ullname="Daniel Burnett"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="C." surname="Jennings" | ||||
| fullname="Cullen Jennings"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="A." surname="Narayanan" | ||||
| fullname="Anant Narayanan"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="B." surname="Aboba" ful | ||||
| lname="Bernard Aboba"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="T." surname="Brandstett | ||||
| er" fullname="Taylor Brandstetter"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J." surname="Bruaroey" | ||||
| fullname="Jan-Ivar Bruaroey"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="September" day="27" year="20 | ||||
| 18"/> | ||||
| </front> | ||||
| <seriesInfo name="World Wide Web Consortium CR" v | ||||
| alue="CR-webrtc-20180927"/> | ||||
| <format type="HTML" target="https://www.w3.org/TR | ||||
| /2018/CR-webrtc-20180927"/> | ||||
| </reference> | ||||
| </references> | ||||
| <section title="Generic Data Channel Negotiation Aspects When Not | ||||
| Using DCEP" anchor="generic-out-of-band-aspects"> | ||||
| <t>This appendix summarizes how data channels work in gen | ||||
| eral and discusses | ||||
| some key aspects, which should be considered for the out-of-band negotiation | ||||
| of data | ||||
| channels if DCEP is not used.</t> | channels if DCEP is not used.</t> | |||
| <t>A WebRTC application creates a data channel | <t indent="0" pn="section-appendix.a-2">A WebRTC application creates a dat a channel | |||
| by providing a number of setup parameters (subprotocol, label, | by providing a number of setup parameters (subprotocol, label, | |||
| maximal number of retransmissions, maximal retransmission time, order of deli very, | maximal number of retransmissions, maximal retransmission time, order of deli very, | |||
| priority). The application also specifies | priority). The application also specifies whether | |||
| if it wants to make use of the negotiation using the DCEP | it wants to make use of the negotiation using DCEP | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>, or if the application | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent="RF | |||
| C8832"/> or | ||||
| intends to negotiate data channels using the SDP offer/answer protocol.</t> | intends to negotiate data channels using the SDP offer/answer protocol.</t> | |||
| <t>In any case, the SDP offer generated by the applicatio | <t indent="0" pn="section-appendix.a-3">In any case, the SDP offer generat | |||
| n is per | ed by the application is per | |||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/>. In brief, it contains one | <xref target="RFC8841" format="default" sectionFormat="of" derivedContent="RF | |||
| "m" line for the SCTP association on top of which data channels will run:</t> | C8841"/>. In brief, it contains one | |||
| <figure align="left" title=""> | "m=" line for the SCTP association on top of which the data channels will run | |||
| <artwork align="left"><![CDATA[ | : | |||
| </t> | ||||
| <sourcecode name="app-a-sdp-example" type="sdp" markers="false" pn="sectio | ||||
| n-appendix.a-4"> | ||||
| m=application 54111 UDP/DTLS/SCTP webrtc-datachannel | m=application 54111 UDP/DTLS/SCTP webrtc-datachannel | |||
| c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
| a=max-message-size:100000 | a=max-message-size:100000 | |||
| a=sctp-port:5000 | a=sctp-port:5000 | |||
| a=tls-id:abc3de65cddef001be82 | a=tls-id:abc3de65cddef001be82 | |||
| a=setup:actpass | a=setup:actpass | |||
| a=fingerprint:SHA-1 \ | a=fingerprint:SHA-1 \ | |||
| 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB | 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB</sourcecode> | |||
| ]]></artwork> | <aside pn="section-appendix.a-5"> | |||
| </figure> | <t indent="0" pn="section-appendix.a-5.1">Note: A WebRTC application wil | |||
| <t>Note: A WebRTC application will only use "m" line form | l only use the "m=" line format "webrtc-datachannel" | |||
| at "webrtc-datachannel", | and will not use other formats in the "m=" line for other protocols | |||
| and will not use other formats in the "m" line for other protocols | such as T.38 <xref target="T38" format="default" sectionFormat="of" derivedCo | |||
| such as t38. | ntent="T38"/>. | |||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/> supports only one SCTP | <xref target="RFC8841" format="default" sectionFormat="of" derivedContent="RF | |||
| C8841"/> supports only one SCTP | ||||
| association to be established on top of a DTLS association. | association to be established on top of a DTLS association. | |||
| </t> | </t> | |||
| <t>Note: The above SDP media description does not contain | </aside> | |||
| any channel-specific | <aside pn="section-appendix.a-6"> | |||
| <t indent="0" pn="section-appendix.a-6.1">Note: The above SDP media desc | ||||
| ription does not contain any channel-specific | ||||
| information.</t> | information.</t> | |||
| <section title="Stream Identifier Numbering" anchor="si_n | </aside> | |||
| um"> | <section anchor="si_num" numbered="true" removeInRFC="false" toc="include" | |||
| <t>Independently from the requested type of negot | pn="section-a.1"> | |||
| iation, the application | <name slugifiedName="name-stream-identifier-numbering">Stream Identifier | |||
| creating a data channel can either pass the stream identifier to the data ch | Numbering</name> | |||
| annel stack to assign | <t indent="0" pn="section-a.1-1">Independently from the requested type o | |||
| to the data channel or else let the data channel stack pick | f negotiation, the application | |||
| creating a data channel can either (1) pass the stream identifier to the dat | ||||
| a channel stack to assign | ||||
| to the data channel or (2) let the data channel stack pick | ||||
| one identifier from the unused ones.</t> | one identifier from the unused ones.</t> | |||
| <t>To avoid glare situations <xref target="RFC326 4"/>, each endpoint can moreover own an | <t indent="0" pn="section-a.1-2">Moreover, to avoid glare situations <xr ef target="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264" />, each endpoint can own an | |||
| exclusive set of stream identifiers, in which case an endpoint can | exclusive set of stream identifiers, in which case an endpoint can | |||
| only create a data channel with a stream identifier it owns.</t> | only create a data channel with a stream identifier it owns.</t> | |||
| <t>Which set of stream identifiers is owned by wh ich endpoint is | <t indent="0" pn="section-a.1-3">Which set of stream identifiers is owne d by which endpoint is | |||
| determined by convention or other means. | determined by convention or other means. | |||
| <list style="hanging"> | </t> | |||
| <t>Note:For data channels negotia | <aside pn="section-a.1-4"> | |||
| ted with the DCEP, one endpoint owns by | <t indent="0" pn="section-a.1-4.1">Note: For data channels negotiated | |||
| with DCEP, one endpoint owns by | ||||
| convention the even stream identifiers, whereas the other owns the | convention the even stream identifiers, whereas the other owns the | |||
| odd stream identifiers, as defined in | odd stream identifiers, as defined in | |||
| <xref target="I-D.ietf-rtcweb-data-protocol"/>.</t> | <xref target="RFC8832" format="default" sectionFormat="of" derivedContent= | |||
| <t>Note:For data channels negotia | "RFC8832"/>.</t> | |||
| ted via different protocol from DCEP, | </aside> | |||
| <aside pn="section-a.1-5"> | ||||
| <t indent="0" pn="section-a.1-5.1">Note: For data channels negotiated | ||||
| via a protocol other than DCEP, | ||||
| no convention is defined by default.</t> | no convention is defined by default.</t> | |||
| </list> | </aside> | |||
| </t> | </section> | |||
| </section> | <section anchor="sec-gen-ext-neg" numbered="true" removeInRFC="false" toc= | |||
| <section title="Generic Data Channel Negotiation Not Usin | "include" pn="section-a.2"> | |||
| g DCEP" anchor="sec-gen-ext-neg"> | <name slugifiedName="name-generic-data-channel-negotia">Generic Data Cha | |||
| <section title="Overview"> | nnel Negotiation Not Using DCEP</name> | |||
| <t>DCEP negotiation only provides for neg | <section numbered="true" removeInRFC="false" toc="include" pn="section-a | |||
| otiation of data channel | .2.1"> | |||
| transport parameters and does not provide for negotiation of subprotocol | <name slugifiedName="name-overview">Overview</name> | |||
| specific parameters. DCEP-less data channel negotiation can be defined to | <t indent="0" pn="section-a.2.1-1">DCEP negotiation only provides for | |||
| negotiation of data channel | ||||
| transport parameters and does not provide for negotiation of | ||||
| subprotocol-specific parameters. Non-DCEP data channel negotiation can be d | ||||
| efined to | ||||
| allow negotiation of parameters beyond those handled by DCEP, | allow negotiation of parameters beyond those handled by DCEP, | |||
| e.g., parameters specific to the subprotocol instantiated on a | e.g., parameters specific to the subprotocol instantiated on a | |||
| particular data channel.</t> | particular data channel.</t> | |||
| <t>The following procedures are common to all methods of data channel | <t indent="0" pn="section-a.2.1-2">The following procedures are common to all methods of data channel | |||
| negotiation not using DCEP, whether in-band (communicated using proprietary means on | negotiation not using DCEP, whether in-band (communicated using proprietary means on | |||
| an already established data channel) or out-of-band (using SDP offer/answer | an already-established data channel) or out-of-band (using the SDP | |||
| or | offer/answer mechanism or | |||
| some other protocol associated with the signaling channel).</t> | some other protocol associated with the signaling channel).</t> | |||
| </section> | </section> | |||
| <section title="Opening a Data Channel" anchor="e | <section anchor="ext_open" numbered="true" removeInRFC="false" toc="incl | |||
| xt_open"> | ude" pn="section-a.2.2"> | |||
| <t>In the case of DCEP-less negotiation, | <name slugifiedName="name-opening-a-data-channel">Opening a Data Chann | |||
| the endpoint application has the | el</name> | |||
| option to fully control the stream identifier assignments. However | <t indent="0" pn="section-a.2.2-1">In the case of non-DCEP negotiation | |||
| , the endpoint application has the | ||||
| option to fully control the stream identifier assignments. However, | ||||
| these assignments have to coexist with the assignments controlled by | these assignments have to coexist with the assignments controlled by | |||
| the data channel stack for the DCEP negotiated data channels (if | the data channel stack for data channels negotiated using DCEP (if | |||
| any). It is the responsibility of the application to ensure consistent | any). It is the responsibility of the application to ensure consistent | |||
| assignment of stream identifiers.</t> | assignment of stream identifiers.</t> | |||
| <t>When the application requests the crea | <t indent="0" pn="section-a.2.2-2">When the application requests that | |||
| tion of a new data channel to | the creation of a new data channel | |||
| be set up via DCEP-less negotiation, the data channel stack creates | be set up via non-DCEP negotiation, the data channel stack creates | |||
| the data channel locally without sending any DATA_CHANNEL_OPEN message | the data channel locally without sending any DATA_CHANNEL_OPEN messages | |||
| in-band. | in-band. | |||
| However, even if the ICE (Interactive Connectivity Establishment), | However, even if the ICE (Interactive Connectivity Establishment), | |||
| DTLS and SCTP procedures were already successfully | DTLS, and SCTP procedures were already successfully | |||
| completed, the application can't send data on this data channel until the | completed, the application can't send data on this data channel until the | |||
| negotiation is complete with the peer. This is because the peer needs | negotiation with the peer is complete. This is because the peer needs | |||
| to be aware of and accept the usage of this data channel. The | to be aware of and accept the usage of this data channel. The | |||
| peer, after accepting the data channel offer, can start sending data | peer, after accepting the data channel offer, can start sending data | |||
| immediately. This implies that the offerer may receive data channel | immediately. This implies that the offerer may receive data channel | |||
| subprotocol messages | subprotocol messages | |||
| before the negotiation is complete and the application should be | before the negotiation is complete, and the application should be | |||
| ready to handle it.</t> | ready to handle it.</t> | |||
| <t>If the peer rejects the data channel p | <t indent="0" pn="section-a.2.2-3">If the peer rejects the data channe | |||
| art of the offer then it | l part of the offer, then it | |||
| doesn't have to do anything as the data channel was not created using | doesn't have to do anything, as the data channel was not created using | |||
| the stack. The offerer on the other hand needs to close the data | the stack. The offerer, on the other hand, needs to close the data | |||
| channel that was opened by invoking relevant data channel stack API | channel that was opened by invoking relevant data channel stack API | |||
| procedures.</t> | procedures.</t> | |||
| <t>It is also worth noting that a data ch | <t indent="0" pn="section-a.2.2-4">It is also worth noting that a data | |||
| annel stack implementation may | channel stack implementation may | |||
| not provide any API to create and close data channels; instead the | not provide any APIs to create and close data channels; instead, the | |||
| data channels may be used on the fly as needed just by communicating | data channels may be used on the fly as needed, just by communicating | |||
| via non-DCEP means or by even having some local configuration/assumptions | via non-DCEP means or even by having some local configuration/assumptions | |||
| on both the peers.</t> | on both of the peers.</t> | |||
| <t>The application then negotiates the da | <t indent="0" pn="section-a.2.2-5">The application then negotiates the | |||
| ta channel | data channel | |||
| properties and subprotocol properties with the peer's application | properties and subprotocol properties with the peer's application | |||
| using a mechanism different from DCEP.</t> | using a mechanism different from DCEP.</t> | |||
| <t>The peer then symmetrically creates a data channel | <t indent="0" pn="section-a.2.2-6">The peer then symmetrically creates a data channel | |||
| with these negotiated data channel properties. This is the only way | with these negotiated data channel properties. This is the only way | |||
| for the peer's data channel stack to know which properties to apply | for the peer's data channel stack to know which properties to apply | |||
| when transmitting data on this channel. | when transmitting data on this channel. | |||
| The data channel stack must | The data channel stack must | |||
| allow data channel creation with any non-conflicting stream identifier | allow data channel creation with any nonconflicting stream identifier | |||
| so that both peers can create the data channel with the same | so that both peers can create the data channel with the same | |||
| stream identifier. | stream identifier. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Closing a Data Channel"> | <section numbered="true" removeInRFC="false" toc="include" pn="section-a | |||
| <t>When the application requests the clos | .2.3"> | |||
| ing of a | <name slugifiedName="name-closing-a-data-channel-2">Closing a Data Cha | |||
| nnel</name> | ||||
| <t indent="0" pn="section-a.2.3-1">When the application requests the c | ||||
| losing of a | ||||
| data channel negotiated without DCEP, | data channel negotiated without DCEP, | |||
| the data channel stack always performs an SCTP SSN | the data channel stack always performs an SCTP SSN | |||
| reset for this channel.</t> | Reset for this channel.</t> | |||
| <t>Depending upon the method used for DCE | <t indent="0" pn="section-a.2.3-2">Depending upon the method used for | |||
| P-less negotiation and the | non-DCEP negotiation and the | |||
| subprotocol associated with the data channel, the closing might in | subprotocol associated with the data channel, the closing of the data chann | |||
| addition be signaled to the peer via SDP offer/answer negotiation.</t> | el might also be signaled to the peer via SDP offer/answer negotiation.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <!-- sec-gen-ext-neg --> | </section> | |||
| </section> | <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc= | |||
| <!-- generic-out-of-band-aspects --> | "include" pn="section-appendix.b"> | |||
| </back> | <name slugifiedName="name-acknowledgements">Acknowledgements</name> | |||
| <t indent="0" pn="section-appendix.b-1">The authors wish to acknowledge th | ||||
| e borrowing of ideas from other | ||||
| draft documents by <contact fullname="Salvatore Loreto"/>, <contact fullname= | ||||
| "Gonzalo Camarillo"/>, <contact fullname="Peter Dunkley"/>, and | ||||
| <contact fullname="Gavin Llewellyn"/>. The authors also wish to thank <contac | ||||
| t fullname="Flemming Andreasen"/>, <contact fullname="Christian Groves"/>, | ||||
| <contact fullname="Gunnar Hellström"/>, <contact fullname="Paul Kyzivat"/> | ||||
| , <contact fullname="Jonathan Lennox"/>, | ||||
| <contact fullname="Uwe Rauschenbach"/>, and <contact fullname="Roman Shpount" | ||||
| /> for their invaluable comments.</t> | ||||
| <t indent="0" pn="section-appendix.b-2">Special thanks to <contact fullnam | ||||
| e="Christer Holmberg"/> for helping | ||||
| finish the document and cleaning up <xref target="section_procedures" form | ||||
| at="default" sectionFormat="of" derivedContent="Section 6"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="contributors" numbered="false" removeInRFC="false" toc="inc | ||||
| lude" pn="section-appendix.c"> | ||||
| <name slugifiedName="name-contributors">Contributors</name> | ||||
| <t indent="0" pn="section-appendix.c-1"><contact fullname="Juergen Stoetze | ||||
| r-Bradler"/> made significant | ||||
| contributions to this document and should be considered a coauthor.</t> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.d"> | ||||
| <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
| <author initials="K." surname="Drage" fullname="Keith Drage"> | ||||
| <organization showOnFrontPage="true">Unaffiliated</organization> | ||||
| <address> | ||||
| <email>drageke@ntlworld.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="M." surname="Makaraju" fullname="Maridi R. Makaraju (Raj | ||||
| u)"> | ||||
| <organization showOnFrontPage="true">Unaffiliated</organization> | ||||
| <address> | ||||
| <email>mmraju@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Richard Ejzak" initials="R." surname="Ejzak"> | ||||
| <organization showOnFrontPage="true">Unaffiliated</organization> | ||||
| <address> | ||||
| <email>richard.ejzak@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Jerome Marcon" initials="J." surname="Marcon"> | ||||
| <organization showOnFrontPage="true">Unaffiliated</organization> | ||||
| <address> | ||||
| <email>jeromee.marcon@free.fr</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="R." surname="Even" fullname="Roni Even" role="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>ron.even.tlv@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 121 change blocks. | ||||
| 1918 lines changed or deleted | 2086 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/ | ||||