< draft-ietf-dprive-dnsoquic-07.txt   draft-ietf-dprive-dnsoquic-08.txt >
Network Working Group C. Huitema Network Working Group C. Huitema
Internet-Draft Private Octopus Inc. Internet-Draft Private Octopus Inc.
Intended status: Standards Track S. Dickinson Intended status: Standards Track S. Dickinson
Expires: 4 June 2022 Sinodun IT Expires: 14 July 2022 Sinodun IT
A. Mankin A. Mankin
Salesforce Salesforce
1 December 2021 10 January 2022
DNS over Dedicated QUIC Connections DNS over Dedicated QUIC Connections
draft-ietf-dprive-dnsoquic-07 draft-ietf-dprive-dnsoquic-08
Abstract Abstract
This document describes the use of QUIC to provide transport privacy This document describes the use of QUIC to provide transport privacy
for DNS. The encryption provided by QUIC has similar properties to for DNS. The encryption provided by QUIC has similar properties to
that provided by TLS, while QUIC transport eliminates the head-of- that provided by TLS, while QUIC transport eliminates the head-of-
line blocking issues inherent with TCP and provides more efficient line blocking issues inherent with TCP and provides more efficient
packet loss recovery than UDP. DNS over QUIC (DoQ) has privacy packet loss recovery than UDP. DNS over QUIC (DoQ) has privacy
properties similar to DNS over TLS (DoT) specified in RFC7858, and properties similar to DNS over TLS (DoT) specified in RFC7858, and
latency characteristics similar to classic DNS over UDP. latency characteristics similar to classic DNS over UDP. This
specification describes the use of DNS over QUIC as a general-purpose
transport for DNS and includes the use of DNS over QUIC for stub to
recursive, recursive to authoritative, and zone transfer scenarios.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 4 June 2022. This Internet-Draft will expire on 14 July 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2022 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License. provided without warranty as described in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Document work via GitHub . . . . . . . . . . . . . . . . . . 5 3. Document work via GitHub . . . . . . . . . . . . . . . . . . 5
4. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 4. Design Considerations . . . . . . . . . . . . . . . . . . . . 5
4.1. Provide DNS Privacy . . . . . . . . . . . . . . . . . . . 5 4.1. Provide DNS Privacy . . . . . . . . . . . . . . . . . . . 5
4.2. Design for Minimum Latency . . . . . . . . . . . . . . . 5 4.2. Design for Minimum Latency . . . . . . . . . . . . . . . 5
4.3. Middlebox Considerations . . . . . . . . . . . . . . . . 6 4.3. Middlebox Considerations . . . . . . . . . . . . . . . . 6
4.4. No Server Initiated Transactions . . . . . . . . . . . . 6 4.4. No Server-Initiated Transactions . . . . . . . . . . . . 6
5. Specifications . . . . . . . . . . . . . . . . . . . . . . . 6 5. Specifications . . . . . . . . . . . . . . . . . . . . . . . 6
5.1. Connection Establishment . . . . . . . . . . . . . . . . 6 5.1. Connection Establishment . . . . . . . . . . . . . . . . 7
5.1.1. Draft Version Identification . . . . . . . . . . . . 7 5.1.1. Draft Version Identification . . . . . . . . . . . . 7
5.1.2. Port Selection . . . . . . . . . . . . . . . . . . . 7 5.1.2. Port Selection . . . . . . . . . . . . . . . . . . . 7
5.2. Stream Mapping and Usage . . . . . . . . . . . . . . . . 7 5.2. Stream Mapping and Usage . . . . . . . . . . . . . . . . 7
5.2.1. DNS Message IDs . . . . . . . . . . . . . . . . . . . 8 5.2.1. DNS Message IDs . . . . . . . . . . . . . . . . . . . 8
5.3. DoQ Error Codes . . . . . . . . . . . . . . . . . . . . . 9 5.3. DoQ Error Codes . . . . . . . . . . . . . . . . . . . . . 9
5.3.1. Transaction Cancellation . . . . . . . . . . . . . . 9 5.3.1. Transaction Cancellation . . . . . . . . . . . . . . 9
5.3.2. Transaction Errors . . . . . . . . . . . . . . . . . 10 5.3.2. Transaction Errors . . . . . . . . . . . . . . . . . 10
5.3.3. Protocol Errors . . . . . . . . . . . . . . . . . . . 10 5.3.3. Protocol Errors . . . . . . . . . . . . . . . . . . . 10
5.3.4. Alternative error codes . . . . . . . . . . . . . . . 11 5.3.4. Alternative error codes . . . . . . . . . . . . . . . 11
5.4. Connection Management . . . . . . . . . . . . . . . . . . 11 5.4. Connection Management . . . . . . . . . . . . . . . . . . 11
5.5. Session Resumption and 0-RTT . . . . . . . . . . . . . . 12 5.5. Session Resumption and 0-RTT . . . . . . . . . . . . . . 12
5.6. Message Sizes . . . . . . . . . . . . . . . . . . . . . . 13 5.6. Message Sizes . . . . . . . . . . . . . . . . . . . . . . 13
6. Implementation Requirements . . . . . . . . . . . . . . . . . 13 6. Implementation Requirements . . . . . . . . . . . . . . . . . 13
6.1. Authentication . . . . . . . . . . . . . . . . . . . . . 13 6.1. Authentication . . . . . . . . . . . . . . . . . . . . . 13
6.2. Fallback to Other Protocols on Connection Failure . . . . 14 6.2. Fallback to Other Protocols on Connection Failure . . . . 14
6.3. Address Validation . . . . . . . . . . . . . . . . . . . 14 6.3. Address Validation . . . . . . . . . . . . . . . . . . . 14
6.4. Padding . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.4. Padding . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.5. Connection Handling . . . . . . . . . . . . . . . . . . . 15 6.5. Connection Handling . . . . . . . . . . . . . . . . . . . 15
6.5.1. Connection Reuse . . . . . . . . . . . . . . . . . . 15 6.5.1. Connection Reuse . . . . . . . . . . . . . . . . . . 15
6.5.2. Resource Management . . . . . . . . . . . . . . . . . 15 6.5.2. Resource Management . . . . . . . . . . . . . . . . . 16
6.5.3. Using 0-RTT and Session Resumption . . . . . . . . . 16 6.5.3. Using 0-RTT and Session Resumption . . . . . . . . . 16
6.5.4. Controlling Connection Migration For Privacy . . . . 17 6.5.4. Controlling Connection Migration For Privacy . . . . 17
6.6. Processing Queries in Parallel . . . . . . . . . . . . . 17 6.6. Processing Queries in Parallel . . . . . . . . . . . . . 17
6.7. Zone transfer . . . . . . . . . . . . . . . . . . . . . . 17 6.7. Zone transfer . . . . . . . . . . . . . . . . . . . . . . 17
6.8. Flow Control Mechanisms . . . . . . . . . . . . . . . . . 18 6.8. Flow Control Mechanisms . . . . . . . . . . . . . . . . . 18
7. Implementation Status . . . . . . . . . . . . . . . . . . . . 18 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 18
7.1. Performance Measurements . . . . . . . . . . . . . . . . 19 7.1. Performance Measurements . . . . . . . . . . . . . . . . 19
8. Security Considerations . . . . . . . . . . . . . . . . . . . 20 8. Security Considerations . . . . . . . . . . . . . . . . . . . 20
9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 20 9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 20
9.1. Privacy Issues With 0-RTT data . . . . . . . . . . . . . 20 9.1. Privacy Issues With 0-RTT data . . . . . . . . . . . . . 20
9.2. Privacy Issues With Session Resumption . . . . . . . . . 21 9.2. Privacy Issues With Session Resumption . . . . . . . . . 21
9.3. Privacy Issues With Address Validation Tokens . . . . . . 22 9.3. Privacy Issues With Address Validation Tokens . . . . . . 22
9.4. Privacy Issues With Long Duration Sessions . . . . . . . 22 9.4. Privacy Issues With Long Duration Sessions . . . . . . . 22
9.5. Traffic Analysis . . . . . . . . . . . . . . . . . . . . 23 9.5. Traffic Analysis . . . . . . . . . . . . . . . . . . . . 23
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
10.1. Registration of DoQ Identification String . . . . . . . 23 10.1. Registration of DoQ Identification String . . . . . . . 23
10.2. Reservation of Dedicated Port . . . . . . . . . . . . . 23 10.2. Reservation of Dedicated Port . . . . . . . . . . . . . 23
10.2.1. Port number 784 for experimentations . . . . . . . . 24 10.2.1. Port number 784 for experimentations . . . . . . . . 24
10.3. Reservation of Extended DNS Error Code Too Early . . . . 24 10.3. Reservation of Extended DNS Error Code Too Early . . . . 24
10.4. DNS over QUIC Error Codes Registry . . . . . . . . . . . 24 10.4. DNS over QUIC Error Codes Registry . . . . . . . . . . . 25
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 27
12.1. Normative References . . . . . . . . . . . . . . . . . . 26 12.1. Normative References . . . . . . . . . . . . . . . . . . 27
12.2. Informative References . . . . . . . . . . . . . . . . . 29 12.2. Informative References . . . . . . . . . . . . . . . . . 29
Appendix A. The NOTIFY Service . . . . . . . . . . . . . . . . . 30 Appendix A. The NOTIFY Service . . . . . . . . . . . . . . . . . 30
Appendix B. Notable Changes From Previous Versions . . . . . . . 30 Appendix B. Notable Changes From Previous Versions . . . . . . . 31
B.1. Stream Mapping Incompatibility With Draft-02 . . . . . . 31 B.1. Stream Mapping Incompatibility With Draft-02 . . . . . . 31
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31
1. Introduction 1. Introduction
Domain Name System (DNS) concepts are specified in "Domain names - Domain Name System (DNS) concepts are specified in "Domain names -
concepts and facilities" [RFC1034]. The transmission of DNS queries concepts and facilities" [RFC1034]. The transmission of DNS queries
and responses over UDP and TCP is specified in "Domain names - and responses over UDP and TCP is specified in "Domain names -
implementation and specification" [RFC1035]. implementation and specification" [RFC1035].
skipping to change at page 4, line 4 skipping to change at page 4, line 9
2. Provide an improved level of source address validation for DNS 2. Provide an improved level of source address validation for DNS
servers compared to classic DNS over UDP. servers compared to classic DNS over UDP.
3. Provide a transport that is not constrained by path MTU 3. Provide a transport that is not constrained by path MTU
limitations on the size of DNS responses it can send. limitations on the size of DNS responses it can send.
In order to achieve these goals, and to support ongoing work on In order to achieve these goals, and to support ongoing work on
encryption of DNS, the scope of this document includes encryption of DNS, the scope of this document includes
* the "stub to recursive resolver" scenario * the "stub to recursive resolver" scenario
* the "recursive resolver to authoritative nameserver" scenario and * the "recursive resolver to authoritative nameserver" scenario and
* the "nameserver to nameserver" scenario (mainly used for zone * the "nameserver to nameserver" scenario (mainly used for zone
transfers (XFR) [RFC1995], [RFC5936]). transfers (XFR) [RFC1995], [RFC5936]).
In other words, this document is intended to specify QUIC as a In other words, this document specifies QUIC as a general-purpose
general purpose transport for DNS. transport for DNS.
The specific non-goals of this document are: The specific non-goals of this document are:
1. No attempt is made to evade potential blocking of DNS over QUIC 1. No attempt is made to evade potential blocking of DNS over QUIC
traffic by middleboxes. traffic by middleboxes.
2. No attempt to support server initiated transactions, which are 2. No attempt to support server-initiated transactions, which are
used only in DNS Stateful Operations (DSO) [RFC8490]. used only in DNS Stateful Operations (DSO) [RFC8490].
Specifying the transmission of an application over QUIC requires Specifying the transmission of an application over QUIC requires
specifying how the application's messages are mapped to QUIC streams, specifying how the application's messages are mapped to QUIC streams,
and generally how the application will use QUIC. This is done for and generally how the application will use QUIC. This is done for
HTTP in "Hypertext Transfer Protocol Version 3 HTTP in "Hypertext Transfer Protocol Version 3
(HTTP/3)"[I-D.ietf-quic-http]. The purpose of this document is to (HTTP/3)"[I-D.ietf-quic-http]. The purpose of this document is to
define the way DNS messages can be transmitted over QUIC. define the way DNS messages can be transmitted over QUIC.
DNS over HTTP [RFC8484] can be used with HTTP/3 to get some of the DNS over HTTP [RFC8484] can be used with HTTP/3 to get some of the
skipping to change at page 4, line 43 skipping to change at page 4, line 49
behavior. behavior.
In this document, Section 4 presents the reasoning that guided the In this document, Section 4 presents the reasoning that guided the
proposed design. Section 5 specifies the actual mapping of DoQ. proposed design. Section 5 specifies the actual mapping of DoQ.
Section 6 presents guidelines on the implementation, usage and Section 6 presents guidelines on the implementation, usage and
deployment of DoQ. deployment of DoQ.
2. Key Words 2. Key Words
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
document are to be interpreted as described in BCP 14 [RFC8174]. "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. Document work via GitHub 3. Document work via GitHub
(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION)The (RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION)The
Github repository for this document is at https://github.com/huitema/ Github repository for this document is at https://github.com/huitema/
dnsoquic. Proposed text and editorial changes are very much welcomed dnsoquic. Proposed text and editorial changes are very much welcomed
there, but any functional changes should always first be discussed on there, but any functional changes should always first be discussed on
the IETF DPRIVE WG (dns-privacy) mailing list. the IETF DPRIVE WG (dns-privacy) mailing list.
4. Design Considerations 4. Design Considerations
This section and its subsections present the design guidelines that This section and its subsections present the design guidelines that
were used for DoQ. This section is informative in nature. were used for DoQ. Whilst all other sections in this document are
normative, this section is informative in nature.
4.1. Provide DNS Privacy 4.1. Provide DNS Privacy
DoT [RFC7858] defines how to mitigate some of the issues described in DoT [RFC7858] defines how to mitigate some of the issues described in
"DNS Privacy Considerations" [RFC9076] by specifying how to transmit "DNS Privacy Considerations" [RFC9076] by specifying how to transmit
DNS messages over TLS. The "Usage Profiles for DNS over TLS and DNS DNS messages over TLS. The "Usage Profiles for DNS over TLS and DNS
over DTLS" [RFC8310] specify Strict and Opportunistic Usage Profiles over DTLS" [RFC8310] specify Strict and Opportunistic Usage Profiles
for DoT including how stub resolvers can authenticate recursive for DoT including how stub resolvers can authenticate recursive
resolvers. resolvers.
skipping to change at page 6, line 32 skipping to change at page 6, line 36
devices on the network path using encryption and traffic analysis devices on the network path using encryption and traffic analysis
resistance techniques like padding. This specification does not resistance techniques like padding. This specification does not
include any measures that are designed to avoid such classification. include any measures that are designed to avoid such classification.
Consequently, firewalls and other middleboxes might be able to Consequently, firewalls and other middleboxes might be able to
distinguish DoQ from other protocols that use QUIC, like HTTP, and distinguish DoQ from other protocols that use QUIC, like HTTP, and
apply different treatment. apply different treatment.
The lack of measures in this specification to avoid protocol The lack of measures in this specification to avoid protocol
classification is not an endorsement of such practices. classification is not an endorsement of such practices.
4.4. No Server Initiated Transactions 4.4. No Server-Initiated Transactions
As stated in Section 1, this document does not specify support for As stated in Section 1, this document does not specify support for
server initiated transactions within established DoQ connections. server-initiated transactions within established DoQ connections.
That is, only the initiator of the DoQ connection may send queries That is, only the initiator of the DoQ connection may send queries
over the connection. over the connection.
DSO does support server-initiated transactions within existing DSO does support server-initiated transactions within existing
connections. However DoQ as defined here does not meet the criteria connections. However, DoQ as defined here does not meet the criteria
for an applicable transport for DSO because it does not guarantee in- for an applicable transport for DSO because it does not guarantee in-
order delivery of messages, see Section 4.2 of [RFC8490]. order delivery of messages, see Section 4.2 of [RFC8490].
5. Specifications 5. Specifications
5.1. Connection Establishment 5.1. Connection Establishment
DoQ connections are established as described in the QUIC transport DoQ connections are established as described in the QUIC transport
specification [RFC9000]. During connection establishment, DoQ specification [RFC9000]. During connection establishment, DoQ
support is indicated by selecting the ALPN token "doq" in the crypto support is indicated by selecting the ALPN token "doq" in the crypto
handshake. handshake.
5.1.1. Draft Version Identification 5.1.1. Draft Version Identification
(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION) Only (RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION) Only
skipping to change at page 7, line 28 skipping to change at page 7, line 34
By default, a DNS server that supports DoQ MUST listen for and accept By default, a DNS server that supports DoQ MUST listen for and accept
QUIC connections on the dedicated UDP port TBD (number to be defined QUIC connections on the dedicated UDP port TBD (number to be defined
in Section 10), unless there is a mutual agreement to use another in Section 10), unless there is a mutual agreement to use another
port. port.
By default, a DNS client desiring to use DoQ with a particular server By default, a DNS client desiring to use DoQ with a particular server
MUST establish a QUIC connection to UDP port TBD on the server, MUST establish a QUIC connection to UDP port TBD on the server,
unless there is a mutual agreement to use another port. unless there is a mutual agreement to use another port.
In order to use a port other than TBD, both clients and servers would
need a configuration option in their software.
DoQ connections MUST NOT use UDP port 53. This recommendation DoQ connections MUST NOT use UDP port 53. This recommendation
against use of port 53 for DoQ is to avoid confusion between DoQ and against use of port 53 for DoQ is to avoid confusion between DoQ and
the use of DNS over UDP [RFC1035]. the use of DNS over UDP [RFC1035].
In the stub to recursive scenario, the use of port 443 as a mutually In the stub to recursive scenario, the use of port 443 as a mutually
agreed alternative port can be operationally beneficial, since port agreed alternative port can be operationally beneficial, since port
443 is less likely to be blocked than other ports. Several 443 is less likely to be blocked than other ports. Several
mechanisms for stubs to discover recursives offering encrypted mechanisms for stubs to discover recursives offering encrypted
transports, including the use of custom ports, are the subject of transports, including the use of custom ports, are the subject of
ongoing work. ongoing work.
skipping to change at page 8, line 30 skipping to change at page 8, line 34
in conformance with the QUIC transport specification [RFC9000]. in conformance with the QUIC transport specification [RFC9000].
The client MUST send the DNS query over the selected stream, and MUST The client MUST send the DNS query over the selected stream, and MUST
indicate through the STREAM FIN mechanism that no further data will indicate through the STREAM FIN mechanism that no further data will
be sent on that stream. be sent on that stream.
The server MUST send the response(s) on the same stream and MUST The server MUST send the response(s) on the same stream and MUST
indicate, after the last response, through the STREAM FIN mechanism indicate, after the last response, through the STREAM FIN mechanism
that no further data will be sent on that stream. that no further data will be sent on that stream.
Therefore, a single client initiated DNS transaction consumes a Therefore, a single client-initiated DNS transaction consumes a
single stream. This means that the client's first query occurs on single stream. This means that the client's first query occurs on
QUIC stream 0, the second on 4, and so on. QUIC stream 0, the second on 4, and so on.
Servers MAY defer processing of a query until the STREAM FIN has been Servers MAY defer processing of a query until the STREAM FIN has been
indicated on the stream selected by the client. Servers and clients indicated on the stream selected by the client. Servers and clients
MAY monitor the number of "dangling" streams for which the expected MAY monitor the number of "dangling" streams for which the expected
queries or responses have been received but not the STREAM FIN. queries or responses have been received but not the STREAM FIN.
Implementations MAY impose a limit on the number of such dangling Implementations MAY impose a limit on the number of such dangling
streams. If limits are encountered, implementations MAY close the streams. If limits are encountered, implementations MAY close the
connection. connection.
skipping to change at page 9, line 50 skipping to change at page 9, line 50
tests. tests.
See Section 10.4 for details on registering new error codes. See Section 10.4 for details on registering new error codes.
5.3.1. Transaction Cancellation 5.3.1. Transaction Cancellation
In QUIC, sending STOP_SENDING requests that a peer cease transmission In QUIC, sending STOP_SENDING requests that a peer cease transmission
on a stream. If a DoQ client wishes to cancel an outstanding on a stream. If a DoQ client wishes to cancel an outstanding
request, it MUST issue a QUIC Stop Sending with error code request, it MUST issue a QUIC Stop Sending with error code
DOQ_REQUEST_CANCELLED. This may be sent at any time but will be DOQ_REQUEST_CANCELLED. This may be sent at any time but will be
ignored if the server has already sent the response. The ignored if the server response has already been acknowledged. The
corresponding DNS transaction MUST be abandoned. corresponding DNS transaction MUST be abandoned.
Servers that receive STOP_SENDING act in accordance with Section 3.5 Servers that receive STOP_SENDING act in accordance with Section 3.5
of [RFC9000]. Servers MAY impose implementation limits on the total of [RFC9000]. Servers MAY impose implementation limits on the total
number or rate of request cancellations. If limits are encountered, number or rate of request cancellations. If limits are encountered,
servers MAY close the connection. In this case, servers wanting to servers MAY close the connection. In this case, servers wanting to
help client debugging MAY use the error code DOQ_EXCESSIVE_LOAD. help client debugging MAY use the error code DOQ_EXCESSIVE_LOAD.
There is always a trade-off between helping good faith clients debug There is always a trade-off between helping good faith clients debug
issues and allowing denial-of-service attackers to test server issues and allowing denial-of-service attackers to test server
defenses, so depending on circumstances servers might very well chose defenses, so depending on circumstances servers might very well chose
skipping to change at page 11, line 15 skipping to change at page 11, line 15
expected (e.g. multiple responses to a query for an A record) expected (e.g. multiple responses to a query for an A record)
* a client receives a STOP_SENDING request * a client receives a STOP_SENDING request
* the client or server does not indicate the expected STREAM FIN * the client or server does not indicate the expected STREAM FIN
after sending requests or responses (see Section 5.2). after sending requests or responses (see Section 5.2).
* an implementation receives a message containing the edns-tcp- * an implementation receives a message containing the edns-tcp-
keepalive EDNS(0) Option [RFC7828] (see Section 6.5.2) keepalive EDNS(0) Option [RFC7828] (see Section 6.5.2)
* a client or a server attempts to open an unidirectional QUIC * a client or a server attempts to open a unidirectional QUIC stream
stream
* a server attempts to open a server-initiated bidirectional QUIC * a server attempts to open a server-initiated bidirectional QUIC
stream stream
If a peer encounters such an error condition it is considered a fatal If a peer encounters such an error condition it is considered a fatal
error. It SHOULD forcibly abort the connection using QUIC's error. It SHOULD forcibly abort the connection using QUIC's
CONNECTION_CLOSE mechanism, and SHOULD use the DoQ error code CONNECTION_CLOSE mechanism, and SHOULD use the DoQ error code
DOQ_PROTOCOL_ERROR. DOQ_PROTOCOL_ERROR.
It is noted that the restrictions on use of the above EDNS(0) options It is noted that the restrictions on use of the above EDNS(0) options
skipping to change at page 12, line 4 skipping to change at page 11, line 50
Implementations MAY wish to test the support for the error code Implementations MAY wish to test the support for the error code
extension mechanism by using error codes not listed in this document, extension mechanism by using error codes not listed in this document,
or they MAY use DOQ_ERROR_RESERVED. or they MAY use DOQ_ERROR_RESERVED.
5.4. Connection Management 5.4. Connection Management
Section 10 of [RFC9000], the QUIC transport specification, specifies Section 10 of [RFC9000], the QUIC transport specification, specifies
that connections can be closed in three ways: that connections can be closed in three ways:
* idle timeout * idle timeout
* immediate close
* immediate close
* stateless reset * stateless reset
Clients and servers implementing DoQ SHOULD negotiate use of the idle Clients and servers implementing DoQ SHOULD negotiate use of the idle
timeout. Closing on idle timeout is done without any packet timeout. Closing on idle timeout is done without any packet
exchange, which minimizes protocol overhead. Per Section 10.1 of exchange, which minimizes protocol overhead. Per Section 10.1 of
[RFC9000], the QUIC transport specification, the effective value of [RFC9000], the QUIC transport specification, the effective value of
the idle timeout is computed as the minimum of the values advertised the idle timeout is computed as the minimum of the values advertised
by the two endpoints. Practical considerations on setting the idle by the two endpoints. Practical considerations on setting the idle
timeout are discussed in Section 6.5.2. timeout are discussed in Section 6.5.2.
skipping to change at page 14, line 45 skipping to change at page 14, line 45
DoQ implementations that configure Address Validation using Retry DoQ implementations that configure Address Validation using Retry
Packets SHOULD implement the Address Validation for Future Packets SHOULD implement the Address Validation for Future
Connections procedure defined in Section 8.1.3 of [RFC9000], the QUIC Connections procedure defined in Section 8.1.3 of [RFC9000], the QUIC
transport specification. This defines how servers can send NEW_TOKEN transport specification. This defines how servers can send NEW_TOKEN
frames to clients after the client address is validated, in order to frames to clients after the client address is validated, in order to
avoid the 1-RTT penalty during subsequent connections by the client avoid the 1-RTT penalty during subsequent connections by the client
from the same address. from the same address.
6.4. Padding 6.4. Padding
Implementations SHOULD protect against the traffic analysis attacks Implementations MUST protect against the traffic analysis attacks
described in Section 9.5 by the judicious injection of padding. This described in Section 9.5 by the judicious injection of 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 [RFC7830] and by padding QUIC packets (see EDNS(0) Padding Option [RFC7830] or by padding QUIC packets (see
Section 8.6 of [RFC9000], the QUIC transport specification. Section 8.6 of [RFC9000], the QUIC transport specification.
In theory, padding at the QUIC level could result in better In theory, padding at the QUIC level could result in better
performance for the equivalent protection, because the amount of performance for the equivalent protection, because the amount of
padding can take into account non-DNS frames such as acknowledgeemnts padding can take into account non-DNS frames such as acknowledgements
or flow control updates, and also because QUIC packets can carry or flow control updates, and also because QUIC packets can carry
multiple DNS messages. However, applications can only control the multiple DNS messages. However, applications can only control the
amount of padding in QUIC packets if the implementation of QUIC amount of padding in QUIC packets if the implementation of QUIC
exposes adequate APIs. This leads to the following recommendation: exposes adequate APIs. This leads to the following recommendation:
* if the implementation of QUIC exposes APIs to set a padding * if the implementation of QUIC exposes APIs to set a padding
policy, DNS over QUIC SHOULD use that API to align the packet policy, DNS over QUIC SHOULD use that API to align the packet
length to a small set of fixed sizes, aligned with the length to a small set of fixed sizes.
recommendations of the "Padding Policies for Extension Mechanisms
for DNS (EDNS(0))" [RFC8467].
* if padding at the QUIC level is not available or not used, DNS * if padding at the QUIC level is not available or not used, DNS
over QUIC MUST ensure that all DNS queries and responses are over QUIC MUST ensure that all DNS queries and responses are
padded to a small set of fixed sizes, using the EDNS padding padded to a small set of fixed sizes, using the EDNS(0) padding
extension as specified in "Padding Policies for Extension extension as specified in [RFC7830].
Mechanisms for DNS (EDNS(0))" [RFC8467].
Implementation might choose not to use a QUIC API for padding if it
is significantly simpler to re-use existing DNS message padding logic
which is applied to other encrypted transports.
In the absence of a standard policy for padding sizes,
implementations should consider following the recommendations of the
Experimental status "Padding Policies for Extension Mechanisms for
DNS (EDNS(0))" [RFC8467].
6.5. Connection Handling 6.5. Connection Handling
"DNS Transport over TCP - Implementation Requirements" [RFC7766] "DNS Transport over TCP - Implementation Requirements" [RFC7766]
provides updated guidance on DNS over TCP, some of which is provides updated guidance on DNS over TCP, some of which is
applicable to DoQ. This section provides similar advice on applicable to DoQ. This section provides similar advice on
connection handling for DoQ. connection handling for DoQ.
6.5.1. Connection Reuse 6.5.1. Connection Reuse
Historic implementations of DNS clients are known to open and close Historic implementations of DNS clients are known to open and close
TCP connections for each DNS query. To amortise connection setup TCP connections for each DNS query. To amortize connection setup
costs, both clients and servers SHOULD support connection reuse by costs, both clients and servers SHOULD support connection reuse by
sending multiple queries and responses over a single persistent QUIC sending multiple queries and responses over a single persistent QUIC
connection. connection.
In order to achieve performance on par with UDP, DNS clients SHOULD In order to achieve performance on par with UDP, DNS clients SHOULD
send their queries concurrently over the QUIC streams on a QUIC send their queries concurrently over the QUIC streams on a QUIC
connection. That is, when a DNS client sends multiple queries to a connection. That is, when a DNS client sends multiple queries to a
server over a QUIC connection, it SHOULD NOT wait for an outstanding server over a QUIC connection, it SHOULD NOT wait for an outstanding
reply before sending the next query. reply before sending the next query.
skipping to change at page 17, line 24 skipping to change at page 17, line 28
session resumption tickets. Servers SHOULD implement the anti-replay session resumption tickets. Servers SHOULD implement the anti-replay
mechanisms specified in Section 8 of [RFC8446]. mechanisms specified in Section 8 of [RFC8446].
6.5.4. Controlling Connection Migration For Privacy 6.5.4. Controlling Connection Migration For Privacy
DoQ implementation might consider using the connection migration DoQ implementation might consider using the connection migration
features defined in Section 9 of [RFC9000]. These features enable features defined in Section 9 of [RFC9000]. These features enable
connections to continue operating as the client's connectivity connections to continue operating as the client's connectivity
changes. As detailed in Section 9.4, these features trade off changes. As detailed in Section 9.4, these features trade off
privacy for latency. By default, clients SHOULD be configured to privacy for latency. By default, clients SHOULD be configured to
prioritise privacy and start new sessions if their connectivity prioritize privacy and start new sessions if their connectivity
changes. changes.
6.6. Processing Queries in Parallel 6.6. Processing Queries in Parallel
As specified in Section 7 of [RFC7766] "DNS Transport over TCP - As specified in Section 7 of [RFC7766] "DNS Transport over TCP -
Implementation Requirements", resolvers are RECOMMENDED to support Implementation Requirements", resolvers are RECOMMENDED to support
the preparing of responses in parallel and sending them out of order. the preparing of responses in parallel and sending them out of order.
In DoQ, they do that by sending responses on their specific stream as In DoQ, they do that by sending responses on their specific stream as
soon as possible, without waiting for availability of responses for soon as possible, without waiting for availability of responses for
previously opened streams. previously opened streams.
skipping to change at page 19, line 42 skipping to change at page 19, line 42
over-quic) is an open source DNS performance and functional over-quic) is an open source DNS performance and functional
testing utility written in C++ that has an experimental testing utility written in C++ that has an experimental
implementation of DoQ. implementation of DoQ.
4. aioquic (https://github.com/aiortc/aioquic) is an implementation 4. aioquic (https://github.com/aiortc/aioquic) is an implementation
of QUIC in Python. It includes example client and server for of QUIC in Python. It includes example client and server for
DoQ. DoQ.
7.1. Performance Measurements 7.1. Performance Measurements
To our knowledge, no benchmarking studies comparing DoT, DoH and DoQ To the authors' knowledge, no benchmarking studies comparing DoT, DoH
are published yet. However anecdotal evidence from the AdGuard DoQ and DoQ are published yet. However, anecdotal evidence from the
recursive resolver deployment (https://adguard.com/en/blog/dns-over- AdGuard DoQ recursive resolver deployment
quic.html) indicates that it performs well compared to the other (https://adguard.com/en/blog/dns-over-quic.html) indicates that it
performs similarly (and possibly better) compared to the other
encrypted protocols, particularly in mobile environments. Reasons encrypted protocols, particularly in mobile environments. Reasons
given for this include that DoQ given for this include that DoQ
* Uses less bandwidth due to a more efficient handshake (and due to * Uses less bandwidth due to a more efficient handshake (and due to
less per message overhead when compared to DoH). less per message overhead when compared to DoH).
* Performs better in mobile environments due to the increased * Performs better in mobile environments due to the increased
resilience to packet loss resilience to packet loss
* Can maintain connections as users move between mobile networks via * Can maintain connections as users move between mobile networks via
skipping to change at page 21, line 16 skipping to change at page 21, line 16
behavior of the recursive resolver discussed in "DNS Privacy behavior of the recursive resolver discussed in "DNS Privacy
Considerations" [RFC9076]. The attack is partially mitigated by Considerations" [RFC9076]. The attack is partially mitigated by
reducing the observability of this traffic. The mandatory replay reducing the observability of this traffic. The mandatory replay
protection mechanisms in TLS 1.3 [RFC8446] limit but do not eliminate protection mechanisms in TLS 1.3 [RFC8446] limit but do not eliminate
the risk of replay. 0-RTT packets can only be replayed within a the risk of replay. 0-RTT packets can only be replayed within a
narrow window, which is only wide enough to account for variations in narrow window, which is only wide enough to account for variations in
clock skew and network transmission. clock skew and network transmission.
The recommendation for TLS 1.3 [RFC8446] is that the capability to The recommendation for TLS 1.3 [RFC8446] is that the capability to
use 0-RTT data should be turned off by default, and only enabled if use 0-RTT data should be turned off by default, and only enabled if
the user clearly understands the associated risks. In our case, the user clearly understands the associated risks. In the case of
allowing 0-RTT data provides significant performance gains, and we DoQ, allowing 0-RTT data provides significant performance gains, and
are concerned that a recommendation to not use it would simply be there is a concern that a recommendation to not use it would simply
ignored. Instead, we provide a set of practical recommendations in be ignored. Instead, a set of practical recommendations is provided
Section 5.5 and Section 6.5.3. in Section 5.5 and Section 6.5.3.
The prevention on allowing replayable transactions in 0-RTT data The prevention on allowing replayable transactions in 0-RTT data
expressed in Section 5.5 blocks the most obvious risks of replay expressed in Section 5.5 blocks the most obvious risks of replay
attacks, as it only allows for transactions that will not change the attacks, as it only allows for transactions that will not change the
long term state of the server. long-term state of the server.
The attacks described above apply to the stub resolver to recursive The attacks described above apply to the stub resolver to recursive
resolver 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 same recursive resolver to authoritative resolver scenario, and the same
mitigations apply. mitigations apply.
9.2. Privacy Issues With Session Resumption 9.2. Privacy Issues With Session Resumption
The QUIC session resumption mechanism reduces the cost of re- The QUIC session resumption mechanism reduces the cost of re-
establishing sessions and enables 0-RTT data. There is a linkability establishing sessions and enables 0-RTT data. There is a linkability
skipping to change at page 22, line 25 skipping to change at page 22, line 25
time such transfers are not particularly latency sensitive. This time such transfers are not particularly latency sensitive. This
means that applications supporting zone transfers may decide to apply means that applications supporting zone transfers may decide to apply
the same protections as stub to recursive applications. the same protections as stub to recursive applications.
9.3. Privacy Issues With Address Validation Tokens 9.3. Privacy Issues With Address Validation Tokens
QUIC specifies address validation mechanisms in Section 8 of QUIC specifies address validation mechanisms in Section 8 of
[RFC9000]. Use of an address validation token allows QUIC servers to [RFC9000]. Use of an address validation token allows QUIC servers to
avoid an extra RTT for new connections. Address validation tokens avoid an extra RTT for new connections. Address validation tokens
are typically tied to an IP address. QUIC clients normally only use are typically tied to an IP address. QUIC clients normally only use
these tokens when setting a new connection from a previously used these tokens when setting up a new connection from a previously used
address. However, due to the prevalence of NAT, clients are not address. However, clients are not always aware that they are using a
always aware that they are using a new address. There is a new address. This could be due to NAT, or because the client does
linkability risk if clients mistakenly use address validation tokens not have an API available to check if the IP address has changed
after unknowingly moving to a new location. (which can be quite often for IPv6). There is a linkability risk if
clients mistakenly use address validation tokens after unknowingly
moving to a new location.
The recommendations in Section 6.5.3 mitigates this risk by tying the The recommendations in Section 6.5.3 mitigates this risk by tying the
usage of the NEW_TOKEN to that of session resumption. usage of the NEW_TOKEN to that of session resumption.
9.4. Privacy Issues With Long Duration Sessions 9.4. Privacy Issues With Long Duration Sessions
A potential alternative to session resumption is the use of long A potential alternative to session resumption is the use of long
duration sessions: if a session remains open for a long time, new duration sessions: if a session remains open for a long time, new
queries can be sent without incurring connection establishment queries can be sent without incurring connection establishment
delays. It is worth pointing out that the two solutions have similar delays. It is worth pointing out that the two solutions have similar
skipping to change at page 23, line 40 skipping to change at page 23, line 40
The "doq" string identifies DoQ: The "doq" string identifies DoQ:
Protocol: DoQ Protocol: DoQ
Identification Sequence: 0x64 0x6F 0x71 ("doq") Identification Sequence: 0x64 0x6F 0x71 ("doq")
Specification: This document Specification: This document
10.2. Reservation of Dedicated Port 10.2. Reservation of Dedicated Port
Port 853 is currently reserved for 'DNS query-response protocol run For both TCP and UDP port 853 is currently reserved for 'DNS query-
over TLS/DTLS' [RFC7858]. However, the specification for DNS over response protocol run over TLS/DTLS' [RFC7858].
DTLS (DoD) [RFC8094] is experimental, limited to stub to resolver,
and no implementations or deployments currently exist to our
knowledge (even though several years have passed since the
specification was published).
This specification proposes to additionally reserve the use of port However, the specification for DNS over DTLS (DoD) [RFC8094] is
853 for DoQ. QUIC was designed to be able to co-exist with other experimental, limited to stub to resolver, and no implementations or
protocols on the same port, including DTLS , see Section 17.2 of deployments currently exist to the authors' knowledge (even though
[RFC9000]. several years have passed since the specification was published).
IANA is requested to add the following value to the "Service Name and This specification proposes to additionally reserve the use of UDP
Transport Protocol Port Number Registry" in the System Range. The port 853 for DoQ. QUIC version 1 was designed to be able to co-exist
registry for that range requires IETF Review or IESG Approval with other protocols on the same port, including DTLS , see
Section 17.2 of [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
significant bit in each UDP payload. Such deployments ought to check
the signatures of future versions or extensions (e.g.
[I-D.ietf-quic-bit-grease]) of QUIC and DTLS before deploying them to
serve DNS on the same port.
IANA is requested to update the following value in the "Service Name
and Transport Protocol Port Number Registry" in the System Range.
The registry for that range requires IETF Review or IESG Approval
[RFC6335]. [RFC6335].
Service Name: dns-over-quic IANA responded to the early allocation request with the following
TEMPORARY assignment:
Service Name: domain-s
Port Number: 853 Port Number: 853
Transport Protocol(s): UDP Transport Protocol(s): UDP
Assignee: IESG Assignee: IETF DPRIVE Chairs
Contact: IETF Chair Contact: Brian Haberman
Description: DNS query-response protocol run over QUIC Description: DNS query-response protocol run over DTLS or QUIC
Reference: This document Reference: [RFC7858][RFC8094] This document
The TEMPORARY assignment expires 13th December 2022.
Additionally, IANA is requested to update the Description field for
the corresponding TCP port 853 allocation to be 'DNS query-response
protocol run over TLS' for consistency and clarity.
10.2.1. Port number 784 for experimentations 10.2.1. Port number 784 for experimentations
(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION) (RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION)
Early experiments MAY use port 784. This port is marked in the IANA Early experiments MAY use port 784. This port is marked in the IANA
registry as unassigned. registry as unassigned.
(Note that version in -02 of this draft experiments were directed to (Note that version in -02 of this draft experiments were directed to
use port 8853.) use port 8853.)
skipping to change at page 25, line 13 skipping to change at page 25, line 28
policies: policies:
* Permanent registrations for values between 0x00 and 0x3f (in * Permanent registrations for values between 0x00 and 0x3f (in
hexadecimal; inclusive), which are assigned using Standards Action hexadecimal; inclusive), which are assigned using Standards Action
or IESG Approval as defined in Section 4.9 and Section 4.10 of or IESG Approval as defined in Section 4.9 and Section 4.10 of
[RFC8126] [RFC8126]
* Permanent registrations for values larger than 0x3f, which are * Permanent registrations for values larger than 0x3f, which are
assigned using the Specification Required policy ([RFC8126]) assigned using the Specification Required policy ([RFC8126])
* Provisonal registrations for values larger than 0x3f, which * Provisional registrations for values larger than 0x3f, which
require Expert Review, as defined in Section 4.5 of [RFC8126]. require Expert Review, as defined in Section 4.5 of [RFC8126].
Provisional reservations share the range of values larger than 0x3f Provisional reservations share the range of values larger than 0x3f
with some permanent registrations. This is by design, to enable with some permanent registrations. This is by design, to enable
conversion of provisional registrations into permanent registrations conversion of provisional registrations into permanent registrations
without requiring changes in deployed systems. (This design is without requiring changes in deployed systems. (This design is
aligned with the principles set in Section 22 of [RFC9000].) aligned with the principles set in Section 22 of [RFC9000].)
Registrations in this registry MUST include the following fields: Registrations in this registry MUST include the following fields:
skipping to change at page 27, line 23 skipping to change at page 27, line 37
<https://www.rfc-editor.org/info/rfc1034>. <https://www.rfc-editor.org/info/rfc1034>.
[RFC1035] Mockapetris, P., "Domain names - implementation and [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <https://www.rfc-editor.org/info/rfc1035>. November 1987, <https://www.rfc-editor.org/info/rfc1035>.
[RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995,
DOI 10.17487/RFC1995, August 1996, DOI 10.17487/RFC1995, August 1996,
<https://www.rfc-editor.org/info/rfc1995>. <https://www.rfc-editor.org/info/rfc1995>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC5936] Lewis, E. and A. Hoenes, Ed., "DNS Zone Transfer Protocol [RFC5936] Lewis, E. and A. Hoenes, Ed., "DNS Zone Transfer Protocol
(AXFR)", RFC 5936, DOI 10.17487/RFC5936, June 2010, (AXFR)", RFC 5936, DOI 10.17487/RFC5936, June 2010,
<https://www.rfc-editor.org/info/rfc5936>. <https://www.rfc-editor.org/info/rfc5936>.
[RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms
for DNS (EDNS(0))", STD 75, RFC 6891, for DNS (EDNS(0))", STD 75, RFC 6891,
DOI 10.17487/RFC6891, April 2013, DOI 10.17487/RFC6891, April 2013,
<https://www.rfc-editor.org/info/rfc6891>. <https://www.rfc-editor.org/info/rfc6891>.
[RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan, [RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan,
skipping to change at page 28, line 14 skipping to change at page 28, line 33
[RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D.,
and P. Hoffman, "Specification for DNS over Transport and P. Hoffman, "Specification for DNS over Transport
Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May
2016, <https://www.rfc-editor.org/info/rfc7858>. 2016, <https://www.rfc-editor.org/info/rfc7858>.
[RFC7873] Eastlake 3rd, D. and M. Andrews, "Domain Name System (DNS) [RFC7873] Eastlake 3rd, D. and M. Andrews, "Domain Name System (DNS)
Cookies", RFC 7873, DOI 10.17487/RFC7873, May 2016, Cookies", RFC 7873, DOI 10.17487/RFC7873, May 2016,
<https://www.rfc-editor.org/info/rfc7873>. <https://www.rfc-editor.org/info/rfc7873>.
[RFC8094] Reddy, T., Wing, D., and P. Patil, "DNS over Datagram
Transport Layer Security (DTLS)", RFC 8094,
DOI 10.17487/RFC8094, February 2017,
<https://www.rfc-editor.org/info/rfc8094>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26, Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017, RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>. <https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8310] Dickinson, S., Gillmor, D., and T. Reddy, "Usage Profiles [RFC8310] Dickinson, S., Gillmor, D., and T. Reddy, "Usage Profiles
for DNS over TLS and DNS over DTLS", RFC 8310, for DNS over TLS and DNS over DTLS", RFC 8310,
DOI 10.17487/RFC8310, March 2018, DOI 10.17487/RFC8310, March 2018,
<https://www.rfc-editor.org/info/rfc8310>. <https://www.rfc-editor.org/info/rfc8310>.
[RFC8467] Mayrhofer, A., "Padding Policies for Extension Mechanisms
for DNS (EDNS(0))", RFC 8467, DOI 10.17487/RFC8467,
October 2018, <https://www.rfc-editor.org/info/rfc8467>.
[RFC8914] Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D. [RFC8914] Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D.
Lawrence, "Extended DNS Errors", RFC 8914, Lawrence, "Extended DNS Errors", RFC 8914,
DOI 10.17487/RFC8914, October 2020, DOI 10.17487/RFC8914, October 2020,
<https://www.rfc-editor.org/info/rfc8914>. <https://www.rfc-editor.org/info/rfc8914>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000, Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021, DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>. <https://www.rfc-editor.org/info/rfc9000>.
skipping to change at page 29, line 16 skipping to change at page 29, line 25
Mankin, "DNS Zone Transfer over TLS", RFC 9103, Mankin, "DNS Zone Transfer over TLS", RFC 9103,
DOI 10.17487/RFC9103, August 2021, DOI 10.17487/RFC9103, August 2021,
<https://www.rfc-editor.org/info/rfc9103>. <https://www.rfc-editor.org/info/rfc9103>.
12.2. Informative References 12.2. Informative References
[DNS0RTT] Kahn Gillmor, D., "DNS + 0-RTT", Message to DNS-Privacy WG [DNS0RTT] Kahn Gillmor, D., "DNS + 0-RTT", Message to DNS-Privacy WG
mailing list, 6 April 2016, <https://www.ietf.org/mail- mailing list, 6 April 2016, <https://www.ietf.org/mail-
archive/web/dns-privacy/current/msg01276.html>. archive/web/dns-privacy/current/msg01276.html>.
[I-D.ietf-quic-bit-grease]
Thomson, M., "Greasing the QUIC Bit", Work in Progress,
Internet-Draft, draft-ietf-quic-bit-grease-02, 10 November
2021, <https://www.ietf.org/archive/id/draft-ietf-quic-
bit-grease-02.txt>.
[I-D.ietf-quic-http] [I-D.ietf-quic-http]
Bishop, M., "Hypertext Transfer Protocol Version 3 Bishop, M., "Hypertext Transfer Protocol Version 3
(HTTP/3)", Work in Progress, Internet-Draft, draft-ietf- (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf-
quic-http-34, 2 February 2021, quic-http-34, 2 February 2021,
<https://www.ietf.org/archive/id/draft-ietf-quic-http- <https://www.ietf.org/archive/id/draft-ietf-quic-http-
34.txt>. 34.txt>.
[RFC1996] Vixie, P., "A Mechanism for Prompt Notification of Zone [RFC1996] Vixie, P., "A Mechanism for Prompt Notification of Zone
Changes (DNS NOTIFY)", RFC 1996, DOI 10.17487/RFC1996, Changes (DNS NOTIFY)", RFC 1996, DOI 10.17487/RFC1996,
August 1996, <https://www.rfc-editor.org/info/rfc1996>. August 1996, <https://www.rfc-editor.org/info/rfc1996>.
skipping to change at page 29, line 39 skipping to change at page 30, line 5
Procedures for the Management of the Service Name and Procedures for the Management of the Service Name and
Transport Protocol Port Number Registry", BCP 165, Transport Protocol Port Number Registry", BCP 165,
RFC 6335, DOI 10.17487/RFC6335, August 2011, RFC 6335, DOI 10.17487/RFC6335, August 2011,
<https://www.rfc-editor.org/info/rfc6335>. <https://www.rfc-editor.org/info/rfc6335>.
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running
Code: The Implementation Status Section", BCP 205, Code: The Implementation Status Section", BCP 205,
RFC 7942, DOI 10.17487/RFC7942, July 2016, RFC 7942, DOI 10.17487/RFC7942, July 2016,
<https://www.rfc-editor.org/info/rfc7942>. <https://www.rfc-editor.org/info/rfc7942>.
[RFC8094] Reddy, T., Wing, D., and P. Patil, "DNS over Datagram
Transport Layer Security (DTLS)", RFC 8094,
DOI 10.17487/RFC8094, February 2017,
<https://www.rfc-editor.org/info/rfc8094>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
[RFC8467] Mayrhofer, A., "Padding Policies for Extension Mechanisms
for DNS (EDNS(0))", RFC 8467, DOI 10.17487/RFC8467,
October 2018, <https://www.rfc-editor.org/info/rfc8467>.
[RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS [RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS
(DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018,
<https://www.rfc-editor.org/info/rfc8484>. <https://www.rfc-editor.org/info/rfc8484>.
[RFC8490] Bellis, R., Cheshire, S., Dickinson, J., Dickinson, S., [RFC8490] Bellis, R., Cheshire, S., Dickinson, J., Dickinson, S.,
Lemon, T., and T. Pusateri, "DNS Stateful Operations", Lemon, T., and T. Pusateri, "DNS Stateful Operations",
RFC 8490, DOI 10.17487/RFC8490, March 2019, RFC 8490, DOI 10.17487/RFC8490, March 2019,
<https://www.rfc-editor.org/info/rfc8490>. <https://www.rfc-editor.org/info/rfc8490>.
[RFC8932] Dickinson, S., Overeinder, B., van Rijswijk-Deij, R., and [RFC8932] Dickinson, S., Overeinder, B., van Rijswijk-Deij, R., and
skipping to change at page 31, line 11 skipping to change at page 31, line 30
Appendix B. Notable Changes From Previous Versions Appendix B. Notable Changes From Previous Versions
(RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION) (RFC EDITOR NOTE: THIS SECTION TO BE REMOVED BEFORE PUBLICATION)
B.1. Stream Mapping Incompatibility With Draft-02 B.1. Stream Mapping Incompatibility With Draft-02
Versions prior to -02 of this specification proposed a simpler Versions prior to -02 of this specification proposed a simpler
mapping scheme of queries and responses to QUIc stream, which omitted mapping scheme of queries and responses to QUIc stream, which omitted
the 2 byte length field and supported only a single response on a the 2 byte length field and supported only a single response on a
given stream. The more complex mapping in Section 5.2 was adopted to given stream. The more complex mapping in Section 5.2 was adopted to
specifically cater for XFR support, however it breaks compatibility specifically cater for XFR support, however, it breaks compatibility
with earlier versions. with earlier versions.
Authors' Addresses Authors' Addresses
Christian Huitema Christian Huitema
Private Octopus Inc. Private Octopus Inc.
427 Golfcourse Rd 427 Golfcourse Rd
Friday Harbor, WA 98250 Friday Harbor, WA 98250
United States of America United States of America
 End of changes. 55 change blocks. 
86 lines changed or deleted 125 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/