rfc8828xml2.original.xml | rfc8828.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="us-ascii"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
<!-- [rfced] updated by Chris /07/26/19 --> | nsus="true" docName="draft-ietf-rtcweb-ip-handling-12" indexInclude="true" ipr=" | |||
trust200902" number="8828" prepTime="2021-01-14T14:32:29" scripts="Common,Latin" | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="t | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | rue" xml:lang="en"> | |||
<?rfc toc="yes" ?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-rtcweb-ip-handling-12" | |||
<?rfc symrefs="yes" ?> | rel="prev"/> | |||
<?rfc iprnotified="no" ?> | <link href="https://dx.doi.org/10.17487/rfc8828" rel="alternate"/> | |||
<?rfc strict="yes" ?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
<?rfc compact="yes" ?> | ||||
<?rfc sortrefs="yes" ?> | ||||
<?rfc colonspace="yes" ?> | ||||
<?rfc tocdepth="4"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc submissionType="IETF" category="std" consensus="yes" number="XXXX" ipr="tru | ||||
st200902"> | ||||
<front> | <front> | |||
<title abbrev="WebRTC IP Handling">WebRTC IP Address Handling | <title abbrev="WebRTC IP Handling">WebRTC IP Address Handling Requirements</ | |||
Requirements</title> | title> | |||
<seriesInfo name="RFC" value="8828" stream="IETF"/> | ||||
<author fullname="Justin Uberti" initials="J." surname="Uberti"> | <author fullname="Justin Uberti" initials="J." surname="Uberti"> | |||
<organization>Google</organization> | <organization showOnFrontPage="true">Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>747 6th St S</street> | <street>747 6th St S</street> | |||
<city>Kirkland</city> | <city>Kirkland</city> | |||
<region>WA</region> | <region>WA</region> | |||
<code>98033</code> | <code>98033</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>justin@uberti.name</email> | <email>justin@uberti.name</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2019" month="July" /> | <author fullname="Guo-wei Shieh" initials="G." surname="Shieh"> | |||
<organization showOnFrontPage="true"/> | ||||
<address> | ||||
<postal> | ||||
<street>333 Elliott Ave W #500</street> | ||||
<city>Seattle</city> | ||||
<region>WA</region> | ||||
<code>98119</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>guoweis@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="01" year="2021"/> | ||||
<area>RAI</area> | <area>RAI</area> | |||
<abstract pn="section-abstract"> | ||||
<!-- [rfced] Please insert any keywords (beyond those that appear in | <t indent="0" pn="section-abstract-1">This document provides information a | |||
the title) for use on https://www.rfc-editor.org/search. --> | nd requirements for how IP | |||
addresses should be handled by Web Real-Time Communication (WebRTC) implem | ||||
<keyword>example</keyword> | entations.</t> | |||
<abstract> | ||||
<t>This document provides information and requirements for how IP | ||||
addresses should be handled by WebRTC implementations.</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/rfc8828" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t indent="0" pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2021 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
Introduction</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | ||||
ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-terminology">T | ||||
erminology</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref der | ||||
ivedContent="3" format="counter" sectionFormat="of" target="section-3"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-problem-statem | ||||
ent">Problem Statement</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-goals">Goals</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-detailed-design">Detailed Design</ | ||||
xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.5.2"> | ||||
<li pn="section-toc.1-1.5.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent= | ||||
"5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-principles">Principles | ||||
</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent= | ||||
"5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-modes-and-recommendati | ||||
ons">Modes and Recommendations</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-implementation-guidance">Implement | ||||
ation Guidance</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.6.2"> | ||||
<li pn="section-toc.1-1.6.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
"6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-ensuring-normal-routin | ||||
g">Ensuring Normal Routing</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
"6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-determining-associated | ||||
-loca">Determining Associated Local Addresses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-application-guidance">Application | ||||
Guidance</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.9"> | ||||
<t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
ations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10"> | ||||
<t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.10.2"> | ||||
<li pn="section-toc.1-1.10.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent | ||||
="10.1" format="counter" sectionFormat="of" target="section-10.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
s">Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent | ||||
="10.2" format="counter" sectionFormat="of" target="section-10.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
ces">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.11"> | ||||
<t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" 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.12"> | ||||
<t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" form | ||||
at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
resses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-1"> | |||
<name slugifiedName="name-introduction">Introduction</name> | ||||
<t>One of WebRTC's key features is its support of peer-to-peer | <t indent="0" pn="section-1-1">One of WebRTC's key features is its support | |||
of peer-to-peer | ||||
connections. However, when establishing such a connection, which involves | connections. However, when establishing such a connection, which involves | |||
connection attempts from various IP addresses, WebRTC may allow a web | connection attempts from various IP addresses, WebRTC may allow a web | |||
application to learn additional information about the user compared to an | application to learn additional information about the user compared to an | |||
application that only uses the Hypertext Transfer Protocol (HTTP) | application that only uses the Hypertext Transfer Protocol (HTTP) | |||
<xref target="RFC7230" />. This may be problematic in certain cases. This | <xref target="RFC7230" format="default" sectionFormat="of" derivedContent | |||
document summarizes the concerns, and makes recommendations on how WebRTC | ="RFC7230"/>. This may be problematic in | |||
implementations should best handle the tradeoff between privacy and media | certain cases. This | |||
performance.</t> | document summarizes the concerns and makes recommendations on how WebRTC | |||
implementations should best handle the trade-off between privacy and medi | ||||
a | ||||
performance.</t> | ||||
</section> | </section> | |||
<section title="Terminology"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | |||
<name slugifiedName="name-terminology">Terminology</name> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t indent="0" pn="section-2-1"> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"OPTIONAL" in this document are to be interpreted as described in BCP 14 | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
<xref target="RFC2119"></xref><xref target="RFC8174"></xref> | ", | |||
when, and only when, they appear in all capitals, as shown here.</t> | "<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="default" s | ||||
ectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="defa | ||||
ult" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they app | ||||
ear in all capitals, as | ||||
shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section title="Problem Statement"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-3"> | |||
<name slugifiedName="name-problem-statement">Problem Statement</name> | ||||
<t>In order to establish a peer-to-peer connection, WebRTC | <t indent="0" pn="section-3-1">In order to establish a peer-to-peer connec | |||
tion, WebRTC | ||||
implementations use Interactive Connectivity Establishment (ICE) | implementations use Interactive Connectivity Establishment (ICE) | |||
<xref target="RFC8445" />, which attempts to discover multiple IP | <xref target="RFC8445" format="default" sectionFormat="of" derivedContent= "RFC8445"/>. ICE attempts to discover multiple IP | |||
addresses using techniques such as Session Traversal Utilities for NAT | addresses using techniques such as Session Traversal Utilities for NAT | |||
(STUN) | (STUN) | |||
<xref target="RFC5389" /> and Traversal Using Relays around NAT (TURN) | <xref target="RFC5389" format="default" sectionFormat="of" derivedContent= | |||
<xref target="RFC5766" />, and then checks the connectivity of each | "RFC5389"/> and Traversal Using Relays | |||
around NAT (TURN) | ||||
<xref target="RFC5766" format="default" sectionFormat="of" derivedContent= | ||||
"RFC5766"/> and then checks the | ||||
connectivity of each | ||||
local-address-remote-address pair in order to select the best one. The | local-address-remote-address pair in order to select the best one. The | |||
addresses that are collected usually consist of an endpoint's private | addresses that are collected usually consist of an endpoint's private | |||
physical or virtual addresses and its public Internet addresses.</t> | physical or virtual addresses and its public Internet addresses.</t> | |||
<t indent="0" pn="section-3-2">These addresses are provided to the web app | ||||
<t>These addresses are provided to the web application so that | lication so that | |||
they can be communicated to the remote endpoint for its checks. This | they can be communicated to the remote endpoint for its checks. This | |||
allows the application to learn more about the local network | allows the application to learn more about the local network | |||
configuration than it would from a typical HTTP scenario, in which the | configuration than it would from a typical HTTP scenario, in which the | |||
web server would only see a single public Internet address, i.e., the | web server would only see a single public Internet address, i.e., the | |||
address from which the HTTP request was sent.</t> | address from which the HTTP request was sent.</t> | |||
<t indent="0" pn="section-3-3">The additional information revealed falls i | ||||
<t>The information revealed falls into three categories: | nto three categories: | |||
<list style="numbers"> | </t> | |||
<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3-4" | ||||
<t>If the client is multihomed, additional public IP addresses for the | > | |||
<li pn="section-3-4.1" derivedCounter="1.">If the client is multihomed, | ||||
additional public IP addresses for the | ||||
client can be learned. In particular, if the client tries to hide its | client can be learned. In particular, if the client tries to hide its | |||
physical location through a Virtual Private Network (VPN), and the VPN | physical location through a Virtual Private Network (VPN), and the VPN | |||
and local OS support routing over multiple interfaces (a "split-tunnel" | and local OS support routing over multiple interfaces (a "split-tunnel" | |||
VPN), WebRTC can discover not only the public address for the VPN, but | VPN), WebRTC can discover not only the public address for the VPN, but | |||
also the ISP public address over which the VPN is running.</t> | also the ISP public address over which the VPN is running.</li> | |||
<li pn="section-3-4.2" derivedCounter="2.">If the client is behind a Net | ||||
<t>If the client is behind a Network Address Translator (NAT), the | work Address Translator (NAT), the | |||
client's private IP addresses, often | client's private IP addresses, often | |||
<xref target="RFC1918" /> addresses, can be learned.</t> | <xref target="RFC1918" format="default" sectionFormat="of" derivedConten | |||
t="RFC1918"/> addresses, can be learned.</li> | ||||
<t>If the client is behind a proxy (a client-configured "classical | <li pn="section-3-4.3" derivedCounter="3.">If the client is behind a pro | |||
xy (a client-configured "classical | ||||
application proxy", as defined in | application proxy", as defined in | |||
<xref target="RFC1919" />, Section 3), but direct access to the | <xref target="RFC1919" format="default" sectionFormat="comma" section="3 " derivedLink="https://rfc-editor.org/rfc/rfc1919#section-3" derivedContent="RFC 1919"/>), but direct access to the | |||
Internet is permitted, WebRTC's STUN checks will bypass the proxy and | Internet is permitted, WebRTC's STUN checks will bypass the proxy and | |||
reveal the public IP address of the client. This concern also applies | reveal the public IP address of the client. This concern also applies | |||
to the "enterprise TURN server" scenario described in | to the "enterprise TURN server" scenario described in | |||
<xref target="RFC7478" />, Section 2.3.5.1, if, as above, direct | <xref target="RFC7478" format="default" sectionFormat="comma" section="2 .3.5.1" derivedLink="https://rfc-editor.org/rfc/rfc7478#section-2.3.5.1" derived Content="RFC7478"/> if, as above, direct | |||
Internet access is permitted. However, when the term "proxy" is used in | Internet access is permitted. However, when the term "proxy" is used in | |||
this document, it is always in reference to an | this document, it is always in reference to an | |||
<xref target="RFC1919" /> proxy server.</t> | <xref target="RFC1919" format="default" sectionFormat="of" derivedConten | |||
</list></t> | t="RFC1919"/> proxy server.</li> | |||
</ol> | ||||
<t>Of these three concerns, the first is the most significant, because for | <t indent="0" pn="section-3-5">Of these three concerns, the first is the m | |||
some | ost significant, because for some | |||
users, the purpose of using a VPN is for anonymity. However, different | users, the purpose of using a VPN is for anonymity. However, different | |||
VPN users will have different needs, and some VPN users (e.g., corporate | VPN users will have different needs, and some VPN users (e.g., corporate | |||
VPN users) may in fact prefer WebRTC to send media traffic directly, | VPN users) may in fact prefer WebRTC to send media traffic directly -- | |||
i.e., not through the VPN.</t> | i.e., not through the VPN.</t> | |||
<t indent="0" pn="section-3-6">The second concern is less significant but | ||||
<t>The second concern is less significant but valid nonetheless. The core | valid nonetheless. The core | |||
issue is that web applications can learn about addresses that are not | issue is that web applications can learn about addresses that are not | |||
exposed to the internet; typically these address are IPv4, but they can | exposed to the Internet; typically, these address are IPv4, but they can | |||
also be IPv6, as in the case of NAT64 <xref target="RFC6146" />. | also be IPv6, as in the case of NAT64 <xref target="RFC6146" format="defau | |||
While disclosure of the <xref target="RFC4941" /> IPv6 addresses | lt" sectionFormat="of" derivedContent="RFC6146"/>. | |||
recommended by <xref target="WEBRTC-TRANSPORTS" /> is fairly | While disclosure of the <xref target="RFC4941" format="default" sectionFor | |||
mat="of" derivedContent="RFC4941"/> IPv6 addresses | ||||
recommended by <xref target="RFC8835" format="default" sectionFormat="of" | ||||
derivedContent="RFC8835"/> is fairly | ||||
benign due to their intentionally short lifetimes, IPv4 addresses present | benign due to their intentionally short lifetimes, IPv4 addresses present | |||
some challenges. Although private IPv4 addresses often contain minimal | some challenges. Although private IPv4 addresses often contain minimal | |||
entropy (e.g., 192.168.0.2, a fairly common address), in the worst case, | entropy (e.g., 192.168.0.2, a fairly common address), in the worst case, | |||
they can contain 24 bits of entropy with an indefinite lifetime. As such, | they can contain 24 bits of entropy with an indefinite lifetime. As such, | |||
they can be a fairly significant fingerprinting surface. In addition, | they can be a fairly significant fingerprinting surface. In addition, | |||
intranet web sites can be attacked more easily when their IPv4 address | intranet web sites can be attacked more easily when their IPv4 address | |||
range is externally known.</t> | range is externally known.</t> | |||
<t indent="0" pn="section-3-7">Private IP addresses can also act as an ide | ||||
<t>Private IP addresses can also act as an identifier that allows | ntifier that allows | |||
web applications running in isolated browsing contexts (e.g., normal and | web applications running in isolated browsing contexts (e.g., normal and | |||
private browsing) to learn that they are running on the same device. This | private browsing) to learn that they are running on the same device. This | |||
could allow the application sessions to be correlated, defeating some of | could allow the application sessions to be correlated, defeating some of | |||
the privacy protections provided by isolation. It should be noted that | the privacy protections provided by isolation. It should be noted that | |||
private addresses are just one potential mechanism for this correlation | private addresses are just one potential mechanism for this correlation | |||
and this is an area for further study.</t> | and this is an area for further study.</t> | |||
<t indent="0" pn="section-3-8">The third concern is the least common, as p | ||||
<t>The third concern is the least common, as proxy administrators can alre | roxy administrators can already | |||
ady | ||||
control this behavior through organizational firewall policy, and | control this behavior through organizational firewall policy, and | |||
generally, forcing WebRTC traffic through a proxy server will have | generally, forcing WebRTC traffic through a proxy server will have | |||
negative effects on both the proxy and on media quality.</t> | negative effects on both the proxy and media quality.</t> | |||
<t indent="0" pn="section-3-9">Note also that these concerns predate WebRT | ||||
<t>Note also that these concerns predate WebRTC; Adobe Flash Player has | C; Adobe Flash Player has | |||
provided similar functionality since the introduction of Real-Time | provided similar functionality since the introduction of Real-Time | |||
Media Flow Protocol (RTMFP) support | Media Flow Protocol (RTMFP) support | |||
<xref target="RFC7016" /> in 2008.</t> | <xref target="RFC7016" format="default" sectionFormat="of" derivedContent= "RFC7016"/> in 2008.</t> | |||
</section> | </section> | |||
<section title="Goals"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-4"> | |||
<name slugifiedName="name-goals">Goals</name> | ||||
<t>WebRTC's support of secure peer-to-peer connections facilitates | <t indent="0" pn="section-4-1">WebRTC's support of secure peer-to-peer con | |||
nections facilitates | ||||
deployment of decentralized systems, which can have privacy benefits. As | deployment of decentralized systems, which can have privacy benefits. As | |||
a result, blunt solutions that disable WebRTC or make it significantly | a result, blunt solutions that disable WebRTC or make it significantly | |||
harder to use are undesirable. This document takes a more nuanced | harder to use are undesirable. This document takes a more nuanced | |||
approach, with the following goals: | approach, with the following goals: | |||
<list style="symbols"> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4-2 | ||||
<t>Provide a framework for understanding the problem so that controls | "> | |||
might be provided to make different tradeoffs regarding performance and | <li pn="section-4-2.1">Provide a framework for understanding the problem | |||
privacy concerns with WebRTC.</t> | so that controls | |||
might be provided to make different trade-offs regarding performance and | ||||
<t>Using that framework, define settings that enable peer-to-peer | privacy concerns with WebRTC.</li> | |||
<li pn="section-4-2.2">Using that framework, define settings that enable | ||||
peer-to-peer | ||||
communications, each with a different balance between performance and | communications, each with a different balance between performance and | |||
privacy.</t> | privacy.</li> | |||
<li pn="section-4-2.3">Finally, provide recommendations for default sett | ||||
<t>Finally, provide recommendations for default settings that provide | ings that provide | |||
reasonable performance without also exposing addressing information in | reasonable performance without also exposing addressing information in | |||
a way that might violate user expectations.</t> | a way that might violate user expectations.</li> | |||
</list></t> | </ul> | |||
</section> | </section> | |||
<section title="Detailed Design"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-5"> | |||
<section title="Principles"> | <name slugifiedName="name-detailed-design">Detailed Design</name> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-5.1 | ||||
<t>The key principles for our framework are stated below: | "> | |||
<list style="numbers"> | <name slugifiedName="name-principles">Principles</name> | |||
<t indent="0" pn="section-5.1-1">The key principles for our framework ar | ||||
<t>By default, WebRTC traffic should follow typical IP routing, i.e., | e stated below: | |||
WebRTC should use the same interface used for HTTP traffic, and only | </t> | |||
<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-5. | ||||
1-2"> | ||||
<li pn="section-5.1-2.1" derivedCounter="1.">By default, WebRTC traffi | ||||
c should follow typical IP routing (i.e., | ||||
WebRTC should use the same interface used for HTTP traffic) and only | ||||
the system's 'typical' public addresses (or those of an enterprise | the system's 'typical' public addresses (or those of an enterprise | |||
TURN server, if present) should be visible to the application. | TURN server, if present) should be visible to the application. | |||
However, in the interest of optimal media quality, it should be | However, in the interest of optimal media quality, it should be | |||
possible to enable WebRTC to make use of all network interfaces to | possible to enable WebRTC to make use of all network interfaces to | |||
determine the ideal route.</t> | determine the ideal route.</li> | |||
<li pn="section-5.1-2.2" derivedCounter="2.">By default, WebRTC should | ||||
<t>By default, WebRTC should be able to negotiate direct peer-to-peer | be able to negotiate direct peer-to-peer | |||
connections between endpoints (i.e., without traversing a NAT or | connections between endpoints (i.e., without traversing a NAT or | |||
relay server) when such connections are possible. This ensures that | relay server) when such connections are possible. This ensures that | |||
applications that need true peer-to-peer routing for bandwidth or | applications that need true peer-to-peer routing for bandwidth or | |||
latency reasons can operate successfully.</t> | latency reasons can operate successfully.</li> | |||
<li pn="section-5.1-2.3" derivedCounter="3.">It should be possible to | ||||
<t>It should be possible to configure WebRTC to not disclose private | configure WebRTC to not disclose private | |||
local IP addresses, to avoid the issues associated with web | local IP addresses, to avoid the issues associated with web | |||
applications learning such addresses. This document does not require | applications learning such addresses. This document does not require | |||
this to be the default state, as there is no currently defined | this to be the default state, as there is no currently defined | |||
mechanism that can satisfy this requirement as well as the | mechanism that can satisfy this requirement as well as the | |||
aforementioned requirement to allow direct peer-to-peer | aforementioned requirement to allow direct peer-to-peer | |||
connections.</t> | connections.</li> | |||
<li pn="section-5.1-2.4" derivedCounter="4.">By default, WebRTC traffi | ||||
<t>By default, WebRTC traffic should not be sent through proxy | c should not be sent through proxy | |||
servers, due to the media quality problems associated with sending | servers, due to the media-quality problems associated with sending | |||
WebRTC traffic over TCP, which is almost always used when | WebRTC traffic over TCP, which is almost always used when | |||
communicating with such proxies, as well as proxy performance issues | communicating with such proxies, as well as proxy performance issues | |||
that may result from proxying WebRTC's long-lived, high-bandwidth | that may result from proxying WebRTC's long-lived, high-bandwidth | |||
connections. However, it should be possible to force WebRTC to send | connections. However, it should be possible to force WebRTC to send | |||
its traffic through a configured proxy if desired.</t> | its traffic through a configured proxy if desired.</li> | |||
</list></t> | </ol> | |||
</section> | </section> | |||
<section title="Modes and Recommendations"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2 | |||
"> | ||||
<t>Based on these ideas, we define four specific modes of WebRTC | <name slugifiedName="name-modes-and-recommendations">Modes and Recommend | |||
behavior, reflecting different media quality/privacy tradeoffs: | ations</name> | |||
<list style="format Mode %d:"> | <t indent="0" pn="section-5.2-1">Based on these ideas, we define four sp | |||
ecific modes of WebRTC | ||||
<t>Enumerate all addresses: WebRTC MUST use all network interfaces to | behavior, reflecting different media quality/privacy trade-offs: | |||
</t> | ||||
<dl newline="true" indent="3" spacing="normal" pn="section-5.2-2"> | ||||
<dt pn="section-5.2-2.1">Mode 1 - Enumerate all addresses:</dt> | ||||
<dd pn="section-5.2-2.2">WebRTC <bcp14>MUST</bcp14> use all network in | ||||
terfaces to | ||||
attempt communication with STUN servers, TURN servers, or peers. This | attempt communication with STUN servers, TURN servers, or peers. This | |||
will converge on the best media path, and is ideal when media | will converge on the best media path and is ideal when media | |||
performance is the highest priority, but it discloses the most | performance is the highest priority, but it discloses the most | |||
information.</t> | information.</dd> | |||
<dt pn="section-5.2-2.3">Mode 2 - Default route + associated local add | ||||
<t>Default route + associated local addresses: WebRTC MUST follow the | resses:</dt> | |||
<dd pn="section-5.2-2.4">WebRTC | ||||
<bcp14>MUST</bcp14> follow the | ||||
kernel routing table rules, which will typically cause media packets | kernel routing table rules, which will typically cause media packets | |||
to take the same route as the application's HTTP traffic. If an | to take the same route as the application's HTTP traffic. If an | |||
enterprise TURN server is present, the preferred route MUST be | enterprise TURN server is present, the preferred route <bcp14>MUST</bc p14> be | |||
through this TURN server. Once an interface has been chosen, the | through this TURN server. Once an interface has been chosen, the | |||
private IPv4 and IPv6 addresses associated with this interface MUST | private IPv4 and IPv6 addresses associated with this interface <bcp14> MUST</bcp14> | |||
be discovered and provided to the application as host candidates. | be discovered and provided to the application as host candidates. | |||
This ensures that direct connections can still be established in this | This ensures that direct connections can still be established in this | |||
mode.</t> | mode.</dd> | |||
<dt pn="section-5.2-2.5">Mode 3 - Default route only: </dt> | ||||
<t>Default route only: This is the the same as Mode 2, except that | <dd pn="section-5.2-2.6">This is the same as Mode 2, except that | |||
the associated private addresses MUST NOT be provided; the only IP | the associated private addresses <bcp14>MUST NOT</bcp14> be provided; | |||
the only IP | ||||
addresses gathered are those discovered via mechanisms like STUN and | addresses gathered are those discovered via mechanisms like STUN and | |||
TURN (on the default route). This may cause traffic to hairpin | TURN (on the default route). This may cause traffic to hairpin | |||
through a NAT, fall back to an application TURN server, or fail | through a NAT, fall back to an application TURN server, or fail | |||
altogether, with resulting quality implications.</t> | altogether, with resulting quality implications.</dd> | |||
<dt pn="section-5.2-2.7">Mode 4 - Force proxy:</dt> | ||||
<t>Force proxy: This is the same as Mode 3, but when the | <dd pn="section-5.2-2.8">This is the same as Mode 3, but when the | |||
application's HTTP traffic is sent through a proxy, WebRTC media | application's HTTP traffic is sent through a proxy, WebRTC media | |||
traffic MUST also be proxied. If the proxy does not support UDP (as | traffic <bcp14>MUST</bcp14> also be proxied. If the proxy does not sup port UDP (as | |||
is the case for all HTTP and most SOCKS | is the case for all HTTP and most SOCKS | |||
<xref target="RFC1928" /> proxies), or the WebRTC implementation does | <xref target="RFC1928" format="default" sectionFormat="of" derivedCont ent="RFC1928"/> proxies), or the WebRTC implementation does | |||
not support UDP proxying, the use of UDP will be disabled, and TCP | not support UDP proxying, the use of UDP will be disabled, and TCP | |||
will be used to send and receive media through the proxy. Use of TCP | will be used to send and receive media through the proxy. Use of TCP | |||
will result in reduced media quality, in addition to any performance | will result in reduced media quality, in addition to any performance | |||
considerations associated with sending all WebRTC media through the | considerations associated with sending all WebRTC media through the | |||
proxy server.</t> | proxy server.</dd> | |||
</list></t> | </dl> | |||
<t indent="0" pn="section-5.2-3">Mode 1 <bcp14>MUST NOT</bcp14> be used | ||||
<t>Mode 1 MUST NOT be used unless user consent has been provided. The | unless user consent has been provided. The | |||
details of this consent are left to the implementation; one potential | details of this consent are left to the implementation; one potential | |||
mechanism is to tie this consent to getUserMedia (device permissions) | mechanism is to tie this consent to getUserMedia (device permissions) | |||
consent, described in <xref target="WEBRTC-SECURITY" />, | consent, described in <xref target="RFC8827" format="default" sectionFor | |||
Section 6.2. Alternatively, implementations can provide a specific | mat="comma" section="6.2" derivedLink="https://rfc-editor.org/rfc/rfc8827#sectio | |||
n-6.2" derivedContent="RFC8827"/>. | ||||
Alternatively, implementations can provide a specific | ||||
mechanism to obtain user consent.</t> | mechanism to obtain user consent.</t> | |||
<t indent="0" pn="section-5.2-4">In cases where user consent has not bee | ||||
<t>In cases where user consent has not been obtained, Mode 2 SHOULD be | n obtained, Mode 2 <bcp14>SHOULD</bcp14> be | |||
used.</t> | used.</t> | |||
<t indent="0" pn="section-5.2-5">These defaults provide a reasonable tra | ||||
<t>These defaults provide a reasonable tradeoff that permits trusted | de-off that permits trusted | |||
WebRTC applications to achieve optimal network performance, but gives | WebRTC applications to achieve optimal network performance but gives | |||
applications without consent (e.g., 1-way streaming or data channel | applications without consent (e.g., 1-way streaming or data-channel | |||
applications) only the minimum information needed to achieve direct | applications) only the minimum information needed to achieve direct | |||
connections, as defined in Mode 2. However, implementations MAY choose | connections, as defined in Mode 2. However, implementations <bcp14>MAY</ bcp14> choose | |||
stricter modes if desired, e.g., if a user indicates they want all | stricter modes if desired, e.g., if a user indicates they want all | |||
WebRTC traffic to follow the default route.</t> | WebRTC traffic to follow the default route.</t> | |||
<t indent="0" pn="section-5.2-6">Future documents may define additional | ||||
<t>Future documents may define additional modes and/or update the | modes and/or update the | |||
recommended default modes.</t> | recommended default modes.</t> | |||
<t indent="0" pn="section-5.2-7">Note that the suggested defaults can st | ||||
<t>Note that the suggested defaults can still be used even for | ill be used even for | |||
organizations that want all external WebRTC traffic to traverse a proxy | organizations that want all external WebRTC traffic to traverse a proxy | |||
or enterprise TURN server, simply by setting an organizational firewall | or enterprise TURN server, simply by setting an organizational firewall | |||
policy that allows WebRTC traffic to only leave through the proxy or | policy that allows WebRTC traffic to only leave through the proxy or | |||
TURN server. This provides a way to ensure the proxy or TURN server is | TURN server. This provides a way to ensure the proxy or TURN server is | |||
used for any external traffic, but still allows direct connections | used for any external traffic but still allows direct connections | |||
(and, in the proxy case, avoids the performance issues associated with | (and, in the proxy case, avoids the performance issues associated with | |||
forcing media through said proxy) for intra-organization traffic.</t> | forcing media through said proxy) for intra-organization traffic.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section title="Implementation Guidance"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-6"> | |||
<name slugifiedName="name-implementation-guidance">Implementation Guidance | ||||
<t>This section provides guidance to WebRTC implementations on how to | </name> | |||
<t indent="0" pn="section-6-1">This section provides guidance to WebRTC im | ||||
plementations on how to | ||||
implement the policies described above.</t> | implement the policies described above.</t> | |||
<section title="Ensuring Normal Routing"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1 | |||
"> | ||||
<t>When trying to follow typical IP routing, as required by Modes 2 | <name slugifiedName="name-ensuring-normal-routing">Ensuring Normal Routi | |||
ng</name> | ||||
<t indent="0" pn="section-6.1-1">When trying to follow typical IP routin | ||||
g, as required by Modes 2 | ||||
and 3, the simplest approach is | and 3, the simplest approach is | |||
to bind() the sockets used for peer-to-peer connections to the wildcard | to bind() the sockets used for peer-to-peer connections to the wildcard | |||
addresses (0.0.0.0 for IPv4, :: for IPv6), which allows the OS to route | addresses (0.0.0.0 for IPv4, :: for IPv6), which allows the OS to route | |||
WebRTC traffic the same way as it would HTTP traffic. STUN and TURN | WebRTC traffic the same way as it would HTTP traffic. STUN and TURN | |||
will work as usual, and host candidates can still be determined as | will work as usual, and host candidates can still be determined as | |||
mentioned below.</t> | mentioned below.</t> | |||
</section> | </section> | |||
<section title="Determining Associated Local Addresses"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-6.2 | |||
"> | ||||
<t>When binding to a wildcard address, some extra work is needed to | <name slugifiedName="name-determining-associated-loca">Determining Assoc | |||
iated Local Addresses</name> | ||||
<t indent="0" pn="section-6.2-1">When binding to a wildcard address, som | ||||
e extra work is needed to | ||||
determine the associated local address required by Mode 2, which we | determine the associated local address required by Mode 2, which we | |||
define as the source | define as the source | |||
address that would be used for any packets sent to the web application | address that would be used for any packets sent to the web application | |||
host (assuming that UDP and TCP get the same routing treatment). Use of | host (assuming that UDP and TCP get the same routing treatment). Use of | |||
the web application host as a destination ensures the right source | the web-application host as a destination ensures the right source | |||
address is selected, regardless of where the application resides (e.g., | address is selected, regardless of where the application resides (e.g., | |||
on an intranet).</t> | on an intranet).</t> | |||
<t indent="0" pn="section-6.2-2">First, the appropriate remote IPv4/IPv6 | ||||
<t>First, the appropriate remote IPv4/IPv6 address is obtained by | address is obtained by | |||
resolving the host component of the web application URI | resolving the host component of the web application URI | |||
<xref target="RFC3986" />. If the client is behind a proxy and cannot | <xref target="RFC3986" format="default" sectionFormat="of" derivedConten t="RFC3986"/>. If the client is behind a proxy and cannot | |||
resolve these IPs via DNS, the address of the proxy can be used | resolve these IPs via DNS, the address of the proxy can be used | |||
instead. Or, if the web application was loaded from a file:// URI | instead. Or, if the web application was loaded from a file:// URI | |||
<xref target="RFC8089" />, rather than over the network, the | <xref target="RFC8089" format="default" sectionFormat="of" derivedConten t="RFC8089"/> rather than over the network, the | |||
implementation can fall back to a well-known DNS name or IP | implementation can fall back to a well-known DNS name or IP | |||
address.</t> | address.</t> | |||
<t indent="0" pn="section-6.2-3">Once a suitable remote IP has been dete | ||||
<t>Once a suitable remote IP has been determined, the implementation | rmined, the implementation | |||
can create a UDP socket, bind() it to the appropriate wildcard address, | can create a UDP socket, bind() it to the appropriate wildcard address, | |||
and then connect() to the remote IP. Generally, this results in | and then connect() to the remote IP. Generally, this results in | |||
the socket being assigned a local address based on the kernel routing | the socket being assigned a local address based on the kernel routing | |||
table, without sending any packets over the network.</t> | table, without sending any packets over the network.</t> | |||
<t indent="0" pn="section-6.2-4">Finally, the socket can be queried usin | ||||
<t>Finally, the socket can be queried using getsockname() or the | g getsockname() or the | |||
equivalent to determine the appropriate local address.</t> | equivalent to determine the appropriate local address.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section title="Application Guidance"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-7"> | |||
<name slugifiedName="name-application-guidance">Application Guidance</name | ||||
<t>The recommendations mentioned in this document may cause certain | > | |||
<t indent="0" pn="section-7-1">The recommendations mentioned in this docum | ||||
ent may cause certain | ||||
WebRTC applications to malfunction. In order to be robust in all | WebRTC applications to malfunction. In order to be robust in all | |||
scenarios, the following guidelines are provided for applications: | scenarios, the following guidelines are provided for applications: | |||
<list style="symbols"> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7-2 | ||||
<t>Applications SHOULD deploy a TURN server with support for both UDP | "> | |||
<li pn="section-7-2.1">Applications <bcp14>SHOULD</bcp14> deploy a TURN | ||||
server with support for both UDP | ||||
and TCP connections to the server. This ensures that connectivity can | and TCP connections to the server. This ensures that connectivity can | |||
still be established, even when Mode 3 or 4 are in use, assuming the | still be established, even when Mode 3 or 4 is in use, assuming the | |||
TURN server can be reached.</t> | TURN server can be reached.</li> | |||
<li pn="section-7-2.2">Applications <bcp14>SHOULD</bcp14> detect when th | ||||
<t>Applications SHOULD detect when they don't have access to the full | ey don't have access to the full | |||
set of ICE candidates by checking for the presence of host candidates. | set of ICE candidates by checking for the presence of host candidates. | |||
If no host candidates are present, Mode 3 or 4 above is in use; this | If no host candidates are present, Mode 3 or 4 is in use; this | |||
knowledge can be useful for diagnostic purposes.</t> | knowledge can be useful for diagnostic purposes.</li> | |||
</list></t> | </ul> | |||
</section> | </section> | |||
<section title="Security Considerations"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-8"> | |||
<name slugifiedName="name-security-considerations">Security Considerations | ||||
<t>This document describes several potential privacy and security concerns | </name> | |||
associated with WebRTC peer-to-peer connections, and provides mechanisms | <t indent="0" pn="section-8-1">This document describes several potential p | |||
rivacy and security concerns | ||||
associated with WebRTC peer-to-peer connections and provides mechanisms | ||||
and recommendations for WebRTC implementations to address these concerns. | and recommendations for WebRTC implementations to address these concerns. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="IANA Considerations"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-9"> | |||
<name slugifiedName="name-iana-considerations">IANA Considerations</name> | ||||
<t>This document requires no actions from IANA.</t> | <t indent="0" pn="section-9-1">This document has no IANA actions.</t> | |||
</section> | ||||
<section title="Acknowledgements"> | ||||
<t>Several people provided input into this document, including Bernard | ||||
Aboba, Harald Alvestrand, Youenn Fablet, Ted Hardie, Matthew Kaufmann, | ||||
Eric Rescorla, Adam Roach, and Martin Thomson.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references pn="section-10"> | |||
<?rfc include='reference.RFC.2119.xml'?> | <name slugifiedName="name-references">References</name> | |||
<?rfc include='reference.RFC.3986.xml'?> | <references pn="section-10.1"> | |||
<?rfc include='reference.RFC.5389.xml'?> | <name slugifiedName="name-normative-references">Normative References</na | |||
<?rfc include='reference.RFC.5766.xml'?> | me> | |||
<?rfc include='reference.RFC.8089.xml'?> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
<?rfc include='reference.RFC.8174.xml'?> | 119" quoteTitle="true" derivedAnchor="RFC2119"> | |||
<?rfc include='reference.RFC.8445.xml'?> | <front> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
le> | ||||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1997" month="March"/> | ||||
<abstract> | ||||
<t indent="0">In many standards track documents several words are | ||||
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 | ||||
TF documents. This document specifies an Internet Best Current Practices for th | ||||
e Internet Community, and requests discussion and suggestions for improvements.< | ||||
/t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3 | ||||
986" quoteTitle="true" derivedAnchor="RFC3986"> | ||||
<front> | ||||
<title>Uniform Resource Identifier (URI): Generic Syntax</title> | ||||
<author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Fielding" fullname="R. Fielding"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="L." surname="Masinter" fullname="L. Masinter"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2005" month="January"/> | ||||
<abstract> | ||||
<t indent="0">A Uniform Resource Identifier (URI) is a compact seq | ||||
uence of characters that identifies an abstract or physical resource. This spec | ||||
ification defines the generic URI syntax and a process for resolving URI referen | ||||
ces that might be in relative form, along with guidelines and security considera | ||||
tions for the use of URIs on the Internet. The URI syntax defines a grammar tha | ||||
t is a superset of all valid URIs, allowing an implementation to parse the commo | ||||
n components of a URI reference without knowing the scheme-specific requirements | ||||
of every possible identifier. This specification does not define a generative | ||||
grammar for URIs; that task is performed by the individual specifications of eac | ||||
h URI scheme. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="66"/> | ||||
<seriesInfo name="RFC" value="3986"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3986"/> | ||||
</reference> | ||||
<reference anchor="RFC5389" target="https://www.rfc-editor.org/info/rfc5 | ||||
389" quoteTitle="true" derivedAnchor="RFC5389"> | ||||
<front> | ||||
<title>Session Traversal Utilities for NAT (STUN)</title> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Mahy" fullname="R. Mahy"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Matthews" fullname="P. Matthews"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Wing" fullname="D. Wing"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="October"/> | ||||
<abstract> | ||||
<t indent="0">Session Traversal Utilities for NAT (STUN) is a prot | ||||
ocol that serves as a tool for other protocols in dealing with Network Address T | ||||
ranslator (NAT) traversal. It can be used by an endpoint to determine the IP ad | ||||
dress and port allocated to it by a NAT. It can also be used to check connectiv | ||||
ity between two endpoints, and as a keep-alive protocol to maintain NAT bindings | ||||
. STUN works with many existing NATs, and does not require any special behavior | ||||
from them.</t> | ||||
<t indent="0">STUN is not a NAT traversal solution by itself. Rat | ||||
her, it is a tool to be used in the context of a NAT traversal solution. This i | ||||
s an important change from the previous version of this specification (RFC 3489) | ||||
, which presented STUN as a complete solution.</t> | ||||
<t indent="0">This document obsoletes RFC 3489. [STANDARDS-TRACK] | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5389"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5389"/> | ||||
</reference> | ||||
<reference anchor="RFC5766" target="https://www.rfc-editor.org/info/rfc5 | ||||
766" quoteTitle="true" derivedAnchor="RFC5766"> | ||||
<front> | ||||
<title>Traversal Using Relays around NAT (TURN): Relay Extensions to | ||||
Session Traversal Utilities for NAT (STUN)</title> | ||||
<author initials="R." surname="Mahy" fullname="R. Mahy"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Matthews" fullname="P. Matthews"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2010" month="April"/> | ||||
<abstract> | ||||
<t indent="0">If a host is located behind a NAT, then in certain s | ||||
ituations it can be impossible for that host to communicate directly with other | ||||
hosts (peers). In these situations, it is necessary for the host to use the ser | ||||
vices of an intermediate node that acts as a communication relay. This specific | ||||
ation defines a protocol, called TURN (Traversal Using Relays around NAT), that | ||||
allows the host to control the operation of the relay and to exchange packets wi | ||||
th its peers using the relay. TURN differs from some other relay control protoc | ||||
ols in that it allows a client to communicate with multiple peers using a single | ||||
relay address. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5766"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5766"/> | ||||
</reference> | ||||
<reference anchor="RFC8089" target="https://www.rfc-editor.org/info/rfc8 | ||||
089" quoteTitle="true" derivedAnchor="RFC8089"> | ||||
<front> | ||||
<title>The "file" URI Scheme</title> | ||||
<author initials="M." surname="Kerwin" fullname="M. Kerwin"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="February"/> | ||||
<abstract> | ||||
<t indent="0">This document provides a more complete specification | ||||
of the "file" Uniform Resource Identifier (URI) scheme and replaces the very br | ||||
ief definition in Section 3.10 of RFC 1738.</t> | ||||
<t indent="0">It defines a common syntax that is intended to inter | ||||
operate across the broad spectrum of existing usages. At the same time, it note | ||||
s some other current practices around the use of file URIs.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8089"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8089"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
<front> | ||||
<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> | ||||
</references> | </references> | |||
<references title="Informative References"> | <references pn="section-10.2"> | |||
<?rfc include='reference.RFC.1918.xml'?> | <name slugifiedName="name-informative-references">Informative References | |||
<?rfc include='reference.RFC.1919.xml'?> | </name> | |||
<?rfc include='reference.RFC.1928.xml'?> | <reference anchor="RFC1918" target="https://www.rfc-editor.org/info/rfc1 | |||
<?rfc include='reference.RFC.4941.xml'?> | 918" quoteTitle="true" derivedAnchor="RFC1918"> | |||
<?rfc include='reference.RFC.6146.xml'?> | <front> | |||
<?rfc include='reference.RFC.7016.xml'?> | <title>Address Allocation for Private Internets</title> | |||
<?rfc include='reference.RFC.7230.xml'?> | <author initials="Y." surname="Rekhter" fullname="Y. Rekhter"> | |||
<?rfc include='reference.RFC.7478.xml'?> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<!-- <?rfc include='reference.I-D.ietf-rtcweb-security-arch'?>; In MISSREF as of | <author initials="B." surname="Moskowitz" fullname="B. Moskowitz"> | |||
7/26/19 --> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<reference anchor='WEBRTC-SECURITY'> | <author initials="D." surname="Karrenberg" fullname="D. Karrenberg"> | |||
<front> | <organization showOnFrontPage="true"/> | |||
<title>WebRTC Security Architecture</title> | </author> | |||
<author initials="G. J." surname="de Groot" fullname="G. J. de Groot | ||||
<author initials='E' surname='Rescorla' fullname='Eric Rescorla'> | "> | |||
<organization /> | <organization showOnFrontPage="true"/> | |||
</author> | </author> | |||
<author initials="E." surname="Lear" fullname="E. Lear"> | ||||
<date month='July' day='22' year='2019' /> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<abstract><t>This document defines the security architecture for WebRTC, a proto | <date year="1996" month="February"/> | |||
col suite intended for use with real-time applications that can be deployed in b | <abstract> | |||
rowsers - "real time communication on the Web".</t></abstract> | <t indent="0">This document describes address allocation for priva | |||
te internets. This document specifies an Internet Best Current Practices for th | ||||
</front> | e Internet Community, and requests discussion and suggestions for improvements.< | |||
/t> | ||||
<seriesInfo name='Work in Progress,' value='draft-ietf-rtcweb-security-arch-20' | </abstract> | |||
/> | </front> | |||
</reference> | <seriesInfo name="BCP" value="5"/> | |||
<seriesInfo name="RFC" value="1918"/> | ||||
<!-- <?rfc include='reference.I-D.ietf-rtcweb-transports'?>; In MISSREF as of 7/ | <seriesInfo name="DOI" value="10.17487/RFC1918"/> | |||
26/19 --> | </reference> | |||
<reference anchor="RFC1919" target="https://www.rfc-editor.org/info/rfc1 | ||||
<reference anchor='WEBRTC-TRANSPORTS'> | 919" quoteTitle="true" derivedAnchor="RFC1919"> | |||
<front> | <front> | |||
<title>Transports for WebRTC</title> | <title>Classical versus Transparent IP Proxies</title> | |||
<author initials="M." surname="Chatel" fullname="M. Chatel"> | ||||
<author initials='H' surname='Alvestrand' fullname='Harald Alvestrand'> | <organization showOnFrontPage="true"/> | |||
<organization /> | </author> | |||
</author> | <date year="1996" month="March"/> | |||
<abstract> | ||||
<date month='October' day='26' year='2016' /> | <t indent="0">This document explains "classical" and "transparent" | |||
proxy techniques and attempts to provide rules to help determine when each prox | ||||
<abstract><t>This document describes the data transport protocols used by WebRTC | y system may be used without causing problems. This memo provides information f | |||
, including the protocols used for interaction with intermediate boxes such as f | or the Internet community. This memo does not specify an Internet standard of a | |||
irewalls, relays and NAT boxes.</t></abstract> | ny kind.</t> | |||
</abstract> | ||||
</front> | </front> | |||
<seriesInfo name="RFC" value="1919"/> | ||||
<seriesInfo name='Work in Progress,' value='draft-ietf-rtcweb-transports-17' /> | <seriesInfo name="DOI" value="10.17487/RFC1919"/> | |||
</reference> | </reference> | |||
<reference anchor="RFC1928" target="https://www.rfc-editor.org/info/rfc1 | ||||
928" quoteTitle="true" derivedAnchor="RFC1928"> | ||||
<front> | ||||
<title>SOCKS Protocol Version 5</title> | ||||
<author initials="M." surname="Leech" fullname="M. Leech"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Ganis" fullname="M. Ganis"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="Y." surname="Lee" fullname="Y. Lee"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Kuris" fullname="R. Kuris"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Koblas" fullname="D. Koblas"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="L." surname="Jones" fullname="L. Jones"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1996" month="March"/> | ||||
<abstract> | ||||
<t indent="0">This memo describes a protocol that is an evolution | ||||
of the previous version of the protocol, version 4 [1]. This new protocol stems | ||||
from active discussions and prototype implementations. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="1928"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC1928"/> | ||||
</reference> | ||||
<reference anchor="RFC4941" target="https://www.rfc-editor.org/info/rfc4 | ||||
941" quoteTitle="true" derivedAnchor="RFC4941"> | ||||
<front> | ||||
<title>Privacy Extensions for Stateless Address Autoconfiguration in | ||||
IPv6</title> | ||||
<author initials="T." surname="Narten" fullname="T. Narten"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Draves" fullname="R. Draves"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Krishnan" fullname="S. Krishnan"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="September"/> | ||||
<abstract> | ||||
<t indent="0">Nodes use IPv6 stateless address autoconfiguration t | ||||
o generate addresses using a combination of locally available information and in | ||||
formation advertised by routers. Addresses are formed by combining network pref | ||||
ixes with an interface identifier. On an interface that contains an embedded IE | ||||
EE Identifier, the interface identifier is typically derived from it. On other | ||||
interface types, the interface identifier is generated through other means, for | ||||
example, via random number generation. This document describes an extension to | ||||
IPv6 stateless address autoconfiguration for interfaces whose interface identifi | ||||
er is derived from an IEEE identifier. Use of the extension causes nodes to gen | ||||
erate global scope addresses from interface identifiers that change over time, e | ||||
ven in cases where the interface contains an embedded IEEE identifier. Changing | ||||
the interface identifier (and the global scope addresses generated from it) ove | ||||
r time makes it more difficult for eavesdroppers and other information collector | ||||
s to identify when different addresses used in different transactions actually c | ||||
orrespond to the same node. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4941"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4941"/> | ||||
</reference> | ||||
<reference anchor="RFC6146" target="https://www.rfc-editor.org/info/rfc6 | ||||
146" quoteTitle="true" derivedAnchor="RFC6146"> | ||||
<front> | ||||
<title>Stateful NAT64: Network Address and Protocol Translation from | ||||
IPv6 Clients to IPv4 Servers</title> | ||||
<author initials="M." surname="Bagnulo" fullname="M. Bagnulo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Matthews" fullname="P. Matthews"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="I." surname="van Beijnum" fullname="I. van Beijnum | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2011" month="April"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6146"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6146"/> | ||||
</reference> | ||||
<reference anchor="RFC7016" target="https://www.rfc-editor.org/info/rfc7 | ||||
016" quoteTitle="true" derivedAnchor="RFC7016"> | ||||
<front> | ||||
<title>Adobe's Secure Real-Time Media Flow Protocol</title> | ||||
<author initials="M." surname="Thornburgh" fullname="M. Thornburgh"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2013" month="November"/> | ||||
<abstract> | ||||
<t indent="0">This memo describes Adobe's Secure Real-Time Media F | ||||
low Protocol (RTMFP), an endpoint-to-endpoint communication protocol designed to | ||||
securely transport parallel flows of real-time video, audio, and data messages, | ||||
as well as bulk data, over IP networks. RTMFP has features that make it effect | ||||
ive for peer-to-peer (P2P) as well as client-server communications, even when Ne | ||||
twork Address Translators (NATs) are used.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7016"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7016"/> | ||||
</reference> | ||||
<reference anchor="RFC7230" target="https://www.rfc-editor.org/info/rfc7 | ||||
230" quoteTitle="true" derivedAnchor="RFC7230"> | ||||
<front> | ||||
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Ro | ||||
uting</title> | ||||
<author initials="R." surname="Fielding" fullname="R. Fielding" role | ||||
="editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Reschke" fullname="J. Reschke" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2014" month="June"/> | ||||
<abstract> | ||||
<t indent="0">The Hypertext Transfer Protocol (HTTP) is a stateles | ||||
s application-level protocol for distributed, collaborative, hypertext informati | ||||
on systems. This document provides an overview of HTTP architecture and its ass | ||||
ociated terminology, defines the "http" and "https" Uniform Resource Identifier | ||||
(URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and | ||||
describes related security concerns for implementations.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7230"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7230"/> | ||||
</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="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="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> | ||||
</references> | </references> | |||
<section title="Change log"> | </references> | |||
<t>Changes in draft -12: | <section numbered="false" toc="include" removeInRFC="false" pn="section-appe | |||
<list style="symbols"> | ndix.a"> | |||
<name slugifiedName="name-acknowledgements">Acknowledgements</name> | ||||
<t>Editorial updates from IETF LC review.</t> | <t indent="0" pn="section-appendix.a-1">Several people provided input into | |||
</list></t> | this document, including <contact fullname="Bernard Aboba"/>, <contact fu | |||
llname="Harald Alvestrand"/>, <contact fullname="Youenn Fablet"/>, <contac | ||||
<t>Changes in draft -11: | t fullname="Ted Hardie"/>, <contact fullname="Matthew Kaufmann"/>, | |||
<list style="symbols"> | <contact fullname="Eric Rescorla"/>, <contact fullname="Adam Roach"/>, and | |||
<contact fullname="Martin Thomson"/>.</t> | ||||
<t>Editorial updates from AD review.</t> | </section> | |||
</list></t> | <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | |||
="include" pn="section-appendix.b"> | ||||
<t>Changes in draft -10: | <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | |||
<list style="symbols"> | <author fullname="Justin Uberti" initials="J." surname="Uberti"> | |||
<organization showOnFrontPage="true">Google</organization> | ||||
<t>Incorporate feedback from IETF 102 on the problem space.</t> | <address> | |||
<postal> | ||||
<t>Note that future versions of the document may define new modes.</t> | <street>747 6th St S</street> | |||
</list></t> | <city>Kirkland</city> | |||
<region>WA</region> | ||||
<t>Changes in draft -09: | <code>98033</code> | |||
<list style="symbols"> | <country>United States of America</country> | |||
</postal> | ||||
<t>Fixed confusing text regarding enterprise TURN servers.</t> | <email>justin@uberti.name</email> | |||
</list></t> | </address> | |||
</author> | ||||
<t>Changes in draft -08: | <author fullname="Guo-wei Shieh" initials="G." surname="Shieh"> | |||
<list style="symbols"> | <organization showOnFrontPage="true"/> | |||
<address> | ||||
<t>Discuss how enterprise TURN servers should be handled.</t> | <postal> | |||
</list></t> | <street>333 Elliott Ave W #500</street> | |||
<city>Seattle</city> | ||||
<t>Changes in draft -07: | <region>WA</region> | |||
<list style="symbols"> | <code>98119</code> | |||
<country>United States of America</country> | ||||
<t>Clarify consent guidance.</t> | </postal> | |||
</list></t> | <email>guoweis@gmail.com</email> | |||
</address> | ||||
<t>Changes in draft -06: | </author> | |||
<list style="symbols"> | ||||
<t>Clarify recommendations.</t> | ||||
<t>Split implementation guidance into two sections.</t> | ||||
</list></t> | ||||
<t>Changes in draft -05: | ||||
<list style="symbols"> | ||||
<t>Separated framework definition from implementation techniques.</t> | ||||
<t>Removed RETURN references.</t> | ||||
<t>Use origin when determining local IPs, rather than a well-known | ||||
IP.</t> | ||||
</list></t> | ||||
<t>Changes in draft -04: | ||||
<list style="symbols"> | ||||
<t>Rewording and cleanup in abstract, intro, and problem statement.</t> | ||||
<t>Added 2119 boilerplate.</t> | ||||
<t>Fixed weird reference spacing.</t> | ||||
<t>Expanded acronyms on first use.</t> | ||||
<t>Removed 8.8.8.8 mention.</t> | ||||
<t>Removed mention of future browser considerations.</t> | ||||
</list></t> | ||||
<t>Changes in draft -03: | ||||
<list style="symbols"> | ||||
<t>Clarified when to use which modes.</t> | ||||
<t>Added 2119 qualifiers to make normative statements.</t> | ||||
<t>Defined 'proxy'.</t> | ||||
<t>Mentioned split tunnels in problem statement.</t> | ||||
</list></t> | ||||
<t>Changes in draft -02: | ||||
<list style="symbols"> | ||||
<t>Recommendations -> Requirements</t> | ||||
<t>Updated text regarding consent.</t> | ||||
</list></t> | ||||
<t>Changes in draft -01: | ||||
<list style="symbols"> | ||||
<t>Incorporated feedback from Adam Roach; changes to discussion of | ||||
cam/mic permission, as well as use of proxies, and various editorial | ||||
changes.</t> | ||||
<t>Added several more references.</t> | ||||
</list></t> | ||||
<t>Changes in draft -00: | ||||
<list style="symbols"> | ||||
<t>Published as WG draft.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 71 change blocks. | ||||
384 lines changed or deleted | 905 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/ |