<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dnssd-multi-qtypes-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title>DNS Multiple QTYPEs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dnssd-multi-qtypes-06"/>
    <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="2024" month="December" day="19"/>
    <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 (TBD1) in queries and MQTYPE-Response (TBD2) 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.  The RRTYPEs <bcp14>MUST</bcp14> be for
real resource records, and <bcp14>MUST NOT</bcp14> refer to Meta RRTYPEs such as
"OPT" and those from the reserved range 128 - 255, e.g. "IXFR", "TSIG",
"*", etc.</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 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>
          <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>
        </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.</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 their
respective sections. 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>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
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>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>NB: to be rewritten once assignments have been made.</t>
      <t>IANA is requested to assign two new values (TBD1 and TBD2) in the DNS
EDNS0 Option Codes registry for MQTYPE-Query and MQTYPE-Response.  They
should be consecutive, with the -Query option being an even number.</t>
    </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="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 281?>

<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-request-for-aaaa-https">
        <name>Stub query for A with MQType-Request for AAAA + HTTPS</name>
        <t>In this example a stub resolver has requested the A record for
www.example.com, along with an MQTYPE-Request 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-request-for-dnskey">
        <name>Stub query for DS with MQType-Request for DNSKEY</name>
        <t>In this similar example, the primary QTYPE is for DS and the MQTYPE-Request
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-request-for-ns">
        <name>Recursive query for DS with MQType-Request 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 rd ra 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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
DzkAAA==

-->

</rfc>
