| rfc9250xml2.original.xml | rfc9250.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="us-ascii"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <!DOCTYPE rfc [ | |||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.11 --> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | ||||
| ]> | ]> | |||
| <?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| <?rfc sortrefs="yes"?> | -ietf-dprive-dnsoquic-11" category="std" obsoletes="" number="9250" updates="" s | |||
| <?rfc symrefs="yes"?> | ubmissionType="IETF" xml:lang="en" consensus="true" tocInclude="true" sortRefs=" | |||
| <?rfc comments="yes"?> | true" symRefs="true" version="3"> | |||
| <rfc ipr="trust200902" docName="draft-ietf-dprive-dnsoquic-12" category="std"> | ||||
| <front> | <front> | |||
| <title abbrev="DNS over Dedicated QUIC">DNS over Dedicated QUIC Connections< /title> | <title abbrev="DNS over Dedicated QUIC">DNS over Dedicated QUIC Connections< /title> | |||
| <seriesInfo name="RFC" value="9250"/> | ||||
| <author initials="C." surname="Huitema" fullname="Christian Huitema"> | <author initials="C" surname="Huitema" fullname="Christian Huitema"> | |||
| <organization>Private Octopus Inc.</organization> | <organization>Private Octopus Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>427 Golfcourse Rd</street> | <street>427 Golfcourse Rd</street> | |||
| <city>Friday Harbor</city> | <city>Friday Harbor</city> | |||
| <code>WA 98250</code> | <code>WA 98250</code> | |||
| <country>USA</country> | <country>USA</country> | |||
| </postal> | </postal> | |||
| <email>huitema@huitema.net</email> | <email>huitema@huitema.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="S." surname="Dickinson" fullname="Sara Dickinson"> | <author initials="S." surname="Dickinson" fullname="Sara Dickinson"> | |||
| <organization>Sinodun IT</organization> | <organization>Sinodun IT</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Oxford Science Park</street> | <street>Oxford Science Park</street> | |||
| <city>Oxford</city> | <city>Oxford</city> | |||
| <code>OX4 4GA</code> | <code>OX4 4GA</code> | |||
| <country>UK</country> | <country>United Kingdom</country> | |||
| </postal> | </postal> | |||
| <email>sara@sinodun.com</email> | <email>sara@sinodun.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="A." surname="Mankin" fullname="Allison Mankin"> | <author initials="A." surname="Mankin" fullname="Allison Mankin"> | |||
| <organization>Salesforce</organization> | <organization>Salesforce</organization> | |||
| <address> | <address> | |||
| <email>allison.mankin@gmail.com</email> | <email>allison.mankin@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2022" month="May"/> | ||||
| <area>Internet</area> | ||||
| <workgroup>DNS PRIVate Exchange</workgroup> | ||||
| <date year="2022" month="April" day="20"/> | <keyword>DNS</keyword> | |||
| <keyword>QUIC</keyword> | ||||
| <area>Transport</area> | <keyword>DNS over QUIC</keyword> | |||
| <keyword>Encrypted DNS</keyword> | ||||
| <keyword>Internet-Draft</keyword> | <keyword>DoQ</keyword> | |||
| <abstract> | <abstract> | |||
| <t>This document describes the use of QUIC to provide transport confidenti | ||||
| <t>This document describes the use of QUIC to provide transport confidentiality | ality for DNS. | |||
| for DNS. | ||||
| The encryption provided by QUIC has similar properties to those provided by TLS, | The encryption provided by QUIC has similar properties to those provided by TLS, | |||
| while QUIC transport eliminates the head-of-line blocking issues inherent with | while QUIC transport eliminates the head-of-line blocking issues inherent with | |||
| TCP and provides more efficient packet loss recovery than UDP. DNS over QUIC | TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC | |||
| (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in | (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in | |||
| RFC7858, and latency characteristics similar to classic DNS over UDP. This | RFC 7858, and latency characteristics similar to classic DNS over UDP. This | |||
| specification describes the use of DNS over QUIC as a general-purpose transport | specification describes the use of DoQ as a general-purpose transport | |||
| for DNS and includes the use of DNS over QUIC for stub to recursive, | for DNS and includes the use of DoQ for stub to recursive, | |||
| recursive to authoritative, and zone transfer scenarios.</t> | recursive to authoritative, and zone transfer scenarios.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" numbered="true" toc="default"> | ||||
| <section anchor="introduction"><name>Introduction</name> | <name>Introduction</name> | |||
| <t>Domain Name System (DNS) concepts are specified in "Domain names - conc | ||||
| <t>Domain Name System (DNS) concepts are specified in "Domain names - conce | epts and | |||
| pts and | facilities" <xref target="RFC1034" format="default"/>. The transmission of DNS q | |||
| facilities" <xref target="RFC1034"/>. The transmission of DNS queries and r | ueries and responses over | |||
| esponses over | UDP and TCP is specified in "Domain names - implementation and specification" | |||
| UDP and TCP is specified in "Domain names - implementation and specificatio | <xref target="RFC1035" format="default"/>.</t> | |||
| n" | <t>This document presents a mapping of the DNS protocol over the | |||
| <xref target="RFC1035"/>.</t> | QUIC transport <xref target="RFC9000" format="default"/> <xref target="RFC9001" | |||
| format="default"/>. DNS over QUIC is referred to here as DoQ, | ||||
| <t>This document presents a mapping of the DNS protocol over the | in line with "DNS Terminology" <xref target="I-D.ietf-dnsop-rfc8499bis" format=" | |||
| QUIC transport <xref target="RFC9000"/> <xref target="RFC9001"/>. DNS over QUIC | default"/>.</t> | |||
| is referred to here as DoQ, | <t>The goals of the DoQ mapping are:</t> | |||
| in line with "DNS Terminology" <xref target="I-D.ietf-dnsop-rfc8499bis | <ol spacing="normal" type="1"><li>Provide the same DNS privacy protection | |||
| "/>.</t> | as DoT | |||
| <xref target="RFC7858" format="default"/>. This includes an option for the clien | ||||
| <t>The goals of the DoQ mapping are:</t> | t to | |||
| <t><list style="numbers"> | ||||
| <t>Provide the same DNS privacy protection as DNS over TLS (DoT) | ||||
| <xref target="RFC7858"/>. This includes an option for the client to | ||||
| authenticate the server by means of an authentication domain | authenticate the server by means of an authentication domain | |||
| name as specified in "Usage Profiles for DNS over TLS and DNS | name as specified in "Usage Profiles for DNS over TLS and DNS | |||
| over DTLS" <xref target="RFC8310"/>.</t> | over DTLS" <xref target="RFC8310" format="default"/>.</li> | |||
| <t>Provide an improved level of source address validation for DNS | <li>Provide an improved level of source address validation for DNS | |||
| servers compared to classic DNS over UDP.</t> | servers compared to classic DNS over UDP.</li> | |||
| <t>Provide a transport that does not impose path MTU limitations on the | <li>Provide a transport that does not impose path MTU limitations on the | |||
| size of DNS responses it can send.</t> | size of DNS responses it can send.</li> | |||
| </list></t> | </ol> | |||
| <t>In order to achieve these goals, and to support ongoing work on encrypt | ||||
| <t>In order to achieve these goals, and to support ongoing work on encryption of | ion of | |||
| DNS, the scope of this document includes</t> | DNS, the scope of this document includes:</t> | |||
| <t><list style="symbols"> | ||||
| <t>the "stub to recursive resolver" scenario</t> | ||||
| <t>the "recursive resolver to authoritative nameserver" scenario and | ||||
| </t> | ||||
| <t>the "nameserver to nameserver" scenario (mainly used for zone tra | ||||
| nsfers (XFR) <xref target="RFC1995"/>, <xref target="RFC5936"/>).</t> | ||||
| </list></t> | ||||
| <t>In other words, this document specifies QUIC as a general-purpose | <ul spacing="normal"> | |||
| <li>the "stub to recursive resolver" scenario (also called the "stub to | ||||
| recursive" scenario in this document)</li> | ||||
| <li>the "recursive resolver to authoritative nameserver" scenario (also | ||||
| called the “recursive to authoritative” scenario in this document), and</li> | ||||
| <li>the "nameserver to nameserver" scenario (mainly used for zone transf | ||||
| ers (XFR) <xref target="RFC1995" format="default"/> <xref target="RFC5936" forma | ||||
| t="default"/>).</li> | ||||
| </ul> | ||||
| <t>In other words, this document specifies QUIC as a general-purpose | ||||
| transport for DNS.</t> | transport for DNS.</t> | |||
| <t>The specific non-goals of this document are:</t> | ||||
| <t>The specific non-goals of this document are:</t> | <ol spacing="normal" type="1"><li>No attempt is made to evade potential bl | |||
| ocking of DoQ | ||||
| <t><list style="numbers"> | traffic by middleboxes.</li> | |||
| <t>No attempt is made to evade potential blocking of DNS over QUIC | <li>No attempt to support server-initiated transactions, which are used | |||
| traffic by middleboxes.</t> | only in | |||
| <t>No attempt to support server-initiated transactions, which are used only in | DNS Stateful Operations (DSO) <xref target="RFC8490" format="default"/>.</li> | |||
| DNS Stateful Operations (DSO) <xref target="RFC8490"/>.</t> | </ol> | |||
| </list></t> | <t>Specifying the transmission of an application over QUIC requires specif | |||
| ying how | ||||
| <t>Specifying the transmission of an application over QUIC requires specifying h | the application's messages are mapped to QUIC streams, and generally how the | |||
| ow | application will use QUIC. This is done for HTTP in "Hypertext Transfer | |||
| the application's messages are mapped to QUIC streams, and generally how the | Protocol Version 3 (HTTP/3)" <xref target="I-D.ietf-quic-http" format="default"/ | |||
| application will use QUIC. This is done for HTTP in "Hypertext Transfer | >. The purpose of this | |||
| Protocol Version 3 (HTTP/3)"<xref target="I-D.ietf-quic-http"/>. The purpos | ||||
| e of this | ||||
| document is to define the way DNS messages can be transmitted over QUIC.</t> | document is to define the way DNS messages can be transmitted over QUIC.</t> | |||
| <t>DNS over HTTP <xref target="RFC8484"/> can be used with HTTP/3 to get some of | <t>DNS over HTTPS (DoH) <xref target="RFC8484" format="default"/> can be used wi | |||
| the | th HTTP/3 to get some of the | |||
| benefits of QUIC. However, a lightweight direct mapping for DNS over QUIC can | benefits of QUIC. However, a lightweight direct mapping for DoQ can | |||
| be regarded as a more natural fit for both the recursive to authoritative and | be regarded as a more natural fit for both the recursive to authoritative and | |||
| zone transfer scenarios which rarely involve intermediaries. In these | zone transfer scenarios, which rarely involve intermediaries. In these | |||
| scenarios, the additional overhead of HTTP is not offset by, e.g., benefits of | scenarios, the additional overhead of HTTP is not offset by, for example, benefi | |||
| ts of | ||||
| HTTP proxying and caching behavior.</t> | HTTP proxying and caching behavior.</t> | |||
| <t>In this document, <xref target="design-considerations" format="default" | ||||
| /> presents the reasoning that guided | ||||
| the proposed design. <xref target="specifications" format="default"/> specifies | ||||
| the actual mapping of DoQ. | ||||
| <xref target="implementation-requirements" format="default"/> presents guideline | ||||
| s on the implementation, | ||||
| usage, and deployment of DoQ.</t> | ||||
| </section> | ||||
| <section anchor="key-words" numbered="true" toc="default"> | ||||
| <name>Key Words</name> | ||||
| <t>In this document, <xref target="design-considerations"/> presents the reasoni | <t> | |||
| ng that guided | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| the proposed design. <xref target="specifications"/> specifies the actual mappin | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| g of DoQ. | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| <xref target="implementation-requirements"/> presents guidelines on the implemen | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| tation, | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| usage and deployment of DoQ.</t> | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
| <xref target="RFC8174"/> when, and only when, they appear in all capitals, | ||||
| </section> | as shown here. | |||
| <section anchor="key-words"><name>Key Words</name> | </t> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", & | ||||
| quot;SHALL", "SHALL | ||||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", | ||||
| "NOT RECOMMENDED", | ||||
| "MAY", and "OPTIONAL" in this document are to be interpreted | ||||
| as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | ||||
| only when, they | ||||
| appear in all capitals, as shown here.</t> | ||||
| </section> | ||||
| <section anchor="document-work-via-github"><name>Document work via GitHub</name> | ||||
| <t>(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION)The GitHub | ||||
| repository for this document is at https://github.com/huitema/dnsoquic. | ||||
| Proposed text and editorial changes are very much welcomed there, but any | ||||
| functional changes should always first be discussed on the IETF DPRIVE WG | ||||
| (dns-privacy) mailing list.</t> | ||||
| </section> | </section> | |||
| <section anchor="design-considerations"><name>Design Considerations</name> | ||||
| <t>This section and its subsections present the design guidelines that were used | <section anchor="design-considerations" numbered="true" toc="default"> | |||
| for DoQ. Whilst all other sections in this document are normative, this section | <name>Design Considerations</name> | |||
| <t>This section and its subsections present the design guidelines that wer | ||||
| e used | ||||
| for DoQ. While all other sections in this document are normative, this section | ||||
| is informative in nature.</t> | is informative in nature.</t> | |||
| <section anchor="provide-dns-privacy" numbered="true" toc="default"> | ||||
| <section anchor="provide-dns-privacy"><name>Provide DNS Privacy</name> | <name>Provide DNS Privacy</name> | |||
| <t>DoT <xref target="RFC7858" format="default"/> defines how to mitigate | ||||
| <t>DoT <xref target="RFC7858"/> defines how to mitigate some of the issues descr | some of the issues described in "DNS | |||
| ibed in "DNS | Privacy Considerations" <xref target="RFC9076" format="default"/> by specifying | |||
| Privacy Considerations" <xref target="RFC9076"/> by specifying how to trans | how to transmit DNS messages | |||
| mit DNS messages | over TLS. The "Usage Profiles for DNS over TLS and DNS over DTLS" <xref target=" | |||
| over TLS. The "Usage Profiles for DNS over TLS and DNS over DTLS" <xre | RFC8310" format="default"/> | |||
| f target="RFC8310"/> | specify Strict and Opportunistic usage profiles for DoT including how stub | |||
| specify Strict and Opportunistic Usage Profiles for DoT including how stub | ||||
| resolvers can authenticate recursive resolvers.</t> | resolvers can authenticate recursive resolvers.</t> | |||
| <t>QUIC connection setup includes the negotiation of security parameters using | <t>QUIC connection setup includes the negotiation of security parameters using | |||
| TLS, as specified in "Using TLS to Secure QUIC" <xref target="RFC9001" />, | TLS, as specified in "Using TLS to Secure QUIC" <xref target="RFC9001" format="d efault"/>, | |||
| enabling encryption of the QUIC transport. Transmitting DNS messages over QUIC | enabling encryption of the QUIC transport. Transmitting DNS messages over QUIC | |||
| will provide essentially the same privacy protections as DoT <xref target="RFC78 | will provide essentially the same privacy protections as DoT <xref target="RFC78 | |||
| 58"/> | 58" format="default"/> | |||
| including Strict and Opportunistic Usage Profiles <xref target="RFC8310"/>. Furt | including Strict and Opportunistic usage profiles <xref target="RFC8310" format= | |||
| her | "default"/>. Further | |||
| discussion on this is provided in <xref target="privacy-considerations"/>.</t> | discussion on this is provided in <xref target="privacy-considerations" format=" | |||
| default"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="design-for-minimum-latency"><name>Design for Minimum Latency</n | <section anchor="design-for-minimum-latency" numbered="true" toc="default" | |||
| ame> | > | |||
| <name>Design for Minimum Latency</name> | ||||
| <t>QUIC is specifically designed to reduce protocol-induced delays, with feature | <t>QUIC is specifically designed to reduce protocol-induced delays, with | |||
| s | features | |||
| such as:</t> | such as:</t> | |||
| <ol spacing="normal" type="1"><li>Support for 0-RTT data during session | ||||
| <t><list style="numbers"> | resumption.</li> | |||
| <t>Support for 0-RTT data during session resumption.</t> | <li>Support for advanced packet-loss recovery procedures as specified | |||
| <t>Support for advanced packet loss recovery procedures as specified in | in | |||
| "QUIC Loss Detection and Congestion Control" <xref target="RFC9002"/>. | "QUIC Loss Detection and Congestion Control" <xref target="RFC9002" format="defa | |||
| </t> | ult"/>.</li> | |||
| <t>Mitigation of head-of-line blocking by allowing parallel | <li>Mitigation of head-of-line blocking by allowing parallel | |||
| delivery of data on multiple streams.</t> | delivery of data on multiple streams.</li> | |||
| </list></t> | </ol> | |||
| <t>This mapping of DNS to QUIC will take advantage of these features in | ||||
| <t>This mapping of DNS to QUIC will take advantage of these features in | ||||
| three ways:</t> | three ways:</t> | |||
| <ol spacing="normal" type="1"><li>Optional support for sending 0-RTT dat | ||||
| <t><list style="numbers"> | a during session resumption | |||
| <t>Optional support for sending 0-RTT data during session resumption | ||||
| (the security and privacy implications of this are discussed | (the security and privacy implications of this are discussed | |||
| in later sections).</t> | in later sections).</li> | |||
| <t>Long-lived QUIC connections over which multiple DNS transactions | <li>Long-lived QUIC connections over which multiple DNS transactions | |||
| are performed, | are performed, | |||
| generating the sustained traffic required to benefit from | generating the sustained traffic required to benefit from | |||
| advanced recovery features.</t> | advanced recovery features.</li> | |||
| <t>Mapping of each DNS Query/Response transaction to a separate stream, | <li>Mapping of each DNS Query/Response transaction to a separate strea | |||
| m, | ||||
| to mitigate head-of-line blocking. This enables servers to respond | to mitigate head-of-line blocking. This enables servers to respond | |||
| to queries "out of order". It also enables clients to process | to queries "out of order". It also enables clients to process | |||
| responses as soon as they arrive, without having to wait for in | responses as soon as they arrive, without having to wait for in-order delivery o | |||
| order delivery of responses previously posted by the server.</t> | f responses previously posted by the server.</li> | |||
| </list></t> | </ol> | |||
| <t>These considerations are reflected in the mapping of DNS traffic | ||||
| <t>These considerations are reflected in the mapping of DNS traffic | to QUIC streams in <xref target="stream-mapping-and-usage" format="default"/>.</ | |||
| to QUIC streams in <xref target="stream-mapping-and-usage"/>.</t> | t> | |||
| </section> | ||||
| </section> | <section anchor="middlebox-considerations" numbered="true" toc="default"> | |||
| <section anchor="middlebox-considerations"><name>Middlebox Considerations</name> | <name>Middlebox Considerations</name> | |||
| <t>Using QUIC might allow a protocol to disguise its purpose from device | ||||
| <t>Using QUIC might allow a protocol to disguise its purpose from devices on the | s on the | |||
| network path using encryption and traffic analysis resistance techniques like | network path using encryption and traffic analysis resistance techniques like | |||
| padding, traffic pacing, and traffic shaping. This specification does not | padding, traffic pacing, and traffic shaping. This specification does not | |||
| include any measures that are designed to avoid such classification -- | include any measures that are designed to avoid such classification; | |||
| the padding mechanisms defined in <xref target="padding"/> are intended to obfus | the padding mechanisms defined in <xref target="padding" format="default"/> are | |||
| cate the specific | intended to obfuscate the specific | |||
| records contained in DNS queries and responses, but not the fact that this is DN S traffic. | records contained in DNS queries and responses, but not the fact that this is DN S traffic. | |||
| Consequently, firewalls and other middleboxes might | Consequently, firewalls and other middleboxes might | |||
| be able to distinguish DoQ from other protocols that use QUIC, like HTTP, and | be able to distinguish DoQ from other protocols that use QUIC, like HTTP, and | |||
| apply different treatment.</t> | apply different treatment.</t> | |||
| <t>The lack of measures in this specification to avoid protocol classifi | ||||
| <t>The lack of measures in this specification to avoid protocol classification i | cation is | |||
| s | ||||
| not an endorsement of such practices.</t> | not an endorsement of such practices.</t> | |||
| </section> | ||||
| </section> | <section anchor="no-server-initiated-transactions" numbered="true" toc="de | |||
| <section anchor="no-server-initiated-transactions"><name>No Server-Initiated Tra | fault"> | |||
| nsactions</name> | <name>No Server-Initiated Transactions</name> | |||
| <t>As stated in <xref target="introduction" format="default"/>, this doc | ||||
| <t>As stated in <xref target="introduction"/>, this document does not specify su | ument does not specify support for | |||
| pport for | ||||
| server-initiated transactions within established DoQ connections. That is, only | server-initiated transactions within established DoQ connections. That is, only | |||
| the initiator of the DoQ connection may send queries over the connection.</t> | the initiator of the DoQ connection may send queries over the connection.</t> | |||
| <t>DSO does support server-initiated transactions within existing connec | ||||
| <t>DSO does support server-initiated transactions within existing connections. | tions. | |||
| However, DoQ as defined here does not meet the criteria for an applicable | However, DoQ as defined here does not meet the criteria for an applicable | |||
| transport for DSO because it does not guarantee in-order delivery of messages, | transport for DSO because it does not guarantee in-order delivery of messages; | |||
| see <xref section="4.2" sectionFormat="of" target="RFC8490"/>.</t> | see <xref section="4.2" sectionFormat="of" target="RFC8490" format="default"/>.< | |||
| /t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="specifications"><name>Specifications</name> | <section anchor="specifications" numbered="true" toc="default"> | |||
| <name>Specifications</name> | ||||
| <section anchor="connection-establishment"><name>Connection Establishment</name> | <section anchor="connection-establishment" numbered="true" toc="default"> | |||
| <name>Connection Establishment</name> | ||||
| <t>DoQ connections are established as described in the QUIC transport | <t>DoQ connections are established as described in the QUIC transport | |||
| specification <xref target="RFC9000"/>. During connection establishment, DoQ sup | specification <xref target="RFC9000" format="default"/>. During connection estab | |||
| port is | lishment, DoQ support is | |||
| indicated by selecting the Application-Layer Protocol Negotiation (ALPN) token & | indicated by selecting the Application-Layer Protocol Negotiation (ALPN) token " | |||
| quot;doq" in the crypto handshake.</t> | doq" in the crypto handshake.</t> | |||
| <section anchor="draft-version-identification"><name>Draft Version Identificatio | ||||
| n</name> | ||||
| <t>(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION) Only | ||||
| implementations of the final, published RFC can identify themselves as "doq | ||||
| ". | ||||
| Until such an RFC exists, implementations MUST NOT identify themselves using | ||||
| this string.</t> | ||||
| <t>Implementations of draft versions of the protocol MUST add the string "- | ||||
| " and | ||||
| the corresponding draft number to the identifier. For example, | ||||
| draft-ietf-dprive-dnsoquic-00 is identified using the string "doq-i00" | ||||
| .</t> | ||||
| </section> | ||||
| <section anchor="port-selection"><name>Port Selection</name> | ||||
| <t>By default, a DNS server that supports DoQ MUST listen for and accept QUIC | <section anchor="port-selection" numbered="true" toc="default"> | |||
| connections on the dedicated UDP port TBD (number to be defined in | <name>Port Selection</name> | |||
| <xref target="iana-considerations"/>), unless there is a mutual agreement to | <t>By default, a DNS server that supports DoQ <bcp14>MUST</bcp14> list | |||
| en for and accept QUIC | ||||
| connections on the dedicated UDP port 853 (<xref target="iana-considerations" fo | ||||
| rmat="default"/>), unless there is a mutual agreement to | ||||
| use another port.</t> | use another port.</t> | |||
| <t>By default, a DNS client desiring to use DoQ with a particular serv | ||||
| <t>By default, a DNS client desiring to use DoQ with a particular server MUST | er <bcp14>MUST</bcp14> | |||
| establish a QUIC connection to UDP port TBD on the server, unless there is a | establish a QUIC connection to UDP port 853 on the server, unless there is a | |||
| mutual agreement to use another port.</t> | mutual agreement to use another port.</t> | |||
| <t>DoQ connections <bcp14>MUST NOT</bcp14> use UDP port 53. This recom | ||||
| <t>DoQ connections MUST NOT use UDP port 53. This recommendation against use of | mendation against use of | |||
| port 53 for DoQ is to avoid confusion between DoQ and the use of DNS over UDP | port 53 for DoQ is to avoid confusion between DoQ and the use of DNS over UDP | |||
| <xref target="RFC1035"/>. The risk of confusion exists even if two parties agree d on | <xref target="RFC1035" format="default"/>. The risk of confusion exists even if two parties agreed on | |||
| port 53, as other parties without knowledge of that agreement might still | port 53, as other parties without knowledge of that agreement might still | |||
| try to use that port.</t> | try to use that port.</t> | |||
| <t>In the stub to recursive scenario, the use of port 443 as a mutually agreed | <t>In the stub to recursive scenario, the use of port 443 as a mutually agreed | |||
| alternative port can be operationally beneficial, since port 443 is | alternative port can be operationally beneficial, since port 443 is | |||
| used by many services using QUIC and HTTP-3 and thus less likely | used by many services using QUIC and HTTP-3 and is thus less likely | |||
| to be blocked than other ports. Several mechanisms for stubs to discover | to be blocked than other ports. Several mechanisms for stubs to discover | |||
| recursives offering encrypted transports, including the use of custom ports, are | recursives offering encrypted transports, including the use of custom ports, are | |||
| the subject of ongoing work.</t> | the subject of ongoing work.</t> | |||
| </section> | ||||
| </section> | ||||
| </section> | <section anchor="stream-mapping-and-usage" numbered="true" toc="default"> | |||
| </section> | <name>Stream Mapping and Usage</name> | |||
| <section anchor="stream-mapping-and-usage"><name>Stream Mapping and Usage</name> | <t>The mapping of DNS traffic over QUIC streams takes advantage of the Q | |||
| UIC stream | ||||
| <t>The mapping of DNS traffic over QUIC streams takes advantage of the QUIC stre | features detailed in <xref section="2" sectionFormat="of" target="RFC9000" forma | |||
| am | t="default"/>, the QUIC transport specification.</t> | |||
| features detailed in <xref section="2" sectionFormat="of" target="RFC9000"/>, th | <t>DNS query/response traffic <xref target="RFC1034" format="default"/> | |||
| e QUIC transport specification.</t> | <xref target="RFC1035" format="default"/> | |||
| <t>DNS query/response traffic <xref target="RFC1034"/>, <xref target="RFC1035"/> | ||||
| follows a simple pattern in which the client sends a query, and the | follows a simple pattern in which the client sends a query, and the | |||
| server provides one or more responses (multiple responses can occur in zone | server provides one or more responses (multiple responses can occur in zone | |||
| transfers).</t> | transfers).</t> | |||
| <t>The mapping specified here requires that the client select a separate | ||||
| <t>The mapping specified here requires that the client selects a separate QUIC | QUIC | |||
| stream for each query. The server then uses the same stream to provide all the | stream for each query. The server then uses the same stream to provide all the | |||
| response messages for that query. In order that multiple responses can be | response messages for that query. In order for multiple responses to be | |||
| parsed, a 2-octet length field is used in exactly the same way as the 2-octet | parsed, a 2-octet length field is used in exactly the same way as the 2-octet | |||
| length field defined for DNS over TCP <xref target="RFC1035"/>. The practical re sult of this | length field defined for DNS over TCP <xref target="RFC1035" format="default"/>. The practical result of this | |||
| is that the content of each QUIC stream is exactly the same as the content of a | is that the content of each QUIC stream is exactly the same as the content of a | |||
| TCP connection that would manage exactly one query.</t> | TCP connection that would manage exactly one query.</t> | |||
| <t>All DNS messages (queries and responses) sent over DoQ connections <b | ||||
| <t>All DNS messages (queries and responses) sent over DoQ connections MUST be | cp14>MUST</bcp14> be | |||
| encoded as a 2-octet length field followed by the message content as specified | encoded as a 2-octet length field followed by the message content as specified | |||
| in <xref target="RFC1035"/>.</t> | in <xref target="RFC1035" format="default"/>.</t> | |||
| <t>The client <bcp14>MUST</bcp14> select the next available client-initi | ||||
| <t>The client MUST select the next available client-initiated bidirectional stre | ated bidirectional stream | |||
| am | ||||
| for each subsequent query on a QUIC connection, in conformance with the QUIC | for each subsequent query on a QUIC connection, in conformance with the QUIC | |||
| transport specification <xref target="RFC9000"/>. Packet losses and other networ | transport specification <xref target="RFC9000" format="default"/>. Packet losses | |||
| k events might | and other network events might | |||
| cause queries to arrive in a different order. Servers SHOULD process queries | cause queries to arrive in a different order. Servers <bcp14>SHOULD</bcp14> proc | |||
| ess queries | ||||
| as they arrive, as not doing so would cause unnecessary delays.</t> | as they arrive, as not doing so would cause unnecessary delays.</t> | |||
| <t>The client <bcp14>MUST</bcp14> send the DNS query over the selected s | ||||
| <t>The client MUST send the DNS query over the selected stream, and MUST indicat | tream and <bcp14>MUST</bcp14> indicate | |||
| e | ||||
| through the STREAM FIN mechanism that no further data will be sent on that | through the STREAM FIN mechanism that no further data will be sent on that | |||
| stream.</t> | stream.</t> | |||
| <t>The server <bcp14>MUST</bcp14> send the response(s) on the same strea | ||||
| <t>The server MUST send the response(s) on the same stream and MUST indicate, af | m and <bcp14>MUST</bcp14> indicate, after | |||
| ter | ||||
| the last response, through the STREAM FIN mechanism that no further data will be | the last response, through the STREAM FIN mechanism that no further data will be | |||
| sent on that stream.</t> | sent on that stream.</t> | |||
| <t>Therefore, a single DNS transaction consumes a single bidirectional c | ||||
| <t>Therefore, a single DNS transaction consumes a single bidirectional client-in | lient-initiated stream. | |||
| itiated stream. | This means that the client's first query occurs on QUIC stream 0, the second on | |||
| This means that the client's first query occurs on QUIC stream 0, the second | 4, and so on (see <xref section="2.1" sectionFormat="of" target="RFC9000" format | |||
| on | ="default"/>).</t> | |||
| 4, and so on (see <xref section="2.1" sectionFormat="of" target="RFC9000"/>.</t> | <t>Servers <bcp14>MAY</bcp14> defer processing of a query until the STRE | |||
| AM FIN has been indicated | ||||
| <t>Servers MAY defer processing of a query until the STREAM FIN has been indicat | ||||
| ed | ||||
| on the stream selected by the client.</t> | on the stream selected by the client.</t> | |||
| <t>Servers and clients <bcp14>MAY</bcp14> monitor the number | ||||
| of "dangling" streams. These are open streams where the following events have no | ||||
| t | ||||
| occurred after implementation-defined timeouts:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>the expected queries or responses have not been received or,</li> | ||||
| <li>the expected queries or responses have been received but not the S | ||||
| TREAM FIN</li> | ||||
| </ul> | ||||
| <t>Implementations <bcp14>MAY</bcp14> impose a limit on the number of | ||||
| such dangling streams. If limits are encountered, implementations <bcp14> | ||||
| MAY</bcp14> close the connection.</t> | ||||
| <t>Servers and clients MAY monitor the number | <section anchor="dns-message-ids" numbered="true" toc="default"> | |||
| of "dangling" streams. These are open streams where the following even | <name>DNS Message IDs</name> | |||
| ts have not | <t>When sending queries over a QUIC connection, the DNS Message ID <bc | |||
| occurred after implementation defined timeouts:</t> | p14>MUST</bcp14> be set to | |||
| 0. The stream mapping for DoQ allows for unambiguous correlation of queries | ||||
| <t><list style="symbols"> | and responses, so the Message ID field is not required.</t> | |||
| <t>the expected queries or responses have not been received or,</t> | <t>This has implications for proxying DoQ messages to and from other t | |||
| <t>the expected queries or responses have been received but not the STREAM FIN | ransports. | |||
| </t> | ||||
| </list></t> | ||||
| <t>Implementations MAY impose a limit on the number of | ||||
| such dangling streams. If limits are encountered, implementations MAY close the | ||||
| connection.</t> | ||||
| <section anchor="dns-message-ids"><name>DNS Message IDs</name> | ||||
| <t>When sending queries over a QUIC connection, the DNS Message ID MUST be set t | ||||
| o | ||||
| zero. The stream mapping for DoQ allows for unambiguous correlation of queries | ||||
| and responses and so the Message ID field is not required.</t> | ||||
| <t>This has implications for proxying DoQ message to and from other transports. | ||||
| For example, proxies may have to manage the fact that DoQ can support a larger | For example, proxies may have to manage the fact that DoQ can support a larger | |||
| number of outstanding queries on a single connection than e.g., DNS over TCP | number of outstanding queries on a single connection than, for example, DNS over TCP, | |||
| because DoQ is not limited by the Message ID space. This issue already exists fo r DoH, | because DoQ is not limited by the Message ID space. This issue already exists fo r DoH, | |||
| where a Message ID of 0 is recommended.</t> | where a Message ID of 0 is recommended.</t> | |||
| <t>When forwarding a DNS message from DoQ over another transport, a DN | ||||
| <t>When forwarding a DNS message from DoQ over another transport, a DNS Message | S Message ID | |||
| ID | <bcp14>MUST</bcp14> be generated according to the rules of the protocol that is | |||
| MUST be generated according to the rules of the protocol that is in use. When | in use. When | |||
| forwarding a DNS message from another transport over DoQ, the Message ID MUST | forwarding a DNS message from another transport over DoQ, the Message ID <bcp14> | |||
| be set to zero.</t> | MUST</bcp14> | |||
| be set to 0.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="doq-error-codes"><name>DoQ Error Codes</name> | <section anchor="doq-error-codes" numbered="true" toc="default"> | |||
| <name>DoQ Error Codes</name> | ||||
| <t>The following error codes are defined for use when abruptly terminating strea | <t>The following error codes are defined for use when abruptly terminati | |||
| ms, | ng streams, | |||
| and used as application protocol error codes when | for use as application protocol error codes when | |||
| aborting reading of streams, or immediately closing connections:</t> | aborting reading of streams, or for immediately closing connections:</t> | |||
| <dl> | ||||
| <dl> | <dt> | |||
| <dt> | ||||
| DOQ_NO_ERROR (0x0): </dt> | DOQ_NO_ERROR (0x0): </dt> | |||
| <dd> | <dd> | |||
| <t>No error. This is used when the connection or stream needs to be closed, | <t>No error. This is used when the connection or stream needs to be | |||
| but | closed, but | |||
| there is no error to signal.</t> | there is no error to signal.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOQ_INTERNAL_ERROR (0x1): </dt> | DOQ_INTERNAL_ERROR (0x1): </dt> | |||
| <dd> | <dd> | |||
| <t>The DoQ implementation encountered an internal error and is incapable of | <t>The DoQ implementation encountered an internal error and is incap | |||
| able of | ||||
| pursuing the transaction or the connection.</t> | pursuing the transaction or the connection.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOQ_PROTOCOL_ERROR (0x2): </dt> | DOQ_PROTOCOL_ERROR (0x2): </dt> | |||
| <dd> | <dd> | |||
| <t>The DoQ implementation encountered a protocol error and is forcibly abort | <t>The DoQ implementation encountered a protocol error and is forcib | |||
| ing | ly aborting | |||
| the connection.</t> | the connection.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOQ_REQUEST_CANCELLED (0x3): </dt> | DOQ_REQUEST_CANCELLED (0x3): </dt> | |||
| <dd> | <dd> | |||
| <t>A DoQ client uses this to signal that it wants to cancel an | <t>A DoQ client uses this to signal that it wants to cancel an | |||
| outstanding transaction.</t> | outstanding transaction.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOQ_EXCESSIVE_LOAD (0x4): </dt> | DOQ_EXCESSIVE_LOAD (0x4): </dt> | |||
| <dd> | <dd> | |||
| <t>A DoQ implementation uses this to signal when closing a connection due to | <t>A DoQ implementation uses this to signal when closing a connectio | |||
| excessive load.</t> | n due to excessive load.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOQ_UNSPECIFIED_ERROR (0x5): </dt> | DOQ_UNSPECIFIED_ERROR (0x5): </dt> | |||
| <dd> | <dd> | |||
| <t>A DoQ implementation uses this in the absence of a more specific error co | <t>A DoQ implementation uses this in the absence of a more specific | |||
| de.</t> | error code.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOQ_ERROR_RESERVED (0xd098ea5e): </dt> | DOQ_ERROR_RESERVED (0xd098ea5e): </dt> | |||
| <dd> | <dd> | |||
| <t>Alternative error code used for tests.</t> | <t>An alternative error code used for tests.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>See <xref target="iana-error-codes" format="default"/> for details on | ||||
| <t>See <xref target="iana-error-codes"/> for details on registering new error co | registering new error codes.</t> | |||
| des.</t> | <section anchor="transaction-cancellation" numbered="true" toc="default" | |||
| > | ||||
| <section anchor="transaction-cancellation"><name>Transaction Cancellation</name> | <name>Transaction Cancellation</name> | |||
| <t>In QUIC, sending STOP_SENDING requests that a peer cease transmissi | ||||
| <t>In QUIC, sending STOP_SENDING requests that a peer cease transmission on a | on on a | |||
| stream. If a DoQ client wishes to cancel an outstanding request, it MUST issue | stream. If a DoQ client wishes to cancel an outstanding request, it <bcp14>MUST< | |||
| a QUIC STOP_SENDING, and it SHOULD use the error code DOQ_REQUEST_CANCELLED. | /bcp14> issue | |||
| It MAY use a more specific error code registered according to <xref target="iana | a QUIC STOP_SENDING, and it <bcp14>SHOULD</bcp14> use the error code DOQ_REQUEST | |||
| -error-codes"/>. | _CANCELLED. | |||
| It <bcp14>MAY</bcp14> use a more specific error code registered according to <xr | ||||
| ef target="iana-error-codes" format="default"/>. | ||||
| The STOP_SENDING request may be sent at | The STOP_SENDING request may be sent at | |||
| any time but will have no effect if the server response has already been | any time but will have no effect if the server response has already been | |||
| sent, in which case the client will simply discard the incoming response. | sent, in which case the client will simply discard the incoming response. | |||
| The corresponding DNS transaction MUST be abandoned.</t> | The corresponding DNS transaction <bcp14>MUST</bcp14> be abandoned.</t> | |||
| <t>Servers that receive STOP_SENDING act in accordance with <xref sect | ||||
| <t>Servers that receive STOP_SENDING act in accordance with <xref section="3.5" | ion="3.5" sectionFormat="of" target="RFC9000" format="default"/>. | |||
| sectionFormat="of" target="RFC9000"/>. | Servers <bcp14>SHOULD NOT</bcp14> continue processing a DNS transaction if they | |||
| Servers SHOULD NOT continue processing a DNS transaction if they receive a STOP_ | receive a STOP_SENDING.</t> | |||
| SENDING.</t> | <t>Servers <bcp14>MAY</bcp14> impose implementation limits on the tota | |||
| l number or rate of cancellation requests. | ||||
| <t>Servers MAY impose implementation limits on the total number or rate of reque | If limits are encountered, servers <bcp14>MAY</bcp14> close the connection. In t | |||
| st cancellations. | his case, | |||
| If limits are encountered, servers MAY close the connection. In this case, | servers wanting to help client debugging <bcp14>MAY</bcp14> use the error code D | |||
| servers wanting to help client debugging MAY use the error code DOQ_EXCESSIVE_LO | OQ_EXCESSIVE_LOAD. | |||
| AD. | ||||
| There is always a trade-off between helping good faith clients debug issues | There is always a trade-off between helping good faith clients debug issues | |||
| and allowing denial-of-service attackers to test server defenses, so depending | and allowing denial-of-service attackers to test server defenses; depending | |||
| on circumstances servers might very well choose to send different error codes.</ t> | on circumstances servers might very well choose to send different error codes.</ t> | |||
| <t>Note that this mechanism provides a way for secondaries to cancel a | ||||
| <t>Note that this mechanism provides a way for secondaries to cancel a single zo | single zone | |||
| ne | ||||
| transfer occurring on a given stream without having to close the QUIC | transfer occurring on a given stream without having to close the QUIC | |||
| connection.</t> | connection.</t> | |||
| <t>Servers <bcp14>MUST NOT</bcp14> continue processing a DNS transacti | ||||
| on if they receive a RESET_STREAM | ||||
| request from the client before the client indicates the STREAM FIN. The server < | ||||
| bcp14>MUST</bcp14> | ||||
| issue a RESET_STREAM to indicate that the transaction is abandoned unless:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>it has already done so for another reason or</li> | ||||
| <li>it has already both sent the response and indicated the STREAM F | ||||
| IN.</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="transaction-errors" numbered="true" toc="default"> | ||||
| <name>Transaction Errors</name> | ||||
| <t>Servers normally complete transactions by sending a DNS response (o | ||||
| r responses) | ||||
| on the transaction's stream, including cases where the DNS response indicates a | ||||
| DNS error. | ||||
| <t>Servers MUST NOT continue processing a DNS transaction if they receive a RESE | For example, a client <bcp14>SHOULD</bcp14> be notified of a Server Failure | |||
| T_STREAM | (SERVFAIL, <xref target="RFC1035"/>) through a response with the Response Code s | |||
| request from the client before the client indicates the STREAM FIN. The server M | et to | |||
| UST | SERVFAIL. | |||
| issue a RESET_STREAM to indicate that the transaction is abandoned unless</t> | ||||
| <t><list style="symbols"> | ||||
| <t>it has already done so for another reason or</t> | ||||
| <t>it has already both sent the response and indicated the STREAM FIN.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="transaction-errors"><name>Transaction Errors</name> | ||||
| <t>Servers normally complete transactions by sending a DNS response (or response | ||||
| s) | ||||
| on the transaction's stream, including cases where the DNS response indicate | ||||
| s a | ||||
| DNS error. For example, a Server Failure (SERVFAIL, <xref target="RFC1035"/>) SH | ||||
| OULD be | ||||
| notified to the client by sending back a response with the Response Code set to | ||||
| SERVFAIL.</t> | ||||
| <t>If a server is incapable of sending a DNS response due to an internal error, | </t> | |||
| it | <t>If a server is incapable of sending a DNS response due to an intern | |||
| SHOULD issue a QUIC RESET_STREAM frame. The error code SHOULD be set to DOQ_INTE | al error, it | |||
| RNAL_ERROR. The | <bcp14>SHOULD</bcp14> issue a QUIC RESET_STREAM frame. The error code <bcp14>SHO | |||
| corresponding DNS transaction MUST be abandoned. Clients MAY limit the number of | ULD</bcp14> be set to DOQ_INTERNAL_ERROR. The | |||
| unsolicited QUIC Stream Resets received on a connection before choosing to close | corresponding DNS transaction <bcp14>MUST</bcp14> be abandoned. Clients <bcp14>M | |||
| the | AY</bcp14> limit the number of | |||
| connection.</t> | unsolicited QUIC RESET_STREAM frames received on a connection before choosing to | |||
| close the | ||||
| connection.</t> | ||||
| <t>Note that this mechanism provides a way for primaries to abort a single zone | <t>Note that this mechanism provides a way for primaries to abort a si ngle zone | |||
| transfer occurring on a given stream without having to close the QUIC | transfer occurring on a given stream without having to close the QUIC | |||
| connection.</t> | connection.</t> | |||
| </section> | ||||
| <section anchor="protocol-errors" numbered="true" toc="default"> | ||||
| <name>Protocol Errors</name> | ||||
| <t>Other error scenarios can occur due to malformed, incomplete, or un | ||||
| expected | ||||
| messages during a transaction. These include (but are not limited to):</t> | ||||
| <ul spacing="normal"> | ||||
| <li>a client or server receives a message with a non-zero Message ID | ||||
| </li> | ||||
| <li>a client or server receives a STREAM FIN before receiving all th | ||||
| e bytes for a | ||||
| message indicated in the 2-octet length field</li> | ||||
| <li>a client receives a STREAM FIN before receiving all the expected | ||||
| responses</li> | ||||
| <li>a server receives more than one query on a stream</li> | ||||
| <li>a client receives a different number of responses on a stream th | ||||
| an expected | ||||
| (e.g., multiple responses to a query for an A record)</li> | ||||
| <li>a client receives a STOP_SENDING request</li> | ||||
| <li>the client or server does not indicate the expected STREAM FIN a | ||||
| fter | ||||
| sending requests or responses (see <xref target="stream-mapping-and-usage" forma | ||||
| t="default"/>)</li> | ||||
| <li>an implementation receives a message containing the edns-tcp-kee | ||||
| palive | ||||
| EDNS(0) Option <xref target="RFC7828" format="default"/> (see | ||||
| <xref target="resource-management" format="default"/>)</li> | ||||
| <li>a client or a server attempts to open a unidirectional QUIC stre | ||||
| am</li> | ||||
| <li>a server attempts to open a server-initiated bidirectional QUIC | ||||
| stream</li> | ||||
| </section> | <li>a server receives a "replayable" transaction in 0-RTT data (for servers not | |||
| <section anchor="protocol-errors"><name>Protocol Errors</name> | willing to | |||
| handle this case, see <xref target="session-resumption-and-0-rtt" format="defau | ||||
| <t>Other error scenarios can occur due to malformed, incomplete or unexpected | lt"/>) | |||
| messages during a transaction. These include (but are not limited to)</t> | </li> | |||
| <t><list style="symbols"> | ||||
| <t>a client or server receives a message with a non-zero Message ID</t> | ||||
| <t>a client or server receives a STREAM FIN before receiving all the bytes for | ||||
| a | ||||
| message indicated in the 2-octet length field</t> | ||||
| <t>a client receives a STREAM FIN before receiving all the expected responses< | ||||
| /t> | ||||
| <t>a server receives more than one query on a stream</t> | ||||
| <t>a client receives a different number of responses on a stream than expected | ||||
| (e.g., multiple responses to a query for an A record)</t> | ||||
| <t>a client receives a STOP_SENDING request</t> | ||||
| <t>the client or server does not indicate the expected STREAM FIN after | ||||
| sending requests or responses (see <xref target="stream-mapping-and-usage"/>).</ | ||||
| t> | ||||
| <t>an implementation receives a message containing the edns-tcp-keepalive | ||||
| EDNS(0) Option <xref target="RFC7828"/> (see | ||||
| <xref target="resource-management"/>)</t> | ||||
| <t>a client or a server attempts to open a unidirectional QUIC stream</t> | ||||
| <t>a server attempts to open a server-initiated bidirectional QUIC stream</t> | ||||
| <t>receiving a "replayable" transaction in O-RTT data (for servers n | ||||
| ot willing to | ||||
| handle this case - see section <xref target="session-resumption-and-0-rtt"/>)< | ||||
| /t> | ||||
| </list></t> | ||||
| <t>If a peer encounters such an error condition it is considered a fatal error. | </ul> | |||
| It | <t>If a peer encounters such an error condition, it is considered a fa | |||
| SHOULD forcibly abort the connection using QUIC's CONNECTION_CLOSE mechanism | tal error. It | |||
| , | <bcp14>SHOULD</bcp14> forcibly abort the connection using QUIC's CONNECTION_CLOS | |||
| and SHOULD use the DoQ error code DOQ_PROTOCOL_ERROR. In some cases, it MAY | E mechanism | |||
| and <bcp14>SHOULD</bcp14> use the DoQ error code DOQ_PROTOCOL_ERROR. In some cas | ||||
| es, it <bcp14>MAY</bcp14> | ||||
| instead silently abandon the connection, which uses fewer of the local resources | instead silently abandon the connection, which uses fewer of the local resources | |||
| but makes debugging at the offending node more difficult.</t> | but makes debugging at the offending node more difficult.</t> | |||
| <t>It is noted that the restrictions on use of the above EDNS(0) optio | ||||
| <t>It is noted that the restrictions on use of the above EDNS(0) options has | n has | |||
| implications for proxying message from TCP/DoT/DoH over DoQ.</t> | implications for proxying messages from TCP/DoT/DoH over DoQ.</t> | |||
| </section> | ||||
| </section> | <section anchor="alternative-error-codes" numbered="true" toc="default"> | |||
| <section anchor="alternative-error-codes"><name>Alternative error codes</name> | <name>Alternative Error Codes</name> | |||
| <t>This specification describes specific error codes in Sections <xref | ||||
| <t>This specification suggests specific error codes in <xref target="transaction | target="transaction-cancellation" format="counter"/>, | |||
| -cancellation"/>, | <xref target="transaction-errors" format="counter"/>, and <xref target="protocol | |||
| <xref target="transaction-errors"/>, and <xref target="protocol-errors"/>. These | -errors" format="counter"/>. These error codes are meant | |||
| error codes are meant | ||||
| to facilitate investigation of failures and other incidents. New error | to facilitate investigation of failures and other incidents. New error | |||
| codes may be defined in future versions of DoQ, or registered as specified | codes may be defined in future versions of DoQ or registered as specified | |||
| in <xref target="iana-error-codes"/>.</t> | in <xref target="iana-error-codes" format="default"/>.</t> | |||
| <t>Because new error codes can be defined without negotiation, use of | ||||
| <t>Because new error codes can be defined without negotiation, use of an error | an error | |||
| code in an unexpected context or receipt of an unknown error code MUST be | code in an unexpected context or receipt of an unknown error code <bcp14>MUST</b | |||
| cp14> be | ||||
| treated as equivalent to DOQ_UNSPECIFIED_ERROR.</t> | treated as equivalent to DOQ_UNSPECIFIED_ERROR.</t> | |||
| <t>Implementations <bcp14>MAY</bcp14> wish to test the support for the | ||||
| <t>Implementations MAY wish to test the support for the error code extension | error code extension | |||
| mechanism by using error codes not listed in this document, or they MAY use | mechanism by using error codes not listed in this document, or they <bcp14>MAY</ | |||
| bcp14> use | ||||
| DOQ_ERROR_RESERVED.</t> | DOQ_ERROR_RESERVED.</t> | |||
| </section> | ||||
| </section> | ||||
| </section> | <section anchor="connection-management" numbered="true" toc="default"> | |||
| </section> | <name>Connection Management</name> | |||
| <section anchor="connection-management"><name>Connection Management</name> | <t><xref section="10" sectionFormat="of" target="RFC9000" format="defaul | |||
| t"/>, the QUIC transport specification, specifies that | ||||
| <t><xref section="10" sectionFormat="of" target="RFC9000"/>, the QUIC transport | ||||
| specification, specifies that | ||||
| connections can be closed in three ways:</t> | connections can be closed in three ways:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>idle timeout</li> | |||
| <t>idle timeout</t> | <li>immediate close</li> | |||
| <t>immediate close</t> | <li>stateless reset</li> | |||
| <t>stateless reset</t> | </ul> | |||
| </list></t> | <t>Clients and servers implementing DoQ <bcp14>SHOULD</bcp14> negotiate | |||
| use of the idle timeout. | ||||
| <t>Clients and servers implementing DoQ SHOULD negotiate use of the idle timeout | ||||
| . | ||||
| Closing on idle timeout is done without any packet exchange, which minimizes | Closing on idle timeout is done without any packet exchange, which minimizes | |||
| protocol overhead. Per <xref section="10.1" sectionFormat="of" target="RFC9000"/ >, the QUIC transport specification, the | protocol overhead. Per <xref section="10.1" sectionFormat="of" target="RFC9000" format="default"/>, the QUIC transport specification, the | |||
| effective value of the idle timeout is computed as the minimum of the values | effective value of the idle timeout is computed as the minimum of the values | |||
| advertised by the two endpoints. Practical considerations on setting the idle | advertised by the two endpoints. Practical considerations on setting the idle | |||
| timeout are discussed in <xref target="resource-management"/>.</t> | timeout are discussed in <xref target="resource-management" format="default"/>.< | |||
| /t> | ||||
| <t>Clients SHOULD monitor the idle time incurred on their connection to the | <t>Clients <bcp14>SHOULD</bcp14> monitor the idle time incurred on their | |||
| connection to the | ||||
| server, defined by the time spent since the last packet from the server has | server, defined by the time spent since the last packet from the server has | |||
| been received. When a client prepares to send a new DNS query to the server, it | been received. When a client prepares to send a new DNS query to the server, it | |||
| SHOULD check whether the idle time is sufficiently lower than the idle timer. If | <bcp14>SHOULD</bcp14> check whether the idle time is sufficiently lower than the | |||
| it | idle timer. If it | |||
| is, the client SHOULD send the DNS query over the existing connection. If not, | is, the client <bcp14>SHOULD</bcp14> send the DNS query over the existing connec | |||
| the client SHOULD establish a new connection and send the query over that | tion. If not, | |||
| the client <bcp14>SHOULD</bcp14> establish a new connection and send the query o | ||||
| ver that | ||||
| connection.</t> | connection.</t> | |||
| <t>Clients <bcp14>MAY</bcp14> discard their connections to the server be | ||||
| <t>Clients MAY discard their connections to the server before the idle timeout | fore the idle timeout | |||
| expires. A client that has outstanding queries SHOULD close the connection | expires. A client that has outstanding queries <bcp14>SHOULD</bcp14> close the c | |||
| explicitly using QUIC's CONNECTION_CLOSE mechanism and the DoQ error code | onnection | |||
| explicitly using QUIC's CONNECTION_CLOSE mechanism and the DoQ error code | ||||
| DOQ_NO_ERROR.</t> | DOQ_NO_ERROR.</t> | |||
| <t>Clients and servers <bcp14>MAY</bcp14> close the connection for a var | ||||
| <t>Clients and servers MAY close the connection for a variety of other | iety of other | |||
| reasons, indicated using QUIC's CONNECTION_CLOSE. Client and servers | reasons, indicated using QUIC's CONNECTION_CLOSE. Client and servers | |||
| that send packets over a connection discarded by their peer might | that send packets over a connection discarded by their peer might | |||
| receive a stateless reset indication. If a connection fails, all the | receive a stateless reset indication. If a connection fails, all the | |||
| in progress transaction on that connection MUST be abandoned.</t> | in-progress transactions on that connection <bcp14>MUST</bcp14> be abandoned.</t | |||
| > | ||||
| </section> | </section> | |||
| <section anchor="session-resumption-and-0-rtt"><name>Session Resumption and 0-RT | <section anchor="session-resumption-and-0-rtt" numbered="true" toc="defaul | |||
| T</name> | t"> | |||
| <name>Session Resumption and 0-RTT</name> | ||||
| <t>A client MAY take advantage of the session resumption and 0-RTT mechanisms su | <t>A client <bcp14>MAY</bcp14> take advantage of the session resumption | |||
| pported by | and 0-RTT mechanisms supported by | |||
| QUIC transport <xref target="RFC9000"/> and QUIC TLS <xref target="RFC9001"/>, i | QUIC transport <xref target="RFC9000" format="default"/> and QUIC TLS <xref targ | |||
| f the server supports them. | et="RFC9001" format="default"/> if the server supports them. | |||
| Clients SHOULD consider | Clients <bcp14>SHOULD</bcp14> consider | |||
| potential privacy issues associated with session resumption before deciding to u se | potential privacy issues associated with session resumption before deciding to u se | |||
| this mechanism and specifically evaluate the trade-offs presented in the various sections of this document. | this mechanism and specifically evaluate the trade-offs presented in the various sections of this document. | |||
| The privacy issues are detailed in <xref target="privacy-issues-with-0-rtt-data" | The privacy issues are detailed in Sections <xref target="privacy-issues-with-0- | |||
| /> | rtt-data" format="counter"/> | |||
| and <xref target="privacy-issues-with-session-resumption"/>, | and <xref target="privacy-issues-with-session-resumption" format="counter"/>, | |||
| and the implementation considerations are discussed in | and the implementation considerations are discussed in | |||
| <xref target="using-0-rtt-and-session-resumption"/>.</t> | <xref target="using-0-rtt-and-session-resumption" format="default"/>.</t> | |||
| <t>The 0-RTT mechanism <bcp14>MUST NOT</bcp14> be used to send DNS reque | ||||
| <t>The 0-RTT mechanism MUST NOT be used to send DNS requests that are not | sts that are not | |||
| "replayable" transactions. In this specification, only transactions th | "replayable" transactions. In this specification, only transactions that have | |||
| at have | an OPCODE of QUERY or NOTIFY are considered replayable; therefore, other OPCODES | |||
| an OPCODE of QUERY or NOTIFY are considered replayable and therefore other OPCOD | <bcp14>MUST NOT</bcp14> | |||
| ES MUST NOT | be sent in 0-RTT data. See <xref target="the-notify-service" format="default"/> | |||
| be sent in 0-RTT data. See <xref target="the-notify-service"/> for a detailed di | for a detailed discussion of why NOTIFY is | |||
| scussion of why NOTIFY is | ||||
| included here.</t> | included here.</t> | |||
| <t>Servers <bcp14>MAY</bcp14> support session resumption, and <bcp14>MAY | ||||
| <t>Servers MAY support session resumption, and MAY do that with or without suppo | </bcp14> do that with or without supporting | |||
| rting | 0-RTT, using the mechanisms described in <xref section="4.6.1" sectionFormat="of | |||
| 0-RTT, using the mechanisms described in <xref section="4.6.1" sectionFormat="of | " target="RFC9001" format="default"/>. | |||
| " target="RFC9001"/>. | Servers supporting 0-RTT <bcp14>MUST NOT</bcp14> immediately process | |||
| Servers supporting 0-RTT MUST NOT immediately process | non-replayable transactions received in 0-RTT data but instead | |||
| non-replayable transactions received in 0-RTT data, but instead | <bcp14>MUST</bcp14> adopt one of the following behaviors:</t> | |||
| MUST adopt one of the following behaviours:</t> | <ul spacing="normal"> | |||
| <li>Queue the offending transaction and only process it after the QUIC | ||||
| <t><list style="symbols"> | handshake | |||
| <t>Queue the offending transaction and only process it after the QUIC handshak | has been completed, as defined in <xref section="4.1.1" sectionFormat="of" targe | |||
| e | t="RFC9001" format="default"/>.</li> | |||
| has been completed, as defined in <xref section="4.1.1" sectionFormat="of" targe | <li>Reply to the offending transaction with a response code REFUSED an | |||
| t="RFC9001"/>.</t> | d | |||
| <t>Reply to the offending transaction with a response code REFUSED and | an Extended DNS Error Code (EDE) "Too Early" using the extended RCODE | |||
| an Extended DNS Error Code (EDE) "Too Early", using the extended RCODE | mechanisms defined in <xref target="RFC6891" format="default"/> and the extended | |||
| mechanisms defined in <xref target="RFC6891"/> and the extended DNS errros defin | DNS errors defined in <xref target="RFC8914" format="default"/>; see | |||
| ed in <xref target="RFC8914"/>; see | <xref target="reservation-of-extended-dns-error-code-too-early" format="default" | |||
| <xref target="reservation-of-extended-dns-error-code-too-early"/>.</t> | />.</li> | |||
| <t>Close the connection with the error code DOQ_PROTOCOL_ERROR.</t> | <li>Close the connection with the error code DOQ_PROTOCOL_ERROR.</li> | |||
| </list></t> | </ul> | |||
| </section> | ||||
| </section> | <section anchor="message-sizes" numbered="true" toc="default"> | |||
| <section anchor="message-sizes"><name>Message Sizes</name> | <name>Message Sizes</name> | |||
| <t>DoQ queries and responses are sent on QUIC streams, which in theory c | ||||
| <t>DoQ Queries and Responses are sent on QUIC streams, which in theory can carry | an carry | |||
| up to 2^62 bytes. However, DNS messages are restricted in practice to a maximum | up to 2<sup>62</sup> bytes. However, DNS messages are restricted in practice to | |||
| size of 65535 bytes. This maximum size is enforced by the use of a two-octet | a maximum | |||
| message length field in DNS over TCP <xref target="RFC1035"/> and DNS over TLS | size of 65535 bytes. This maximum size is enforced by the use of a 2-octet | |||
| <xref target="RFC7858"/>, and by the definition of the "application/dns-mes | message length field in DNS over TCP <xref target="RFC1035" format="default"/> a | |||
| sage" for DNS | nd DoT | |||
| over HTTP <xref target="RFC8484"/>. DoQ enforces the same restriction.</t> | <xref target="RFC7858" format="default"/>, and by the definition of the "applica | |||
| tion/dns-message" for DoH <xref target="RFC8484" format="default"/>. DoQ enforce | ||||
| <t>The Extension Mechanisms for DNS (EDNS) <xref target="RFC6891"/> allow peers | s the same restriction.</t> | |||
| to specify the | <t>The Extension Mechanisms for DNS (EDNS(0)) <xref target="RFC6891" for | |||
| mat="default"/> allow peers to specify the | ||||
| UDP message size. This parameter is ignored by DoQ. DoQ implementations always | UDP message size. This parameter is ignored by DoQ. DoQ implementations always | |||
| assume that the maximum message size is 65535 bytes.</t> | assume that the maximum message size is 65535 bytes.</t> | |||
| </section> | ||||
| </section> | ||||
| </section> | <section anchor="implementation-requirements" numbered="true" toc="default"> | |||
| </section> | <name>Implementation Requirements</name> | |||
| <section anchor="implementation-requirements"><name>Implementation Requirements< | ||||
| /name> | ||||
| <section anchor="authentication"><name>Authentication</name> | ||||
| <t>For the stub to recursive resolver scenario, the authentication requirements | <section anchor="authentication" numbered="true" toc="default"> | |||
| are the same as described in DoT <xref target="RFC7858"/> and "Usage Profil | <name>Authentication</name> | |||
| es for DNS over | <t>For the stub to recursive scenario, the authentication requirements | |||
| TLS and DNS over DTLS" <xref target="RFC8310"/>. <xref target="RFC8932"/> s | are the same as described in DoT <xref target="RFC7858" format="default"/> and " | |||
| tates that DNS privacy | Usage Profiles for DNS over | |||
| services SHOULD provide credentials that clients can use to authenticate the | TLS and DNS over DTLS" <xref target="RFC8310" format="default"/>. <xref target=" | |||
| RFC8932" format="default"/> states that DNS privacy | ||||
| services <bcp14>SHOULD</bcp14> provide credentials that clients can use to authe | ||||
| nticate the | ||||
| server. Given this, and to align with the authentication model for DoH, DoQ stub s | server. Given this, and to align with the authentication model for DoH, DoQ stub s | |||
| SHOULD use a Strict authentication profile. Client authentication for the encryp ted | <bcp14>SHOULD</bcp14> use a Strict usage profile. Client authentication for the encrypted | |||
| stub to recursive scenario is not described in any DNS RFC.</t> | stub to recursive scenario is not described in any DNS RFC.</t> | |||
| <t>For zone transfer, the authentication requirements are the same as de | ||||
| <t>For zone transfer, the authentication requirements are the same as described | scribed in | |||
| in | <xref target="RFC9103" format="default"/>.</t> | |||
| <xref target="RFC9103"/>.</t> | <t>For the recursive to authoritative scenario, authentication | |||
| requirements are unspecified at the time of writing and are the subject of | ||||
| <t>For the recursive resolver to authoritative nameserver scenario, authenticati | ||||
| on | ||||
| requirements are unspecified at the time of writing and are the subject on | ||||
| ongoing work in the DPRIVE WG.</t> | ongoing work in the DPRIVE WG.</t> | |||
| </section> | ||||
| </section> | <section anchor="fallback-to-other-protocols-on-connection-failure" number | |||
| <section anchor="fallback-to-other-protocols-on-connection-failure"><name>Fallba | ed="true" toc="default"> | |||
| ck to Other Protocols on Connection Failure</name> | <name>Fallback to Other Protocols on Connection Failure</name> | |||
| <t>If the establishment of the DoQ connection fails, clients <bcp14>MAY< | ||||
| <t>If the establishment of the DoQ connection fails, clients MAY attempt to | /bcp14> attempt to | |||
| fall back to DoT and then potentially clear text, as specified in DoT | fall back to DoT and then potentially cleartext, as specified in DoT | |||
| <xref target="RFC7858"/> and "Usage Profiles for DNS over TLS and DNS over | <xref target="RFC7858" format="default"/> and "Usage Profiles for DNS over TLS a | |||
| DTLS" | nd DNS over DTLS" | |||
| <xref target="RFC8310"/>, depending on their privacy profile.</t> | <xref target="RFC8310" format="default"/>, depending on their usage profile.</t> | |||
| <t>DNS clients <bcp14>SHOULD</bcp14> remember server IP addresses that d | ||||
| <t>DNS clients SHOULD remember server IP addresses that don't support DoQ. | on't support DoQ. | |||
| Mobile clients might also remember the lack of DoQ support by | Mobile clients might also remember the lack of DoQ support by | |||
| given IP addresses on a per-context basis (e.g.per network or provisioning domai | given IP addresses on a per-context basis (e.g., per network or provisioning dom | |||
| n).</t> | ain).</t> | |||
| <t>Timeouts, connection refusals, and QUIC handshake failures are indica | ||||
| <t>Timeouts, connection refusals, and QUIC handshake failures are indicators | tors | |||
| that a server does not support DoQ. Clients SHOULD NOT attempt DoQ queries to a | that a server does not support DoQ. Clients <bcp14>SHOULD NOT</bcp14> attempt D | |||
| oQ queries to a | ||||
| server that does not support DoQ for a reasonable period (such as one hour per | server that does not support DoQ for a reasonable period (such as one hour per | |||
| server). DNS clients following an out-of-band key-pinned privacy profile | server). DNS clients following an out-of-band key-pinned usage profile | |||
| (<xref target="RFC7858"/>) MAY be more aggressive about retrying after DoQ conne | <xref target="RFC7858" format="default"/> <bcp14>MAY</bcp14> be more aggressive | |||
| ction failures.</t> | about retrying after DoQ connection failures.</t> | |||
| </section> | ||||
| </section> | <section anchor="address-validation" numbered="true" toc="default"> | |||
| <section anchor="address-validation"><name>Address Validation</name> | <name>Address Validation</name> | |||
| <t><xref section="8" sectionFormat="of" target="RFC9000" format="default | ||||
| <t><xref section="8" sectionFormat="of" target="RFC9000"/>, the QUIC transport s | "/>, the QUIC transport specification, defines Address | |||
| pecification, defines Address | ||||
| Validation procedures to avoid servers being used in address amplification | Validation procedures to avoid servers being used in address amplification | |||
| attacks. DoQ implementations MUST conform to this specification, which limits | attacks. DoQ implementations <bcp14>MUST</bcp14> conform to this specification, | |||
| the worst case amplification to a factor 3.</t> | which limits | |||
| the worst-case amplification to a factor 3.</t> | ||||
| <t>DoQ implementations SHOULD consider configuring servers to use the Address | <t>DoQ implementations <bcp14>SHOULD</bcp14> consider configuring server | |||
| Validation using Retry Packets procedure defined in <xref section="8.1.2" sectio | s to use the Address | |||
| nFormat="of" target="RFC9000"/>, the QUIC | Validation using Retry Packets procedure defined in <xref section="8.1.2" sectio | |||
| nFormat="of" target="RFC9000" format="default"/>, the QUIC | ||||
| transport specification. This procedure imposes a 1-RTT delay for | transport specification. This procedure imposes a 1-RTT delay for | |||
| verifying the return routability of the source address of a client, similar to | verifying the return routability of the source address of a client, similar to | |||
| the DNS Cookies mechanism <xref target="RFC7873"/>.</t> | the DNS Cookies mechanism <xref target="RFC7873" format="default"/>.</t> | |||
| <t>DoQ implementations that configure Address Validation using Retry Pac | ||||
| <t>DoQ implementations that configure Address Validation using Retry Packets | kets | |||
| SHOULD implement the Address Validation for Future Connections procedure | <bcp14>SHOULD</bcp14> implement the Address Validation for Future Connections pr | |||
| defined in <xref section="8.1.3" sectionFormat="of" target="RFC9000"/>, the QUIC | ocedure | |||
| transport specification. | defined in <xref section="8.1.3" sectionFormat="of" target="RFC9000" format="def | |||
| ault"/>, the QUIC transport specification. | ||||
| This defines how servers can send NEW_TOKEN frames to clients after the client | This defines how servers can send NEW_TOKEN frames to clients after the client | |||
| address is validated, in order to avoid the 1-RTT penalty during subsequent | address is validated in order to avoid the 1-RTT penalty during subsequent | |||
| connections by the client from the same address.</t> | connections by the client from the same address.</t> | |||
| </section> | ||||
| </section> | <section anchor="padding" numbered="true" toc="default"> | |||
| <section anchor="padding"><name>Padding</name> | <name>Padding</name> | |||
| <t>Implementations <bcp14>MUST</bcp14> protect against the traffic analy | ||||
| <t>Implementations MUST protect against the traffic analysis attacks described i | sis attacks described in | |||
| n | <xref target="traffic-analysis" format="default"/> by the judicious injection of | |||
| <xref target="traffic-analysis"/> by the judicious injection of padding. This | padding. This | |||
| could be done either by padding individual DNS messages using the | could be done either by padding individual DNS messages using the | |||
| EDNS(0) Padding Option <xref target="RFC7830"/> or by padding QUIC packets (see | EDNS(0) Padding Option <xref target="RFC7830" format="default"/> or by padding Q | |||
| <xref section="19.1" sectionFormat="of" target="RFC9000"/>.</t> | UIC packets (see | |||
| <xref section="19.1" sectionFormat="of" target="RFC9000" format="default"/>).</t | ||||
| <t>In theory, padding at the QUIC packet level could result in better performanc | > | |||
| e for the equivalent | <t>In theory, padding at the QUIC packet level could result in better pe | |||
| rformance for the equivalent | ||||
| protection, because the amount of padding can take into account non-DNS frames | protection, because the amount of padding can take into account non-DNS frames | |||
| such as acknowledgements or flow control updates, and also because QUIC packets | such as acknowledgements or flow control updates, and also because QUIC packets | |||
| can carry multiple DNS messages. However, applications can only control the | can carry multiple DNS messages. However, applications can only control the | |||
| amount of padding in QUIC packets if the implementation of QUIC exposes adequate APIs. This leads | amount of padding in QUIC packets if the implementation of QUIC exposes adequate APIs. This leads | |||
| to the following recommendation:</t> | to the following recommendations:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>If the implementation of QUIC exposes APIs to set a padding policy | |||
| <t>if the implementation of QUIC exposes APIs to set a padding policy, | , | |||
| DNS over QUIC SHOULD use that API to align the packet length to a small set of | DoQ <bcp14>SHOULD</bcp14> use that API to align the packet length to a small set | |||
| fixed sizes.</t> | of | |||
| <t>if padding at the QUIC packet level is not available or not used, | fixed sizes.</li> | |||
| DNS over QUIC MUST ensure that all DNS queries and responses are padded to | <li>If padding at the QUIC packet level is not available or not used, | |||
| DoQ <bcp14>MUST</bcp14> ensure that all DNS queries and responses are padded to | ||||
| a small set of fixed sizes, using the EDNS(0) padding extension as specified | a small set of fixed sizes, using the EDNS(0) padding extension as specified | |||
| in <xref target="RFC7830"/>.</t> | in <xref target="RFC7830" format="default"/>.</li> | |||
| </list></t> | </ul> | |||
| <t>Implementations might choose not to use a QUIC API for padding if it | ||||
| <t>Implementation might choose not to use a QUIC API for padding if it is | is | |||
| significantly simpler to re-use existing DNS message padding logic which is | significantly simpler to reuse existing DNS message padding logic that is | |||
| applied to other encrypted transports.</t> | applied to other encrypted transports.</t> | |||
| <t>In the absence of a standard policy for padding sizes, implementation | ||||
| <t>In the absence of a standard policy for padding sizes, implementations SHOULD | s <bcp14>SHOULD</bcp14> | |||
| follow the recommendations of the Experimental status "Padding Policies for | follow the recommendations of the Experimental status "Padding Policies for | |||
| Extension Mechanisms for DNS (EDNS(0))" <xref target="RFC8467"/>. While Exp | Extension Mechanisms for DNS (EDNS(0))" <xref target="RFC8467" format="default"/ | |||
| erimental, | >. While Experimental, | |||
| these recommendations are referenced because they are implemented and deployed | these recommendations are referenced because they are implemented and deployed | |||
| for DoT, and provide a way for implementations to be fully compliant with this | for DoT and provide a way for implementations to be fully compliant with this | |||
| specification.</t> | specification.</t> | |||
| </section> | ||||
| </section> | <section anchor="connection-handling" numbered="true" toc="default"> | |||
| <section anchor="connection-handling"><name>Connection Handling</name> | <name>Connection Handling</name> | |||
| <t>"DNS Transport over TCP - Implementation Requirements" <xref target=" | ||||
| <t>"DNS Transport over TCP - Implementation Requirements" <xref target | RFC7766" format="default"/> provides | |||
| ="RFC7766"/> provides | ||||
| updated guidance on DNS over TCP, some of which is applicable to DoQ. This | updated guidance on DNS over TCP, some of which is applicable to DoQ. This | |||
| section provides similar advice on connection handling for DoQ.</t> | section provides similar advice on connection handling for DoQ.</t> | |||
| <section anchor="connection-reuse" numbered="true" toc="default"> | ||||
| <section anchor="connection-reuse"><name>Connection Reuse</name> | <name>Connection Reuse</name> | |||
| <t>Historic implementations of DNS clients are known to open and close | ||||
| <t>Historic implementations of DNS clients are known to open and close TCP | TCP | |||
| connections for each DNS query. To amortize connection setup costs, both | connections for each DNS query. To amortize connection setup costs, both | |||
| clients and servers SHOULD support connection reuse by sending multiple queries | clients and servers <bcp14>SHOULD</bcp14> support connection reuse by sending mu ltiple queries | |||
| and responses over a single persistent QUIC connection.</t> | and responses over a single persistent QUIC connection.</t> | |||
| <t>In order to achieve performance on par with UDP, DNS clients <bcp14 | ||||
| <t>In order to achieve performance on par with UDP, DNS clients SHOULD send thei | >SHOULD</bcp14> send their | |||
| r | ||||
| queries concurrently over the QUIC streams on a QUIC connection. That is, when | queries concurrently over the QUIC streams on a QUIC connection. That is, when | |||
| a DNS client sends multiple queries to a server over a QUIC connection, it | a DNS client sends multiple queries to a server over a QUIC connection, it | |||
| SHOULD NOT wait for an outstanding reply before sending the next query.</t> | <bcp14>SHOULD NOT</bcp14> wait for an outstanding reply before sending the next | |||
| query.</t> | ||||
| </section> | </section> | |||
| <section anchor="resource-management"><name>Resource Management</name> | <section anchor="resource-management" numbered="true" toc="default"> | |||
| <name>Resource Management</name> | ||||
| <t>Proper management of established and idle connections is important to the | <t>Proper management of established and idle connections is important | |||
| to the | ||||
| healthy operation of a DNS server.</t> | healthy operation of a DNS server.</t> | |||
| <t>An implementation of DoQ <bcp14>SHOULD</bcp14> follow best practice | ||||
| <t>An implementation of DoQ SHOULD follow best practices similar to those | s similar to those | |||
| specified for DNS over TCP <xref target="RFC7766"/>, in particular with regard t | specified for DNS over TCP <xref target="RFC7766" format="default"/>, in particu | |||
| o:</t> | lar with regard to:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>Concurrent Connections (<xref section="6.2.2" sectionFormat="of" | |||
| <t>Concurrent Connections (<xref section="6.2.2" sectionFormat="of" target="RF | target="RFC7766" format="default"/>, updated by <xref section="6.4" sectionForm | |||
| C7766"/>, updated by <xref section="6.4" sectionFormat="of" target="RFC9103"/>)< | at="of" target="RFC9103" format="default"/>)</li> | |||
| /t> | <li>Security Considerations (<xref section="10" sectionFormat="of" t | |||
| <t>Security Considerations (<xref section="10" sectionFormat="of" target="RFC7 | arget="RFC7766" format="default"/>)</li> | |||
| 766"/>)</t> | </ul> | |||
| </list></t> | <t>Failure to do so may lead to resource exhaustion and denial of serv | |||
| ice.</t> | ||||
| <t>Failure to do so may lead to resource exhaustion and denial of service.</t> | <t>Clients that want to maintain long duration DoQ connections <bcp14> | |||
| SHOULD</bcp14> use the idle | ||||
| <t>Clients that want to maintain long duration DoQ connections SHOULD use the id | timeout mechanisms defined in <xref section="10.1" sectionFormat="of" target="RF | |||
| le | C9000" format="default"/>, the QUIC transport | |||
| timeout mechanisms defined in <xref section="10.1" sectionFormat="of" target="RF | specification. Clients and servers <bcp14>MUST NOT</bcp14> send the edns-tcp-kee | |||
| C9000"/>, the QUIC transport | palive EDNS(0) | |||
| specification. Clients and servers MUST NOT send the edns-tcp-keepalive EDNS(0) | Option <xref target="RFC7828" format="default"/> in any messages sent on a DoQ c | |||
| Option <xref target="RFC7828"/> in any messages sent on a DoQ connection (becaus | onnection (because it is | |||
| e it is | ||||
| specific to the use of TCP/TLS as a transport).</t> | specific to the use of TCP/TLS as a transport).</t> | |||
| <t>This document does not make specific recommendations for timeout va | ||||
| <t>This document does not make specific recommendations for timeout values on id | lues on idle | |||
| le | ||||
| connections. Clients and servers should reuse and/or close connections | connections. Clients and servers should reuse and/or close connections | |||
| depending on the level of available resources. Timeouts may be longer during | depending on the level of available resources. Timeouts may be longer during | |||
| periods of low activity and shorter during periods of high activity.</t> | periods of low activity and shorter during periods of high activity.</t> | |||
| </section> | ||||
| </section> | <section anchor="using-0-rtt-and-session-resumption" numbered="true" toc | |||
| <section anchor="using-0-rtt-and-session-resumption"><name>Using 0-RTT and Sessi | ="default"> | |||
| on Resumption</name> | <name>Using 0-RTT and Session Resumption</name> | |||
| <t>Using 0-RTT for DoQ has many compelling advantages. Clients | ||||
| <t>Using 0-RTT for DNS over QUIC has many compelling advantages. Clients | ||||
| can establish connections and send queries without incurring a connection | can establish connections and send queries without incurring a connection | |||
| delay. Servers can thus negotiate low values of the connection | delay. Servers can thus negotiate low values of the connection | |||
| timers, which reduces the total number of connections that they need to | timers, which reduces the total number of connections that they need to | |||
| manage. They can do that because the clients that use 0-RTT will not incur | manage. They can do that because the clients that use 0-RTT will not incur | |||
| latency penalties if new connections are required for a query.</t> | latency penalties if new connections are required for a query.</t> | |||
| <t>Session resumption and 0-RTT data transmission create | ||||
| <t>Session resumption and 0-RTT data transmission create | privacy risks detailed in Sections <xref target="privacy-issues-with-0-rtt-data | |||
| privacy risks detailed in | " format="counter"/> and <xref target="privacy-issues-with-session-resumption" f | |||
| <xref target="privacy-issues-with-session-resumption"/> and <xref target="privac | ormat="counter" />. | |||
| y-issues-with-0-rtt-data"/>. | ||||
| The following recommendations are meant to reduce the privacy | The following recommendations are meant to reduce the privacy | |||
| risks while enjoying the performance benefits of 0-RTT data, subject to the | risks while enjoying the performance benefits of 0-RTT data, subject to the | |||
| restrictions specified in <xref target="session-resumption-and-0-rtt"/>.</t> | restrictions specified in <xref target="session-resumption-and-0-rtt" format="de | |||
| fault"/>.</t> | ||||
| <t>Clients SHOULD use resumption tickets only once, as specified in Appendix C.4 | <t>Clients <bcp14>SHOULD</bcp14> use resumption tickets only once, as | |||
| to <xref target="RFC8446"/>. By default, clients SHOULD NOT use session resumpti | specified in <xref target="RFC8446" sectionFormat="of" section="C.4" />. By | |||
| on if the | default, clients <bcp14>SHOULD NOT</bcp14> use session resumption if the | |||
| client's connectivity has changed.</t> | client's connectivity has changed.</t> | |||
| <t>Clients could receive address validation tokens from the server usi | ||||
| <t>Clients could receive address validation tokens from the server using the | ng the | |||
| NEW_TOKEN mechanism; see <xref section="8" sectionFormat="of" target="RFC9000"/> | NEW_TOKEN mechanism; see <xref section="8" sectionFormat="of" target="RFC9000" f | |||
| . The associated tracking | ormat="default"/>. The associated tracking | |||
| risks are mentioned in <xref target="privacy-issues-with-address-validation-toke | risks are mentioned in <xref target="privacy-issues-with-address-validation-toke | |||
| ns"/>. | ns" format="default"/>. | |||
| Clients SHOULD only use the address validation tokens when they are also using s | Clients <bcp14>SHOULD</bcp14> only use the address validation tokens when they a | |||
| ession | re also using session | |||
| resumption, thus avoiding additional tracking risks.</t> | resumption thus avoiding additional tracking risks.</t> | |||
| <t>Servers <bcp14>SHOULD</bcp14> issue session resumption tickets with | ||||
| <t>Servers SHOULD issue session resumption tickets with a sufficiently long life | a sufficiently long lifetime (e.g., 6 hours), | |||
| time (e.g., 6 hours), | so that clients are not tempted to either keep the connection alive or frequentl | |||
| so that clients are not tempted to either keep connection alive or frequently po | y poll the server | |||
| ll the server | ||||
| to renew session resumption tickets. | to renew session resumption tickets. | |||
| Servers SHOULD implement the anti-replay mechanisms specified in <xref section=" | Servers <bcp14>SHOULD</bcp14> implement the anti-replay mechanisms specified in | |||
| 8" sectionFormat="of" target="RFC8446"/>.</t> | <xref section="8" sectionFormat="of" target="RFC8446" format="default"/>.</t> | |||
| </section> | ||||
| </section> | <section anchor="controlling-connection-migration-for-privacy" numbered= | |||
| <section anchor="controlling-connection-migration-for-privacy"><name>Controlling | "true" toc="default"> | |||
| Connection Migration For Privacy</name> | <name>Controlling Connection Migration for Privacy</name> | |||
| <t>DoQ implementations might consider using the connection migration f | ||||
| <t>DoQ implementations might consider using the connection migration features de | eatures defined | |||
| fined | in <xref section="9" sectionFormat="of" target="RFC9000" format="default"/>. The | |||
| in <xref section="9" sectionFormat="of" target="RFC9000"/>. These features enabl | se features enable connections to continue operating | |||
| e connections to continue operating | as the client's connectivity changes. | |||
| as the client's connectivity changes. | As detailed in <xref target="privacy-issues-with-long-duration-sessions" format= | |||
| As detailed in <xref target="privacy-issues-with-long-duration-sessions"/>, thes | "default"/>, these features | |||
| e features | trade off privacy for latency. By default, clients <bcp14>SHOULD</bcp14> be conf | |||
| trade off privacy for latency. By default, clients SHOULD be configured | igured | |||
| to prioritize privacy and start new sessions if their connectivity changes.</t> | to prioritize privacy and start new sessions if their connectivity changes.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="processing-queries-in-parallel" numbered="true" toc="defa | |||
| <section anchor="processing-queries-in-parallel"><name>Processing Queries in Par | ult"> | |||
| allel</name> | <name>Processing Queries in Parallel</name> | |||
| <t>As specified in <xref section="7" sectionFormat="of" target="RFC7766" | ||||
| <t>As specified in <xref section="7" sectionFormat="of" target="RFC7766"/> " | format="default"/> "DNS Transport over TCP - Implementation | |||
| ;DNS Transport over TCP - Implementation | Requirements", resolvers are <bcp14>RECOMMENDED</bcp14> to support the preparing | |||
| Requirements", resolvers are RECOMMENDED to support the preparing | ||||
| of responses in parallel and sending them out of order. In DoQ, they do that by | of responses in parallel and sending them out of order. In DoQ, they do that by | |||
| sending responses on their specific stream as soon as possible, without waiting | sending responses on their specific stream as soon as possible, without waiting | |||
| for availability of responses for previously opened streams.</t> | for availability of responses for previously opened streams.</t> | |||
| </section> | ||||
| </section> | <section anchor="zone-transfer" numbered="true" toc="default"> | |||
| <section anchor="zone-transfer"><name>Zone transfer</name> | <name>Zone Transfer</name> | |||
| <t><xref target="RFC9103" format="default"/> specifies zone transfer ove | ||||
| <t><xref target="RFC9103"/> specifies zone transfer over TLS (XoT) | r TLS (XoT) | |||
| and includes updates to <xref target="RFC1995"/> (IXFR), <xref target="RFC5936"/ | and includes updates to <xref target="RFC1995" format="default"/> (IXFR), <xref | |||
| > (AXFR) and | target="RFC5936" format="default"/> (AXFR), and | |||
| <xref target="RFC7766"/>. Considerations relating to the re-use of XoT connectio | <xref target="RFC7766" format="default"/>. Considerations relating to the reuse | |||
| ns | of XoT connections | |||
| described there apply analogously to zone transfers performed using DoQ | described there apply analogously to zone transfers performed using DoQ | |||
| connections. One reason for re-iterating such specific guidance is the | connections. One reason for reiterating such specific guidance is the | |||
| lack of effective connection re-use in existing TCP/TLS zone transfer | lack of effective connection reuse in existing TCP/TLS zone transfer | |||
| implementations today. The following recommendations apply:</t> | implementations today. The following recommendations apply:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>DoQ servers <bcp14>MUST</bcp14> be able to handle multiple concurr | |||
| <t>DoQ servers MUST be able to handle multiple concurrent IXFR requests on a | ent IXFR requests on a | |||
| single QUIC connection</t> | single QUIC connection.</li> | |||
| <t>DoQ servers MUST be able to handle multiple concurrent AXFR requests on a | <li>DoQ servers <bcp14>MUST</bcp14> be able to handle multiple concurr | |||
| single QUIC connection</t> | ent AXFR requests on a | |||
| <t>DoQ implementations SHOULD | single QUIC connection.</li> | |||
| <list style="symbols"> | <li> | |||
| <t>use the same QUIC connection for both AXFR and IXFR requests to the sam | <t>DoQ implementations <bcp14>SHOULD</bcp14> | |||
| e | </t> | |||
| primary</t> | <ul spacing="normal"> | |||
| <t>send those requests in parallel as soon as they are queued i.e. do not | <li>use the same QUIC connection for both AXFR and IXFR requests t | |||
| wait | o the same | |||
| primary</li> | ||||
| <li>send those requests in parallel as soon as they are queued, i. | ||||
| e., do not wait | ||||
| for a response before sending the next query on the connection | for a response before sending the next query on the connection | |||
| (this is analogous to pipelining requests on a TCP/TLS connection)</t> | (this is analogous to pipelining requests on a TCP/TLS connection)</li> | |||
| <t>send the response(s) for each request as soon as they are available i.e | <li>send the response(s) for each request as soon as they are avai | |||
| . | lable, i.e., | |||
| response streams MAY be sent intermingled</t> | response streams <bcp14>MAY</bcp14> be sent intermingled</li> | |||
| </list></t> | </ul> | |||
| </list></t> | </li> | |||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="flow-control-mechanisms"><name>Flow Control Mechanisms</name> | <section anchor="flow-control-mechanisms" numbered="true" toc="default"> | |||
| <name>Flow Control Mechanisms</name> | ||||
| <t>Servers and Clients manage flow control using the mechanisms defined in | <t>Servers and clients manage flow control using the mechanisms defined | |||
| <xref section="4" sectionFormat="of" target="RFC9000"/>. These mechanisms allow | in | |||
| clients and servers to specify | <xref section="4" sectionFormat="of" target="RFC9000" format="default"/>. These | |||
| mechanisms allow clients and servers to specify | ||||
| how many streams can be created, how much data can be sent on a stream, | how many streams can be created, how much data can be sent on a stream, | |||
| and how much data can be sent on the union of all streams. For DNS over QUIC, | and how much data can be sent on the union of all streams. For DoQ, | |||
| controlling how many streams are created allows servers to control how many | controlling how many streams are created allows servers to control how many | |||
| new requests the client can send on a given connection.</t> | new requests the client can send on a given connection.</t> | |||
| <t>Flow control exists to protect endpoint resources. | ||||
| <t>Flow control exists to protect endpoint resources. | ||||
| For servers, global and per-stream flow control limits control how much data can be sent by | For servers, global and per-stream flow control limits control how much data can be sent by | |||
| clients. The same mechanisms | clients. The same mechanisms | |||
| allow clients to control how much data can be sent by servers. | allow clients to control how much data can be sent by servers. | |||
| Values that are too small will unnecessarily limit performance. | Values that are too small will unnecessarily limit performance. | |||
| Values that are too large might expose endpoints to overload or memory exhaustio n. | Values that are too large might expose endpoints to overload or memory exhaustio n. | |||
| Implementations or deployments will need to adjust flow control limits to | Implementations or deployments will need to adjust flow control limits to | |||
| balance these concerns. In particular, zone transfer implementations will need t o control | balance these concerns. In particular, zone transfer implementations will need t o control | |||
| these limits carefully to ensure both large and concurrent zone transfers are we ll managed.</t> | these limits carefully to ensure both large and concurrent zone transfers are we ll managed.</t> | |||
| <t>Initial values of parameters control how many requests and how much d | ||||
| <t>Initial values of parameters control how many requests and how much data can | ata can be | |||
| be | ||||
| sent by clients and servers at the beginning of the connection. These values | sent by clients and servers at the beginning of the connection. These values | |||
| are specified in transport parameters exchanged during the connection handshake. | are specified in transport parameters exchanged during the connection handshake. | |||
| The parameter values received in the initial connection also control how many re quests and | The parameter values received in the initial connection also control how many re quests and | |||
| how much data can be sent by clients using 0-RTT data in a resumed connection. | how much data can be sent by clients using 0-RTT data in a resumed connection. | |||
| Using too small values of these initial parameters would restrict the | Using too small values of these initial parameters would restrict the | |||
| usefulness of allowing 0-RTT data.</t> | usefulness of allowing 0-RTT data.</t> | |||
| </section> | ||||
| </section> | ||||
| </section> | <section anchor="security-considerations" numbered="true" toc="default"> | |||
| </section> | <name>Security Considerations</name> | |||
| <section anchor="implementation-status"><name>Implementation Status</name> | ||||
| <t>(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION) This section | ||||
| records the status of known implementations of the protocol defined by this | ||||
| specification at the time of posting of this Internet-Draft, and is based on a | ||||
| proposal described in <xref target="RFC7942"/>.</t> | ||||
| <t><list style="numbers"> | ||||
| <t>AdGuard launched a DoQ recursive resolver service in December 2020. They ha | ||||
| ve | ||||
| released a suite of open source tools that support DoQ: | ||||
| <list style="numbers"> | ||||
| <t><eref target="https://github.com/AdguardTeam/DnsLibs">AdGuard C++ DNS l | ||||
| ibraries</eref> A | ||||
| DNS proxy library that supports all existing DNS protocols including | ||||
| DNS-over-TLS, DNS-over-HTTPS, DNSCrypt and DNS-over-QUIC (experimental).</t> | ||||
| <t><eref target="https://github.com/AdguardTeam/dnsproxy">DNS Proxy</eref> | ||||
| A simple DNS proxy | ||||
| server that supports all existing DNS protocols including DNS-over-TLS, | ||||
| DNS-over-HTTPS, DNSCrypt, and DNS-over-QUIC. Moreover, it can work as a | ||||
| DNS-over-HTTPS, DNS-over-TLS or DNS-over-QUIC server.</t> | ||||
| <t><eref target="https://github.com/AdguardTeam/coredns">CoreDNS fork for | ||||
| AdGuard DNS</eref> | ||||
| Includes DNS-over-QUIC server-side support.</t> | ||||
| <t><eref target="https://github.com/ameshkov/dnslookup">dnslookup</eref> S | ||||
| imple command line | ||||
| utility to make DNS lookups. Supports all known DNS protocols: plain DNS, | ||||
| DoH, DoT, DoQ, DNSCrypt.</t> | ||||
| </list></t> | ||||
| <t><eref target="https://github.com/private-octopus/quicdoq">Quicdoq</eref> Qu | ||||
| icdoq is a simple | ||||
| open source implementation of DoQ. It is written in C, based on | ||||
| <eref target="https://github.com/private-octopus/picoquic">Picoquic</eref>.</t> | ||||
| <t><eref target="https://github.com/DNS-OARC/flamethrower/tree/dns-over-quic"> | ||||
| Flamethrower</eref> | ||||
| is an open source DNS performance and functional testing utility written in | ||||
| C++ that has an experimental implementation of DoQ.</t> | ||||
| <t><eref target="https://github.com/aiortc/aioquic">aioquic</eref> is an imple | ||||
| mentation of QUIC in | ||||
| Python. It includes example client and server for DoQ.</t> | ||||
| </list></t> | ||||
| <section anchor="performance-measurements"><name>Performance Measurements</name> | ||||
| <t>To the authors' knowledge, no benchmarking studies comparing DoT, DoH and | ||||
| DoQ | ||||
| are published yet. However, anecdotal evidence from the <eref target="https://ad | ||||
| guard.com/en/blog/dns-over-quic.html">AdGuard DoQ recursive | ||||
| resolver deployment</eref> indicates | ||||
| that it performs similarly (and possibly better) compared to the other | ||||
| encrypted protocols, particularly in mobile environments. Reasons given for | ||||
| this include that DoQ</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Uses less bandwidth due to a more efficient handshake (and due to less per | ||||
| message overhead when compared to DoH).</t> | ||||
| <t>Performs better in mobile environments due to the increased resilience to | ||||
| packet loss</t> | ||||
| <t>Can maintain connections as users move between mobile networks via its | ||||
| connection management</t> | ||||
| </list></t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="security-considerations"><name>Security Considerations</name> | ||||
| <t>A Threat Analysis of the Domain Name System is found in <xref target="RFC3833 | <t>A Threat Analysis of the Domain Name System is found in <xref target="R | |||
| "/>. | FC3833" format="default"/>. | |||
| This analysis was written before the development of DoT, DoH and DoQ, and | This analysis was written before the development of DoT, DoH, and DoQ, and | |||
| probably needs to be updated.</t> | probably needs to be updated.</t> | |||
| <t>The security considerations of DoQ should be comparable to those of DoT | ||||
| <t>The security considerations of DoQ should be comparable to those of DoT | <xref target="RFC7858" format="default"/>. DoT as specified in <xref target="RFC | |||
| <xref target="RFC7858"/>. DoT as specified in <xref target="RFC7858"/> only addr | 7858" format="default"/> only addresses the stub to recursive scenario, but the | |||
| esses the stub to | considerations about person-in-the-middle | |||
| recursive resolver scenario, but the considerations about person-in-the-middle | attacks, middleboxes, and caching of data from cleartext connections also | |||
| attacks, middleboxes and caching of data from clear text connections also | ||||
| apply for DoQ to the resolver to authoritative server scenario. | apply for DoQ to the resolver to authoritative server scenario. | |||
| As stated in <xref target="authentication"/> the authentication requirements for | As stated in <xref target="authentication" format="default"/>, the authenticatio | |||
| securing zone transfer using DoQ are the same as those for zone transfer over D | n requirements for securing zone transfer using DoQ are the same as those for zo | |||
| oT, therefore the general security considerations are entirely analogous to thos | ne transfer over DoT; therefore, the general security considerations are entirel | |||
| e described in <xref target="RFC9103"/>.</t> | y analogous to those described in <xref target="RFC9103" format="default"/>.</t> | |||
| <t>DoQ relies on QUIC, which itself relies on TLS 1.3 and thus supports by | ||||
| <t>DoQ relies on QUIC, which itself relies on TLS 1.3 and thus supports by defau | default | |||
| lt | the protections against downgrade attacks described in <xref target="BCP195" for | |||
| the protections against downgrade attacks described in <xref target="BCP195"/>. | mat="default"/>. | |||
| QUIC specific issues and their mitigations are described in | QUIC-specific issues and their mitigations are described in | |||
| <xref section="21" sectionFormat="of" target="RFC9000"/>.</t> | <xref section="21" sectionFormat="of" target="RFC9000" format="default"/>.</t> | |||
| </section> | ||||
| </section> | <section anchor="privacy-considerations" numbered="true" toc="default"> | |||
| <section anchor="privacy-considerations"><name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
| <t>The general considerations of encrypted transports provided in "DNS Pri | ||||
| <t>The general considerations of encrypted transports provided in "DNS Priv | vacy | |||
| acy | Considerations" <xref target="RFC9076" format="default"/> apply to DoQ. The spec | |||
| Considerations" <xref target="RFC9076"/> apply to DoQ. The specific | ific | |||
| considerations provided there do not differ between DoT and DoQ, and are not | considerations provided there do not differ between DoT and DoQ, and they are no | |||
| discussed further here. Similarly, "Recommendations for DNS Privacy Service | t | |||
| Operators" <xref target="RFC8932"/> (which covers operational, policy, and | discussed further here. Similarly, "Recommendations for DNS Privacy Service | |||
| security | Operators" <xref target="RFC8932" format="default"/> (which covers operational, | |||
| policy, and security | ||||
| considerations for DNS privacy services) is also applicable to DoQ services.</t> | considerations for DNS privacy services) is also applicable to DoQ services.</t> | |||
| <t>QUIC incorporates the mechanisms of TLS 1.3 <xref target="RFC8446" form | ||||
| <t>QUIC incorporates the mechanisms of TLS 1.3 <xref target="RFC8446"/> and this | at="default"/>, and this enables QUIC | |||
| enables QUIC | transmission of "0-RTT" data. This can provide interesting latency gains, but | |||
| transmission of "0-RTT" data. This can provide interesting latency gai | ||||
| ns, but | ||||
| it raises two concerns:</t> | it raises two concerns:</t> | |||
| <ol spacing="normal" type="1"><li>Adversaries could replay the 0-RTT data | ||||
| <t><list style="numbers"> | and infer its content | |||
| <t>Adversaries could replay the 0-RTT data and infer its content | from the behavior of the receiving server.</li> | |||
| from the behavior of the receiving server.</t> | <li>The 0-RTT mechanism relies on TLS session resumption, which can prov | |||
| <t>The 0-RTT mechanism relies on TLS session resumption, which can provide | ide | |||
| linkability between successive client sessions.</t> | linkability between successive client sessions.</li> | |||
| </list></t> | </ol> | |||
| <t>These issues are developed in Sections <xref | ||||
| <t>These issues are developed in <xref target="privacy-issues-with-0-rtt-data"/> | target="privacy-issues-with-0-rtt-data" | |||
| and | format="counter"/> and <xref | |||
| <xref target="privacy-issues-with-session-resumption"/>.</t> | target="privacy-issues-with-session-resumption" | |||
| format="counter"/>.</t> | ||||
| <section anchor="privacy-issues-with-0-rtt-data"><name>Privacy Issues With 0-RTT | <section anchor="privacy-issues-with-0-rtt-data" numbered="true" toc="defa | |||
| data</name> | ult"> | |||
| <name>Privacy Issues with 0-RTT data</name> | ||||
| <t>The 0-RTT data can be replayed by adversaries. That data may trigger queries | <t>The 0-RTT data can be replayed by adversaries. That data may trigger | |||
| by | queries by | |||
| a recursive resolver to authoritative resolvers. Adversaries may be able to | a recursive resolver to authoritative resolvers. Adversaries may be able to | |||
| pick a time at which the recursive resolver outgoing traffic is observable, and | pick a time at which the recursive resolver outgoing traffic is observable and | |||
| thus find out what name was queried for in the 0-RTT data.</t> | thus find out what name was queried for in the 0-RTT data.</t> | |||
| <t>This risk is in fact a subset of the general problem of observing the | ||||
| <t>This risk is in fact a subset of the general problem of observing the behavio | behavior | |||
| r | of the recursive resolver discussed in "DNS Privacy Considerations" | |||
| of the recursive resolver discussed in "DNS Privacy Considerations" | <xref target="RFC9076" format="default"/>. The attack is partially mitigated by | |||
| <xref target="RFC9076"/>. The attack is partially mitigated by reducing the obse | reducing the observability | |||
| rvability | ||||
| of this traffic. The mandatory replay protection mechanisms in | of this traffic. The mandatory replay protection mechanisms in | |||
| TLS 1.3 <xref target="RFC8446"/> limit but do not eliminate the risk of replay. | TLS 1.3 <xref target="RFC8446" format="default"/> limit but do not eliminate the risk of replay. | |||
| 0-RTT packets can only be replayed within a narrow window, | 0-RTT packets can only be replayed within a narrow window, | |||
| which is only wide enough to account for variations in clock skew and network tr ansmission.</t> | which is only wide enough to account for variations in clock skew and network tr ansmission.</t> | |||
| <t>The recommendation for TLS 1.3 <xref target="RFC8446" format="default | ||||
| <t>The recommendation for TLS 1.3 <xref target="RFC8446"/> is that the capabilit | "/> is that the capability to use 0-RTT | |||
| y to use 0-RTT | data should be turned off by default and only enabled if the user clearly | |||
| data should be turned off by default, and only enabled if the user clearly | ||||
| understands the associated risks. In the case of DoQ, allowing 0-RTT data | understands the associated risks. In the case of DoQ, allowing 0-RTT data | |||
| provides significant performance gains, and there is a concern that a | provides significant performance gains, and there is a concern that a | |||
| recommendation to not use it would simply be ignored. Instead, a set of | recommendation to not use it would simply be ignored. Instead, a set of | |||
| practical recommendations is provided in <xref target="session-resumption-and-0- | practical recommendations is provided in Sections <xref target="session-resumpti | |||
| rtt"/> and | on-and-0-rtt" format="counter"/> and | |||
| <xref target="using-0-rtt-and-session-resumption"/>.</t> | <xref target="using-0-rtt-and-session-resumption" format="counter"/>.</t> | |||
| <t>The specifications in <xref target="session-resumption-and-0-rtt" for | ||||
| <t>The specifications in <xref target="session-resumption-and-0-rtt"/> block the | mat="default"/> block the most obvious | |||
| most obvious | risks of replay attacks, as they only allow for transactions that will | |||
| risks of replay attacks, as they only allows for transactions that will | ||||
| not change the long-term state of the server.</t> | not change the long-term state of the server.</t> | |||
| <t>The attacks described above apply to the stub resolver to recursive r | ||||
| <t>The attacks described above apply to the stub resolver to recursive | esolver scenario, but similar attacks might be envisaged in the | |||
| resolver scenario, but similar attacks might be envisaged in the | ||||
| recursive resolver to authoritative resolver scenario, and the | recursive resolver to authoritative resolver scenario, and the | |||
| same mitigations apply.</t> | same mitigations apply.</t> | |||
| </section> | ||||
| </section> | <section anchor="privacy-issues-with-session-resumption" numbered="true" t | |||
| <section anchor="privacy-issues-with-session-resumption"><name>Privacy Issues Wi | oc="default"> | |||
| th Session Resumption</name> | <name>Privacy Issues with Session Resumption</name> | |||
| <t>The QUIC session resumption mechanism reduces the cost of re-establis | ||||
| <t>The QUIC session resumption mechanism reduces the cost of re-establishing ses | hing sessions | |||
| sions | ||||
| and enables 0-RTT data. There is a linkability issue associated with session | and enables 0-RTT data. There is a linkability issue associated with session | |||
| resumption, if the same resumption token is used several times. Attackers on pat h | resumption, if the same resumption token is used several times. Attackers on pat h | |||
| between client and server could observe repeated usage of the token and | between client and server could observe repeated usage of the token and | |||
| use that to track the client over time or over multiple locations.</t> | use that to track the client over time or over multiple locations.</t> | |||
| <t>The session resumption mechanism allows servers to correlate the resu | ||||
| <t>The session resumption mechanism allows servers to correlate the resumed sess | med sessions | |||
| ions | with the initial sessions and thus to track the client. This creates a virtual | |||
| with the initial sessions, and thus to track the client. This creates a virtual | ||||
| long duration session. The series of queries in that session can be used by the | long duration session. The series of queries in that session can be used by the | |||
| server to identify the client. Servers can most probably do that already if | server to identify the client. Servers can most probably do that already if | |||
| the client address remains constant, but session resumption tickets also enable | the client address remains constant, but session resumption tickets also enable | |||
| tracking after changes of the client's address.</t> | tracking after changes of the client's address.</t> | |||
| <t>The recommendations in <xref target="using-0-rtt-and-session-resumpti | ||||
| <t>The recommendations in <xref target="using-0-rtt-and-session-resumption"/> ar | on" format="default"/> are designed to | |||
| e designed to | ||||
| mitigate these risks. Using session tickets only once mitigates | mitigate these risks. Using session tickets only once mitigates | |||
| the risk of tracking by third parties. Refusing to resume a session if addresses | the risk of tracking by third parties. Refusing to resume a session if addresses | |||
| change mitigates the incremental risk of tracking by the server (but the risk of | change mitigates the incremental risk of tracking by the server (but the risk of | |||
| tracking by IP address remains).</t> | tracking by IP address remains).</t> | |||
| <t>The privacy trade-offs here may be context specific. Stub resolvers w | ||||
| <t>The privacy trade-offs here may be context specific. Stub resolvers will have | ill have a strong | |||
| a strong | ||||
| motivation to prefer privacy over latency since they often change location. Howe ver, | motivation to prefer privacy over latency since they often change location. Howe ver, | |||
| recursive resolvers that use a small set of static IP addresses are more likely to prefer the reduced | recursive resolvers that use a small set of static IP addresses are more likely to prefer the reduced | |||
| latency provided by session resumption and may consider this a valid reason to u se | latency provided by session resumption and may consider this a valid reason to u se | |||
| resumption tickets even if the IP address changed between sessions.</t> | resumption tickets even if the IP address changed between sessions.</t> | |||
| <t>Encrypted zone transfer (<xref target="RFC9103"/>) explicitly does | ||||
| <t>Encrypted zone transfer (RFC9103) explicitly does | not attempt to hide the identity of the parties involved in the transfer; at the | |||
| not attempt to hide the identity of the parties involved in the transfer, but at | same time, such transfers are not particularly latency sensitive. This means tha | |||
| the | t | |||
| same time such transfers are not particularly latency sensitive. This means that | ||||
| applications supporting zone transfers may decide to apply the same | applications supporting zone transfers may decide to apply the same | |||
| protections as stub to recursive applications.</t> | protections as stub to recursive applications.</t> | |||
| </section> | ||||
| </section> | <section anchor="privacy-issues-with-address-validation-tokens" numbered=" | |||
| <section anchor="privacy-issues-with-address-validation-tokens"><name>Privacy Is | true" toc="default"> | |||
| sues With Address Validation Tokens</name> | <name>Privacy Issues with Address Validation Tokens</name> | |||
| <t>QUIC specifies address validation mechanisms in <xref section="8" sec | ||||
| <t>QUIC specifies address validation mechanisms in <xref section="8" sectionForm | tionFormat="of" target="RFC9000" format="default"/>. Use | |||
| at="of" target="RFC9000"/>. Use | ||||
| of an address validation token allows QUIC servers to avoid an extra RTT for | of an address validation token allows QUIC servers to avoid an extra RTT for | |||
| new connections. Address validation tokens are typically tied to an IP address. | new connections. Address validation tokens are typically tied to an IP address. | |||
| QUIC clients normally only use these tokens when setting up a new connection | QUIC clients normally only use these tokens when setting up a new connection | |||
| from a previously used address. However, clients are not always aware that they | from a previously used address. However, clients are not always aware that they | |||
| are using a new address. This could be due to NAT, or because the client does | are using a new address. This could be due to NAT, or because the client does | |||
| not have an API available to check if the IP address has changed (which can be | not have an API available to check if the IP address has changed (which can be | |||
| quite often for IPv6). There is a linkability risk if clients mistakenly use | quite often for IPv6). There is a linkability risk if clients mistakenly use | |||
| address validation tokens after unknowingly moving to a new location.</t> | address validation tokens after unknowingly moving to a new location.</t> | |||
| <t>The recommendations in <xref target="using-0-rtt-and-session-resumpti | ||||
| <t>The recommendations in <xref target="using-0-rtt-and-session-resumption"/> mi | on" format="default"/> mitigates | |||
| tigates | ||||
| this risk by tying the usage of the NEW_TOKEN to that of session resumption, | this risk by tying the usage of the NEW_TOKEN to that of session resumption, | |||
| though this recommendation does not cover the case where the client is unaware | though this recommendation does not cover the case where the client is unaware | |||
| of the address change.</t> | of the address change.</t> | |||
| </section> | ||||
| </section> | <section anchor="privacy-issues-with-long-duration-sessions" numbered="tru | |||
| <section anchor="privacy-issues-with-long-duration-sessions"><name>Privacy Issue | e" toc="default"> | |||
| s With Long Duration Sessions</name> | <name>Privacy Issues with Long Duration Sessions</name> | |||
| <t>A potential alternative to session resumption is the use of long dura | ||||
| <t>A potential alternative to session resumption is the use of long duration ses | tion sessions: | |||
| sions: | ||||
| if a session remains open for a long time, new queries can be sent without incur ring | if a session remains open for a long time, new queries can be sent without incur ring | |||
| connection establishment delays. It is worth pointing out that the two solutions have | connection establishment delays. It is worth pointing out that the two solutions have | |||
| similar privacy characteristics. Session resumption may allow servers to keep tr ack | similar privacy characteristics. Session resumption may allow servers to keep tr ack | |||
| of the IP addresses of clients, but long duration sessions have the same effect. </t> | of the IP addresses of clients, but long duration sessions have the same effect. </t> | |||
| <t>In particular, a DoQ implementation might take advantage of the conne | ||||
| <t>In particular, a DoQ implementation might take advantage of the connection mi | ction migration | |||
| gration | features of QUIC to maintain a session even if the client's connectivity changes | |||
| features of QUIC to maintain a session even if the client's connectivity cha | , | |||
| nges, | for example, if the client migrates from a Wi-Fi connection to a cellular networ | |||
| for example if the client migrates from a Wi-Fi connection to a cellular network | k | |||
| connection, and then to another Wi-Fi connection. The server would be | connection and then to another Wi-Fi connection. The server would be | |||
| able to track the client location by monitoring the succession of IP addresses | able to track the client location by monitoring the succession of IP addresses | |||
| used by the long duration connection.</t> | used by the long duration connection.</t> | |||
| <t>The recommendation in <xref target="controlling-connection-migration- | ||||
| <t>The recommendation in <xref target="controlling-connection-migration-for-priv | for-privacy" format="default"/> mitigates | |||
| acy"/> mitigates | ||||
| the privacy concerns related to long duration sessions using multiple client add resses.</t> | the privacy concerns related to long duration sessions using multiple client add resses.</t> | |||
| </section> | ||||
| </section> | <section anchor="traffic-analysis" numbered="true" toc="default"> | |||
| <section anchor="traffic-analysis"><name>Traffic Analysis</name> | <name>Traffic Analysis</name> | |||
| <t>Even though QUIC packets are encrypted, adversaries can gain informat | ||||
| <t>Even though QUIC packets are encrypted, adversaries can gain information from | ion from | |||
| observing packet lengths, in both queries and responses, as well as packet | observing packet lengths, in both queries and responses, as well as packet | |||
| timing. Many DNS requests are emitted by web browsers. Loading a specific web | timing. Many DNS requests are emitted by web browsers. Loading a specific web | |||
| page may require resolving dozens of DNS names. If an application adopts a | page may require resolving dozens of DNS names. If an application adopts a | |||
| simple mapping of one query or response per packet, or "one QUIC STREAM fra | simple mapping of one query or response per packet, or "one QUIC STREAM frame | |||
| me | per packet", then the succession of packet lengths may provide enough | |||
| per packet", then the succession of packet lengths may provide enough | ||||
| information to identify the requested site.</t> | information to identify the requested site.</t> | |||
| <t>Implementations <bcp14>SHOULD</bcp14> use the mechanisms defined in < | ||||
| <t>Implementations SHOULD use the mechanisms defined in <xref target="padding"/> | xref target="padding" format="default"/> to mitigate | |||
| to mitigate | ||||
| this attack.</t> | this attack.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="iana-considerations" numbered="true" toc="default"> | |||
| <section anchor="iana-considerations"><name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <section anchor="registration-of-doq-identification-string" numbered="true | ||||
| <section anchor="registration-of-doq-identification-string"><name>Registration o | " toc="default"> | |||
| f DoQ Identification String</name> | <name>Registration of a DoQ Identification String</name> | |||
| <t>This document creates a new registration for the identification of Do | ||||
| <t>This document creates a new registration for the identification of DoQ in the | Q in the | |||
| "Application Layer Protocol Negotiation (ALPN) Protocol IDs" registry | "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry | |||
| <xref target="RFC7301"/>.</t> | <xref target="RFC7301" format="default"/>.</t> | |||
| <t>The "doq" string identifies DoQ:</t> | ||||
| <t>The "doq" string identifies DoQ:</t> | <dl> | |||
| <dt> | ||||
| <dl> | ||||
| <dt> | ||||
| Protocol: </dt> | Protocol: </dt> | |||
| <dd> | <dd> | |||
| <t>DoQ</t> | <t>DoQ</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Identification Sequence: </dt> | Identification Sequence: </dt> | |||
| <dd> | <dd> | |||
| <t>0x64 0x6F 0x71 ("doq")</t> | <t>0x64 0x6F 0x71 ("doq")</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Specification: </dt> | Specification: </dt> | |||
| <dd> | <dd> | |||
| <t>This document</t> | <t>This document</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | ||||
| </section> | <section anchor="reservation-of-dedicated-port" numbered="true" toc="defau | |||
| <section anchor="reservation-of-dedicated-port"><name>Reservation of Dedicated P | lt"> | |||
| ort</name> | <name>Reservation of a Dedicated Port</name> | |||
| <t>For both TCP and UDP, port 853 is currently reserved for "DNS query-r | ||||
| <t>For both TCP and UDP port 853 is currently reserved for 'DNS query-respon | esponse | |||
| se | protocol run over TLS/DTLS" <xref target="RFC7858" format="default"/>.</t> | |||
| protocol run over TLS/DTLS' <xref target="RFC7858"/>.</t> | <t>However, the specification for DNS over DTLS (DoD) | |||
| <xref target="RFC8094" format="default"/> is experimental, limited to stub to re | ||||
| <t>However, the specification for DNS over DTLS (DoD) | solver, and no | |||
| <xref target="RFC8094"/> is experimental, limited to stub to resolver, and no | implementations or deployments currently exist to the authors' knowledge (even t | |||
| implementations or deployments currently exist to the authors' knowledge (ev | hough | |||
| en though | ||||
| several years have passed since the specification was published).</t> | several years have passed since the specification was published).</t> | |||
| <t>This specification additionally reserves the use of UDP port 853 for | ||||
| <t>This specification proposes to additionally reserve the use of UDP port 853 f | DoQ. QUIC version 1 was designed to be able to coexist with other protocols on | |||
| or | the same port, including DTLS; see <xref section="17.2" sectionFormat="of" targe | |||
| DoQ. QUIC version 1 was designed to be able to co-exist with other protocols on | t="RFC9000" format="default"/>. This means | |||
| the same port, including DTLS , see <xref section="17.2" sectionFormat="of" targ | that deployments that serve DoD and DoQ (QUIC version 1) on the | |||
| et="RFC9000"/>. This means | ||||
| that deployments that serve DNS over DTLS and DNS over QUIC (QUIC version 1) on | ||||
| the | ||||
| same port will be able to demultiplex the two due to the second most | same port will be able to demultiplex the two due to the second most | |||
| significant bit in each UDP payload. Such deployments ought to check the | significant bit in each UDP payload. Such deployments ought to check the | |||
| signatures of future versions or extensions (e.g., <xref target="I-D.ietf-quic-b it-grease"/>) | signatures of future versions or extensions (e.g., <xref target="I-D.ietf-quic-b it-grease" format="default"/>) | |||
| of QUIC and DTLS before deploying them to serve DNS on the same port.</t> | of QUIC and DTLS before deploying them to serve DNS on the same port.</t> | |||
| <t>IANA has updated the following value in the "Service Name and Transpo | ||||
| <t>IANA is requested to update the following value in the "Service Name and | rt | |||
| Transport | Protocol Port Number Registry" in the System range. The registry for that range | |||
| Protocol Port Number Registry" in the System Range. The registry for that r | requires IETF Review or IESG Approval <xref target="RFC6335" format="default"/>. | |||
| ange | </t> | |||
| requires IETF Review or IESG Approval <xref target="RFC6335"/>.</t> | <dl> | |||
| <dt> | ||||
| <dl> | ||||
| <dt> | ||||
| Service Name: </dt> | Service Name: </dt> | |||
| <dd> | <dd> | |||
| <t>domain-s</t> | <t>domain-s</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Port Number: </dt> | Port Number: </dt> | |||
| <dd> | <dd> | |||
| <t>853</t> | <t>853</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Transport Protocol(s): </dt> | Transport Protocol(s): </dt> | |||
| <dd> | <dd> | |||
| <t>UDP</t> | <t>UDP</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Assignee: </dt> | Assignee: </dt> | |||
| <dd> | <dd> | |||
| <t>IESG</t> | <t>IESG</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Contact: </dt> | Contact: </dt> | |||
| <dd> | <dd> | |||
| <t>IETF Chair</t> | <t>IETF Chair</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Description: </dt> | Description: </dt> | |||
| <dd> | <dd> | |||
| <t>DNS query-response protocol run over DTLS or QUIC</t> | <t>DNS query-response protocol run over DTLS or QUIC</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Reference: </dt> | Reference: </dt> | |||
| <dd> | <dd> | |||
| <t><xref target="RFC7858"/><xref target="RFC8094"/> This document</t> | <t><xref target="RFC7858" format="default"/><xref target="RFC8094" f | |||
| </dd> | ormat="default"/> This document</t> | |||
| </dl> | </dd> | |||
| </dl> | ||||
| <t>Additionally, IANA is requested to update the Description field for the | <t>Additionally, IANA has updated the Description field for the | |||
| corresponding TCP port 853 allocation to be 'DNS query-response protocol run | corresponding TCP port 853 allocation to be "DNS query-response protocol run | |||
| over TLS' and to remove <xref target="RFC8094"/> from the TCP allocation' | over TLS" and removed <xref target="RFC8094"/> from the TCP allocation's Referen | |||
| ;s Reference field | ce field for consistency and clarity.</t> | |||
| for consistency and clarity.</t> | ||||
| <t>(UPDATE ON IANA REQUEST: THIS SENTENCE TO BE REMOVED BEFORE PUBLICATION) Revi | ||||
| ew by the port experts on 13th December 2021 determined that the proposed update | ||||
| s to the existing port allocation were acceptable and will be made when this doc | ||||
| ument is approved for publication.</t> | ||||
| </section> | ||||
| <section anchor="reservation-of-extended-dns-error-code-too-early"><name>Reserva | ||||
| tion of Extended DNS Error Code Too Early</name> | ||||
| <t>IANA is requested to add the following value to | ||||
| the Extended DNS Error Codes registry <xref target="RFC8914"/>:</t> | ||||
| <dl> | </section> | |||
| <dt> | <section anchor="reservation-of-extended-dns-error-code-too-early" numbere | |||
| d="true" toc="default"> | ||||
| <name>Reservation of an Extended DNS Error Code: Too Early</name> | ||||
| <t>IANA has registered the following value in | ||||
| the "Extended DNS Error Codes" registry <xref target="RFC8914" format="default"/ | ||||
| >:</t> | ||||
| <dl> | ||||
| <dt> | ||||
| INFO-CODE: </dt> | INFO-CODE: </dt> | |||
| <dd> | <dd> | |||
| <t>TBD</t> | <t>26</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Purpose: </dt> | Purpose: </dt> | |||
| <dd> | <dd> | |||
| <t>Too Early</t> | <t>Too Early</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Reference: </dt> | Reference: </dt> | |||
| <dd> | <dd> | |||
| <t>This document</t> | <t>This document</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | ||||
| </section> | <section anchor="iana-error-codes" numbered="true" toc="default"> | |||
| <section anchor="iana-error-codes"><name>DNS over QUIC Error Codes Registry</nam | <name>DNS-over-QUIC Error Codes Registry</name> | |||
| e> | ||||
| <t>IANA [SHALL add/has added] a registry for "DNS over QUIC Error Codes&quo | ||||
| t; on the | ||||
| "Domain Name System (DNS) Parameters" web page.</t> | ||||
| <t>The "DNS over QUIC Error Codes" registry governs a 62-bit space. Th | <t>IANA has added a registry for "DNS-over-QUIC Error Codes" on the | |||
| is space is | "Domain Name System (DNS) Parameters" web page.</t> | |||
| <t>The "DNS-over-QUIC Error Codes" registry governs a 62-bit space. This | ||||
| space is | ||||
| split into three regions that are governed by different policies:</t> | split into three regions that are governed by different policies:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>Permanent registrations for values between 0x00 and 0x3f (in hexad | |||
| <t>Permanent registrations for values between 0x00 and 0x3f (in hexadecimal; | ecimal; | |||
| inclusive), which are assigned using Standards Action or IESG Approval as | inclusive), which are assigned using Standards Action or IESG Approval as | |||
| defined in Section <xref target="RFC8126" section="4.9" sectionFormat="bare"/> a | defined in Sections <xref target="RFC8126" section="4.9" sectionFormat="bare"/> | |||
| nd Section <xref target="RFC8126" section="4.10" sectionFormat="bare"/> of <xref | and <xref target="RFC8126" section="4.10" sectionFormat="bare"/> of <xref targe | |||
| target="RFC8126"/></t> | t="RFC8126" format="default"/></li> | |||
| <t>Permanent registrations for values larger than 0x3f, which are assigned | <li>Permanent registrations for values larger than 0x3f, which are ass | |||
| using the Specification Required policy (<xref target="RFC8126"/>)</t> | igned | |||
| <t>Provisional registrations for values larger than 0x3f, which require Expert | using the Specification Required policy (<xref target="RFC8126" format="default" | |||
| Review, as defined in <xref section="4.5" sectionFormat="of" target="RFC8126"/>. | />)</li> | |||
| </t> | <li>Provisional registrations for values larger than 0x3f, which requi | |||
| </list></t> | re Expert | |||
| Review, as defined in <xref section="4.5" sectionFormat="of" target="RFC8126" fo | ||||
| <t>Provisional reservations share the range of values larger than 0x3f | rmat="default"/>.</li> | |||
| with some permanent registrations. This is by design, to enable conversion | </ul> | |||
| <t>Provisional reservations share the range of values larger than 0x3f | ||||
| with some permanent registrations. This is by design to enable conversion | ||||
| of provisional registrations into permanent registrations without requiring | of provisional registrations into permanent registrations without requiring | |||
| changes in deployed systems. (This design is aligned with the principles | changes in deployed systems. (This design is aligned with the principles | |||
| set in <xref section="22" sectionFormat="of" target="RFC9000"/>.)</t> | set in <xref section="22" sectionFormat="of" target="RFC9000" format="default"/> | |||
| .)</t> | ||||
| <t>Registrations in this registry MUST include the following fields:</t> | <t>Registrations in this registry <bcp14>MUST</bcp14> include the follow | |||
| ing fields:</t> | ||||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| Value: </dt> | Value: </dt> | |||
| <dd> | <dd> | |||
| <t>The assigned codepoint.</t> | <t>The assigned codepoint</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Status: </dt> | Status: </dt> | |||
| <dd> | <dd> | |||
| <t>"Permanent" or "Provisional".</t> | <t>"Permanent" or "Provisional"</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Contact: </dt> | Contact: </dt> | |||
| <dd> | <dd> | |||
| <t>Contact details for the registrant.</t> | <t>Contact details for the registrant</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>In addition, permanent registrations <bcp14>MUST</bcp14> include:</t> | ||||
| <t>In addition, permanent registrations MUST include:</t> | <dl> | |||
| <dt> | ||||
| <dl> | ||||
| <dt> | ||||
| Error: </dt> | Error: </dt> | |||
| <dd> | <dd> | |||
| <t>A short mnemonic for the parameter.</t> | <t>A short mnemonic for the parameter</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Specification: </dt> | Specification: </dt> | |||
| <dd> | <dd> | |||
| <t>A reference to a publicly available specification for the value (optional | <t>A reference to a publicly available specification for the value ( | |||
| for provisional registrations).</t> | optional for provisional registrations)</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Description: </dt> | Description: </dt> | |||
| <dd> | <dd> | |||
| <t>A brief description of the error code semantics, which MAY be a summary i | <t>A brief description of the error code semantics, which <bcp14>MAY | |||
| f a | </bcp14> be a summary if a | |||
| specification reference is provided.</t> | specification reference is provided</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>Provisional registrations of codepoints are intended to allow for pri | ||||
| <t>Provisional registrations of codepoints are intended to allow for private use | vate use | |||
| and experimentation with extensions to DNS over QUIC. However, | and experimentation with extensions to DoQ. However, | |||
| provisional registrations could be reclaimed and reassigned for another purpose. | provisional registrations could be reclaimed and reassigned for other purposes. | |||
| In addition to the parameters listed above, provisional registrations MUST inclu | In addition to the parameters listed above, provisional registrations <bcp14>MUS | |||
| de:</t> | T</bcp14> include:</t> | |||
| <dl> | ||||
| <dl> | <dt> | |||
| <dt> | ||||
| Date: </dt> | Date: </dt> | |||
| <dd> | <dd> | |||
| <t>The date of last update to the registration.</t> | <t>The date of last update to the registration</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>A request to update the date on any provisional | ||||
| <t>A request to update the date on any provisional | ||||
| registration can be made without review from the designated expert(s).</t> | registration can be made without review from the designated expert(s).</t> | |||
| <t>The initial content of this registry is shown in <xref target="iana-e | ||||
| <t>The initial contents of this registry are shown in <xref target="iana-error-t | rror-table" format="default"/> and all | |||
| able"/> and all | ||||
| entries share the following fields:</t> | entries share the following fields:</t> | |||
| <dl> | ||||
| <dl> | <dt> | |||
| <dt> | ||||
| Status: </dt> | Status: </dt> | |||
| <dd> | <dd> | |||
| <t>Permanent</t> | <t>Permanent</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Contact: </dt> | Contact: </dt> | |||
| <dd> | <dd> | |||
| <t>DPRIVE WG</t> | <t>DPRIVE WG</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Specification: </dt> | Specification: </dt> | |||
| <dd> | <dd> | |||
| <t><xref target="doq-error-codes"/></t> | <t><xref target="doq-error-codes" format="default"/></t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <table anchor="iana-error-table" align="center"> | ||||
| <texttable title="Initial DNS over QUIC Error Codes Entries" anchor="iana-error- | <name>Initial DNS-over-QUIC Error Codes Entries</name> | |||
| table"> | <thead> | |||
| <ttcol align='left'>Value</ttcol> | <tr> | |||
| <ttcol align='left'>Error</ttcol> | <th align="left">Value</th> | |||
| <ttcol align='left'>Description</ttcol> | <th align="left">Error</th> | |||
| <c>0x0</c> | <th align="left">Description</th> | |||
| <c>DOQ_NO_ERROR</c> | </tr> | |||
| <c>No error</c> | </thead> | |||
| <c>0x1</c> | <tbody> | |||
| <c>DOQ_INTERNAL_ERROR</c> | <tr> | |||
| <c>Implementation error</c> | <td align="left">0x0</td> | |||
| <c>0x2</c> | <td align="left">DOQ_NO_ERROR</td> | |||
| <c>DOQ_PROTOCOL_ERROR</c> | <td align="left">No error</td> | |||
| <c>Generic protocol violation</c> | </tr> | |||
| <c>0x3</c> | <tr> | |||
| <c>DOQ_REQUEST_CANCELLED</c> | <td align="left">0x1</td> | |||
| <c>Request cancelled by client</c> | <td align="left">DOQ_INTERNAL_ERROR</td> | |||
| <c>0x4</c> | <td align="left">Implementation error</td> | |||
| <c>DOQ_EXCESSIVE_LOAD</c> | </tr> | |||
| <c>Closing a connection for excessive load</c> | <tr> | |||
| <c>0x5</c> | <td align="left">0x2</td> | |||
| <c>DOQ_UNSPECIFIED_ERROR</c> | <td align="left">DOQ_PROTOCOL_ERROR</td> | |||
| <c>No error reason specified</c> | <td align="left">Generic protocol violation</td> | |||
| <c>0xd098ea5e</c> | </tr> | |||
| <c>DOQ_ERROR_RESERVED</c> | <tr> | |||
| <c>Alternative error code used for tests</c> | <td align="left">0x3</td> | |||
| </texttable> | <td align="left">DOQ_REQUEST_CANCELLED</td> | |||
| <td align="left">Request cancelled by client</td> | ||||
| </section> | </tr> | |||
| </section> | <tr> | |||
| <section anchor="acknowledgements"><name>Acknowledgements</name> | <td align="left">0x4</td> | |||
| <td align="left">DOQ_EXCESSIVE_LOAD</td> | ||||
| <t>This document liberally borrows text from the HTTP-3 specification | <td align="left">Closing a connection for excessive load</td> | |||
| <xref target="I-D.ietf-quic-http"/> edited by Mike Bishop, and from the DoT spec | </tr> | |||
| ification | <tr> | |||
| <xref target="RFC7858"/> authored by Zi Hu, Liang Zhu, John Heidemann, Allison M | <td align="left">0x5</td> | |||
| ankin, | <td align="left">DOQ_UNSPECIFIED_ERROR</td> | |||
| Duane Wessels, and Paul Hoffman.</t> | <td align="left">No error reason specified</td> | |||
| </tr> | ||||
| <t>The privacy issue with 0-RTT data and session resumption were analyzed by Dan | <tr> | |||
| iel | <td align="left">0xd098ea5e</td> | |||
| Kahn Gillmor (DKG) in a message to the IETF "DPRIVE" working group <xr | <td align="left">DOQ_ERROR_RESERVED</td> | |||
| ef target="DNS0RTT"/>.</t> | <td align="left">Alternative error code used for tests</td> | |||
| </tr> | ||||
| <t>Thanks to Tony Finch for an extensive review of the initial version of this | </tbody> | |||
| draft, and to Robert Evans for the discussion of 0-RTT privacy issues. | </table> | |||
| Early reviews by Paul Hoffman and Martin Thomson and interoperability tests | </section> | |||
| conducted by Stephane Bortzmeyer helped improve the definition of the protocol.< | </section> | |||
| /t> | ||||
| <t>Thanks also to Martin Thomson and Martin Duke for their later reviews focussi | ||||
| ng | ||||
| on the low level QUIC details which helped clarify several aspects of DoQ. Thank | ||||
| s | ||||
| to Andrey Meshkov, Loganaden Velvindron, Lucas Pardue, Matt Joras, Mirja Kuelewi | ||||
| nd, | ||||
| Brian Trammell and Phillip Hallam-Baker for their reviews and contributions.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <displayreference target="I-D.ietf-dnsop-rfc8499bis" to="DNS-TERMS"/> | ||||
| <displayreference target="I-D.ietf-quic-bit-grease" to="GREASING-QUIC"/> | ||||
| <displayreference target="I-D.ietf-quic-http" to="HTTP/3"/> | ||||
| <references title='Normative References'> | <references> | |||
| <name>References</name> | ||||
| <reference anchor='RFC1034' target='https://www.rfc-editor.org/info/rfc1034'> | <references> | |||
| <front> | <name>Normative References</name> | |||
| <title>Domain names - concepts and facilities</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <author fullname='P.V. Mockapetris' initials='P.V.' surname='Mockapetris'><organ | FC.1034.xml"/> | |||
| ization/></author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <date month='November' year='1987'/> | FC.1035.xml"/> | |||
| <abstract><t>This RFC is the revised basic definition of The Domain Name System. | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| It obsoletes RFC-882. This memo describes the domain style names and their us | FC.9000.xml"/> | |||
| ed for host address look up and electronic mail forwarding. It discusses the cl | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| ients and servers in the domain name system and the protocol used between them.< | FC.9001.xml"/> | |||
| /t></abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </front> | FC.7858.xml"/> | |||
| <seriesInfo name='STD' value='13'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <seriesInfo name='RFC' value='1034'/> | FC.8310.xml"/> | |||
| <seriesInfo name='DOI' value='10.17487/RFC1034'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </reference> | FC.1995.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <reference anchor='RFC1035' target='https://www.rfc-editor.org/info/rfc1035'> | FC.2119.xml"/> | |||
| <front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <title>Domain names - implementation and specification</title> | FC.8174.xml"/> | |||
| <author fullname='P.V. Mockapetris' initials='P.V.' surname='Mockapetris'><organ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| ization/></author> | FC.6891.xml"/> | |||
| <date month='November' year='1987'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <abstract><t>This RFC is the revised specification of the protocol and format us | FC.8914.xml"/> | |||
| ed in the implementation of the Domain Name System. It obsoletes RFC-883. This | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| memo documents the details of the domain name client - server communication.</t> | FC.9103.xml"/> | |||
| </abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </front> | FC.7830.xml"/> | |||
| <seriesInfo name='STD' value='13'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <seriesInfo name='RFC' value='1035'/> | FC.8467.xml"/> | |||
| <seriesInfo name='DOI' value='10.17487/RFC1035'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </reference> | FC.7766.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <reference anchor='RFC9000' target='https://www.rfc-editor.org/info/rfc9000'> | FC.8446.xml"/> | |||
| <front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title> | FC.5936.xml"/> | |||
| <author fullname='J. Iyengar' initials='J.' role='editor' surname='Iyengar'><org | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| anization/></author> | FC.7301.xml"/> | |||
| <author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><org | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| anization/></author> | FC.8126.xml"/> | |||
| <date month='May' year='2021'/> | </references> | |||
| <abstract><t>This document defines the core of the QUIC transport protocol. QUI | <references> | |||
| C provides applications with flow-controlled streams for structured communicatio | <name>Informative References</name> | |||
| n, low-latency connection establishment, and network path migration. QUIC includ | <reference anchor="DNS0RTT" target="https://www.ietf.org/mail-archive/we | |||
| es security measures that ensure confidentiality, integrity, and availability in | b/dns-privacy/current/msg01276.html"> | |||
| a range of deployment circumstances. Accompanying documents describe the integ | <front> | |||
| ration of TLS for key negotiation, loss detection, and an exemplary congestion c | <title>DNS + 0-RTT</title> | |||
| ontrol algorithm.</t></abstract> | <author initials="D." surname="Kahn Gillmor" fullname="Daniel Kahn G | |||
| </front> | illmor"> | |||
| <seriesInfo name='RFC' value='9000'/> | <organization/> | |||
| <seriesInfo name='DOI' value='10.17487/RFC9000'/> | </author> | |||
| </reference> | <date year="2016" month="April" day="06"/> | |||
| </front> | ||||
| <reference anchor='RFC9001' target='https://www.rfc-editor.org/info/rfc9001'> | <seriesInfo name="Message" value="to DNS-Privacy WG mailing list"/> | |||
| <front> | </reference> | |||
| <title>Using TLS to Secure QUIC</title> | ||||
| <author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><org | ||||
| anization/></author> | ||||
| <author fullname='S. Turner' initials='S.' role='editor' surname='Turner'><organ | ||||
| ization/></author> | ||||
| <date month='May' year='2021'/> | ||||
| <abstract><t>This document describes how Transport Layer Security (TLS) is used | ||||
| to secure QUIC.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='9001'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC9001'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7858' target='https://www.rfc-editor.org/info/rfc7858'> | ||||
| <front> | ||||
| <title>Specification for DNS over Transport Layer Security (TLS)</title> | ||||
| <author fullname='Z. Hu' initials='Z.' surname='Hu'><organization/></author> | ||||
| <author fullname='L. Zhu' initials='L.' surname='Zhu'><organization/></author> | ||||
| <author fullname='J. Heidemann' initials='J.' surname='Heidemann'><organization/ | ||||
| ></author> | ||||
| <author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></aut | ||||
| hor> | ||||
| <author fullname='D. Wessels' initials='D.' surname='Wessels'><organization/></a | ||||
| uthor> | ||||
| <author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></a | ||||
| uthor> | ||||
| <date month='May' year='2016'/> | ||||
| <abstract><t>This document describes the use of Transport Layer Security (TLS) t | ||||
| o provide privacy for DNS. Encryption provided by TLS eliminates opportunities | ||||
| for eavesdropping and on-path tampering with DNS queries in the network, such as | ||||
| discussed in RFC 7626. In addition, this document specifies two usage profiles | ||||
| for DNS over TLS and provides advice on performance considerations to minimize | ||||
| overhead from using TCP and TLS with DNS.</t><t>This document focuses on securin | ||||
| g stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It | ||||
| does not prevent future applications of the protocol to recursive-to-authoritat | ||||
| ive traffic.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7858'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7858'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8310' target='https://www.rfc-editor.org/info/rfc8310'> | ||||
| <front> | ||||
| <title>Usage Profiles for DNS over TLS and DNS over DTLS</title> | ||||
| <author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='D. Gillmor' initials='D.' surname='Gillmor'><organization/></a | ||||
| uthor> | ||||
| <author fullname='T. Reddy' initials='T.' surname='Reddy'><organization/></autho | ||||
| r> | ||||
| <date month='March' year='2018'/> | ||||
| <abstract><t>This document discusses usage profiles, based on one or more authen | ||||
| tication mechanisms, which can be used for DNS over Transport Layer Security (TL | ||||
| S) or Datagram TLS (DTLS). These profiles can increase the privacy of DNS trans | ||||
| actions compared to using only cleartext DNS. This document also specifies new | ||||
| authentication mechanisms -- it describes several ways that a DNS client can use | ||||
| an authentication domain name to authenticate a (D)TLS connection to a DNS serv | ||||
| er. Additionally, it defines (D)TLS protocol profiles for DNS clients and serve | ||||
| rs implementing DNS over (D)TLS. This document updates RFC 7858.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8310'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8310'/> | ||||
| </reference> | ||||
| <reference anchor='RFC1995' target='https://www.rfc-editor.org/info/rfc1995'> | ||||
| <front> | ||||
| <title>Incremental Zone Transfer in DNS</title> | ||||
| <author fullname='M. Ohta' initials='M.' surname='Ohta'><organization/></author> | ||||
| <date month='August' year='1996'/> | ||||
| <abstract><t>This document proposes extensions to the DNS protocols to provide a | ||||
| n incremental zone transfer (IXFR) mechanism. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='1995'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC1995'/> | ||||
| </reference> | ||||
| <reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
| <author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></a | ||||
| uthor> | ||||
| <date month='March' year='1997'/> | ||||
| <abstract><t>In many standards track documents several words are used to signify | ||||
| the requirements in the specification. These words are often capitalized. This | ||||
| document defines these words as they should be interpreted in IETF documents. | ||||
| This document specifies an Internet Best Current Practices for the Internet Comm | ||||
| unity, 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='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
| <author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></autho | ||||
| r> | ||||
| <date month='May' year='2017'/> | ||||
| <abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
| pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
| ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='8174'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
| </reference> | ||||
| <reference anchor='RFC6891' target='https://www.rfc-editor.org/info/rfc6891'> | ||||
| <front> | ||||
| <title>Extension Mechanisms for DNS (EDNS(0))</title> | ||||
| <author fullname='J. Damas' initials='J.' surname='Damas'><organization/></autho | ||||
| r> | ||||
| <author fullname='M. Graff' initials='M.' surname='Graff'><organization/></autho | ||||
| r> | ||||
| <author fullname='P. Vixie' initials='P.' surname='Vixie'><organization/></autho | ||||
| r> | ||||
| <date month='April' year='2013'/> | ||||
| <abstract><t>The Domain Name System's wire protocol includes a number of fixed f | ||||
| ields whose range has been or soon will be exhausted and does not allow requesto | ||||
| rs to advertise their capabilities to responders. This document describes backw | ||||
| ard-compatible mechanisms for allowing the protocol to grow.</t><t>This document | ||||
| updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes | ||||
| RFC 2671) based on feedback from deployment experience in several implementatio | ||||
| ns. It also obsoletes RFC 2673 ("Binary Labels in the Domain Name System&q | ||||
| uot;) and adds considerations on the use of extended labels in the DNS.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='STD' value='75'/> | ||||
| <seriesInfo name='RFC' value='6891'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6891'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8914' target='https://www.rfc-editor.org/info/rfc8914'> | ||||
| <front> | ||||
| <title>Extended DNS Errors</title> | ||||
| <author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></aut | ||||
| hor> | ||||
| <author fullname='E. Hunt' initials='E.' surname='Hunt'><organization/></author> | ||||
| <author fullname='R. Arends' initials='R.' surname='Arends'><organization/></aut | ||||
| hor> | ||||
| <author fullname='W. Hardaker' initials='W.' surname='Hardaker'><organization/>< | ||||
| /author> | ||||
| <author fullname='D. Lawrence' initials='D.' surname='Lawrence'><organization/>< | ||||
| /author> | ||||
| <date month='October' year='2020'/> | ||||
| <abstract><t>This document defines an extensible method to return additional inf | ||||
| ormation about the cause of DNS errors. Though created primarily to extend SERVF | ||||
| AIL to provide additional information about the cause of DNS and DNSSEC failures | ||||
| , the Extended DNS Errors option defined in this document allows all response ty | ||||
| pes to contain extended error information. Extended DNS Error information does n | ||||
| ot change the processing of RCODEs.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8914'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8914'/> | ||||
| </reference> | ||||
| <reference anchor='RFC9103' target='https://www.rfc-editor.org/info/rfc9103'> | ||||
| <front> | ||||
| <title>DNS Zone Transfer over TLS</title> | ||||
| <author fullname='W. Toorop' initials='W.' surname='Toorop'><organization/></aut | ||||
| hor> | ||||
| <author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='S. Sahib' initials='S.' surname='Sahib'><organization/></autho | ||||
| r> | ||||
| <author fullname='P. Aras' initials='P.' surname='Aras'><organization/></author> | ||||
| <author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></aut | ||||
| hor> | ||||
| <date month='August' year='2021'/> | ||||
| <abstract><t>DNS zone transfers are transmitted in cleartext, which gives attack | ||||
| ers the opportunity to collect the content of a zone by eavesdropping on network | ||||
| connections. The DNS Transaction Signature (TSIG) mechanism is specified to res | ||||
| trict direct zone transfer to authorized clients only, but it does not add confi | ||||
| dentiality. This document specifies the use of TLS, rather than cleartext, to pr | ||||
| event zone content collection via passive monitoring of zone transfers: XFR over | ||||
| TLS (XoT). Additionally, this specification updates RFC 1995 and RFC 5936 with | ||||
| respect to efficient use of TCP connections and RFC 7766 with respect to the rec | ||||
| ommended number of connections between a client and server for each transport.</ | ||||
| t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='9103'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC9103'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7830' target='https://www.rfc-editor.org/info/rfc7830'> | ||||
| <front> | ||||
| <title>The EDNS(0) Padding Option</title> | ||||
| <author fullname='A. Mayrhofer' initials='A.' surname='Mayrhofer'><organization/ | ||||
| ></author> | ||||
| <date month='May' year='2016'/> | ||||
| <abstract><t>This document specifies the EDNS(0) "Padding" option, whi | ||||
| ch allows DNS clients and servers to pad request and response messages by a vari | ||||
| able number of octets.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7830'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7830'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8467' target='https://www.rfc-editor.org/info/rfc8467'> | ||||
| <front> | ||||
| <title>Padding Policies for Extension Mechanisms for DNS (EDNS(0))</title> | ||||
| <author fullname='A. Mayrhofer' initials='A.' surname='Mayrhofer'><organization/ | ||||
| ></author> | ||||
| <date month='October' year='2018'/> | ||||
| <abstract><t>RFC 7830 specifies the "Padding" option for Extension Mec | ||||
| hanisms for DNS (EDNS(0)) but does not specify the actual padding length for spe | ||||
| cific applications. This memo lists the possible options ("padding policie | ||||
| s"), discusses the implications of each option, and provides a recommended | ||||
| (experimental) option.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8467'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8467'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7766' target='https://www.rfc-editor.org/info/rfc7766'> | ||||
| <front> | ||||
| <title>DNS Transport over TCP - Implementation Requirements</title> | ||||
| <author fullname='J. Dickinson' initials='J.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='R. Bellis' initials='R.' surname='Bellis'><organization/></aut | ||||
| hor> | ||||
| <author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></aut | ||||
| hor> | ||||
| <author fullname='D. Wessels' initials='D.' surname='Wessels'><organization/></a | ||||
| uthor> | ||||
| <date month='March' year='2016'/> | ||||
| <abstract><t>This document specifies the requirement for support of TCP as a tra | ||||
| nsport protocol for DNS implementations and provides guidelines towards DNS-over | ||||
| -TCP performance on par with that of DNS-over-UDP. This document obsoletes RFC 5 | ||||
| 966 and therefore updates RFC 1035 and RFC 1123.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7766'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7766'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8446' target='https://www.rfc-editor.org/info/rfc8446'> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</title> | ||||
| <author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/>< | ||||
| /author> | ||||
| <date month='August' year='2018'/> | ||||
| <abstract><t>This document specifies version 1.3 of the Transport Layer Security | ||||
| (TLS) protocol. TLS allows client/server applications to communicate over the | ||||
| Internet in a way that is designed to prevent eavesdropping, tampering, and mess | ||||
| age forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs | ||||
| 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 | ||||
| implementations.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8446'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8446'/> | ||||
| </reference> | ||||
| <reference anchor='RFC5936' target='https://www.rfc-editor.org/info/rfc5936'> | ||||
| <front> | ||||
| <title>DNS Zone Transfer Protocol (AXFR)</title> | ||||
| <author fullname='E. Lewis' initials='E.' surname='Lewis'><organization/></autho | ||||
| r> | ||||
| <author fullname='A. Hoenes' initials='A.' role='editor' surname='Hoenes'><organ | ||||
| ization/></author> | ||||
| <date month='June' year='2010'/> | ||||
| <abstract><t>The standard means within the Domain Name System protocol for maint | ||||
| aining coherence among a zone's authoritative name servers consists of three mec | ||||
| hanisms. Authoritative Transfer (AXFR) is one of the mechanisms and is defined | ||||
| in RFC 1034 and RFC 1035.</t><t>The definition of AXFR has proven insufficient i | ||||
| n detail, thereby forcing implementations intended to be compliant to make assum | ||||
| ptions, impeding interoperability. Yet today we have a satisfactory set of impl | ||||
| ementations that do interoperate. This document is a new definition of AXFR -- | ||||
| new in the sense that it records an accurate definition of an interoperable AXFR | ||||
| mechanism. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='5936'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC5936'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7301' target='https://www.rfc-editor.org/info/rfc7301'> | ||||
| <front> | ||||
| <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Ext | ||||
| ension</title> | ||||
| <author fullname='S. Friedl' initials='S.' surname='Friedl'><organization/></aut | ||||
| hor> | ||||
| <author fullname='A. Popov' initials='A.' surname='Popov'><organization/></autho | ||||
| r> | ||||
| <author fullname='A. Langley' initials='A.' surname='Langley'><organization/></a | ||||
| uthor> | ||||
| <author fullname='E. Stephan' initials='E.' surname='Stephan'><organization/></a | ||||
| uthor> | ||||
| <date month='July' year='2014'/> | ||||
| <abstract><t>This document describes a Transport Layer Security (TLS) extension | ||||
| for application-layer protocol negotiation within the TLS handshake. For instanc | ||||
| es in which multiple application protocols are supported on the same TCP or UDP | ||||
| port, this extension allows the application layer to negotiate which protocol wi | ||||
| ll be used within the TLS connection.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7301'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7301'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8126' target='https://www.rfc-editor.org/info/rfc8126'> | ||||
| <front> | ||||
| <title>Guidelines for Writing an IANA Considerations Section in RFCs</title> | ||||
| <author fullname='M. Cotton' initials='M.' surname='Cotton'><organization/></aut | ||||
| hor> | ||||
| <author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></autho | ||||
| r> | ||||
| <author fullname='T. Narten' initials='T.' surname='Narten'><organization/></aut | ||||
| hor> | ||||
| <date month='June' year='2017'/> | ||||
| <abstract><t>Many protocols make use of points of extensibility that use constan | ||||
| ts to identify various protocol parameters. To ensure that the values in these | ||||
| fields do not have conflicting uses and to promote interoperability, their alloc | ||||
| ations are often coordinated by a central record keeper. For IETF protocols, th | ||||
| at role is filled by the Internet Assigned Numbers Authority (IANA).</t><t>To ma | ||||
| ke assignments in a given registry prudently, guidance describing the conditions | ||||
| under which new values should be assigned, as well as when and how modification | ||||
| s to existing values can be made, is needed. This document defines a framework | ||||
| for the documentation of these guidelines by specification authors, in order to | ||||
| assure that the provided guidance for the IANA Considerations is clear and addre | ||||
| sses the various issues that are likely in the operation of a registry.</t><t>Th | ||||
| is is the third edition of this document; it obsoletes RFC 5226.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='26'/> | ||||
| <seriesInfo name='RFC' value='8126'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8126'/> | ||||
| </reference> | ||||
| </references> | ||||
| <references title='Informative References'> | ||||
| <reference anchor="DNS0RTT" target="https://www.ietf.org/mail-archive/web/dns-pr | ||||
| ivacy/current/msg01276.html"> | ||||
| <front> | ||||
| <title>DNS + 0-RTT</title> | ||||
| <author initials="D." surname="Kahn Gillmor" fullname="Daniel Kahn Gillmor"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date year="2016" month="April" day="06"/> | ||||
| </front> | ||||
| <seriesInfo name="Message" value="to DNS-Privacy WG mailing list"/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-dnsop-rfc8499bis'> | ||||
| <front> | ||||
| <title>DNS Terminology</title> | ||||
| <author fullname='Paul Hoffman'> | ||||
| <organization>ICANN</organization> | ||||
| </author> | ||||
| <author fullname='Kazunori Fujiwara'> | ||||
| <organization>Japan Registry Services Co., Ltd.</organization> | ||||
| </author> | ||||
| <date day='28' month='September' year='2021'/> | ||||
| <abstract> | ||||
| <t> The Domain Name System (DNS) is defined in literally dozens of | ||||
| different RFCs. The terminology used by implementers and developers | ||||
| of DNS protocols, and by operators of DNS systems, has sometimes | ||||
| changed in the decades since the DNS was first defined. This | ||||
| document gives current definitions for many of the terms used in the | ||||
| DNS in a single document. | ||||
| This document obsoletes RFC 8499 and updates RFC 2308. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-rfc8499bis-03'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-dnsop-rfc8499bis-0 | ||||
| 3.txt' type='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8490' target='https://www.rfc-editor.org/info/rfc8490'> | ||||
| <front> | ||||
| <title>DNS Stateful Operations</title> | ||||
| <author fullname='R. Bellis' initials='R.' surname='Bellis'><organization/></aut | ||||
| hor> | ||||
| <author fullname='S. Cheshire' initials='S.' surname='Cheshire'><organization/>< | ||||
| /author> | ||||
| <author fullname='J. Dickinson' initials='J.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='T. Lemon' initials='T.' surname='Lemon'><organization/></autho | ||||
| r> | ||||
| <author fullname='T. Pusateri' initials='T.' surname='Pusateri'><organization/>< | ||||
| /author> | ||||
| <date month='March' year='2019'/> | ||||
| <abstract><t>This document defines a new DNS OPCODE for DNS Stateful Operations | ||||
| (DSO). DSO messages communicate operations within persistent stateful sessions | ||||
| using Type Length Value (TLV) syntax. Three TLVs are defined that manage sessio | ||||
| n timeouts, termination, and encryption padding, and a framework is defined for | ||||
| extensions to enable new stateful operations. This document updates RFC 1035 by | ||||
| adding a new DNS header OPCODE that has both different message semantics and a | ||||
| new result code. This document updates RFC 7766 by redefining a session, provid | ||||
| ing new guidance on connection reuse, and providing a new mechanism for handling | ||||
| session idle timeouts.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8490'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8490'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-quic-http'> | ||||
| <front> | ||||
| <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title> | ||||
| <author fullname='Mike Bishop'> | ||||
| <organization>Akamai</organization> | ||||
| </author> | ||||
| <date day='2' month='February' year='2021'/> | ||||
| <abstract> | ||||
| <t>The QUIC transport protocol has several features that are desirable | ||||
| in a transport for HTTP, such as stream multiplexing, per-stream flow | ||||
| control, and low-latency connection establishment. This document | ||||
| describes a mapping of HTTP semantics over QUIC. This document also | ||||
| identifies HTTP/2 features that are subsumed by QUIC, and describes | ||||
| how HTTP/2 extensions can be ported to HTTP/3. | ||||
| DO NOT DEPLOY THIS VERSION OF HTTP | ||||
| DO NOT DEPLOY THIS VERSION OF HTTP/3 UNTIL IT IS IN AN RFC. This | ||||
| version is still a work in progress. For trial deployments, please | ||||
| use earlier versions. | ||||
| Note to Readers | ||||
| Discussion of this draft takes place on the QUIC working group | ||||
| mailing list (quic@ietf.org), which is archived at | ||||
| https://mailarchive.ietf.org/arch/search/?email_list=quic. | ||||
| Working Group information can be found at https://github.com/quicwg; | ||||
| source code and issues list for this draft can be found at | ||||
| https://github.com/quicwg/base-drafts/labels/-http. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-quic-http-34'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-quic-http-34.txt' | ||||
| type='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8484' target='https://www.rfc-editor.org/info/rfc8484'> | ||||
| <front> | ||||
| <title>DNS Queries over HTTPS (DoH)</title> | ||||
| <author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></a | ||||
| uthor> | ||||
| <author fullname='P. McManus' initials='P.' surname='McManus'><organization/></a | ||||
| uthor> | ||||
| <date month='October' year='2018'/> | ||||
| <abstract><t>This document defines a protocol for sending DNS queries and gettin | ||||
| g DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP | ||||
| exchange.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8484'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8484'/> | ||||
| </reference> | ||||
| <reference anchor='RFC9076' target='https://www.rfc-editor.org/info/rfc9076'> | ||||
| <front> | ||||
| <title>DNS Privacy Considerations</title> | ||||
| <author fullname='T. Wicinski' initials='T.' role='editor' surname='Wicinski'><o | ||||
| rganization/></author> | ||||
| <date month='July' year='2021'/> | ||||
| <abstract><t>This document describes the privacy issues associated with the use | ||||
| of the DNS by Internet users. It provides general observations about typical cur | ||||
| rent privacy practices. It is intended to be an analysis of the present situatio | ||||
| n and does not prescribe solutions. This document obsoletes RFC 7626.</t></abstr | ||||
| act> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='9076'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC9076'/> | ||||
| </reference> | ||||
| <reference anchor='RFC9002' target='https://www.rfc-editor.org/info/rfc9002'> | ||||
| <front> | ||||
| <title>QUIC Loss Detection and Congestion Control</title> | ||||
| <author fullname='J. Iyengar' initials='J.' role='editor' surname='Iyengar'><org | ||||
| anization/></author> | ||||
| <author fullname='I. Swett' initials='I.' role='editor' surname='Swett'><organiz | ||||
| ation/></author> | ||||
| <date month='May' year='2021'/> | ||||
| <abstract><t>This document describes loss detection and congestion control mecha | ||||
| nisms for QUIC.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='9002'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC9002'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7828' target='https://www.rfc-editor.org/info/rfc7828'> | ||||
| <front> | ||||
| <title>The edns-tcp-keepalive EDNS0 Option</title> | ||||
| <author fullname='P. Wouters' initials='P.' surname='Wouters'><organization/></a | ||||
| uthor> | ||||
| <author fullname='J. Abley' initials='J.' surname='Abley'><organization/></autho | ||||
| r> | ||||
| <author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='R. Bellis' initials='R.' surname='Bellis'><organization/></aut | ||||
| hor> | ||||
| <date month='April' year='2016'/> | ||||
| <abstract><t>DNS messages between clients and servers may be received over eithe | ||||
| r UDP or TCP. UDP transport involves keeping less state on a busy server, but c | ||||
| an cause truncation and retries over TCP. Additionally, UDP can be exploited fo | ||||
| r reflection attacks. Using TCP would reduce retransmits and amplification. Ho | ||||
| wever, clients commonly use TCP only for retries and servers typically use idle | ||||
| timeouts on the order of seconds.</t><t>This document defines an EDNS0 option (& | ||||
| quot;edns-tcp-keepalive") that allows DNS servers to signal a variable idle | ||||
| timeout. This signalling encourages the use of long-lived TCP connections by a | ||||
| llowing the state associated with TCP transport to be managed effectively with m | ||||
| inimal impact on the DNS transaction time.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7828'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7828'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8932' target='https://www.rfc-editor.org/info/rfc8932'> | ||||
| <front> | ||||
| <title>Recommendations for DNS Privacy Service Operators</title> | ||||
| <author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/ | ||||
| ></author> | ||||
| <author fullname='B. Overeinder' initials='B.' surname='Overeinder'><organizatio | ||||
| n/></author> | ||||
| <author fullname='R. van Rijswijk-Deij' initials='R.' surname='van Rijswijk-Deij | ||||
| '><organization/></author> | ||||
| <author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></aut | ||||
| hor> | ||||
| <date month='October' year='2020'/> | ||||
| <abstract><t>This document presents operational, policy, and security considerat | ||||
| ions for DNS recursive resolver operators who choose to offer DNS privacy servic | ||||
| es. With these recommendations, the operator can make deliberate decisions rega | ||||
| rding which services to provide, as well as understanding how those decisions an | ||||
| d the alternatives impact the privacy of users. </t><t>This document also presen | ||||
| ts a non-normative framework to assist writers of a Recursive operator Privacy S | ||||
| tatement, analogous to DNS Security Extensions (DNSSEC) Policies and DNSSEC Prac | ||||
| tice Statements described in RFC 6841.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='232'/> | ||||
| <seriesInfo name='RFC' value='8932'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8932'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7873' target='https://www.rfc-editor.org/info/rfc7873'> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-dns | |||
| <front> | op-rfc8499bis.xml"/> | |||
| <title>Domain Name System (DNS) Cookies</title> | ||||
| <author fullname='D. Eastlake 3rd' initials='D.' surname='Eastlake 3rd'><organiz | ||||
| ation/></author> | ||||
| <author fullname='M. Andrews' initials='M.' surname='Andrews'><organization/></a | ||||
| uthor> | ||||
| <date month='May' year='2016'/> | ||||
| <abstract><t>DNS Cookies are a lightweight DNS transaction security mechanism th | ||||
| at provides limited protection to DNS servers and clients against a variety of i | ||||
| ncreasingly common denial-of-service and amplification/ forgery or cache poisoni | ||||
| ng attacks by off-path attackers. DNS Cookies are tolerant of NAT, NAT-PT (Netw | ||||
| ork Address Translation - Protocol Translation), and anycast and can be incremen | ||||
| tally deployed. (Since DNS Cookies are only returned to the IP address from whic | ||||
| h they were originally received, they cannot be used to generally track Internet | ||||
| users.)</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7873'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7873'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7942' target='https://www.rfc-editor.org/info/rfc7942'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <front> | FC.8490.xml"/> | |||
| <title>Improving Awareness of Running Code: The Implementation Status Section</t | ||||
| itle> | ||||
| <author fullname='Y. Sheffer' initials='Y.' surname='Sheffer'><organization/></a | ||||
| uthor> | ||||
| <author fullname='A. Farrel' initials='A.' surname='Farrel'><organization/></aut | ||||
| hor> | ||||
| <date month='July' year='2016'/> | ||||
| <abstract><t>This document describes a simple process that allows authors of Int | ||||
| ernet-Drafts to record the status of known implementations by including an Imple | ||||
| mentation Status section. This will allow reviewers and working groups to assig | ||||
| n due consideration to documents that have the benefit of running code, which ma | ||||
| y serve as evidence of valuable experimentation and feedback that have made the | ||||
| implemented protocols more mature.</t><t>This process is not mandatory. Authors | ||||
| of Internet-Drafts are encouraged to consider using the process for their docum | ||||
| ents, and working groups are invited to think about applying the process to all | ||||
| of their protocol specifications. This document obsoletes RFC 6982, advancing i | ||||
| t to a Best Current Practice.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='205'/> | ||||
| <seriesInfo name='RFC' value='7942'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7942'/> | ||||
| </reference> | ||||
| <reference anchor='RFC3833' target='https://www.rfc-editor.org/info/rfc3833'> | <reference anchor="I-D.ietf-quic-http" target="https://datatracker.ietf.org/doc/ html/draft-ietf-quic-http-34"> | |||
| <front> | <front> | |||
| <title>Threat Analysis of the Domain Name System (DNS)</title> | <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title> | |||
| <author fullname='D. Atkins' initials='D.' surname='Atkins'><organization/></aut | <author initials='M' surname='Bishop' fullname='Mike Bishop' role='editor'> | |||
| hor> | <organization/> | |||
| <author fullname='R. Austein' initials='R.' surname='Austein'><organization/></a | </author> | |||
| uthor> | <date day='2' month='February' year='2021'/> | |||
| <date month='August' year='2004'/> | ||||
| <abstract><t>Although the DNS Security Extensions (DNSSEC) have been under devel | ||||
| opment for most of the last decade, the IETF has never written down the specific | ||||
| set of threats against which DNSSEC is designed to protect. Among other drawba | ||||
| cks, this cart-before-the-horse situation has made it difficult to determine whe | ||||
| ther DNSSEC meets its design goals, since its design goals are not well specifie | ||||
| d. This note attempts to document some of the known threats to the DNS, and, in | ||||
| doing so, attempts to measure to what extent (if any) DNSSEC is a useful tool i | ||||
| n defending against these threats. This memo provides information for the Inter | ||||
| net community.</t></abstract> | ||||
| </front> | </front> | |||
| <seriesInfo name='RFC' value='3833'/> | <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/> | |||
| <seriesInfo name='DOI' value='10.17487/RFC3833'/> | ||||
| </reference> | ||||
| <referencegroup anchor='BCP195' target='https://www.rfc-editor.org/info/bcp195'> | ||||
| <!-- reference.RFC.7525.xml --> | ||||
| <reference anchor='RFC7525' target='https://www.rfc-editor.org/info/rfc7525'> | ||||
| <front> | ||||
| <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Data | ||||
| gram Transport Layer Security (DTLS)</title> | ||||
| <author fullname='Y. Sheffer' initials='Y.' surname='Sheffer'><organization/></a | ||||
| uthor> | ||||
| <author fullname='R. Holz' initials='R.' surname='Holz'><organization/></author> | ||||
| <author fullname='P. Saint-Andre' initials='P.' surname='Saint-Andre'><organizat | ||||
| ion/></author> | ||||
| <date month='May' year='2015'/> | ||||
| <abstract><t>Transport Layer Security (TLS) and Datagram Transport Layer Securit | ||||
| y (DTLS) are widely used to protect data exchanged over application protocols su | ||||
| ch as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few years, several se | ||||
| rious attacks on TLS have emerged, including attacks on its most commonly used c | ||||
| ipher suites and their modes of operation. This document provides recommendatio | ||||
| ns for improving the security of deployed services that use TLS and DTLS. The re | ||||
| commendations are applicable to the majority of use cases.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='195'/> | ||||
| <seriesInfo name='RFC' value='7525'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7525'/> | ||||
| </reference> | </reference> | |||
| <!-- reference.RFC.8996.xml --> | ||||
| <reference anchor='RFC8996' target='https://www.rfc-editor.org/info/rfc8996'> | ||||
| <front> | ||||
| <title>Deprecating TLS 1.0 and TLS 1.1</title> | ||||
| <author fullname='K. Moriarty' initials='K.' surname='Moriarty'><organization/>< | ||||
| /author> | ||||
| <author fullname='S. Farrell' initials='S.' surname='Farrell'><organization/></a | ||||
| uthor> | ||||
| <date month='March' year='2021'/> | ||||
| <abstract><t>This document formally deprecates Transport Layer Security (TLS) ve | ||||
| rsions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been | ||||
| moved to Historic status. These versions lack support for current and recommend | ||||
| ed cryptographic algorithms and mechanisms, and various government and industry | ||||
| profiles of applications using TLS now mandate avoiding these old TLS versions. | ||||
| TLS version 1.2 became the recommended version for IETF protocols in 2008 (subse | ||||
| quently being obsoleted by TLS version 1.3 in 2018), providing sufficient time t | ||||
| o transition away from older versions. Removing support for older versions from | ||||
| implementations reduces the attack surface, reduces opportunity for misconfigura | ||||
| tion, and streamlines library and product maintenance. </t><t>This document also | ||||
| deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, | ||||
| and there is no DTLS version 1.1.</t><t>This document updates many RFCs that no | ||||
| rmatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This | ||||
| document also updates the best practices for TLS usage in RFC 7525; hence, it i | ||||
| s part of BCP 195.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='195'/> | ||||
| <seriesInfo name='RFC' value='8996'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8996'/> | ||||
| </reference> | ||||
| </referencegroup> | ||||
| <reference anchor='RFC8094' target='https://www.rfc-editor.org/info/rfc8094'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <front> | FC.8484.xml"/> | |||
| <title>DNS over Datagram Transport Layer Security (DTLS)</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <author fullname='T. Reddy' initials='T.' surname='Reddy'><organization/></autho | FC.9076.xml"/> | |||
| r> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <author fullname='D. Wing' initials='D.' surname='Wing'><organization/></author> | FC.9002.xml"/> | |||
| <author fullname='P. Patil' initials='P.' surname='Patil'><organization/></autho | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| r> | FC.7828.xml"/> | |||
| <date month='February' year='2017'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <abstract><t>DNS queries and responses are visible to network elements on the pa | FC.8932.xml"/> | |||
| th between the DNS client and its server. These queries and responses can conta | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| in privacy-sensitive information, which is valuable to protect.</t><t>This docum | FC.7873.xml"/> | |||
| ent proposes the use of Datagram Transport Layer Security (DTLS) for DNS, to pro | ||||
| tect against passive listeners and certain active attacks. As latency is critic | ||||
| al for DNS, this proposal also discusses mechanisms to reduce DTLS round trips a | ||||
| nd reduce the DTLS handshake size. The proposed mechanism runs over port 853.</ | ||||
| t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8094'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8094'/> | ||||
| </reference> | ||||
| <reference anchor='I-D.ietf-quic-bit-grease'> | ||||
| <front> | ||||
| <title>Greasing the QUIC Bit</title> | ||||
| <author fullname='Martin Thomson'> | ||||
| <organization>Mozilla</organization> | ||||
| </author> | ||||
| <date day='10' month='November' year='2021'/> | ||||
| <abstract> | ||||
| <t> This document describes a method for negotiating the ability to se | ||||
| nd | ||||
| an arbitrary value for the second-to-most significant bit in QUIC | ||||
| packets. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-quic-bit-grease-02'/> | ||||
| <format target='https://www.ietf.org/archive/id/draft-ietf-quic-bit-grease-02 | ||||
| .txt' type='TXT'/> | ||||
| </reference> | ||||
| <reference anchor='RFC6335' target='https://www.rfc-editor.org/info/rfc6335'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <front> | FC.3833.xml"/> | |||
| <title>Internet Assigned Numbers Authority (IANA) Procedures for the Management | <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/ | |||
| of the Service Name and Transport Protocol Port Number Registry</title> | bcp195"> | |||
| <author fullname='M. Cotton' initials='M.' surname='Cotton'><organization/></aut | ||||
| hor> | ||||
| <author fullname='L. Eggert' initials='L.' surname='Eggert'><organization/></aut | ||||
| hor> | ||||
| <author fullname='J. Touch' initials='J.' surname='Touch'><organization/></autho | ||||
| r> | ||||
| <author fullname='M. Westerlund' initials='M.' surname='Westerlund'><organizatio | ||||
| n/></author> | ||||
| <author fullname='S. Cheshire' initials='S.' surname='Cheshire'><organization/>< | ||||
| /author> | ||||
| <date month='August' year='2011'/> | ||||
| <abstract><t>This document defines the procedures that the Internet Assigned Num | ||||
| bers Authority (IANA) uses when handling assignment and other requests related t | ||||
| o the Service Name and Transport Protocol Port Number registry. It also discuss | ||||
| es the rationale and principles behind these procedures and how they facilitate | ||||
| the long-term sustainability of the registry.</t><t>This document updates IANA's | ||||
| procedures by obsoleting the previous UDP and TCP port assignment procedures de | ||||
| fined in Sections 8 and 9.1 of the IANA Allocation Guidelines, and it updates th | ||||
| e IANA service name and port assignment procedures for UDP-Lite, the Datagram Co | ||||
| ngestion Control Protocol (DCCP), and the Stream Control Transmission Protocol ( | ||||
| SCTP). It also updates the DNS SRV specification to clarify what a service name | ||||
| is and how it is registered. This memo documents an Internet Best Current Prac | ||||
| tice.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='165'/> | ||||
| <seriesInfo name='RFC' value='6335'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6335'/> | ||||
| </reference> | ||||
| <reference anchor='RFC1996' target='https://www.rfc-editor.org/info/rfc1996'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7525. | |||
| <front> | xml"/> | |||
| <title>A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)</title> | ||||
| <author fullname='P. Vixie' initials='P.' surname='Vixie'><organization/></autho | ||||
| r> | ||||
| <date month='August' year='1996'/> | ||||
| <abstract><t>This memo describes the NOTIFY opcode for DNS, by which a master se | ||||
| rver advises a set of slave servers that the master's data has been changed and | ||||
| that a query should be initiated to discover the new data. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='1996'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC1996'/> | ||||
| </reference> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8996. | ||||
| xml"/> | ||||
| </referencegroup> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8094.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-qu | ||||
| ic-bit-grease.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6335.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.1996.xml"/> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="the-notify-service"><name>The NOTIFY Service</name> | <section anchor="the-notify-service" numbered="true" toc="default"> | |||
| <name>The NOTIFY Service</name> | ||||
| <t>This appendix discusses why it is considered acceptable to send NOTIFY | <t>This appendix discusses why it is considered acceptable to send NOTIFY | |||
| (see <xref target="RFC1996"/>) in 0-RTT data.</t> | (see <xref target="RFC1996" format="default"/>) in 0-RTT data.</t> | |||
| <t><xref target="session-resumption-and-0-rtt" format="default"/> says "Th | ||||
| <t><xref target="session-resumption-and-0-rtt"/> says "The 0-RTT mechanism | e 0-RTT mechanism <bcp14>MUST NOT</bcp14> | |||
| SHOULD NOT | be used to send DNS requests that are not "replayable" transactions". This | |||
| be used to send DNS requests that are not "replayable" transactions&qu | ||||
| ot;. This | ||||
| specification supports sending a NOTIFY in 0-RTT data because | specification supports sending a NOTIFY in 0-RTT data because | |||
| although a NOTIFY technically changes the state of the receiving server, the | although a NOTIFY technically changes the state of the receiving server, the | |||
| effect of replaying NOTIFYs has negligible impact in practice.</t> | effect of replaying NOTIFYs has negligible impact in practice.</t> | |||
| <t>NOTIFY messages prompt a secondary to either send an SOA query or an XF | ||||
| <t>NOTIFY messages prompt a secondary to either send an SOA query or an XFR | R | |||
| request to the primary on the basis that a newer version of the zone is | request to the primary on the basis that a newer version of the zone is | |||
| available. It has long been recognized that NOTIFYs can be forged and, in | available. It has long been recognized that NOTIFYs can be forged and, in | |||
| theory, used to cause a secondary to send repeated unnecessary requests to the | theory, used to cause a secondary to send repeated unnecessary requests to the | |||
| primary. For this reason, most implementations have some form of throttling of t he | primary. For this reason, most implementations have some form of throttling of t he | |||
| SOA/XFR queries triggered by the receipt of one or more NOTIFYs.</t> | SOA/XFR queries triggered by the receipt of one or more NOTIFYs.</t> | |||
| <t><xref target="RFC9103" format="default"/> describes the privacy risks a | ||||
| <t><xref target="RFC9103"/> describes the privacy risks associated with both NOT | ssociated with both NOTIFY and SOA queries | |||
| IFY and SOA queries | ||||
| and does not include addressing those risks within the scope of encrypting zone | and does not include addressing those risks within the scope of encrypting zone | |||
| transfers. Given this, the privacy benefit of using DoQ for NOTIFY is not clear - | transfers. Given this, the privacy benefit of using DoQ for NOTIFY is not clear, | |||
| but for the same reason, sending NOTIFY as 0-RTT data has no privacy risk above | but for the same reason, sending NOTIFY as 0-RTT data has no privacy risk above | |||
| that of sending it using cleartext DNS.</t> | that of sending it using cleartext DNS.</t> | |||
| </section> | ||||
| </section> | <section anchor="acknowledgements" numbered="false" toc="default"> | |||
| <section anchor="notable-changes-from-previous-versions"><name>Notable Changes F | <name>Acknowledgements</name> | |||
| rom Previous Versions</name> | <t>This document liberally borrows text from the HTTP/3 specification | |||
| <t>(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION)</t> | <xref target="I-D.ietf-quic-http" format="default"/> edited by <contact fu | |||
| llname="Mike | ||||
| <section anchor="stream-mapping-incompatibility-with-draft-02"><name>Stream Mapp | Bishop"/> and from the DoT specification <xref target="RFC7858" | |||
| ing Incompatibility With Draft-02</name> | format="default"/> authored by <contact fullname="Zi Hu"/>, <contact fulln | |||
| <t>Versions prior to -02 of this specification | ame="Liang Zhu"/>, <contact fullname="John Heidemann"/>, <contact fullname="Alli | |||
| proposed a simpler mapping scheme of queries and responses to QUIc stream, | son | |||
| which omitted the 2 byte length field and | Mankin"/>, <contact fullname="Duane Wessels"/>, and <contact fullname="Pau | |||
| supported only a single response on a given stream. The more complex mapping | l Hoffman"/>.</t> | |||
| in <xref target="stream-mapping-and-usage"/> was adopted to specifically cater f | <t>The privacy issue with 0-RTT data and session resumption was | |||
| or XFR support, however, it breaks | analyzed by <contact fullname="Daniel Kahn Gillmor"/> (DKG) in a message t | |||
| compatibility with earlier versions.</t> | o the IETF DPRIVE | |||
| Working Group <xref target="DNS0RTT" format="default"/>.</t> | ||||
| </section> | <t>Thanks to <contact fullname="Tony Finch"/> for an extensive review of t | |||
| </section> | he initial draft version | |||
| of this document, and to <contact fullname="Robert Evans"/> for the discus | ||||
| sion of 0-RTT privacy | ||||
| issues. Early reviews by <contact fullname="Paul Hoffman"/> and <contact | ||||
| fullname="Martin Thomson"/> and | ||||
| interoperability tests conducted by Stephane Bortzmeyer helped improve | ||||
| the definition of the protocol.</t> | ||||
| <t>Thanks also to <contact fullname="Martin Thomson"/> and <contact fullna | ||||
| me="Martin Duke"/> for their later reviews | ||||
| focusing on the low-level QUIC details, which helped clarify several | ||||
| aspects of DoQ. Thanks to <contact fullname="Andrey Meshkov"/>, <contact f | ||||
| ullname="Loganaden Velvindron"/>, <contact fullname="Lucas | ||||
| Pardue"/>, <contact fullname="Matt Joras"/>, <contact fullname="Mirja Kuel | ||||
| ewind"/>, <contact fullname="Brian Trammell"/>, and <contact fullname="Phillip | ||||
| Hallam-Baker"/> for their reviews and contributions.</t> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| H4sIAIfJX2IAA7V96XfbVpbn9/dXYFQfIlWTtLzEid1nTrciybGmbEmR5EpV | ||||
| 9/TkgCQooUwCDABaZqryv8/93eUtIKQ4XTM5J4lIAm+57767L+Px2HVltyxe | ||||
| Zyfn11n9qWiyk2JezvKumGc/fDg7zo7rqipmXVlXrcun06b49OCzDn/e1s32 | ||||
| ddZ2czevZ+f5ioaeN/miG5dFtxjP1035qRjPq7b+eVPOxk+fOdd2eTX/KV/W | ||||
| FT27LVrnynXzOuuaTds9Ozx8dfjM5U2Rv85umrxq13XTuY/3r7OzqiuaqujG | ||||
| JxjeuVk9L6vb19mmHeftrCzdunyd/WdXz0ZZS+80xaKlv7Yr+WNWr1ZF1bX/ | ||||
| 5Vy+6e7q5rXL+J+x/j/Lyqp9nR1PsrebsitWuf++4k0d3zVl25V5tfN73dAq | ||||
| LmmfBI3sYtbV601Lq51N/BMtraboXmcvnn2TfV8vF7N607RFdjX3T8zKjqD4 | ||||
| pinn+TZ7mzfTugm/1XOa/8ej7NW3z74+jL7eVB1g/+H6yH9J6yqXr7M7WeK/ | ||||
| 6/8nBLbh7V5PspNy9pH+rqvehq/zJh/4kXd7XVb1fFNlZzc7e3yf387zZVFl | ||||
| xwTuptj5/eLzom7m2fWsLKpZkV3mzcceFOSJ3vYv/vIie/H90cDu/9TffEsL | ||||
| //dWVjihcx/e+dGEllrR5nrbPlouS9pv/0fZNm2spcXNiv6cubw1WfFb/36L | ||||
| b3luQu6K3ljlHd0D4BzdpcOrmxtBvy5vbgGUu65bt6+fPLm/v5/g3kxouicY | ||||
| Y5w3szt688l9MX1Ct2iM+5TPtk9mm6YhAD9ZtbeHT59983Jy162WMma43/+S | ||||
| HY5pLv46xfo+NE4m2Z/yuyr7vlwuVxHuCUxO8qoslrtPzAnjX2fPDp++HB++ | ||||
| GB++5C/boimLFrv2k2Xvi7bNb+nZrsbCxpeyi+zH7zPsku5xRvCjSz0ej7N8 | ||||
| SriSz+jTzV3ZZkRWNri62bxoZ005Ldqsuyvo2hdZvRCaRaOum/pTOS+IiijN | ||||
| IAypFvRNRXd2SXiV0Slg7gmNWmSEe812DSpnb86z6VZGu8vbrC1X5TJv8OO6 | ||||
| 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 | ||||
| 9czwYdODLD56S6I8h0ywIebTwectbQl0e5ZTKYmqI3aKr6TMK+ln+muwilib | ||||
| OAz/6KNsFKnMyLdchmqxb/q6+sjNImFqZ4WclGB5tFKeNdqYAdJec2DzUSKF | ||||
| 96J7D38dSpQkNuM38blotVEpXM9OdMtojMwhHBGoaxllt8t6mgunRUyW1cuP | ||||
| R9WqXsmaBwFIrFcPUssogT6Es3bpWffB8MCQttQJIl82cTe1rq7VASht2n1p | ||||
| 8BKyPheqiTTa4fe5dKwKteJoDUmg7HegqVE5kTsbFCvEjwcL5WS3KU8TtbVu | ||||
| 1TIhJg7Sbv62QW2qAdB2taNDyDVNU4xds6LRZJlg6h31ZIQ+mU7m0znUS2aH | ||||
| mCNObiksWj2vTK0FEOxhCYyjx8MBNK5DJjRhzi6LkjO4goEoakzbx/KA4Q9d | ||||
| RGeHPkQQ1Ok8LW7LisntjjnK6Isl+Ya6hprZ5cXZaJWWyzw3K19Pm4m6Ut2w | ||||
| 39yCzHXPcZYL25QVJIl+2O7e+QQa7tErYNDYRMZDfo7r7bMiKan+ni580IpK | ||||
| dkMSA14bFhnB4d6CRSQmGpIVMXpClspCtEwKitKkBsLgr9n5+/+gP1fcV9s3 | ||||
| L5T4eXYv05LEP/hADy+fip6kRvc9s/2YZbTT9MhFCzjjCl1FN+ZuZCMrLTvN | ||||
| tY14jngZeilf9pOt2GD/6oV0wX06yY7m32/go1nmm2rGPiiWtYayALSQIEKI | ||||
| CbvYhPrs8Nmh2kc5JY65/rLgZcDOUUpxRqkIL74UOn6LtY9CUF+z0EDr+U9b | ||||
| 0PG//AvztmU5bbh01n/tD7RwP5qjFd78hvjDk5OqfVdOSWY5MglEMgDqz1sd | ||||
| ZZvMy3w+jXMIjR19abhorDEI75h7WvtPSD6Rz8eIeLA4afmRxdD9IooPOBDp | ||||
| 6BltVLqb0+J+c2Nzog94kHZmrXH8zmx5g93IvmR/6cZ2dtvb32h3g5PsPcmt | ||||
| tabXM5XgUGk4bh4Zzs+ZiRATQcxcmHjzOUHqmMbn2C0MC4HUcIS+/E3gzZBw | ||||
| U7UHtpQz01eH5hxD9zT4hQXQ+8u6/rhZD86GgLK7j/WnJ/6xg+xajgmKGQCG | ||||
| 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 | ||||
| 5sZ8OdwAAA== | ||||
| </rfc> | </rfc> | |||
| End of changes. 207 change blocks. | ||||
| 2515 lines changed or deleted | 1261 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/ | ||||