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