| rfc8825xml2.original.xml | rfc8825.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | |||
| <?rfc toc="yes"?> | nsus="true" docName="draft-ietf-rtcweb-overview-19" indexInclude="true" ipr="tru | |||
| <?rfc tocompact="yes"?> | st200902" number="8825" prepTime="2021-01-16T21:00:15" scripts="Common,Latin" so | |||
| <?rfc tocdepth="3"?> | rtRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true | |||
| <?rfc tocindent="yes"?> | " xml:lang="en"> | |||
| <?rfc symrefs="yes"?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-rtcweb-overview-19" re | |||
| <?rfc sortrefs="yes"?> | l="prev"/> | |||
| <?rfc comments="yes"?> | <link href="https://dx.doi.org/10.17487/rfc8825" rel="alternate"/> | |||
| <?rfc inline="yes"?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <rfc category="std" docName="draft-ietf-rtcweb-overview-19" ipr="trust200902"> | ||||
| <front> | <front> | |||
| <title abbrev="WebRTC Overview">Overview: Real Time Protocols for | <title abbrev="WebRTC Overview">Overview: Real-Time Protocols for Browser-Ba | |||
| Browser-based Applications</title> | sed Applications</title> | |||
| <seriesInfo name="RFC" value="8825" stream="IETF"/> | ||||
| <author fullname="Harald T. Alvestrand" initials="H. T. " | <author fullname="Harald T. Alvestrand" initials="H." surname="Alvestrand"> | |||
| surname="Alvestrand"> | <organization showOnFrontPage="true">Google</organization> | |||
| <organization>Google</organization> | ||||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Kungsbron 2</street> | <street>Kungsbron 2</street> | |||
| <city>Stockholm</city> | <city>Stockholm</city> | |||
| <region/> | <region/> | |||
| <code>11122</code> | <code>11122</code> | |||
| <country>Sweden</country> | <country>Sweden</country> | |||
| </postal> | </postal> | |||
| <email>harald@alvestrand.no</email> | <email>harald@alvestrand.no</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="01" year="2021"/> | ||||
| <date day="12" month="November" year="2017"/> | <abstract pn="section-abstract"> | |||
| <t indent="0" pn="section-abstract-1">This document gives an overview and | ||||
| <abstract> | context of a protocol suite | |||
| <t>This document gives an overview and context of a protocol suite | ||||
| intended for use with real-time applications that can be deployed in | intended for use with real-time applications that can be deployed in | |||
| browsers - "real time communication on the Web".</t> | browsers -- "real-time communication on the Web".</t> | |||
| <t indent="0" pn="section-abstract-2">It intends to serve as a starting an | ||||
| <t>It intends to serve as a starting and coordination point to make sure | d coordination point to make sure | |||
| all the parts that are needed to achieve this goal are findable, and | that (1) all the parts that are needed to achieve this goal are findable | |||
| that the parts that belong in the Internet protocol suite are fully | and (2) the parts that belong in the Internet protocol suite are fully | |||
| specified and on the right publication track.</t> | specified and on the right publication track.</t> | |||
| <t indent="0" pn="section-abstract-3">This document is an applicability st | ||||
| <t>This document is an Applicability Statement - it does not itself | atement -- it does not itself | |||
| specify any protocol, but specifies which other specifications WebRTC | specify any protocol, but it specifies which other specifications | |||
| compliant implementations are supposed to follow.</t> | implementations are supposed to follow to be compliant with Web | |||
| Real-Time Communication (WebRTC).</t> | ||||
| <t>This document is a work item of the RTCWEB working group.</t> | ||||
| </abstract> | </abstract> | |||
| <boilerplate> | ||||
| <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
| "exclude" pn="section-boilerplate.1"> | ||||
| <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/rfc8825" 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" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | ||||
| at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-principles-and-terminology">Princi | ||||
| ples and Terminology</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.2.2"> | ||||
| <li pn="section-toc.1-1.2.2.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1">< | ||||
| xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2. | ||||
| 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-go | ||||
| als-of-this-document">Goals of This Document</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1">< | ||||
| xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2. | ||||
| 2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-re | ||||
| lationship-between-api-an">Relationship between API and Protocol</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent= | ||||
| "2.3" format="counter" sectionFormat="of" target="section-2.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-on-interoperability-an | ||||
| d-inn">On Interoperability and Innovation</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.2.2.4.1"><xref derivedContent= | ||||
| "2.4" format="counter" sectionFormat="of" target="section-2.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-terminology">Terminolo | ||||
| gy</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3"> | ||||
| <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
| at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-architecture-and-functional">Archi | ||||
| tecture and Functionality Groups</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-data-transport">Data Transport</xr | ||||
| ef></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-data-framing-and-securing">Data Fr | ||||
| aming and Securing</xref></t> | ||||
| </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-data-formats">Data Formats</xref>< | ||||
| /t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-connection-management">Connection | ||||
| Management</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-presentation-and-control">Presenta | ||||
| tion and Control</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-local-system-support-functi">Local | ||||
| System Support Functions</xref></t> | ||||
| </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-iana-considerations">IANA Consid | ||||
| erations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | ||||
| rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-security-considerations">Securit | ||||
| y Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" fo | ||||
| rmat="counter" sectionFormat="of" target="section-12"/>. <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.12.2"> | ||||
| <li pn="section-toc.1-1.12.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent | ||||
| ="12.1" format="counter" sectionFormat="of" target="section-12.1"/>. <xref deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
| s">Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent | ||||
| ="12.2" format="counter" sectionFormat="of" target="section-12.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.13"> | ||||
| <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgeme | ||||
| nts</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14"> | ||||
| <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-address">Author's Addre | ||||
| ss</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn | |||
| <t>The Internet was, from very early in its lifetime, considered a | ="section-1"> | |||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1">The Internet was, from very early in its li | ||||
| fetime, considered a | ||||
| possible vehicle for the deployment of real-time, interactive | possible vehicle for the deployment of real-time, interactive | |||
| applications - with the most easily imaginable being audio conversations | applications -- with the most easily imaginable being audio conversations | |||
| (aka "Internet telephony") and video conferencing.</t> | (aka "Internet telephony") and video conferencing.</t> | |||
| <t indent="0" pn="section-1-2">The first attempts to build such applicatio | ||||
| <t>The first attempts to build this were dependent on special networks, | ns were dependent on special networks, | |||
| special hardware and custom-built software, often at very high prices or | special hardware, and custom-built software, often at very high prices or | |||
| at low quality, placing great demands on the infrastructure.</t> | of low quality, placing great demands on the infrastructure. | |||
| </t> | ||||
| <t>As the available bandwidth has increased, and as processors and other | <t indent="0" pn="section-1-3">As the available bandwidth has increased, a | |||
| hardware has become ever faster, the barriers to participation have | nd as processors and other | |||
| hardware have become ever faster, the barriers to participation have | ||||
| decreased, and it has become possible to deliver a satisfactory | decreased, and it has become possible to deliver a satisfactory | |||
| experience on commonly available computing hardware.</t> | experience on commonly available computing hardware.</t> | |||
| <t indent="0" pn="section-1-4">Still, there are a number of barriers to th | ||||
| <t>Still, there are a number of barriers to the ability to communicate | e ability to communicate | |||
| universally - one of these is that there is, as of yet, no single set of | universally -- one of these is that there is, as of yet, no single set of | |||
| communication protocols that all agree should be made available for | communication protocols that all agree should be made available for | |||
| communication; another is the sheer lack of universal identification | communication; another is the sheer lack of universal identification | |||
| systems (such as is served by telephone numbers or email addresses in | systems (such as is served by telephone numbers or email addresses in | |||
| other communications systems).</t> | other communications systems).</t> | |||
| <t indent="0" pn="section-1-5">Development of "The Universal Solution" has | ||||
| <t>Development of The Universal Solution has, however, proved hard.</t> | , however, proved hard.</t> | |||
| <t indent="0" pn="section-1-6">The last few years have also seen a new pla | ||||
| <t>The last few years have also seen a new platform rise for deployment | tform rise for deployment | |||
| of services: The browser-embedded application, or "Web application". It | of services: the browser-embedded application, or "web application". It | |||
| turns out that as long as the browser platform has the necessary | turns out that as long as the browser platform has the necessary | |||
| interfaces, it is possible to deliver almost any kind of service on | interfaces, it is possible to deliver almost any kind of service | |||
| it.</t> | on it.</t> | |||
| <t indent="0" pn="section-1-7">Traditionally, these interfaces have been d | ||||
| <t>Traditionally, these interfaces have been delivered by plugins, which | elivered by plugins, which | |||
| had to be downloaded and installed separately from the browser; in the | had to be downloaded and installed separately from the browser; in the | |||
| development of HTML5, application developers see much promise in the | development of HTML5 <xref target="HTML5" format="default" sectionFormat=" of" derivedContent="HTML5"/>, application developers see much promise in the | |||
| possibility of making those interfaces available in a standardized way | possibility of making those interfaces available in a standardized way | |||
| within the browser.</t> | within the browser.</t> | |||
| <t indent="0" pn="section-1-8">This memo describes a set of building block | ||||
| <t>This memo describes a set of building blocks that can be made | s that (1) can be made | |||
| accessible and controllable through a Javascript API in a browser, and | accessible and controllable through a JavaScript API in a browser and | |||
| which together form a sufficient set of functions to allow the use of | (2) together form a sufficient set of functions to allow the use of | |||
| interactive audio and video in applications that communicate directly | interactive audio and video in applications that communicate directly | |||
| between browsers across the Internet. The resulting protocol suite is | between browsers across the Internet. The resulting protocol suite is | |||
| intended to enable all the applications that are described as required | intended to enable all the applications that are described as required | |||
| scenarios in the use cases document <xref target="RFC7478"/>.</t> | scenarios in the WebRTC "use cases" document <xref target="RFC7478" format | |||
| ="default" sectionFormat="of" derivedContent="RFC7478"/>.</t> | ||||
| <t>Other efforts, for instance the W3C Web Real-Time Communications, | <t indent="0" pn="section-1-9">Other efforts -- for instance, the W3C Web | |||
| Web Applications Security, and Device and Sensor working groups, focus | Real-Time Communications, | |||
| Web Applications Security, and Devices and Sensors Working Groups -- focus | ||||
| on making standardized APIs and interfaces available, within or | on making standardized APIs and interfaces available, within or | |||
| alongside the HTML5 effort, for those functions. This memo concentrates | alongside the HTML5 effort, for those functions. This memo concentrates | |||
| on specifying the protocols and subprotocols that are needed to specify | on specifying the protocols and subprotocols that are needed to specify | |||
| the interactions over the network.</t> | the interactions over the network.</t> | |||
| <t indent="0" pn="section-1-10">Operators should note that deployment of W | ||||
| <t>Operators should note that deployment of WebRTC will result in a | ebRTC will result in a | |||
| change in the nature of signaling for real time media on the network, | change in the nature of signaling for real-time media on the network | |||
| and may result in a shift in the kinds of devices used to create and | and may result in a shift in the kinds of devices used to create and | |||
| consume such media. In the case of signaling, WebRTC session setup | consume such media. In the case of signaling, WebRTC session setup | |||
| will typically occur over TLS-secured web technologies using | will typically occur over TLS-secured web technologies using | |||
| application-specific protocols. Operational techniques that involve | application-specific protocols. Operational techniques that involve | |||
| inserting network elements to interpret SDP -- either through endpoint | inserting network elements to interpret the Session Description Protocol | |||
| cooperation <xref target="RFC3361"/> or through the transparent | (SDP) -- through either (1) the endpoint asking the network for a SIP serv | |||
| insertion of SIP Application Level Gateways (ALGs) -- will not work | er <xref target="RFC3361" format="default" sectionFormat="of" derivedContent="RF | |||
| C3361"/> or (2) the transparent | ||||
| insertion of SIP Application Layer Gateways (ALGs) -- will not work | ||||
| with such signaling. In the case of networks using cooperative | with such signaling. In the case of networks using cooperative | |||
| endpoints, the approaches defined in <xref target="RFC8155"/> may serve | endpoints, the approaches defined in <xref target="RFC8155" format="defaul | |||
| as a suitable replacement for <xref target="RFC3361"/>. The increase in | t" sectionFormat="of" derivedContent="RFC8155"/> may serve | |||
| as a suitable replacement for <xref target="RFC3361" format="default" sect | ||||
| ionFormat="of" derivedContent="RFC3361"/>. The increase in | ||||
| browser-based communications may also lead to a shift away from | browser-based communications may also lead to a shift away from | |||
| dedicated real-time-communications hardware, such as SIP | dedicated real-time-communications hardware, such as SIP | |||
| desk phones. This will diminish the efficacy of operational | desk phones. This will diminish the efficacy of operational | |||
| techniques that place dedicated real-time devices on their own | techniques that place dedicated real-time devices on their own | |||
| network segment, address range, or VLAN for purposes such as | network segment, address range, or VLAN for purposes such as | |||
| applying traffic filtering and QoS. Applying the markings | applying traffic filtering and QoS. Applying the markings | |||
| described in <xref target="I-D.ietf-tsvwg-rtcweb-qos"/> may be | described in <xref target="RFC8837" format="default" sectionFormat="of" de rivedContent="RFC8837"/> may be | |||
| appropriate replacements for such techniques.</t> | appropriate replacements for such techniques.</t> | |||
| <t indent="0" pn="section-1-11">While this document formally relies on <xr | ||||
| <t>This memo uses the term "WebRTC" (note the case used) to refer to the | ef target="RFC8445" format="default" sectionFormat="of" derivedContent="RFC8445" | |||
| />, | ||||
| at the time of its publication, the majority of WebRTC implementations | ||||
| support the version of Interactive Connectivity Establishment (ICE) | ||||
| that is described in <xref target="RFC5245" format="default" sectionFormat="of" | ||||
| derivedContent="RFC5245"/> and use a | ||||
| pre-standard version of the Trickle ICE mechanism described in | ||||
| <xref target="RFC8838" format="default" sectionFormat="of" derivedContent="RFC88 | ||||
| 38"/>. The "ice2" attribute defined in <xref target="RFC8445" format="default" s | ||||
| ectionFormat="of" derivedContent="RFC8445"/> can be used to detect the version i | ||||
| n use by a | ||||
| remote endpoint and to provide a smooth transition from the older | ||||
| specification to the newer one.</t> | ||||
| <t indent="0" pn="section-1-12">This memo uses the term "WebRTC" (note the | ||||
| case used) to refer to the | ||||
| overall effort consisting of both IETF and W3C efforts.</t> | overall effort consisting of both IETF and W3C efforts.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | ||||
| <section title="Principles and Terminology"> | <name slugifiedName="name-principles-and-terminology">Principles and Termi | |||
| <t/> | nology</name> | |||
| <t indent="0" pn="section-2-1"/> | ||||
| <section title="Goals of this document"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-2.1 | |||
| <t>The goal of the WebRTC protocol specification is to specify a set | "> | |||
| <name slugifiedName="name-goals-of-this-document">Goals of This Document | ||||
| </name> | ||||
| <t indent="0" pn="section-2.1-1">The goal of the WebRTC protocol specifi | ||||
| cation is to specify a set | ||||
| of protocols that, if all are implemented, will allow an | of protocols that, if all are implemented, will allow an | |||
| implementation to communicate with another implementation using audio, | implementation to communicate with another implementation using audio, | |||
| video and data sent along the most direct possible path between the | video, and data sent along the most direct possible path between the | |||
| participants.</t> | participants.</t> | |||
| <t indent="0" pn="section-2.1-2">This document is intended to serve as t | ||||
| <t>This document is intended to serve as the roadmap to the WebRTC | he roadmap to the WebRTC | |||
| specifications. It defines terms used by other parts of the WebRTC | specifications. It defines terms used by other parts of the WebRTC | |||
| protocol specifications, lists references to other specifications that | protocol specifications, lists references to other specifications that | |||
| don't need further elaboration in the WebRTC context, and gives | don't need further elaboration in the WebRTC context, and gives | |||
| pointers to other documents that form part of the WebRTC suite.</t> | pointers to other documents that form part of the WebRTC suite.</t> | |||
| <t indent="0" pn="section-2.1-3">By reading this document and the docume | ||||
| <t>By reading this document and the documents it refers to, it should | nts it refers to, it should | |||
| be possible to have all information needed to implement a WebRTC | be possible to have all information needed to implement a | |||
| compatible implementation.</t> | WebRTC-compatible implementation.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2.2 | ||||
| <section title="Relationship between API and protocol"> | "> | |||
| <t>The total WebRTC effort consists of two major parts, each | <name slugifiedName="name-relationship-between-api-an">Relationship betw | |||
| een API and Protocol</name> | ||||
| <t indent="0" pn="section-2.2-1">The total WebRTC effort consists of two | ||||
| major parts, each | ||||
| consisting of multiple documents:</t> | consisting of multiple documents:</t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2 | ||||
| <t><list style="symbols"> | .2-2"> | |||
| <t>A protocol specification, done in the IETF</t> | <li pn="section-2.2-2.1">A protocol specification, done in the IETF</l | |||
| i> | ||||
| <t>A Javascript API specification, defined in a series of W3C | <li pn="section-2.2-2.2">A JavaScript API specification, defined in a | |||
| documents <xref target="W3C.WD-webrtc-20120209"/><xref | series of W3C | |||
| target="W3C.WD-mediacapture-streams-20120628"/></t> | documents <xref target="W3C.WD-webrtc" format="default" sectionForma | |||
| </list>Together, these two specifications aim to provide an | t="of" derivedContent="W3C.WD-webrtc"/> | |||
| environment where Javascript embedded in any page, when suitably | <xref target="W3C.WD-mediacapture-streams" format="default" sectionF | |||
| ormat="of" derivedContent="W3C.WD-mediacapture-streams"/></li> | ||||
| </ul> | ||||
| <t indent="0" pn="section-2.2-3">Together, these two specifications aim | ||||
| to provide an | ||||
| environment where JavaScript embedded in any page, when suitably | ||||
| authorized by its user, is able to set up communication using audio, | authorized by its user, is able to set up communication using audio, | |||
| video and auxiliary data, as long as the browser supports this | video, and auxiliary data, as long as the browser supports these | |||
| specification. The browser environment does not constrain the types of | specifications. The browser environment does not constrain the types of | |||
| application in which this functionality can be used.</t> | application in which this functionality can be used.</t> | |||
| <t indent="0" pn="section-2.2-4">The protocol specification does not ass | ||||
| <t>The protocol specification does not assume that all implementations | ume that all implementations | |||
| implement this API; it is not intended to be necessary for | implement this API; it is not intended to be necessary for | |||
| interoperation to know whether the entity one is communicating with is | interoperation to know whether the entity one is communicating with is | |||
| a browser or another device implementing this specification.</t> | a browser or another device implementing the protocol specification.</t> | |||
| <t indent="0" pn="section-2.2-5">The goal of cooperation between the pro | ||||
| <t>The goal of cooperation between the protocol specification and the | tocol specification and the | |||
| API specification is that for all options and features of the protocol | API specification is that for all options and features of the protocol | |||
| specification, it should be clear which API calls to make to exercise | specification, it should be clear which API calls to make to exercise | |||
| that option or feature; similarly, for any sequence of API calls, it | that option or feature; similarly, for any sequence of API calls, it | |||
| should be clear which protocol options and features will be invoked. | should be clear which protocol options and features will be invoked. | |||
| Both subject to constraints of the implementation, of course.</t> | Both are subject to constraints of the implementation, of course.</t> | |||
| <t indent="0" pn="section-2.2-6">The following terms are used across the | ||||
| <t>The following terms are used across the documents specifying the | documents specifying the | |||
| WebRTC suite, in the specific meanings given here. Not all terms are | WebRTC suite, with the specific meanings given here. Not all terms are | |||
| used in this document. Other terms are used in their commonly used | used in this document. Other terms are used per their commonly used | |||
| meaning.</t> | meanings.</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-2.2-7"> | ||||
| <t><list style="hanging"> | <dt pn="section-2.2-7.1">Agent:</dt> | |||
| <t hangText="Agent:">Undefined term. See "SDP Agent" and "ICE | <dd pn="section-2.2-7.2">Undefined term. See "SDP Agent" and "ICE | |||
| Agent".</t> | Agent".</dd> | |||
| <dt pn="section-2.2-7.3">Application Programming Interface (API):</dt> | ||||
| <t hangText="Application Programming Interface (API):">A | <dd pn="section-2.2-7.4">A | |||
| specification of a set of calls and events, usually tied to a | specification of a set of calls and events, usually tied to a | |||
| programming language or an abstract formal specification such as | programming language or an abstract formal specification such as | |||
| WebIDL, with its defined semantics.</t> | WebIDL, with its defined semantics.</dd> | |||
| <dt pn="section-2.2-7.5">Browser:</dt> | ||||
| <t hangText="Browser:">Used synonymously with "Interactive User | <dd pn="section-2.2-7.6">Used synonymously with "interactive user | |||
| Agent" as defined in the HTML specification <xref | agent" as defined in <xref target="HTML5" format="default" sectionFo | |||
| target="W3C.WD-html5-20110525"/>. See also "WebRTC User | rmat="of" derivedContent="HTML5"/>. | |||
| Agent".</t> | See also the "WebRTC Browser" (aka "WebRTC User Agent") definition below.</dd> | |||
| <dt pn="section-2.2-7.7">Data Channel:</dt> | ||||
| <t hangText="Data Channel:">An abstraction that allows data to be | <dd pn="section-2.2-7.8">An abstraction that allows data to be | |||
| sent between WebRTC endpoints in the form of messages. Two | sent between WebRTC endpoints in the form of messages. Two | |||
| endpoints can have multiple data channels between them.</t> | endpoints can have multiple data channels between them.</dd> | |||
| <dt pn="section-2.2-7.9">ICE Agent:</dt> | ||||
| <t hangText="ICE Agent:">An implementation of the Interactive | <dd pn="section-2.2-7.10">An implementation of the Interactive Connect | |||
| Connectivity Establishment (ICE) <xref | ivity Establishment (ICE) protocol <xref target="RFC8445" format="default" secti | |||
| target="RFC5245"/> protocol. An ICE Agent may also | onFormat="of" derivedContent="RFC8445"/>. An ICE Agent may also | |||
| be an SDP Agent, but there exist ICE Agents that do not use SDP | be an SDP Agent, but there exist ICE Agents that do not use SDP | |||
| (for instance those that use Jingle <xref target="XEP-0166"> | (for instance, those that use Jingle <xref target="XEP-0166" format= | |||
| </xref>).</t> | "default" sectionFormat="of" derivedContent="XEP-0166"> | |||
| </xref>).</dd> | ||||
| <t hangText="Interactive:">Communication between multiple parties, | <dt pn="section-2.2-7.11">Interactive:</dt> | |||
| <dd pn="section-2.2-7.12">Communication between multiple parties, | ||||
| where the expectation is that an action from one party can cause a | where the expectation is that an action from one party can cause a | |||
| reaction by another party, and the reaction can be observed by the | reaction by another party, and the reaction can be observed by the | |||
| first party, with the total time required for the | first party, where the total time required for the | |||
| action/reaction/observation is on the order of no more than | action/reaction/observation is on the order of no more than | |||
| hundreds of milliseconds.</t> | hundreds of milliseconds.</dd> | |||
| <dt pn="section-2.2-7.13">Media:</dt> | ||||
| <t hangText="Media:">Audio and video content. Not to be confused | <dd pn="section-2.2-7.14">Audio and video content. Not to be confused | |||
| with "transmission media" such as wires.</t> | with "transmission media" such as wires.</dd> | |||
| <dt pn="section-2.2-7.15">Media Path:</dt> | ||||
| <t hangText="Media Path:">The path that media data follows from | <dd pn="section-2.2-7.16">The path that media data follows from | |||
| one WebRTC endpoint to another.</t> | one WebRTC endpoint to another.</dd> | |||
| <dt pn="section-2.2-7.17">Protocol:</dt> | ||||
| <t hangText="Protocol:">A specification of a set of data units, | <dd pn="section-2.2-7.18">A specification of a set of data units, | |||
| their representation, and rules for their transmission, with their | their representation, and rules for their transmission, with their | |||
| defined semantics. A protocol is usually thought of as going | defined semantics. A protocol is usually thought of as going | |||
| between systems.</t> | between systems.</dd> | |||
| <dt pn="section-2.2-7.19">Real-Time Media:</dt> | ||||
| <t hangText="Real-time Media:">Media where generation of content | <dd pn="section-2.2-7.20">Media where the generation | |||
| and display of content are intended to occur closely together in | and display of content are intended to occur closely together in | |||
| time (on the order of no more than hundreds of milliseconds). | time (on the order of no more than hundreds of milliseconds). | |||
| Real-time media can be used to support interactive | Real-time media can be used to support interactive | |||
| communication.</t> | communication.</dd> | |||
| <dt pn="section-2.2-7.21">SDP Agent:</dt> | ||||
| <t hangText="SDP Agent:">The protocol implementation involved in | <dd pn="section-2.2-7.22">The protocol implementation involved in | |||
| the Session Description Protocol (SDP) offer/answer exchange, as | the Session Description Protocol (SDP) offer/answer exchange, as | |||
| defined in <xref target="RFC3264"/> section 3.</t> | defined in <xref target="RFC3264" sectionFormat="comma" section="3" | |||
| format="default" derivedLink="https://rfc-editor.org/rfc/rfc3264#section-3" deri | ||||
| <t hangText="Signaling:">Communication that happens in order to | vedContent="RFC3264"/>.</dd> | |||
| establish, manage and control media paths and data paths.</t> | <dt pn="section-2.2-7.23">Signaling:</dt> | |||
| <dd pn="section-2.2-7.24">Communication that happens in order to | ||||
| <t hangText="Signaling Path:">The communication channels used | establish, manage, and control media paths and data paths.</dd> | |||
| <dt pn="section-2.2-7.25">Signaling Path:</dt> | ||||
| <dd pn="section-2.2-7.26">The communication channels used | ||||
| between entities participating in signaling to transfer signaling. | between entities participating in signaling to transfer signaling. | |||
| There may be more entities in the signaling path than in the media | There may be more entities in the signaling path than in the media | |||
| path.</t> | path.</dd> | |||
| <dt pn="section-2.2-7.27">WebRTC Browser (also called a "WebRTC User A | ||||
| <t hangText="WebRTC Browser:">(also called a WebRTC User Agent | gent" or "WebRTC UA"):</dt> | |||
| or WebRTC UA) Something that conforms to both the protocol | <dd pn="section-2.2-7.28"> Something that conforms to both the protoc | |||
| specification and the Javascript API cited above.</t> | ol | |||
| specification and the JavaScript API cited above.</dd> | ||||
| <t hangText="WebRTC non-Browser:"> Something that conforms to | <dt pn="section-2.2-7.29">WebRTC Non-Browser:</dt> | |||
| the protocol specification, but does not claim to implement the | <dd pn="section-2.2-7.30"> Something that conforms to | |||
| Javascript API. This can also be called a "WebRTC device" or | the protocol specification but does not claim to implement the | |||
| "WebRTC native application".</t> | JavaScript API. This can also be called a "WebRTC device" or | |||
| "WebRTC native application".</dd> | ||||
| <t hangText="WebRTC Endpoint:"> Either a WebRTC browser or a | <dt pn="section-2.2-7.31">WebRTC Endpoint:</dt> | |||
| WebRTC non-browser. It conforms to the protocol specification.</t> | <dd pn="section-2.2-7.32"> Either a WebRTC browser or a | |||
| WebRTC non-browser. It conforms to the protocol specification.</dd> | ||||
| <t hangText="WebRTC-compatible Endpoint:"> An endpoint that is able | <dt pn="section-2.2-7.33">WebRTC-Compatible Endpoint:</dt> | |||
| to successfully communicate with a WebRTC endpoint, but may fail to | <dd pn="section-2.2-7.34"> An endpoint that is able | |||
| to successfully communicate with a WebRTC endpoint but may fail to | ||||
| meet some requirements of a WebRTC endpoint. This may limit where | meet some requirements of a WebRTC endpoint. This may limit where | |||
| in the network such an endpoint can be attached, or may limit the | in the network such an endpoint can be attached or may limit the | |||
| security guarantees that it offers to others. It is not | security guarantees that it offers to others. It is not | |||
| constrained by this specification; when it is mentioned at all, it | constrained by this specification; when it is mentioned at all, it | |||
| is to note the implications on WebRTC-compatible endpoints of the | is to note the implications on WebRTC-compatible endpoints of the | |||
| requirements placed on WebRTC endpoints.</t> | requirements placed on WebRTC endpoints.</dd> | |||
| <dt pn="section-2.2-7.35">WebRTC Gateway:</dt> | ||||
| <t hangText="WebRTC Gateway:"> A WebRTC-compatible endpoint that | <dd pn="section-2.2-7.36"> A WebRTC-compatible endpoint that | |||
| mediates media traffic to non-WebRTC entities.</t> | mediates media traffic to non-WebRTC entities.</dd> | |||
| </list>All WebRTC browsers are WebRTC endpoints, so any requirement | </dl> | |||
| <t indent="0" pn="section-2.2-8">All WebRTC browsers are WebRTC endpoint | ||||
| s, so any requirement | ||||
| on a WebRTC endpoint also applies to a WebRTC browser.</t> | on a WebRTC endpoint also applies to a WebRTC browser.</t> | |||
| <t indent="0" pn="section-2.2-9">A WebRTC non-browser may be capable of | ||||
| <t>A WebRTC non-browser may be capable of hosting applications in a | hosting applications in a | |||
| similar way to the way in which a browser can host Javascript | way that is similar to the way in which a browser can host JavaScript | |||
| applications, typically by offering APIs in other languages. For | applications, typically by offering APIs in other languages. For | |||
| instance it may be implemented as a library that offers a C++ API | instance, it may be implemented as a library that offers a C++ API | |||
| intended to be loaded into applications. In this case, similar | intended to be loaded into applications. In this case, | |||
| security considerations as for Javascript may be needed; however, | security considerations similar to those for JavaScript may be needed; h | |||
| owever, | ||||
| since such APIs are not defined or referenced here, this document | since such APIs are not defined or referenced here, this document | |||
| cannot give any specific rules for those interfaces.</t> | cannot give any specific rules for those interfaces.</t> | |||
| <t indent="0" pn="section-2.2-10">WebRTC gateways are described in a sep | ||||
| <t>WebRTC gateways are described in a separate document, <xref | arate document <xref target="I-D.ietf-rtcweb-gateways" format="default" sectionF | |||
| target="I-D.ietf-rtcweb-gateways"/>.</t> | ormat="of" derivedContent="WebRTC-Gateways"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2.3 | ||||
| <section title="On interoperability and innovation"> | "> | |||
| <t>The "Mission statement of the IETF" <xref target="RFC3935"/> states | <name slugifiedName="name-on-interoperability-and-inn">On Interoperabili | |||
| ty and Innovation</name> | ||||
| <t indent="0" pn="section-2.3-1">The "Mission statement for the IETF" <x | ||||
| ref target="RFC3935" format="default" sectionFormat="of" derivedContent="RFC3935 | ||||
| "/> states | ||||
| that "The benefit of a standard to the Internet is in interoperability | that "The benefit of a standard to the Internet is in interoperability | |||
| - that multiple products implementing a standard are able to work | - that multiple products implementing a standard are able to work | |||
| together in order to deliver valuable functions to the Internet's | together in order to deliver valuable functions to the Internet's | |||
| users."</t> | users."</t> | |||
| <t indent="0" pn="section-2.3-2">Communication on the Internet frequentl | ||||
| <t>Communication on the Internet frequently occurs in two phases:</t> | y occurs in two phases:</t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2 | ||||
| <t><list style="symbols"> | .3-3"> | |||
| <t>Two parties communicate, through some mechanism, what | <li pn="section-2.3-3.1">Two parties communicate, through some mechani | |||
| functionality they both are able to support</t> | sm, what | |||
| functionality they are both able to support.</li> | ||||
| <t>They use that shared communicative functionality to | <li pn="section-2.3-3.2">They use that shared communicative functional | |||
| communicate, or, failing to find anything in common, give up on | ity to | |||
| communication.</t> | communicate or, failing to find anything in common, give up on | |||
| </list>There are often many choices that can be made for | communication.</li> | |||
| </ul> | ||||
| <t indent="0" pn="section-2.3-4">There are often many choices that can b | ||||
| e made for | ||||
| communicative functionality; the history of the Internet is rife with | communicative functionality; the history of the Internet is rife with | |||
| the proposal, standardization, implementation, and success or failure | the proposal, standardization, implementation, and success or failure | |||
| of many types of options, in all sorts of protocols.</t> | of many types of options, in all sorts of protocols.</t> | |||
| <t indent="0" pn="section-2.3-5">The goal of having a mandatory-to-imple | ||||
| <t>The goal of having a mandatory to implement function set is to | ment function set is to | |||
| prevent negotiation failure, not to preempt or prevent | prevent negotiation failure, not to preempt or prevent | |||
| negotiation.</t> | negotiation.</t> | |||
| <t indent="0" pn="section-2.3-6">The presence of a mandatory-to-implemen | ||||
| <t>The presence of a mandatory to implement function set serves as a | t function set serves as a | |||
| strong changer of the marketplace of deployment - in that it gives a | strong changer of the marketplace of deployment in that it gives a | |||
| guarantee that, as long as you conform to a specification, and the | guarantee that you can communicate successfully as long as (1) you confo | |||
| other party is willing to accept communication at the base level of | rm to a specification and | |||
| that specification, you can communicate successfully.</t> | (2) the other party is willing to accept communication at the base level | |||
| of | ||||
| <t>The alternative, that is having no mandatory to implement, does | that specification.</t> | |||
| not mean that you cannot communicate, it merely means that in order to | <t indent="0" pn="section-2.3-7">The alternative (that is, not having a | |||
| be part of the communications partnership, you have to implement the | mandatory-to-implement | |||
| standard "and then some". The "and then some" is usually called a | function) does not mean that you cannot communicate; it merely | |||
| means that in order to be part of the communications partnership, | ||||
| you have to implement the standard "and then some". The "and then some" is usua | ||||
| lly called a | ||||
| profile of some sort; in the version most antithetical to the Internet | profile of some sort; in the version most antithetical to the Internet | |||
| ethos, that "and then some" consists of having to use a specific | ethos, that "and then some" consists of having to use a specific | |||
| vendor's product only.</t> | vendor's product only.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2.4 | ||||
| <section title="Terminology"> | "> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name slugifiedName="name-terminology">Terminology</name> | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | <t indent="0" pn="section-2.4-1">The key words "<bcp14>MUST</bcp14>", "< | |||
| document are to be interpreted as described in <xref | bcp14>MUST NOT</bcp14>", | |||
| target="RFC2119"/>.</t> | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
| "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | ||||
| "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
| to be interpreted as described in BCP 14 <xref target="RFC2119" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC2119"/> | ||||
| <xref target="RFC8174" format="default" sectionFormat="of" derivedCont | ||||
| ent="RFC8174"/> when, and only when, they appear in all capitals, | ||||
| as shown here.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="arch-func-grps" numbered="true" toc="include" removeInRFC=" | ||||
| <section title="Architecture and Functionality groups"> | false" pn="section-3"> | |||
| <t>For browser-based applications, the model for real-time support does | <name slugifiedName="name-architecture-and-functional">Architecture and Fu | |||
| nctionality Groups</name> | ||||
| <t indent="0" pn="section-3-1">For browser-based applications, the model f | ||||
| or real-time support does | ||||
| not assume that the browser will contain all the functions needed for | not assume that the browser will contain all the functions needed for | |||
| an application such as a telephone or a video conference. The vision is | an application such as a telephone or a video conference. The vision is | |||
| that the browser will have the functions needed for a Web application, | that the browser will have the functions needed for a web application, | |||
| working in conjunction with its backend servers, to implement these | working in conjunction with its backend servers, to implement these | |||
| functions.</t> | functions.</t> | |||
| <t indent="0" pn="section-3-2">This means that two vital interfaces need s | ||||
| <t>This means that two vital interfaces need specification: The | pecification: the | |||
| protocols that browsers use to talk to each other, without any | protocols that browsers use to talk to each other, without any | |||
| intervening servers, and the APIs that are offered for a Javascript | intervening servers; and the APIs that are offered for a JavaScript | |||
| application to take advantage of the browser's functionality.</t> | application to take advantage of the browser's functionality.</t> | |||
| <figure anchor="fig-browser-model" align="left" suppress-title="false" pn= | ||||
| <figure anchor="fig-browser-model" title="Browser Model"> | "figure-1"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-browser-model">Browser Model</name> | |||
| <artwork name="" type="" align="left" alt="" pn="section-3-3.1"> | ||||
| +------------------------+ On-the-wire | +------------------------+ On-the-wire | |||
| | | Protocols | | | Protocols | |||
| | Servers |---------> | | Servers |---------> | |||
| | | | | | | |||
| | | | | | | |||
| +------------------------+ | +------------------------+ | |||
| ^ | ^ | |||
| | | | | |||
| | | | | |||
| | HTTPS/ | | HTTPS/ | |||
| | WebSockets | | WebSockets | |||
| | | | | |||
| | | | | |||
| +----------------------------+ | +----------------------------+ | |||
| | Javascript/HTML/CSS | | | JavaScript/HTML/CSS | | |||
| +----------------------------+ | +----------------------------+ | |||
| Other ^ ^ RTC | Other ^ ^ RTC | |||
| APIs | | APIs | APIs | | APIs | |||
| +---|-----------------|------+ | +---|-----------------|------+ | |||
| | | | | | | | | | | |||
| | +---------+| | | +---------+| | |||
| | | Browser || On-the-wire | | | Browser || On-the-wire | |||
| | Browser | RTC || Protocols | | Browser | RTC || Protocols | |||
| | | Function|-----------> | | | Function|-----------> | |||
| | | || | | | || | |||
| | | || | | | || | |||
| | +---------+| | | +---------+| | |||
| +---------------------|------+ | +---------------------|------+ | |||
| | | | | |||
| V | V | |||
| Native OS Services | Native OS Services </artwork> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <t indent="0" pn="section-3-4">Note that HTTPS and WebSockets are also off | ||||
| <t>Note that HTTPS and WebSockets are also offered to the Javascript | ered to the JavaScript | |||
| application through browser APIs.</t> | application through browser APIs.</t> | |||
| <t indent="0" pn="section-3-5">As for all protocol and API specifications, | ||||
| <t>As for all protocol and API specifications, there is no restriction | there is no restriction | |||
| that the protocols can only be used to talk to another browser; since | that the protocols can only be used to talk to another browser; since | |||
| they are fully specified, any endpoint that implements the protocols | they are fully specified, any endpoint that implements the protocols | |||
| faithfully should be able to interoperate with the application running | faithfully should be able to interoperate with the application running | |||
| in the browser.</t> | in the browser.</t> | |||
| <t indent="0" pn="section-3-6">A commonly imagined model of deployment is | ||||
| <t>A commonly imagined model of deployment is the one depicted | depicted in <xref target="fig-webtrapezoid" format="default" sectionFormat="of" | |||
| below. In the figure below JS is Javascript.</t> | derivedContent="Figure 2"/>. ("JS" stands for JavaScript.)</t> | |||
| <figure anchor="fig-webtrapezoid" align="left" suppress-title="false" pn=" | ||||
| <figure anchor="fig-webtrapezoid" title="Browser RTC Trapezoid"> | figure-2"> | |||
| <artwork><![CDATA[ | <name slugifiedName="name-browser-rtc-trapezoid">Browser RTC Trapezoid</ | |||
| name> | ||||
| +-----------+ +-----------+ | <artwork name="" type="" align="left" alt="" pn="section-3-7.1"> | |||
| | Web | | Web | | +-----------+ +-----------+ | |||
| | | Signaling | | | | Web | | Web | | |||
| | |-------------| | | | | | | | |||
| | Server | path | Server | | | |------------------| | | |||
| | | | | | | Server | Signaling Path | Server | | |||
| +-----------+ +-----------+ | | | | | | |||
| / \ | +-----------+ +-----------+ | |||
| / \ Application-defined | / \ | |||
| / \ over | / \ Application-defined | |||
| / \ HTTPS/WebSockets | / \ over | |||
| / Application-defined over \ | / \ HTTPS/WebSockets | |||
| / HTTPS/WebSockets \ | / Application-defined over \ | |||
| / \ | / HTTPS/WebSockets \ | |||
| +-----------+ +-----------+ | / \ | |||
| |JS/HTML/CSS| |JS/HTML/CSS| | +-----------+ +-----------+ | |||
| +-----------+ +-----------+ | |JS/HTML/CSS| |JS/HTML/CSS| | |||
| +-----------+ +-----------+ | +-----------+ +-----------+ | |||
| | | | | | +-----------+ +-----------+ | |||
| | | | | | | | | | | |||
| | Browser | ------------------------- | Browser | | | | | | | |||
| | | Media path | | | | Browser |--------------------------------| Browser | | |||
| | | | | | | | Media Path | | | |||
| +-----------+ +-----------+ | | | | | | |||
| ]]></artwork> | +-----------+ +-----------+ </artwork> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-3-8">In this drawing, the critical part to note | ||||
| <t>On this drawing, the critical part to note is that the media path | is that the media path | |||
| ("low path") goes directly between the browsers, so it has to be | ("low path") goes directly between the browsers, so it has to be | |||
| conformant to the specifications of the WebRTC protocol suite; the | conformant to the specifications of the WebRTC protocol suite; the | |||
| signaling path ("high path") goes via servers that can modify, translate | signaling path ("high path") goes via servers that can modify, translate, | |||
| or manipulate the signals as needed.</t> | or manipulate the signals as needed.</t> | |||
| <t indent="0" pn="section-3-9">If the two web servers are operated by diff | ||||
| <t>If the two Web servers are operated by different entities, the | erent entities, the | |||
| inter-server signaling mechanism needs to be agreed upon, either by | inter-server signaling mechanism needs to be agreed upon, by either | |||
| standardization or by other means of agreement. Existing protocols | standardization or other means of agreement. Existing protocols | |||
| (e.g. SIP <xref target="RFC3261"/> or XMPP <xref target="RFC6120"/>) | (e.g., SIP <xref target="RFC3261" format="default" sectionFormat="of" deri | |||
| vedContent="RFC3261"/> or the Extensible | ||||
| Messaging and Presence Protocol (XMPP) <xref target="RFC6120" format="defa | ||||
| ult" sectionFormat="of" derivedContent="RFC6120"/>) | ||||
| could be used between servers, while either a standards-based or | could be used between servers, while either a standards-based or | |||
| proprietary protocol could be used between the browser and the web | proprietary protocol could be used between the browser and the web | |||
| server.</t> | server.</t> | |||
| <t indent="0" pn="section-3-10">For example, if both operators' servers im | ||||
| <t>For example, if both operators' servers implement SIP, SIP could be | plement SIP, SIP could be | |||
| used for communication between servers, along with either a standardized | used for communication between servers, along with either a standardized | |||
| signaling mechanism (e.g. SIP over WebSockets) or a proprietary | signaling mechanism (e.g., SIP over WebSockets) or a proprietary | |||
| signaling mechanism used between the application running in the browser | signaling mechanism used between the application running in the browser | |||
| and the web server. Similarly, if both operators' servers implement | and the web server. Similarly, if both operators' servers implement | |||
| Extensible Messaging and Presence Protocol (XMPP), XMPP could be used | XMPP, XMPP could be used | |||
| for communication between XMPP servers, with either a standardized | for communication between XMPP servers, with either a standardized | |||
| signaling mechanism (e.g. XMPP over WebSockets or BOSH <xref | signaling mechanism (e.g., XMPP over WebSockets or Bidirectional-streams | |||
| target="XEP-0124"/> or a proprietary signaling mechanism used between the | Over Synchronous HTTP (BOSH) <xref target="XEP-0124" format="default" sect | |||
| ionFormat="of" derivedContent="XEP-0124"/>) or a proprietary signaling mechanism | ||||
| used between the | ||||
| application running in the browser and the web server.</t> | application running in the browser and the web server.</t> | |||
| <t indent="0" pn="section-3-11">The choice of protocols for client-server | ||||
| <t>The choice of protocols for client-server and inter-server | and inter-server | |||
| signalling, and definition of the translation between them, is outside | signaling, and the definition of the translation between them, are outside | |||
| the scope of the WebRTC protocol suite described in the document.</t> | the scope of the WebRTC protocol suite described in this document.</t> | |||
| <t indent="0" pn="section-3-12">The functionality groups that are needed i | ||||
| <t>The functionality groups that are needed in the browser can be | n the browser can be | |||
| specified, more or less from the bottom up, as:</t> | specified, more or less from the bottom up, as:</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-3-13"> | ||||
| <t><list style="symbols"> | <dt pn="section-3-13.1">Data transport:</dt> | |||
| <t>Data transport: such as TCP, UDP and the means to securely set up | <dd pn="section-3-13.2">For example, TCP and UDP, and the means to secur | |||
| ely set up | ||||
| connections between entities, as well as the functions for deciding | connections between entities, as well as the functions for deciding | |||
| when to send data: congestion management, bandwidth estimation and | when to send data: congestion management, bandwidth estimation, and | |||
| so on.</t> | so on.</dd> | |||
| <dt pn="section-3-13.3">Data framing:</dt> | ||||
| <t>Data framing: RTP, SCTP, DTLS, and other data formats that serve | <dd pn="section-3-13.4">RTP, the Stream Control Transmission Protocol (S | |||
| CTP), DTLS, and other data formats that serve | ||||
| as containers, and their functions for data confidentiality and | as containers, and their functions for data confidentiality and | |||
| integrity.</t> | integrity.</dd> | |||
| <dt pn="section-3-13.5">Data formats:</dt> | ||||
| <t>Data formats: Codec specifications, format specifications and | <dd pn="section-3-13.6">Codec specifications, format specifications, and | |||
| functionality specifications for the data passed between systems. | functionality specifications for the data passed between systems. | |||
| Audio and video codecs, as well as formats for data and document | Audio and video codecs, as well as formats for data and document | |||
| sharing, belong in this category. In order to make use of data | sharing, belong in this category. In order to make use of data | |||
| formats, a way to describe them, a session description, is | formats, a way to describe them (e.g., a session description) is | |||
| needed.</t> | needed.</dd> | |||
| <dt pn="section-3-13.7">Connection management:</dt> | ||||
| <t>Connection management: Setting up connections, agreeing on data | <dd pn="section-3-13.8">For example, setting up connections, agreeing on | |||
| formats, changing data formats during the duration of a call; SDP, | data | |||
| SIP, and Jingle/XMPP belong in this category.</t> | formats, changing data formats during the duration of a call. SDP, | |||
| SIP, and Jingle/XMPP belong in this category.</dd> | ||||
| <t>Presentation and control: What needs to happen in order to ensure | <dt pn="section-3-13.9">Presentation and control:</dt> | |||
| that interactions behave in a non-surprising manner. This can | <dd pn="section-3-13.10">What needs to happen in order to ensure | |||
| include floor control, screen layout, voice activated image | that interactions behave in an unsurprising manner. This can | |||
| switching and other such functions - where part of the system | include floor control, screen layout, voice-activated image | |||
| require the cooperation between parties. XCON and Cisco/Tandberg's | switching, and other such functions, where part of the system | |||
| TIP were some attempts at specifying this kind of functionality; | requires cooperation between parties. Centralized Conferencing | |||
| (XCON) <xref target="RFC6501" format="default" sectionFormat="of" deri | ||||
| vedContent="RFC6501"/> and Cisco/Tandberg's Telepresence Interoperability Proto | ||||
| col | ||||
| (TIP) were some attempts at specifying this kind of functionality; | ||||
| many applications have been built without standardized interfaces to | many applications have been built without standardized interfaces to | |||
| these functions.</t> | these functions.</dd> | |||
| <dt pn="section-3-13.11">Local system support functions:</dt> | ||||
| <t>Local system support functions: These are things that need not be | <dd pn="section-3-13.12">Functions that need not be | |||
| specified uniformly, because each participant may choose to do these | specified uniformly, because each participant may implement these | |||
| in a way of the participant's choosing, without affecting the bits | functions as they choose, without affecting the bits | |||
| on the wire in a way that others have to be cognizant of. Examples | on the wire in a way that others have to be cognizant of. Examples | |||
| in this category include echo cancellation (some forms of it), local | in this category include echo cancellation (some forms of it), local | |||
| authentication and authorization mechanisms, OS access control and | authentication and authorization mechanisms, OS access control, and | |||
| the ability to do local recording of conversations.</t> | the ability to do local recording of conversations.</dd> | |||
| </list>Within each functionality group, it is important to preserve | </dl> | |||
| <t indent="0" pn="section-3-14">Within each functionality group, it is imp | ||||
| ortant to preserve | ||||
| both freedom to innovate and the ability for global communication. | both freedom to innovate and the ability for global communication. | |||
| Freedom to innovate is helped by doing the specification in terms of | Freedom to innovate is helped by doing the specification in terms of | |||
| interfaces, not implementation; any implementation able to communicate | interfaces, not implementation; any implementation able to communicate | |||
| according to the interfaces is a valid implementation. Ability to | according to the interfaces is a valid implementation. The ability to | |||
| communicate globally is helped both by having core specifications be | communicate globally is helped by both (1) having core specifications be | |||
| unencumbered by IPR issues and by having the formats and protocols be | unencumbered by IPR issues and (2) having the formats and protocols be | |||
| fully enough specified to allow for independent implementation.</t> | fully enough specified to allow for independent implementation.</t> | |||
| <t indent="0" pn="section-3-15">One can think of the first three groups as | ||||
| <t>One can think of the three first groups as forming a "media transport | forming a "media transport | |||
| infrastructure", and of the three last groups as forming a "media | infrastructure" and of the last three groups as forming a "media | |||
| service". In many contexts, it makes sense to use a common specification | service". In many contexts, it makes sense to use a common specification | |||
| for the media transport infrastructure, which can be embedded in | for the media transport infrastructure, which can be embedded in | |||
| browsers and accessed using standard interfaces, and "let a thousand | browsers and accessed using standard interfaces, and "let a thousand | |||
| flowers bloom" in the "media service" layer; to achieve interoperable | flowers bloom" in the "media service" layer; to achieve interoperable | |||
| services, however, at least the first five of the six groups need to be | services, however, at least the first five of the six groups need to be | |||
| specified.</t> | specified.</t> | |||
| </section> | </section> | |||
| <section anchor="ch-transport" numbered="true" toc="include" removeInRFC="fa | ||||
| <section anchor="ch-transport" title="Data transport"> | lse" pn="section-4"> | |||
| <t>Data transport refers to the sending and receiving of data over the | <name slugifiedName="name-data-transport">Data Transport</name> | |||
| <t indent="0" pn="section-4-1">Data transport refers to the sending and re | ||||
| ceiving of data over the | ||||
| network interfaces, the choice of network-layer addresses at each end of | network interfaces, the choice of network-layer addresses at each end of | |||
| the communication, and the interaction with any intermediate entities | the communication, and the interaction with any intermediate entities | |||
| that handle the data, but do not modify it (such as TURN relays).</t> | that handle the data but do not modify it (such as Traversal Using | |||
| Relays around NAT (TURN) relays).</t> | ||||
| <t>It includes necessary functions for congestion control, | <t indent="0" pn="section-4-2">It includes necessary functions for congest | |||
| ion control, | ||||
| retransmission, and in-order delivery.</t> | retransmission, and in-order delivery.</t> | |||
| <t indent="0" pn="section-4-3">WebRTC endpoints <bcp14>MUST</bcp14> implem | ||||
| <t>WebRTC endpoints MUST implement the transport protocols described in | ent the transport protocols described in | |||
| <xref target="I-D.ietf-rtcweb-transports"/>.</t> | <xref target="RFC8835" format="default" sectionFormat="of" derivedContent= | |||
| "RFC8835"/>.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5"> | ||||
| <section title="Data framing and securing"> | <name slugifiedName="name-data-framing-and-securing">Data Framing and Secu | |||
| <t>The format for media transport is RTP <xref target="RFC3550"/>. | ring</name> | |||
| Implementation of SRTP <xref target="RFC3711"/> is REQUIRED for all | <t indent="0" pn="section-5-1">The format for media transport is RTP <xref | |||
| target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/> | ||||
| . | ||||
| Implementation of the Secure Real-time Transport Protocol (SRTP) <xref tar | ||||
| get="RFC3711" format="default" sectionFormat="of" derivedContent="RFC3711"/> is | ||||
| <bcp14>REQUIRED</bcp14> for all | ||||
| implementations.</t> | implementations.</t> | |||
| <t indent="0" pn="section-5-2">The detailed considerations for usage of fu | ||||
| <t>The detailed considerations for usage of functions from RTP and SRTP | nctions from RTP and SRTP | |||
| are given in <xref target="I-D.ietf-rtcweb-rtp-usage"/>. The security | are given in <xref target="RFC8834" format="default" sectionFormat="of" de | |||
| considerations for the WebRTC use case are in <xref | rivedContent="RFC8834"/>. The security | |||
| target="I-D.ietf-rtcweb-security"/>, and the resulting security | considerations for the WebRTC use case are provided in <xref target="RFC88 | |||
| functions are described in <xref | 26" format="default" sectionFormat="of" derivedContent="RFC8826"/>, and the resu | |||
| target="I-D.ietf-rtcweb-security-arch"/>.</t> | lting security | |||
| functions are described in <xref target="RFC8827" format="default" section | ||||
| <t>Considerations for the transfer of data that is not in RTP format is | Format="of" derivedContent="RFC8827"/>.</t> | |||
| described in <xref target="I-D.ietf-rtcweb-data-channel"/>, and a | <t indent="0" pn="section-5-3">Considerations for the transfer of data tha | |||
| t is not in RTP format are | ||||
| described in <xref target="RFC8831" format="default" sectionFormat="of" de | ||||
| rivedContent="RFC8831"/>, and a | ||||
| supporting protocol for establishing individual data channels is | supporting protocol for establishing individual data channels is | |||
| described in <xref target="I-D.ietf-rtcweb-data-protocol"/>. WebRTC | described in <xref target="RFC8832" format="default" sectionFormat="of" de | |||
| endpoints MUST implement these two specifications.</t> | rivedContent="RFC8832"/>. WebRTC | |||
| endpoints <bcp14>MUST</bcp14> implement these two specifications.</t> | ||||
| <t>WebRTC endpoints MUST implement <xref | <t indent="0" pn="section-5-4">WebRTC endpoints <bcp14>MUST</bcp14> implem | |||
| target="I-D.ietf-rtcweb-rtp-usage"/>, <xref | ent <xref target="RFC8834" format="default" sectionFormat="of" derivedContent="R | |||
| target="I-D.ietf-rtcweb-security"/>, <xref | FC8834"/>, <xref target="RFC8826" format="default" sectionFormat="of" derivedCon | |||
| target="I-D.ietf-rtcweb-security-arch"/>, and the requirements they | tent="RFC8826"/>, <xref target="RFC8827" format="default" sectionFormat="of" der | |||
| ivedContent="RFC8827"/>, and the requirements they | ||||
| include.</t> | include.</t> | |||
| </section> | </section> | |||
| <section anchor="ch-data" numbered="true" toc="include" removeInRFC="false" | ||||
| <section anchor="ch-data" title="Data formats"> | pn="section-6"> | |||
| <t>The intent of this specification is to allow each communications | <name slugifiedName="name-data-formats">Data Formats</name> | |||
| <t indent="0" pn="section-6-1">The intent of this specification is to allo | ||||
| w each communications | ||||
| event to use the data formats that are best suited for that particular | event to use the data formats that are best suited for that particular | |||
| instance, where a format is supported by both sides of the connection. | instance, where a format is supported by both sides of the connection. | |||
| However, a minimum standard is greatly helpful in order to ensure that | However, a minimum standard is greatly helpful in order to ensure that | |||
| communication can be achieved. This document specifies a minimum | communication can be achieved. This document specifies a minimum | |||
| baseline that will be supported by all implementations of this | baseline that will be supported by all implementations of this | |||
| specification, and leaves further codecs to be included at the will of | specification and leaves further codecs to be included at the will of | |||
| the implementor.</t> | the implementer.</t> | |||
| <t indent="0" pn="section-6-2">WebRTC endpoints that support audio and/or | ||||
| <t>WebRTC endpoints that support audio and/or video MUST implement the | video <bcp14>MUST</bcp14> implement the | |||
| codecs and profiles required in <xref target="RFC7874"/> and <xref | codecs and profiles required in <xref target="RFC7874" format="default" se | |||
| target="RFC7742"/>.</t> | ctionFormat="of" derivedContent="RFC7874"/> and <xref target="RFC7742" format="d | |||
| efault" sectionFormat="of" derivedContent="RFC7742"/>.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-7"> | ||||
| <section title="Connection management"> | <name slugifiedName="name-connection-management">Connection Management</na | |||
| <t>The methods, mechanisms and requirements for setting up, negotiating | me> | |||
| and tearing down connections is a large subject, and one where it is | <t indent="0" pn="section-7-1">The methods, mechanisms, and requirements f | |||
| or setting up, negotiating, | ||||
| and tearing down connections comprise a large subject, and one where it is | ||||
| desirable to have both interoperability and freedom to innovate.</t> | desirable to have both interoperability and freedom to innovate.</t> | |||
| <t indent="0" pn="section-7-2">The following principles apply:</t> | ||||
| <t>The following principles apply:</t> | <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-7-3" | |||
| > | ||||
| <t><list style="numbers"> | <li pn="section-7-3.1" derivedCounter="1.">The WebRTC media negotiations | |||
| <t>The WebRTC media negotiations will be capable of representing the | will be capable of representing the | |||
| same SDP offer/answer semantics <xref target="RFC3264"/> that are | same SDP offer/answer semantics <xref target="RFC3264" format="default | |||
| " sectionFormat="of" derivedContent="RFC3264"/> that are | ||||
| used in SIP, in such a way that it is possible to build a | used in SIP, in such a way that it is possible to build a | |||
| signaling gateway between SIP and the WebRTC media negotiation.</t> | signaling gateway between SIP and the WebRTC media negotiation.</li> | |||
| <li pn="section-7-3.2" derivedCounter="2.">It will be possible to gatewa | ||||
| <t>It will be possible to gateway between legacy SIP devices that | y between legacy SIP devices that | |||
| support ICE and appropriate RTP / SDP mechanisms, codecs and | support ICE and appropriate RTP/SDP mechanisms, codecs, and | |||
| security mechanisms without using a media gateway. A signaling | security mechanisms without using a media gateway. A signaling | |||
| gateway to convert between the signaling on the web side to the SIP | gateway to convert between the signaling on the web side and the SIP | |||
| signaling may be needed.</t> | signaling may be needed.</li> | |||
| <li pn="section-7-3.3" derivedCounter="3.">When an SDP for a new codec i | ||||
| <t>When an SDP for a new codec is specified, no other standardization | s specified, no other standardization | |||
| should be required for it to be possible to use that in the web | should be required for it to be possible to use that codec in the web | |||
| browsers. Adding new codecs which might have new SDP parameters should | browsers. Adding new codecs that might have new SDP parameters should | |||
| not change the APIs between the browser and Javascript application. As | not change the APIs between the browser and the JavaScript application | |||
| . As | ||||
| soon as the browsers support the new codecs, old applications | soon as the browsers support the new codecs, old applications | |||
| written before the codecs were specified should automatically be | written before the codecs were specified should automatically be | |||
| able to use the new codecs where appropriate with no changes to the | able to use the new codecs where appropriate, with no changes to the | |||
| JS applications.</t> | JavaScript applications.</li> | |||
| </list>The particular choices made for WebRTC, and their implications | </ol> | |||
| <t indent="0" pn="section-7-4">The particular choices made for WebRTC, and | ||||
| their implications | ||||
| for the API offered by a browser implementing WebRTC, are described in | for the API offered by a browser implementing WebRTC, are described in | |||
| <xref target="I-D.ietf-rtcweb-jsep"/>.</t> | <xref target="RFC8829" format="default" sectionFormat="of" derivedContent= | |||
| "RFC8829"/>.</t> | ||||
| <t>WebRTC browsers MUST implement <xref | <t indent="0" pn="section-7-5">WebRTC browsers <bcp14>MUST</bcp14> impleme | |||
| target="I-D.ietf-rtcweb-jsep"/>.</t> | nt <xref target="RFC8829" format="default" sectionFormat="of" derivedContent="RF | |||
| C8829"/>.</t> | ||||
| <t>WebRTC endpoints MUST implement the functions described in that | <t indent="0" pn="section-7-6">WebRTC endpoints <bcp14>MUST</bcp14> implem | |||
| document that relate to the network layer (e.g. Bundle <xref | ent those functions | |||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation"/>, RTCP-mux <xref | described in <xref target="RFC8829" format="default" sectionFormat="of" de | |||
| target="RFC5761"/> and Trickle ICE <xref | rivedContent="RFC8829"/> that relate to the network layer (e.g., BUNDLE <xref ta | |||
| target="I-D.ietf-ice-trickle"/>), but do not need to support the API | rget="RFC8843" format="default" sectionFormat="of" derivedContent="RFC8843"/>, " | |||
| functionality described there.</t> | rtcp-mux" <xref target="RFC5761" format="default" sectionFormat="of" derivedCont | |||
| ent="RFC5761"/>, and Trickle ICE <xref target="RFC8838" format="default" section | ||||
| Format="of" derivedContent="RFC8838"/>), but these endpoints do not need to supp | ||||
| ort the API | ||||
| functionality described in <xref target="RFC8829" format="default" section | ||||
| Format="of" derivedContent="RFC8829"/>.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-8"> | ||||
| <section title="Presentation and control"> | <name slugifiedName="name-presentation-and-control">Presentation and Contr | |||
| <t>The most important part of control is the user's control over the | ol</name> | |||
| <t indent="0" pn="section-8-1">The most important part of control is the u | ||||
| sers' control over the | ||||
| browser's interaction with input/output devices and communications | browser's interaction with input/output devices and communications | |||
| channels. It is important that the user have some way of figuring out | channels. It is important that the users have some way of figuring out | |||
| where his audio, video or texting is being sent, for what purported | where their audio, video, or texting is being sent; for what purported | |||
| reason, and what guarantees are made by the parties that form part of | reason; and what guarantees are made by the parties that form part of | |||
| this control channel. This is largely a local function between the | this control channel. This is largely a local function between the | |||
| browser, the underlying operating system and the user interface; this is | browser, the underlying operating system, and the user interface; this is | |||
| specified in the peer connection API <xref | specified in the peer connection API <xref target="W3C.WD-webrtc" format=" | |||
| target="W3C.WD-webrtc-20120209"/>, and the media capture API <xref | default" sectionFormat="of" derivedContent="W3C.WD-webrtc"/> and the media captu | |||
| target="W3C.WD-mediacapture-streams-20120628"/>.</t> | re API <xref target="W3C.WD-mediacapture-streams" format="default" sectionFormat | |||
| ="of" derivedContent="W3C.WD-mediacapture-streams"/>.</t> | ||||
| <t>WebRTC browsers MUST implement these two specifications.</t> | <t indent="0" pn="section-8-2">WebRTC browsers <bcp14>MUST</bcp14> impleme | |||
| nt these two specifications.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-9"> | ||||
| <section title="Local system support functions"> | <name slugifiedName="name-local-system-support-functi">Local System Suppor | |||
| <t>These are characterized by the fact that the quality of these | t Functions</name> | |||
| functions strongly influence the user experience, but the exact | <t indent="0" pn="section-9-1">These functions are characterized by the fa | |||
| algorithm does not need coordination. In some cases (for instance echo | ct that the quality of an implementation strongly influences the user experience | |||
| , but the exact | ||||
| algorithm does not need coordination. In some cases (for instance, echo | ||||
| cancellation, as described below), the overall system definition may | cancellation, as described below), the overall system definition may | |||
| need to specify that the overall system needs to have some | need to specify that the overall system needs to have some | |||
| characteristics for which these facilities are useful, without requiring | characteristics for which these facilities are useful, without requiring | |||
| them to be implemented a certain way.</t> | them to be implemented a certain way.</t> | |||
| <t indent="0" pn="section-9-2">Local functions include echo cancellation; | ||||
| <t>Local functions include echo cancellation, volume control, camera | volume control; camera | |||
| management including focus, zoom, pan/tilt controls (if available), and | management, including focus, zoom, and pan/tilt controls (if available); a | |||
| nd | ||||
| more.</t> | more.</t> | |||
| <t indent="0" pn="section-9-3">One would want to see certain parts of the | ||||
| <t>One would want to see certain parts of the system conform to certain | system conform to certain | |||
| properties, for instance:</t> | properties; for instance:</t> | |||
| <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-4 | ||||
| <t><list style="symbols"> | "> | |||
| <t>Echo cancellation should be good enough to achieve the | <li pn="section-9-4.1">Echo cancellation should be good enough to achiev | |||
| e the | ||||
| suppression of acoustical feedback loops below a perceptually | suppression of acoustical feedback loops below a perceptually | |||
| noticeable level.</t> | noticeable level.</li> | |||
| <li pn="section-9-4.2">Privacy concerns <bcp14>MUST</bcp14> be satisfied | ||||
| <t>Privacy concerns MUST be satisfied; for instance, if remote | ; for instance, if remote | |||
| control of camera is offered, the APIs should be available to let | control of a camera is offered, the APIs should be available to let | |||
| the local participant figure out who's controlling the camera, and | the local participant figure out who's controlling the camera and | |||
| possibly decide to revoke the permission for camera usage.</t> | possibly decide to revoke the permission for camera usage.</li> | |||
| <li pn="section-9-4.3">Automatic Gain Control (AGC), if present, should | ||||
| <t>Automatic gain control, if present, should normalize a speaking | normalize a speaking | |||
| voice into a reasonable dB range.</t> | voice into a reasonable dB range.</li> | |||
| </list>The requirements on WebRTC systems with regard to audio | </ul> | |||
| processing are found in <xref target="RFC7874"/> and includes more | <t indent="0" pn="section-9-5">The requirements on WebRTC systems with reg | |||
| guidance about echo cancellation and AGC; the proposed API for control | ard to audio | |||
| of local devices are found in <xref | processing are found in <xref target="RFC7874" format="default" sectionFor | |||
| target="W3C.WD-mediacapture-streams-20120628"/>.</t> | mat="of" derivedContent="RFC7874"/>, | |||
| and that document includes more | ||||
| <t>WebRTC endpoints MUST implement the processing functions in <xref | guidance about echo cancellation and AGC; the APIs for control | |||
| target="RFC7874"/>. (Together with the requirement in <xref | of local devices are found in <xref target="W3C.WD-mediacapture-streams" f | |||
| target="ch-data"/>, this means that WebRTC endpoints MUST implement the | ormat="default" sectionFormat="of" derivedContent="W3C.WD-mediacapture-streams"/ | |||
| >.</t> | ||||
| <t indent="0" pn="section-9-6">WebRTC endpoints <bcp14>MUST</bcp14> implem | ||||
| ent the processing functions in <xref target="RFC7874" format="default" sectionF | ||||
| ormat="of" derivedContent="RFC7874"/>. (Together with the requirement in <xref t | ||||
| arget="ch-data" format="default" sectionFormat="of" derivedContent="Section 6"/> | ||||
| , this means that WebRTC endpoints <bcp14>MUST</bcp14> implement the | ||||
| whole document.)</t> | whole document.)</t> | |||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn= | ||||
| <section anchor="IANA" title="IANA Considerations"> | "section-10"> | |||
| <t>This document makes no request of IANA.</t> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| <t indent="0" pn="section-10-1">This document has no IANA actions.</t> | ||||
| <t>Note to RFC Editor: this section may be removed on publication as an | ||||
| RFC.</t> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="include" removeInRFC="false" | ||||
| <section anchor="Security" title="Security Considerations"> | pn="section-11"> | |||
| <t>Security of the web-enabled real time communications comes in several | <name slugifiedName="name-security-considerations">Security Considerations | |||
| </name> | ||||
| <t indent="0" pn="section-11-1">Security of the web-enabled real-time comm | ||||
| unications comes in several | ||||
| pieces:</t> | pieces:</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-11-2"> | ||||
| <t><list style="symbols"> | <dt pn="section-11-2.1">Security of the components:</dt> | |||
| <t>Security of the components: The browsers, and other servers | <dd pn="section-11-2.2">The browsers, and other servers | |||
| involved. The most target-rich environment here is probably the | involved. The most target-rich environment here is probably the | |||
| browser; the aim here should be that the introduction of these | browser; the aim here should be that the introduction of these | |||
| components introduces no additional vulnerability.</t> | components introduces no additional vulnerability.</dd> | |||
| <dt pn="section-11-2.3">Security of the communication channels:</dt> | ||||
| <t>Security of the communication channels: It should be easy for a | <dd pn="section-11-2.4">It should be easy for participants to reassure t | |||
| participant to reassure himself of the security of his communication | hemselves of the | |||
| - by verifying the crypto parameters of the links he himself | security of their communication | |||
| participates in, and to get reassurances from the other parties to | -- by verifying the crypto parameters of the links that they | |||
| the communication that they promise that appropriate measures are | participate in, and to get reassurances from the other parties to | |||
| taken.</t> | the communication that those parties promise that appropriate measures | |||
| are | ||||
| <t>Security of the partners' identity: verifying that the | taken.</dd> | |||
| <dt pn="section-11-2.5">Security of the partners' identities:</dt> | ||||
| <dd pn="section-11-2.6">Verifying that the | ||||
| participants are who they say they are (when positive identification | participants are who they say they are (when positive identification | |||
| is appropriate), or that their identity cannot be uncovered (when | is appropriate) or that their identities cannot be uncovered (when | |||
| anonymity is a goal of the application).</t> | anonymity is a goal of the application).</dd> | |||
| </list>The security analysis, and the requirements derived from that | </dl> | |||
| analysis, is contained in <xref target="I-D.ietf-rtcweb-security"/>.</t> | <t indent="0" pn="section-11-3">The security analysis, and the requirement | |||
| s derived from that | ||||
| <t>It is also important to read the security sections of <xref | analysis, are contained in <xref target="RFC8826" format="default" section | |||
| target="W3C.WD-mediacapture-streams-20120628"/> and <xref | Format="of" derivedContent="RFC8826"/>.</t> | |||
| target="W3C.WD-webrtc-20120209"/>.</t> | <t indent="0" pn="section-11-4">It is also important to read the security | |||
| </section> | sections of <xref target="W3C.WD-mediacapture-streams" format="default" sectionF | |||
| ormat="of" derivedContent="W3C.WD-mediacapture-streams"/> and <xref target="W3C. | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | WD-webrtc" format="default" sectionFormat="of" derivedContent="W3C.WD-webrtc"/>. | |||
| <t>The number of people who have taken part in the discussions | </t> | |||
| surrounding this draft are too numerous to list, or even to identify. | ||||
| The ones below have made special, identifiable contributions; this does | ||||
| not mean that others' contributions are less important.</t> | ||||
| <t>Thanks to Cary Bran, Cullen Jennings, Colin Perkins, Magnus | ||||
| Westerlund and Joerg Ott, who offered technical contributions on various | ||||
| versions of the draft.</t> | ||||
| <t>Thanks to Jonathan Rosenberg, Matthew Kaufman and others at Skype for | ||||
| the ASCII drawings in section 1.</t> | ||||
| <t>Thanks to Alissa Cooper, Bjoern Hoehrmann, Colin Perkins, | ||||
| Colton Shields, Eric Rescorla, Heath Matlock, Henry Sinnreich, | ||||
| Justin Uberti, Keith Drage, Magnus Westerlund, Olle E. Johansson, | ||||
| Sean Turner and Simon Leinen for document review.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <displayreference target="I-D.ietf-rtcweb-gateways" to="WebRTC-Gateways"/> | |||
| <?rfc include='reference.RFC.2119'?> | <references pn="section-12"> | |||
| <name slugifiedName="name-references">References</name> | ||||
| <?rfc include='reference.RFC.3550'?> | <references pn="section-12.1"> | |||
| <name slugifiedName="name-normative-references">Normative References</na | ||||
| <?rfc include='reference.RFC.3264'?> | me> | |||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| <?rfc include='reference.RFC.3711'?> | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
| <front> | ||||
| <?rfc include='reference.RFC.5245'?> | <title>Key words for use in RFCs to Indicate Requirement Levels</tit | |||
| le> | ||||
| <?rfc include='reference.RFC.7742'?> | <author initials="S." surname="Bradner" fullname="S. Bradner"> | |||
| <organization showOnFrontPage="true"/> | ||||
| <?rfc include='reference.RFC.7874'?> | </author> | |||
| <date year="1997" month="March"/> | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-security'?> | <abstract> | |||
| <t indent="0">In many standards track documents several words are | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-transports'?> | used to signify the requirements in the specification. These words are often ca | |||
| pitalized. This document defines these words as they should be interpreted in IE | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-rtp-usage'?> | TF documents. This document specifies an Internet Best Current Practices for th | |||
| e Internet Community, and requests discussion and suggestions for improvements.< | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-data-channel'?> | /t> | |||
| </abstract> | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-data-protocol'?> | </front> | |||
| <seriesInfo name="BCP" value="14"/> | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-security-arch'?> | <seriesInfo name="RFC" value="2119"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-jsep'?> | </reference> | |||
| <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | ||||
| <?rfc include='reference.W3C.WD-webrtc-20120209'?> | 264" quoteTitle="true" derivedAnchor="RFC3264"> | |||
| <front> | ||||
| <?rfc include='reference.W3C.WD-mediacapture-streams-20120628'?> | <title>An Offer/Answer Model with Session Description Protocol (SDP) | |||
| </title> | ||||
| <?rfc ?> | <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | |||
| </references> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <references title="Informative References"> | <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | |||
| <?rfc include='reference.RFC.3935'?> | "> | |||
| <organization showOnFrontPage="true"/> | ||||
| <?rfc include='reference.RFC.3261'?> | </author> | |||
| <date year="2002" month="June"/> | ||||
| <?rfc include='reference.RFC.3361'?> | <abstract> | |||
| <t indent="0">This document defines a mechanism by which two entit | ||||
| <?rfc include='reference.RFC.5761'?> | ies can make use of the Session Description Protocol (SDP) to arrive at a common | |||
| view of a multimedia session between them. In the model, one participant offer | ||||
| <?rfc include='reference.RFC.6120'?> | s the other a description of the desired session from their perspective, and the | |||
| other participant answers with the desired session from their perspective. Thi | ||||
| <?rfc include='reference.RFC.7478'?> | s offer/answer model is most useful in unicast sessions where information from b | |||
| oth participants is needed for the complete view of the session. The offer/answ | ||||
| <?rfc include='reference.RFC.8155'?> | er model is used by protocols like the Session Initiation Protocol (SIP). [STAN | |||
| DARDS-TRACK]</t> | ||||
| <?rfc include='reference.W3C.WD-html5-20110525'?> | </abstract> | |||
| </front> | ||||
| <?rfc include='reference.I-D.ietf-ice-trickle'?> | <seriesInfo name="RFC" value="3264"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC3264"/> | ||||
| <?rfc include='reference.I-D.ietf-mmusic-sdp-bundle-negotiation'?> | </reference> | |||
| <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | ||||
| <?rfc include='reference.I-D.ietf-rtcweb-gateways'?> | 550" quoteTitle="true" derivedAnchor="RFC3550"> | |||
| <front> | ||||
| <?rfc include='reference.I-D.ietf-tsvwg-rtcweb-qos'?> | <title>RTP: A Transport Protocol for Real-Time Applications</title> | |||
| <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
| <reference anchor="XEP-0166"> | "> | |||
| <front> | <organization showOnFrontPage="true"/> | |||
| <title>Jingle</title> | </author> | |||
| <author initials="S." surname="Casner" fullname="S. Casner"> | ||||
| <author fullname="Scott Ludwig" initials="S." surname="Ludwig"> | <organization showOnFrontPage="true"/> | |||
| <organization/> | </author> | |||
| <author initials="R." surname="Frederick" fullname="R. Frederick"> | ||||
| <address> | <organization showOnFrontPage="true"/> | |||
| <email>scottlu@google.com</email> | </author> | |||
| </address> | <author initials="V." surname="Jacobson" fullname="V. Jacobson"> | |||
| </author> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <author fullname="Joe Beda" initials="J." surname="Beda"> | <date year="2003" month="July"/> | |||
| <organization/> | <abstract> | |||
| <t indent="0">This memorandum describes RTP, the real-time transpo | ||||
| <address> | rt protocol. RTP provides end-to-end network transport functions suitable for a | |||
| <email>jbeda@google.com</email> | pplications transmitting real-time data, such as audio, video or simulation data | |||
| </address> | , over multicast or unicast network services. RTP does not address resource res | |||
| </author> | ervation and does not guarantee quality-of- service for real-time services. The | |||
| data transport is augmented by a control protocol (RTCP) to allow monitoring of | ||||
| <author fullname="Peter Saint-Andre" initials="P." | the data delivery in a manner scalable to large multicast networks, and to prov | |||
| surname="Saint-Andre"> | ide minimal control and identification functionality. RTP and RTCP are designed | |||
| <organization/> | to be independent of the underlying transport and network layers. The protocol | |||
| supports the use of RTP-level translators and mixers. Most of the text in this | ||||
| <address> | memorandum is identical to RFC 1889 which it obsoletes. There are no changes in | |||
| <email>stpeter@jabber.org</email> | the packet formats on the wire, only changes to the rules and algorithms govern | |||
| </address> | ing how the protocol is used. The biggest change is an enhancement to the scalab | |||
| </author> | le timer algorithm for calculating when to send RTCP packets in order to minimiz | |||
| e transmission in excess of the intended rate when many participants join a sess | ||||
| <author fullname="Robert McQueen" initials="R." surname="McQueen"> | ion simultaneously. [STANDARDS-TRACK]</t> | |||
| <organization/> | </abstract> | |||
| </front> | ||||
| <address> | <seriesInfo name="STD" value="64"/> | |||
| <email>robert.mcqueen@collabora.co.uk</email> | <seriesInfo name="RFC" value="3550"/> | |||
| </address> | <seriesInfo name="DOI" value="10.17487/RFC3550"/> | |||
| </author> | </reference> | |||
| <reference anchor="RFC3711" target="https://www.rfc-editor.org/info/rfc3 | ||||
| <author fullname="Sean Egan" initials="S." surname="Egan"> | 711" quoteTitle="true" derivedAnchor="RFC3711"> | |||
| <organization/> | <front> | |||
| <title>The Secure Real-time Transport Protocol (SRTP)</title> | ||||
| <address> | <author initials="M." surname="Baugher" fullname="M. Baugher"> | |||
| <email>seanegan@google.com</email> | <organization showOnFrontPage="true"/> | |||
| </address> | </author> | |||
| </author> | <author initials="D." surname="McGrew" fullname="D. McGrew"> | |||
| <organization showOnFrontPage="true"/> | ||||
| <author fullname="Joe Hildebrand" initials="J." surname="Hildebrand"> | </author> | |||
| <organization/> | <author initials="M." surname="Naslund" fullname="M. Naslund"> | |||
| <organization showOnFrontPage="true"/> | ||||
| <address> | </author> | |||
| <email>jhildebr@cisco.com</email> | <author initials="E." surname="Carrara" fullname="E. Carrara"> | |||
| </address> | <organization showOnFrontPage="true"/> | |||
| </author> | </author> | |||
| <author initials="K." surname="Norrman" fullname="K. Norrman"> | ||||
| <date day="20" month="June" year="2007"/> | <organization showOnFrontPage="true"/> | |||
| </front> | </author> | |||
| <date year="2004" month="March"/> | ||||
| <seriesInfo name="XSF XEP" value="0166"/> | <abstract> | |||
| <t indent="0">This document describes the Secure Real-time Transpo | ||||
| <format target="http://xmpp.org/extensions/xep-0166.html" type="HTML"/> | rt Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which c | |||
| </reference> | an provide confidentiality, message authentication, and replay protection to the | |||
| RTP traffic and to the control traffic for RTP, the Real-time Transport Control | ||||
| <reference anchor="XEP-0124"> | Protocol (RTCP). [STANDARDS-TRACK]</t> | |||
| <front> | </abstract> | |||
| <title>BOSH</title> | </front> | |||
| <seriesInfo name="RFC" value="3711"/> | ||||
| <author fullname="Ian Paterson" initials="I." surname="Paterson"> | <seriesInfo name="DOI" value="10.17487/RFC3711"/> | |||
| <organization/> | </reference> | |||
| <reference anchor="RFC7742" target="https://www.rfc-editor.org/info/rfc7 | ||||
| <address> | 742" quoteTitle="true" derivedAnchor="RFC7742"> | |||
| <email>ian.paterson@clientside.co.uk</email> | <front> | |||
| </address> | <title>WebRTC Video Processing and Codec Requirements</title> | |||
| </author> | <author initials="A.B." surname="Roach" fullname="A.B. Roach"> | |||
| <organization showOnFrontPage="true"/> | ||||
| <author fullname="Dave Smith" initials="D." surname="Smith"> | </author> | |||
| <organization/> | <date year="2016" month="March"/> | |||
| <abstract> | ||||
| <address> | <t indent="0">This specification provides the requirements and con | |||
| <email>dizzyd@jabber.org</email> | siderations for WebRTC applications to send and receive video across a network. | |||
| </address> | It specifies the video processing that is required as well as video codecs and | |||
| </author> | their parameters.</t> | |||
| </abstract> | ||||
| <author fullname="Peter Saint-Andre" initials="P." | </front> | |||
| surname="Saint-Andre"> | <seriesInfo name="RFC" value="7742"/> | |||
| <organization/> | <seriesInfo name="DOI" value="10.17487/RFC7742"/> | |||
| </reference> | ||||
| <address> | <reference anchor="RFC7874" target="https://www.rfc-editor.org/info/rfc7 | |||
| <email>stpeter@jabber.org</email> | 874" quoteTitle="true" derivedAnchor="RFC7874"> | |||
| </address> | <front> | |||
| </author> | <title>WebRTC Audio Codec and Processing Requirements</title> | |||
| <author initials="JM." surname="Valin" fullname="JM. Valin"> | ||||
| <author fullname="Jack Moffitt" initials="J." surname="Moffitt"> | <organization showOnFrontPage="true"/> | |||
| <organization/> | </author> | |||
| <author initials="C." surname="Bran" fullname="C. Bran"> | ||||
| <address> | <organization showOnFrontPage="true"/> | |||
| <email>jack@chesspark.com</email> | </author> | |||
| </address> | <date year="2016" month="May"/> | |||
| </author> | <abstract> | |||
| <t indent="0">This document outlines the audio codec and processin | ||||
| <author fullname="Lance Stout" initials="L." surname="Stout"> | g requirements for WebRTC endpoints.</t> | |||
| <organization/> | </abstract> | |||
| </front> | ||||
| <address> | <seriesInfo name="RFC" value="7874"/> | |||
| <email>lance@andyet.com</email> | <seriesInfo name="DOI" value="10.17487/RFC7874"/> | |||
| </address> | </reference> | |||
| </author> | <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | |||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <author fullname="Winifried Tilanus" initials="W." surname="Tilanus"> | <front> | |||
| <organization/> | <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | |||
| tle> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">RFC 2119 specifies common key words that may be used | ||||
| in protocol specifications. This document aims to reduce the ambiguity by cla | ||||
| rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
| nings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8445" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 445" quoteTitle="true" derivedAnchor="RFC8445"> | ||||
| <front> | ||||
| <title>Interactive Connectivity Establishment (ICE): A Protocol for | ||||
| Network Address Translator (NAT) Traversal</title> | ||||
| <author initials="A." surname="Keranen" fullname="A. Keranen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Holmberg" fullname="C. Holmberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2018" month="July"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a protocol for Network Addre | ||||
| ss Translator (NAT) traversal for UDP-based communication. This protocol is cal | ||||
| led Interactive Connectivity Establishment (ICE). ICE makes use of the Session | ||||
| Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using R | ||||
| elay NAT (TURN).</t> | ||||
| <t indent="0">This document obsoletes RFC 5245.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8445"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8445"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8826" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 826" quoteTitle="true" derivedAnchor="RFC8826"> | ||||
| <front> | ||||
| <title>Security Considerations for WebRTC</title> | ||||
| <author initials="E." surname="Rescorla" fullname="Eric Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8826"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8826"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8827" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 827" quoteTitle="true" derivedAnchor="RFC8827"> | ||||
| <front> | ||||
| <title>WebRTC Security Architecture</title> | ||||
| <author initials="E." surname="Rescorla" fullname="Eric Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8827"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8827"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8829" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 829" quoteTitle="true" derivedAnchor="RFC8829"> | ||||
| <front> | ||||
| <title>JavaScript Session Establishment Protocol (JSEP)</title> | ||||
| <author initials="J." surname="Uberti" fullname="Justin Uberti"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Rescorla" fullname="Eric Rescorla" ro | ||||
| le="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8829"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8829"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 831" quoteTitle="true" derivedAnchor="RFC8831"> | ||||
| <front> | ||||
| <title>WebRTC Data Channels</title> | ||||
| <author initials="R" surname="Jesup" fullname="Randell Jesup"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8831"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8831"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8832" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 832" quoteTitle="true" derivedAnchor="RFC8832"> | ||||
| <front> | ||||
| <title>WebRTC Data Channel Establishment Protocol</title> | ||||
| <author initials="R." surname="Jesup" fullname="Randell Jesup"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Loreto" fullname="Salvatore Loreto"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8832"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8832"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8834" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 834" quoteTitle="true" derivedAnchor="RFC8834"> | ||||
| <front> | ||||
| <title>Media Transport and Use of RTP in WebRTC</title> | ||||
| <author initials="C." surname="Perkins" fullname="Colin Perkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Westerlund" fullname="Magnus Westerlu | ||||
| nd"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Ott" fullname="Jörg Ott"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8834"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8834"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8835" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 835" quoteTitle="true" derivedAnchor="RFC8835"> | ||||
| <front> | ||||
| <title>Transports for WebRTC</title> | ||||
| <author initials="H." surname="Alvestrand" fullname="Harald Alvestra | ||||
| nd"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8835"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8835"/> | ||||
| </reference> | ||||
| <reference anchor="W3C.WD-mediacapture-streams" target="https://www.w3.o | ||||
| rg/TR/mediacapture-streams/" quoteTitle="true" derivedAnchor="W3C.WD-mediacaptur | ||||
| e-streams"> | ||||
| <front> | ||||
| <title>Media Capture and Streams</title> | ||||
| <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B." surname="Aboba" fullname="Bernard Aboba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J-I." surname="Bruaroey" fullname="Jan-Ivar Bruaro | ||||
| ey"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Boström" fullname="Henrik Boström"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| <refcontent>W3C Candidate Recommendation</refcontent> | ||||
| </reference> | ||||
| <reference anchor="W3C.WD-webrtc" target="https://www.w3.org/TR/webrtc/" | ||||
| quoteTitle="true" derivedAnchor="W3C.WD-webrtc"> | ||||
| <front> | ||||
| <title>WebRTC 1.0: Real-time Communication Between Browsers</title> | ||||
| <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Boström" fullname="Henrik Boström"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J-I." surname="Bruaroey" fullname="Jan-Ivar Bruaro | ||||
| ey"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| <refcontent>W3C Proposed Recommendation</refcontent> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-12.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <reference anchor="HTML5" target="https://html.spec.whatwg.org/" quoteTi | ||||
| tle="true" derivedAnchor="HTML5"> | ||||
| <front> | ||||
| <title>HTML - Living Standard</title> | ||||
| <author> | ||||
| <organization showOnFrontPage="true">WHATWG</organization> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="RFC3261" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 261" quoteTitle="true" derivedAnchor="RFC3261"> | ||||
| <front> | ||||
| <title>SIP: Session Initiation Protocol</title> | ||||
| <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Camarillo" fullname="G. Camarillo"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Johnston" fullname="A. Johnston"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Peterson" fullname="J. Peterson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Sparks" fullname="R. Sparks"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Handley" fullname="M. Handley"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Schooler" fullname="E. Schooler"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2002" month="June"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes Session Initiation Protocol | ||||
| (SIP), an application-layer control (signaling) protocol for creating, modifying | ||||
| , and terminating sessions with one or more participants. These sessions includ | ||||
| e Internet telephone calls, multimedia distribution, and multimedia conferences. | ||||
| [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3261"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3261"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3361" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 361" quoteTitle="true" derivedAnchor="RFC3361"> | ||||
| <front> | ||||
| <title>Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option fo | ||||
| r Session Initiation Protocol (SIP) Servers</title> | ||||
| <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2002" month="August"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3361"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3361"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3935" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 935" quoteTitle="true" derivedAnchor="RFC3935"> | ||||
| <front> | ||||
| <title>A Mission Statement for the IETF</title> | ||||
| <author initials="H." surname="Alvestrand" fullname="H. Alvestrand"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2004" month="October"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo gives a mission statement for the IETF, tr | ||||
| ies to define the terms used in the statement sufficiently to make the mission s | ||||
| tatement understandable and useful, argues why the IETF needs a mission statemen | ||||
| t, and tries to capture some of the debate that led to this point. This documen | ||||
| t specifies an Internet Best Current Practices for the Internet Community, and r | ||||
| equests discussion and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="95"/> | ||||
| <seriesInfo name="RFC" value="3935"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3935"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5245" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 245" quoteTitle="true" derivedAnchor="RFC5245"> | ||||
| <front> | ||||
| <title>Interactive Connectivity Establishment (ICE): A Protocol for | ||||
| Network Address Translator (NAT) Traversal for Offer/Answer Protocols</title> | ||||
| <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="April"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a protocol for Network Addre | ||||
| ss Translator (NAT) traversal for UDP-based multimedia sessions established with | ||||
| the offer/answer model. This protocol is called Interactive Connectivity Estab | ||||
| lishment (ICE). ICE makes use of the Session Traversal Utilities for NAT (STUN) | ||||
| protocol and its extension, Traversal Using Relay NAT (TURN). ICE can be used | ||||
| by any protocol utilizing the offer/answer model, such as the Session Initiation | ||||
| Protocol (SIP). [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5245"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5245"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5761" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 761" quoteTitle="true" derivedAnchor="RFC5761"> | ||||
| <front> | ||||
| <title>Multiplexing RTP Data and Control Packets on a Single Port</t | ||||
| itle> | ||||
| <author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="April"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo discusses issues that arise when multiplex | ||||
| ing RTP data packets and RTP Control Protocol (RTCP) packets on a single UDP por | ||||
| t. It updates RFC 3550 and RFC 3551 to describe when such multiplexing is and is | ||||
| not appropriate, and it explains how the Session Description Protocol (SDP) can | ||||
| be used to signal multiplexed sessions. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5761"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5761"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6120" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 120" quoteTitle="true" derivedAnchor="RFC6120"> | ||||
| <front> | ||||
| <title>Extensible Messaging and Presence Protocol (XMPP): Core</titl | ||||
| e> | ||||
| <author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">The Extensible Messaging and Presence Protocol (XMPP | ||||
| ) is an application profile of the Extensible Markup Language (XML) that enables | ||||
| the near-real-time exchange of structured yet extensible data between any two o | ||||
| r more network entities. This document defines XMPP's core protocol methods: se | ||||
| tup and teardown of XML streams, channel encryption, authentication, error handl | ||||
| ing, and communication primitives for messaging, network availability ("presence | ||||
| "), and request-response interactions. This document obsoletes RFC 3920. [STAN | ||||
| DARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6120"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6120"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6501" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 501" quoteTitle="true" derivedAnchor="RFC6501"> | ||||
| <front> | ||||
| <title>Conference Information Data Model for Centralized Conferencin | ||||
| g (XCON)</title> | ||||
| <author initials="O." surname="Novo" fullname="O. Novo"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Camarillo" fullname="G. Camarillo"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Morgan" fullname="D. Morgan"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Urpalainen" fullname="J. Urpalainen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2012" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">RFC 5239 defines centralized conferencing (XCON) as | ||||
| an association of participants with a central focus. The state of a conference | ||||
| is represented by a conference object. This document defines an XML- based conf | ||||
| erence information data model to be used for conference objects. A conference i | ||||
| nformation data model is designed to convey information about the conference and | ||||
| about participation in the conference. The conference information data model d | ||||
| efined in this document constitutes an extension of the data format specified in | ||||
| the Session Initiation Protocol (SIP) event package for conference State. [ST | ||||
| ANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6501"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6501"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7478" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 478" quoteTitle="true" derivedAnchor="RFC7478"> | ||||
| <front> | ||||
| <title>Web Real-Time Communication Use Cases and Requirements</title | ||||
| > | ||||
| <author initials="C." surname="Holmberg" fullname="C. Holmberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Hakansson" fullname="S. Hakansson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Eriksson" fullname="G. Eriksson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2015" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes web-based real-time communic | ||||
| ation use cases. Requirements on the browser functionality are derived from the | ||||
| use cases.</t> | ||||
| <t indent="0">This document was developed in an initial phase of t | ||||
| he work with rather minor updates at later stages. It has not really served as | ||||
| a tool in deciding features or scope for the WG's efforts so far. It is being p | ||||
| ublished to record the early conclusions of the WG. It will not be used as a se | ||||
| t of rigid guidelines that specifications and implementations will be held to in | ||||
| the future.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7478"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7478"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8155" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 155" quoteTitle="true" derivedAnchor="RFC8155"> | ||||
| <front> | ||||
| <title>Traversal Using Relays around NAT (TURN) Server Auto Discover | ||||
| y</title> | ||||
| <author initials="P." surname="Patil" fullname="P. Patil"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Reddy" fullname="T. Reddy"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Wing" fullname="D. Wing"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="April"/> | ||||
| <abstract> | ||||
| <t indent="0">Current Traversal Using Relays around NAT (TURN) ser | ||||
| ver discovery mechanisms are relatively static and limited to explicit configura | ||||
| tion. These are usually under the administrative control of the application or | ||||
| TURN service provider, and not the enterprise, ISP, or the network in which the | ||||
| client is located. Enterprises and ISPs wishing to provide their own TURN serve | ||||
| rs need auto-discovery mechanisms that a TURN client could use with minimal or n | ||||
| o configuration. This document describes three such mechanisms for TURN server | ||||
| discovery.</t> | ||||
| <t indent="0">This document updates RFC 5766 to relax the requirem | ||||
| ent for mutual authentication in certain cases.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8155"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8155"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8837" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 837" quoteTitle="true" derivedAnchor="RFC8837"> | ||||
| <front> | ||||
| <title>Differentiated Services Code Point (DSCP) Packet Markings for | ||||
| WebRTC QoS</title> | ||||
| <author initials="P." surname="Jones" fullname="Paul Jones"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Dhesikan" fullname="Subha Dhesikan"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Druta" fullname="Dan Druta"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8837"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8837"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8838" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 838" quoteTitle="true" derivedAnchor="RFC8838"> | ||||
| <front> | ||||
| <title>Trickle ICE: Incremental Provisioning of Candidates for the I | ||||
| nteractive Connectivity Establishment (ICE) Protocol</title> | ||||
| <author initials="E" surname="Ivov" fullname="Emil Ivov"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J" surname="Uberti" fullname="Justin Uberti"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P" surname="Saint-Andre" fullname="Peter Saint-And | ||||
| re"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8838"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8838"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 843" quoteTitle="true" derivedAnchor="RFC8843"> | ||||
| <front> | ||||
| <title>Negotiating Media Multiplexing Using the Session Description | ||||
| Protocol (SDP)</title> | ||||
| <author initials="C" surname="Holmberg" fullname="Christer Holmberg" | ||||
| > | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H" surname="Alvestrand" fullname="Harald Alvestran | ||||
| d"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C" surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8843"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8843"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-rtcweb-gateways" quoteTitle="true" target="h | ||||
| ttps://tools.ietf.org/html/draft-ietf-rtcweb-gateways-02" derivedAnchor="WebRTC- | ||||
| Gateways"> | ||||
| <front> | ||||
| <title>WebRTC Gateways</title> | ||||
| <author initials="H" surname="Alvestrand" fullname="Harald T. Alvest | ||||
| rand"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="U" surname="Rauschenbach" fullname="Uwe Rauschenba | ||||
| ch"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" day="21" year="2016"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes interoperability considerati | ||||
| ons for a class of WebRTC-compatible endpoints called "WebRTC gateways", which i | ||||
| nterconnect between WebRTC endpoints and devices that are not WebRTC endpoints.< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-rtcweb-gateways-02 | ||||
| "/> | ||||
| <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-i | ||||
| etf-rtcweb-gateways-02.txt"/> | ||||
| <refcontent>Work in Progress</refcontent> | ||||
| </reference> | ||||
| <reference anchor="XEP-0124" target="https://xmpp.org/extensions/xep-012 | ||||
| 4.html" quoteTitle="true" derivedAnchor="XEP-0124"> | ||||
| <front> | ||||
| <title>Bidirectional-streams Over Synchronous HTTP (BOSH)</title> | ||||
| <author fullname="Ian Paterson" initials="I." surname="Paterson"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>ian.paterson@clientside.co.uk</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Dave Smith" initials="D." surname="Smith"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>dizzyd@jabber.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Peter Saint-Andre" initials="P." surname="Saint-An | ||||
| dre"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>stpeter@jabber.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Jack Moffitt" initials="J." surname="Moffitt"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>jack@chesspark.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Lance Stout" initials="L." surname="Stout"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>lance@andyet.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Winifried Tilanus" initials="W." surname="Tilanus" | ||||
| > | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | <address> | |||
| <email>winfried@tilanus.com</email> | <email>winfried@tilanus.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="November" year="2016"/> | ||||
| <date day="16" month="November" year="2016"/> | </front> | |||
| <seriesInfo name="XSF XEP" value="0124"/> | ||||
| </front> | </reference> | |||
| <reference anchor="XEP-0166" target="https://xmpp.org/extensions/xep-016 | ||||
| <seriesInfo name="XSF XEP" value="0124"/> | 6.html" quoteTitle="true" derivedAnchor="XEP-0166"> | |||
| <front> | ||||
| <format target="http://xmpp.org/extensions/xep-0124.html" type="HTML"/> | <title>Jingle</title> | |||
| </reference> | <author fullname="Scott Ludwig" initials="S." surname="Ludwig"> | |||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>scottlu@google.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Joe Beda" initials="J." surname="Beda"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>jbeda@google.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Peter Saint-Andre" initials="P." surname="Saint-An | ||||
| dre"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>stpeter@jabber.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Robert McQueen" initials="R." surname="McQueen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>robert.mcqueen@collabora.co.uk</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Sean Egan" initials="S." surname="Egan"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>seanegan@google.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Joe Hildebrand" initials="J." surname="Hildebrand" | ||||
| > | ||||
| <organization showOnFrontPage="true"/> | ||||
| <address> | ||||
| <email>jhildebr@cisco.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="September" year="2018"/> | ||||
| </front> | ||||
| <seriesInfo name="XSF XEP" value="0166"/> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="Acknowledgements" numbered="false" toc="include" removeInRF | ||||
| <section title="Change log"> | C="false" pn="section-appendix.a"> | |||
| <t>This section may be deleted by the RFC Editor when preparing for | <name slugifiedName="name-acknowledgements">Acknowledgements</name> | |||
| publication.</t> | <t indent="0" pn="section-appendix.a-1">The number of people who have take | |||
| n part in the discussions | ||||
| <section title="Changes from draft-alvestrand-dispatch-rtcweb-datagram-00 | surrounding this document are too numerous to list, or even to identify. | |||
| to -01"> | The people listed below have made special, identifiable contributions; thi | |||
| <t>Added section "On interoperability and innovation"</t> | s does | |||
| not mean that others' contributions are less important.</t> | ||||
| <t>Added data confidentiality and integrity to the "data framing" | <t indent="0" pn="section-appendix.a-2">Thanks to <contact fullname="Cary | |||
| layer</t> | Bran"/>, <contact fullname="Cullen Jennings"/>, <contact fullname="Colin P | |||
| erkins"/>, <contact fullname="Magnus Westerlund"/>, and <contact fullname= | ||||
| <t>Added congestion management requirements in the "data transport" | "Jörg Ott"/>, who offered technical contributions to various | |||
| layer section</t> | draft versions of this document.</t> | |||
| <t indent="0" pn="section-appendix.a-3">Thanks to <contact fullname="Jonat | ||||
| <t>Changed need for non-media data from "question: do we need this?" | han Rosenberg"/>, <contact fullname="Matthew Kaufman"/>, and others at Skype for | |||
| to "Open issue: How do we do this?"</t> | the ASCII drawings in <xref target="arch-func-grps" format="default" secti | |||
| onFormat="of" derivedContent="Section 3"/>.</t> | ||||
| <t>Strengthened disclaimer that listed codecs are placeholders, not | <t indent="0" pn="section-appendix.a-4">Thanks to <contact fullname="Aliss | |||
| decisions.</t> | a Cooper"/>, <contact fullname="Björn Höhrmann"/>, <contact fullname="Colin Perk | |||
| ins"/>, | ||||
| <t>More details on why the "local system support functions" section is | <contact fullname="Colton Shields"/>, <contact fullname="Eric Rescor | |||
| there.</t> | la"/>, <contact fullname="Heath Matlock"/>, <contact fullname="Henry Sinnreich"/ | |||
| </section> | >, | |||
| <contact fullname="Justin Uberti"/>, <contact fullname="Keith Drage"/>, | ||||
| <section title="Changes from draft-alvestrand-dispatch-01 to draft-alvestr | <contact fullname="Magnus Westerlund"/>, <contact fullname="Olle E. Johans | |||
| and-rtcweb-overview-00"> | son"/>, | |||
| <t>Added section on "Relationship between API and protocol"</t> | <contact fullname="Sean Turner"/>, and <contact fullname="Simon Leinen"/> | |||
| for document review.</t> | ||||
| <t>Added terminology section</t> | </section> | |||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| <t>Mentioned congestion management as part of the "data transport" | ="include" pn="section-appendix.b"> | |||
| layer in the layer list</t> | <name slugifiedName="name-authors-address">Author's Address</name> | |||
| </section> | <author fullname="Harald T. Alvestrand" initials="H." surname="Alvestrand" | |||
| > | ||||
| <section title="Changes from draft-alvestrand-rtcweb-00 to -01"> | <organization showOnFrontPage="true">Google</organization> | |||
| <t>Removed most technical content, and replaced with pointers to | <address> | |||
| drafts as requested and identified by the RTCWEB WG chairs.</t> | <postal> | |||
| <street>Kungsbron 2</street> | ||||
| <t>Added content to acknowledgments section.</t> | <city>Stockholm</city> | |||
| <region/> | ||||
| <t>Added change log.</t> | <code>11122</code> | |||
| <country>Sweden</country> | ||||
| <t>Spell-checked document.</t> | </postal> | |||
| </section> | <email>harald@alvestrand.no</email> | |||
| </address> | ||||
| <section title="Changes from draft-alvestrand-rtcweb-overview-01 to draft- | </author> | |||
| ietf-rtcweb-overview-00"> | ||||
| <t>Changed draft name and document date.</t> | ||||
| <t>Removed unused references</t> | ||||
| </section> | ||||
| <section title="Changes from -00 to -01 of draft-ietf-rtcweb-overview"> | ||||
| <t>Added architecture figures to section 2.</t> | ||||
| <t>Changed the description of "echo cancellation" under "local system | ||||
| support functions".</t> | ||||
| <t>Added a few more definitions.</t> | ||||
| </section> | ||||
| <section title="Changes from -01 to -02 of draft-ietf-rtcweb-overview"> | ||||
| <t>Added pointers to use cases, security and rtp-usage drafts (now WG | ||||
| drafts).</t> | ||||
| <t>Changed description of SRTP from mandatory-to-use to | ||||
| mandatory-to-implement.</t> | ||||
| <t>Added the "3 principles of negotiation" to the connection | ||||
| management section.</t> | ||||
| <t>Added an explicit statement that ICE is required for both NAT and | ||||
| consent-to-receive.</t> | ||||
| </section> | ||||
| <section title="Changes from -02 to -03 of draft-ietf-rtcweb-overview"> | ||||
| <t>Added references to a number of new drafts.</t> | ||||
| <t>Expanded the description text under the "trapezoid" drawing with | ||||
| some more text discussed on the list.</t> | ||||
| <t>Changed the "Connection management" sentence from "will be done | ||||
| using SDP offer/answer" to "will be capable of representing SDP | ||||
| offer/answer" - this seems more consistent with JSEP.</t> | ||||
| <t>Added "security mechanisms" to the things a non-gatewayed SIP | ||||
| devices must support in order to not need a media gateway.</t> | ||||
| <t>Added a definition for "browser".</t> | ||||
| </section> | ||||
| <section title="Changes from -03 to -04 of draft-ietf-rtcweb-overview"> | ||||
| <t>Made introduction more normative.</t> | ||||
| <t>Several wording changes in response to review comments from EKR</t> | ||||
| <t>Added an appendix to hold references and notes that are not yet in | ||||
| a separate document.</t> | ||||
| </section> | ||||
| <section title="Changes from -04 to -05 of draft-ietf-rtcweb-overview"> | ||||
| <t>Minor grammatical fixes. This is mainly a "keepalive" refresh.</t> | ||||
| </section> | ||||
| <section title="Changes from -05 to -06"> | ||||
| <t>Clarifications in response to Last Call review comments. Inserted | ||||
| reference to draft-ietf-rtcweb-audio.</t> | ||||
| </section> | ||||
| <section title="Changes from -06 to -07"> | ||||
| <t>Added a reference to the "unified plan" draft, and updated some | ||||
| references.</t> | ||||
| <t>Otherwise, it's a "keepalive" draft.</t> | ||||
| </section> | ||||
| <section title="Changes from -07 to -08"> | ||||
| <t>Removed the appendix that detailed transports, and replaced it with | ||||
| a reference to draft-ietf-rtcweb-transports. Removed now-unused | ||||
| references.</t> | ||||
| </section> | ||||
| <section title="Changes from -08 to -09"> | ||||
| <t>Added text to the Abstract indicating that the intended status is | ||||
| an Applicability Statement.</t> | ||||
| <t/> | ||||
| </section> | ||||
| <section title="Changes from -09 to -10"> | ||||
| <t>Defined "WebRTC Browser" and "WebRTC device" as things that do, or | ||||
| don't, conform to the API.</t> | ||||
| <t>Updated reference to data-protocol draft</t> | ||||
| <t>Updated data formats to reference -rtcweb-audio- and not the | ||||
| expired -cbran draft.</t> | ||||
| <t>Deleted references to -unified-plan</t> | ||||
| <t>Deleted reference to -generic-idp (draft expired)</t> | ||||
| <t>Added notes on which referenced documents WebRTC browsers or | ||||
| devices MUST conform to.</t> | ||||
| <t>Added pointer to the security section of the API drafts.</t> | ||||
| </section> | ||||
| <section title="Changes from -10 to -11"> | ||||
| <t>Added "WebRTC Gateway" as a third class of device, and referenced | ||||
| the doc describing them.</t> | ||||
| <t>Made a number of text clarifications in response to document | ||||
| reviews.</t> | ||||
| </section> | ||||
| <section title="Changes from -11 to -12"> | ||||
| <t>Refined entity definitions to define "WebRTC endpoint" and | ||||
| "WebRTC-compatible endpoint".</t> | ||||
| <t>Changed remaining usage of the term "RTCWEB" to "WebRTC", including | ||||
| in the page header.</t> | ||||
| </section> | ||||
| <section title="Changes from -12 to -13"> | ||||
| <t>Changed "WebRTC device" to be "WebRTC non-browser", per decision at | ||||
| IETF 91. This led to the need for "WebRTC endpoint" as the common | ||||
| label for both, and the usage of that term in the rest of the | ||||
| document.</t> | ||||
| <t>Added words about WebRTC APIs in languages other than | ||||
| Javascript.</t> | ||||
| <t>Referenced draft-ietf-rtcweb-video for video codecs to support.</t> | ||||
| </section> | ||||
| <section title="Changes from -13 to -14"> | ||||
| <t>None. This is a "keepalive" update.</t> | ||||
| </section> | ||||
| <section title="Changes from -14 to -15"> | ||||
| <t>Changed "gateways" reference to point to the WG document.</t> | ||||
| </section> | ||||
| <section title="Changes from -15 to -16"> | ||||
| <t>None. This is a "keepalive" publication.</t> | ||||
| </section> | ||||
| <section title="Changes from -16 to -17"> | ||||
| <t>Addressed review comments by Olle E. Johansson and Magnus | ||||
| Westerlund</t> | ||||
| </section> | ||||
| <section title="Changes from -17 to -18"> | ||||
| <t>Addressed review comments from Sean Turner and Alissa Cooper</t> | ||||
| </section> | ||||
| <section title="Changes from -18 to -19"> | ||||
| <t>A number of grammatical issues were fixed.</t> | ||||
| <t>Added note on operational impact of WebRTC.</t> | ||||
| <t>Unified all definitions into the definitions list.</t> | ||||
| <t>Added a reference for BOSH.</t> | ||||
| <t>Changed ICE reference from 5245bis to RFC 5245.</t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 109 change blocks. | ||||
| 920 lines changed or deleted | 1646 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/ | ||||