<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dnssd-multi-qtypes-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title>DNS Multiple QTYPEs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dnssd-multi-qtypes-10"/>
    <author initials="R." surname="Bellis" fullname="Ray Bellis">
      <organization abbrev="ISC">Internet Systems Consortium, Inc.</organization>
      <address>
        <postal>
          <street>PO Box 360</street>
          <city>Newmarket</city>
          <code>NH 03857</code>
          <country>USA</country>
        </postal>
        <phone>+1 650 423 1300</phone>
        <email>ray@isc.org</email>
      </address>
    </author>
    <date year="2025" month="September" day="22"/>
    <area>Internet</area>
    <workgroup>DNSSD</workgroup>
    <keyword>DNS</keyword>
    <keyword>resource record</keyword>
    <abstract>
      <?line 35?>

<t>This document specifies a method for a DNS client to request additional
DNS record types to be delivered alongside the primary record type
specified in the question section of a DNS QUERY (OpCode=0).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dnssd-wg.github.io/draft-ietf-dnssd-multi-qtypes/draft-ietf-dnssd-multi-qtypes.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dnssd-multi-qtypes/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        DNSSD Working Group mailing list (<eref target="mailto:dnssd@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dnssd/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dnssd/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dnssd-wg/draft-ietf-dnssd-multi-qtypes"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A commonly requested DNS <xref target="RFC1035"/> feature is the ability to receive
multiple related resource records (RRs) in a single DNS response.</t>
      <t>For example, it may be desirable to receive the A, AAAA and HTTPS
records for a domain name together, rather than having to issue
multiple queries.</t>
      <t>The DNS wire protocol in theory supported having multiple questions in a
single packet, but in practise this does not work.  In <xref target="RFC9619"/>,
<xref target="RFC1035"/> is updated to only permit a single question in a QUERY
(OpCode=0) request.</t>
      <t>Sending QTYPE=ANY does not guarantee that all RRsets will be returned.
<xref target="RFC8482"/> specifies that responders may return a single RRset of
their choosing.</t>
      <t>This document provides a solution for those cases where only the QTYPE
varies by specifying a new option for the Extension Mechanisms for DNS
(EDNS <xref target="RFC6891"/>) that contains an additional list of QTYPE values
that the client wishes to receive in addition to the single QTYPE
appearing in the question section.  A different EDNS option is used in
response packets as protection against DNS middleboxes that echo EDNS
options verbatim.</t>
      <t>The specification described herein is applicable both for queries from a
stub resolver to recursive servers, and from recursive resolvers to
authoritative servers. It does not apply to Multicast DNS queries
<xref target="RFC6762"/>, which are already designed to allow requesting multiple
records in a single query.</t>
    </section>
    <section anchor="terminology-used-in-this-document">
      <name>Terminology used in this document</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="description">
      <name>Description</name>
      <section anchor="multiple-qtype-edns-options-format">
        <name>Multiple QTYPE EDNS Options Format</name>
        <t>The overall format of an EDNS option is shown for reference below,
per <xref target="RFC6891"/>, followed by the option specific data:</t>
        <artwork><![CDATA[
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0: |                          OPTION-CODE                          |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
2: |                         OPTION-LENGTH                         |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
4: |                                                               |
   /                          OPTION-DATA                          /
   /                                                               /
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]></artwork>
        <t>OPTION-CODE: MQTYPE-Query (20) in queries and MQTYPE-Response (21) in responses.</t>
        <t>OPTION-LENGTH: Size (in octets) of OPTION-DATA.</t>
        <t>OPTION-DATA: Option specific, as below:</t>
        <artwork><![CDATA[
                +0 (MSB)                        +1 (LSB)
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0: |           QT1 (MSB)           |           QT1 (LSB)           |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
2: /              ...              |              ...              /
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   /           QTn (MSB)           |           QTn (LSB)           |
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
]]></artwork>
        <t>QT: a (potentially empty) list of 2 byte fields (QTx) in network order
(MSB first) each specifying a DNS RRTYPE that must be for a data RRTYPE
as described in Section 3.1 of <xref target="RFC6895"/>.</t>
      </section>
      <section anchor="server-handling">
        <name>Server Handling</name>
        <section anchor="request-parsing">
          <name>Request Parsing</name>
          <t>If MQTYPE-Query is received in any inbound DNS message with an OpCode
other than QUERY (0) the server <bcp14>MUST</bcp14> return a FORMERR response.</t>
          <t>A server that receives an MQTYPE-Response option in any inbound DNS
message <bcp14>MUST</bcp14> return a FORMERR response.</t>
          <t>A server that receives more than one MQTYPE-Query option in a query <bcp14>MUST</bcp14>
return a FORMERR response.</t>
          <t>If an MQTYPE-Query option is received in a query that contains no primary
question (i.e. QDCOUNT=0) the server <bcp14>MUST</bcp14> return a FORMERR response.</t>
          <t>If an MQTYPE-Query option is received in a query where the primary question
is a non-data RRTYPE (e.g. ANY, AXFR, etc.) the server <bcp14>MUST</bcp14> return a FORMERR
response.</t>
          <t>If any invalid QTx is received in the query (e.g. one corresponding to a
Meta RRTYPE) the server <bcp14>MUST</bcp14> return a FORMERR response.</t>
          <t>If any duplicate QTx (or one duplicating the primary QTYPE field) is
contained in a query the server <bcp14>MUST</bcp14> return a FORMERR response.</t>
        </section>
        <section anchor="response-generation">
          <name>Response Generation</name>
          <t>A conforming server that receives an MQTYPE-Query option in a query <bcp14>MUST</bcp14>
return an MQTYPE-Response option in its response, even if that response
is truncated (TC=1).</t>
          <t>The server <bcp14>MUST</bcp14> first start constructing a response for the primary
(QNAME, QCLASS, QTYPE) tuple specified in the Question section per
the existing DNS sections.  The RCODE and all other flags (e.g. AA,
AD, etc) <bcp14>MUST</bcp14> be determined at this time.</t>
          <t>If this initial response results in truncation (TC=1) then the
additional queries specified in the MQTYPE-Query option <bcp14>MUST NOT</bcp14> be
processed.</t>
          <t>After the initial response is prepared, the server <bcp14>MUST</bcp14> attempt to
combine the responses for individual (QNAME, QCLASS, QTx) combinations
into the response for the first query.  If a recursive server does
not yet have those responses available it <bcp14>MUST</bcp14> first make appropriate
outbound queries to populate its caches.</t>
          <t>For each individual combination the server <bcp14>MUST</bcp14> evaluate the resulting
RCODE and other flags and check that they all match the values generated
from the primary query.</t>
          <t>If any mismatch is detected the mismatching additional response <bcp14>MUST NOT</bcp14>
be included in the final combined response and its QTx value <bcp14>MUST NOT</bcp14> be
included in the MQTYPE-Response option's list.  This might happen, for example,
if the primary query resulted in a NOERROR response but a QTx query
resulted in a SERVFAIL, or if the primary response has AA=0 but a QTx
response has AA=1, such as might happen if the NS and DS records were
both requested at the parent side of a zone cut.</t>
          <t>The server <bcp14>MUST</bcp14> attempt to combine the remaining individual RRs into the
same sections in which they would have appeared in a standalone query,
i.e.  as if each combination had been "the question" per section 4.1 of
<xref target="RFC1035"/>.</t>
          <t>The server <bcp14>MUST</bcp14> detect duplicate RRs and keep only a single copy of each
RR in its respective section.  Duplicates can occur e.g. in the Answer
section if a CNAME chain is involved, or in the Authority section if
multiple QTYPEs don't exist, etc.  Note that RRs can be legitimately
duplicated in different sections, e.g. for the (SOA, TYPE12345)
combination on apex where TYPE12345 is not present.</t>
          <t>Handling of an MQTYE-Query option <bcp14>MUST NOT</bcp14> itself trigger a truncated
response.  If message size (or other) limits do not allow all of the
data obtained by querying for an additional QTx to be included in the
final response in their entirety (i.e. as complete RRsets) then the
server <bcp14>MUST NOT</bcp14> include the respective QTx in the MQTYPE-Response
option's list and <bcp14>MAY</bcp14> stop processing further QTx combinations.</t>
          <t>If all RRs for a single QTx combination fit into the message then the
server <bcp14>MUST</bcp14> include the respective QTx in the MQTYPE-Response option's list
to indicate that the given query type was completely processed.</t>
        </section>
      </section>
      <section anchor="client-response-processing">
        <name>Client Response Processing</name>
        <t>Recursive resolvers <bcp14>MAY</bcp14> use this method to obtain multiple records from
an authoritative server.  For the purposes of Section 5.4.1 of
<xref target="RFC2181"/> any authoritative answers received <bcp14>MUST</bcp14> be ranked the same
as the answer for the primary question.</t>
        <t>If the response to a query containing an MQTYPE-Query option does not
contain an MQTYPE-Response option, or if it erroneously contains an
MQTYPE-Query option, the client <bcp14>MUST</bcp14> treat the response as if this
option is unsupported by the server and <bcp14>SHOULD</bcp14> process the response as
if the MQTYPE-Query option had not been used.</t>
        <t>If the MQTYPE-Response option is present more than once or if a QTx
value is duplicated (or duplicates the primary QTYPE field) the client
<bcp14>MUST</bcp14> treat the answer as invalid (equivalent to FORMERR)</t>
        <t>The Question section and the list of types present in the
MQTYPE-Response option indicates the list of (QNAME, QCLASS, qtypes)
combinations which are completely contained within the received
response.  The answers to all query combinations share the same RCODE
and all other flags.</t>
        <t>All RRs required by existing DNS specifications are expected to be
present in the respective sections of the DNS message, including proofs
of nonexistence where required. The client <bcp14>MUST NOT</bcp14> rely on any
particular order of RRs in the message sections.</t>
        <t>Clients <bcp14>MUST</bcp14> take into account that individual RRs might originate from
different DNS zones and that proofs of non-existence might have been
produced by different signers.</t>
        <t>Absence of QTx values which were requested by client but are not present
in MQTYPE-Response option indicates that:</t>
        <ul spacing="normal">
          <li>
            <t>the server was unwilling to process the request (e.g. because a limit
was exceeded), and/or</t>
          </li>
          <li>
            <t>the individual responses could not be combined into one message
because of RCODE or other flag mismatches, and/or</t>
          </li>
          <li>
            <t>the message size limit would be exceeded</t>
          </li>
        </ul>
        <t>The client <bcp14>SHOULD</bcp14> subsequently initiate standalone queries (e.g. without
using the MQTYPE-Query option) for any QTx value which was requested but
is missing in the response.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The method documented here does not change any of the security
properties of the DNS protocol itself.</t>
      <t>It should however be noted that this method does increase the potential
amplification factor when the DNS protocol is used as a vector for a
denial of service attack.</t>
      <t>Implementors <bcp14>SHOULD</bcp14> allow operators to configure limits on the number of
QTx values specified and/or the resulting response size.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA has assigned the following in the "DNS EDNS0 Option Codes (OPT)" registry:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Status</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">20</td>
            <td align="left">MQTYPE-Query</td>
            <td align="left">Optional</td>
            <td align="left">RFC TBD</td>
          </tr>
          <tr>
            <td align="left">21</td>
            <td align="left">MQTYPE-Response</td>
            <td align="left">Optional</td>
            <td align="left">RFC TBD</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author wishes to thank the following for their feedback and reviews
during the initial development of this document: Michael Graff, Olafur
Gudmundsson, Matthijs Mekking, and Paul Vixie.</t>
      <t>In addition the author wishes to thank the following for subsequent
review during discussion in the DNSSD Working Group: Chris Box, Stuart
Cheshire, Esko Dijk, Ted Lemon, David Schinazi and Petr Spacek.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC9619">
          <front>
            <title>In the DNS, QDCOUNT Is (Usually) One</title>
            <author fullname="R. Bellis" initials="R." surname="Bellis"/>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>This document updates RFC 1035 by constraining the allowed value of the QDCOUNT parameter in DNS messages with OPCODE = 0 (QUERY) to a maximum of one, and it specifies the required behavior when values that are not allowed are encountered.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9619"/>
          <seriesInfo name="DOI" value="10.17487/RFC9619"/>
        </reference>
        <reference anchor="RFC6891">
          <front>
            <title>Extension Mechanisms for DNS (EDNS(0))</title>
            <author fullname="J. Damas" initials="J." surname="Damas"/>
            <author fullname="M. Graff" initials="M." surname="Graff"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow requestors to advertise their capabilities to responders. This document describes backward-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 implementations. It also obsoletes RFC 2673 ("Binary Labels in the Domain Name System") and adds considerations on the use of extended labels in the DNS.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="75"/>
          <seriesInfo name="RFC" value="6891"/>
          <seriesInfo name="DOI" value="10.17487/RFC6891"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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 Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC6895">
          <front>
            <title>Domain Name System (DNS) IANA Considerations</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document specifies Internet Assigned Numbers Authority (IANA) parameter assignment considerations for the allocation of Domain Name System (DNS) resource record types, CLASSes, operation codes, error codes, DNS protocol message header bits, and AFSDB resource record subtypes. It obsoletes RFC 6195 and updates RFCs 1183, 2845, 2930, and 3597.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="42"/>
          <seriesInfo name="RFC" value="6895"/>
          <seriesInfo name="DOI" value="10.17487/RFC6895"/>
        </reference>
        <reference anchor="RFC2181">
          <front>
            <title>Clarifications to the DNS Specification</title>
            <author fullname="R. Elz" initials="R." surname="Elz"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <date month="July" year="1997"/>
            <abstract>
              <t>This document considers some areas that have been identified as problems with the specification of the Domain Name System, and proposes remedies for the defects identified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2181"/>
          <seriesInfo name="DOI" value="10.17487/RFC2181"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8482">
          <front>
            <title>Providing Minimal-Sized Responses to DNS Queries That Have QTYPE=ANY</title>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="M. Majkowski" initials="M." surname="Majkowski"/>
            <author fullname="E. Hunt" initials="E." surname="Hunt"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) specifies a query type (QTYPE) "ANY". The operator of an authoritative DNS server might choose not to respond to such queries for reasons of local policy, motivated by security, performance, or other reasons.</t>
              <t>The DNS specification does not include specific guidance for the behavior of DNS servers or clients in this situation. This document aims to provide such guidance.</t>
              <t>This document updates RFCs 1034 and 1035.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8482"/>
          <seriesInfo name="DOI" value="10.17487/RFC8482"/>
        </reference>
        <reference anchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
      </references>
    </references>
    <?line 294?>

<section anchor="examples">
      <name> Examples</name>
      <t>The examples below are shown as might be reported by the ISC Dig utility.
For the purposes of brevity irrelevant content is omitted.</t>
      <section anchor="stub-query-for-a-with-mqtype-query-for-aaaa-https">
        <name>Stub query for A with MQType-Query for AAAA + HTTPS</name>
        <t>In this example a stub resolver has requested the A record for
www.example.com, along with an MQTYPE-Query option requesting AAAA and
HTTPS records.  The stub resolver has also set the DO bit, indicating
DNSSEC support.</t>
        <t>The presence of the HTTPS QTYPE in the MQTYPE-Response option of the response
coupled with its absence from the answer section indicates that the
recursive server currently holds no data for this QTYPE.  The corresponding
type fields in the NSEC3 record further provide a cryptographic proof of
non-existence for the HTTPS QTYPE and the SOA record also indicates a
"negative answer".</t>
        <figure anchor="figaaaahttps">
          <name>A + AAAA + HTTPS</name>
          <artwork><![CDATA[
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11111
;; flags: qr rd ra ad
;; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; MQTYPE-Response: AAAA HTTPS

;; QUESTION SECTION:
;www.example.com.         IN  A

;; ANSWER SECTION:
www.example.com.    2849  IN  A       192.0.2.1
www.example.com.    2849  IN  RRSIG   A [...]
www.example.com.    3552  IN  AAAA    3fff::1234
www.example.com.    3552  IN  RRSIG   AAAA [...]

;; AUTHORITY SECTION:
example.com.        2830  IN  SOA     ns.example.com. [...]
example.com.        2830  IN  RRSIG   SOA 13 2 [...]
[...].example.com.  2830  IN  NSEC3   [...] A TXT AAAA RRSIG
[...].example.com.  2830  IN  RRSIG   NSEC3 [...]
]]></artwork>
        </figure>
      </section>
      <section anchor="stub-query-for-ds-with-mqtype-query-for-dnskey">
        <name>Stub query for DS with MQType-Query for DNSKEY</name>
        <t>In this similar example, the primary QTYPE is for DS and the MQTYPE-Query
field only contains DNSKEY.</t>
        <t>Both the DS and DNSKEY records are returned, along with their corresponding
RRSIG records.</t>
        <figure anchor="figdsdnskey">
          <name>Stub DS + DNSKEY</name>
          <artwork><![CDATA[
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33333
;; flags: qr rd ra ad
;; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; MQTYPE-Response: DNSKEY

;; QUESTION SECTION:
;example.com.                 IN      DS

;; ANSWER SECTION:
example.com.        625   IN  DNSKEY  256 3 13 [...]
example.com.        625   IN  DNSKEY  257 3 13 [...]
example.com.        625   IN  RRSIG   DNSKEY [...] example.com. [...]
example.com.      86185   IN  DS      370 13 2 [...]
example.com.      86185   IN  RRSIG   DS [...] com. [...]
]]></artwork>
        </figure>
      </section>
      <section anchor="recursive-query-for-ds-with-mqtype-query-for-ns">
        <name>Recursive query for DS with MQType-Query for NS</name>
        <t>In this instance, a recursive resolver is sending a DS record query to the
parent zone's authoritative server and simultaneously requesting the NS
records for the zone.</t>
        <t>Since the DS record response is marked as authoritative (AA = 1) but the
NS record data on the parent side of a zone cut is not authoritative
(AA = 0) the server is unable to merge the responses, and the NS QTYPE
is omitted from the MQTYPE-Response field.</t>
        <figure anchor="figdsns">
          <name>Recursive DS + NS</name>
          <artwork><![CDATA[
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33333
;; flags: qr aa
;; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; MQTYPE-Response: [empty]

;; QUESTION SECTION:
;example.com.             IN  DS

;; ANSWER SECTION:
example.com.      86185   IN  DS      370 13 2 [...]
example.com.      86185   IN  RRSIG   DS [...] com. [...]
]]></artwork>
        </figure>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
+V4bF7mz9Ex22wtOnv8GHf03FWA7AAA=

-->

</rfc>
