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/ |