rfc8906v3.xml   rfc8906.xml 
skipping to change at line 628 skipping to change at line 628
We expect the SOA record for the zone to be returned We expect the SOA record for the zone to be returned
in the answer section, the rcode to be set to NOERROR, and in the answer section, the rcode to be set to NOERROR, and
the Authoritative Answer (AA) and Query/Response (QR) bits to be the Authoritative Answer (AA) and Query/Response (QR) bits to be
set in the header; the Recursion Available (RA) bits may also be set in the header; the Recursion Available (RA) bits may also be
set <xref target="RFC1034" format="default"/>. We set <xref target="RFC1034" format="default"/>. We
do not expect an OPT record to be returned <xref target="RFC6891" do not expect an OPT record to be returned <xref target="RFC6891"
format="default"/>.</t> format="default"/>.</t>
<t keepWithNext="true"> <t keepWithNext="true">
Verify the server is configured for the zone: Verify the server is configured for the zone:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +noad +norec soa $zone @$server dig +noedns +noad +norec soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Unknown Types</name> <name>Testing Unknown Types</name>
<t> <t>
Identifying servers that fail to respond to unknown or Identifying servers that fail to respond to unknown or
unsupported types can be done by making an initial DNS unsupported types can be done by making an initial DNS
query for an A record, making a number of queries for an query for an A record, making a number of queries for an
unallocated type, then making a query for an A record unallocated type, then making a query for an A record
again. IANA maintains a registry of allocated types <xref again. IANA maintains a registry of allocated types <xref
skipping to change at line 676 skipping to change at line 676
<t> <t>
We expect no records to be returned in the answer We expect no records to be returned in the answer
section, the rcode to be set to NOERROR, and the AA and section, the rcode to be set to NOERROR, and the AA and
QR bits to be set in the header; RA may also be set QR bits to be set in the header; RA may also be set
<xref target="RFC1034" format="default"/>. We do not expect an OPT record <xref target="RFC1034" format="default"/>. We do not expect an OPT record
to be returned <xref target="RFC6891" format="default"/>. to be returned <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that queries for an unknown type work: Check that queries for an unknown type work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +noad +norec type1000 $zone @$server dig +noedns +noad +norec type1000 $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: an empty answer section. expect: an empty answer section.
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Header Bits</name> <name>Testing Header Bits</name>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing CD=1 Queries</name> <name>Testing CD=1 Queries</name>
<t> <t>
Ask for the SOA record of the configured zone. Ask for the SOA record of the configured zone.
This query is made with only the CD DNS flag bit set, This query is made with only the CD DNS flag bit set,
with all other DNS bits clear, and without EDNS. with all other DNS bits clear, and without EDNS.
</t> </t>
skipping to change at line 710 skipping to change at line 710
do not expect an OPT record to be returned. do not expect an OPT record to be returned.
</t> </t>
<t> <t>
If the server supports DNSSEC, CD should be set in If the server supports DNSSEC, CD should be set in
the response <xref target="RFC4035" format="default"/>; otherwise, CD the response <xref target="RFC4035" format="default"/>; otherwise, CD
should be clear <xref target="RFC1034" format="default"/>. should be clear <xref target="RFC1034" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that queries with CD=1 work: Check that queries with CD=1 work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +noad +norec +cd soa $zone @$server dig +noedns +noad +norec +cd soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing AD=1 Queries</name> <name>Testing AD=1 Queries</name>
<t>Ask for the SOA record of the configured zone. This query is <t>Ask for the SOA record of the configured zone. This query is
made with only the AD DNS flag bit set, with all other DNS bits clear, made with only the AD DNS flag bit set, with all other DNS bits clear,
and without EDNS.</t> and without EDNS.</t>
<t> <t>
We expect the SOA record for the zone to be returned We expect the SOA record for the zone to be returned
in the answer section, the rcode to be set to NOERROR, in the answer section, the rcode to be set to NOERROR,
and the AA and QR bits to be set in the header. We and the AA and QR bits to be set in the header. We
do not expect an OPT record to be returned. The do not expect an OPT record to be returned. The
purpose of this query is to detect blocking of queries purpose of this query is to detect blocking of queries
with the AD bit present, not the specific value of with the AD bit present, not the specific value of
AD in the response. AD in the response.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that queries with AD=1 work: Check that queries with AD=1 work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +norec +ad soa $zone @$server dig +noedns +norec +ad soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
<t keepWithPrevious="true"> <t keepWithPrevious="true">
AD use in queries is defined in <xref target="RFC6840" format="default"/>. AD use in queries is defined in <xref target="RFC6840" format="default"/>.
</t> </t>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Reserved Bit</name> <name>Testing Reserved Bit</name>
<t> <t>
Ask for the SOA record of the configured zone. This Ask for the SOA record of the configured zone. This
query is made with only the final reserved DNS flag query is made with only the final reserved DNS flag
bit set, with all other DNS bits clear, and without EDNS. bit set, with all other DNS bits clear, and without EDNS.
skipping to change at line 771 skipping to change at line 771
and the AA and QR bits to be set in the header; RA and the AA and QR bits to be set in the header; RA
may be set. The final reserved bit must not be set may be set. The final reserved bit must not be set
<xref target="RFC1034" format="default"/>. We do not expect an OPT <xref target="RFC1034" format="default"/>. We do not expect an OPT
record to be returned <xref target="RFC6891" format="default"/>. record to be returned <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that queries with the last unassigned DNS Check that queries with the last unassigned DNS
header flag work and that the flag bit is not header flag work and that the flag bit is not
copied to the response: copied to the response:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type="" ><![CDATA[
dig +noedns +noad +norec +zflag soa $zone @$server dig +noedns +noad +norec +zflag soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: MBZ to NOT be in the response (see below) expect: MBZ to NOT be in the response (see below)
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
<t keepWithPrevious="true"> MBZ (Must Be Zero) is a dig-specific <t keepWithPrevious="true"> MBZ (Must Be Zero) is a dig-specific
indication that the flag bit has been incorrectly copied. See indication that the flag bit has been incorrectly copied. See
<xref target="RFC1035" sectionFormat="of" section="4.1.1"/>:</t> <xref target="RFC1035" sectionFormat="of" section="4.1.1"/>:</t>
<dl newline="false"> <dl newline="false">
<dt>"Z</dt> <dt>"Z</dt>
<dd>Reserved for future use. Must be zero in all queries and responses."</dd> <dd>Reserved for future use. Must be zero in all queries and responses."</dd>
</dl> </dl>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
skipping to change at line 808 skipping to change at line 808
<t> <t>
We expect the SOA record for the zone to be returned We expect the SOA record for the zone to be returned
in the answer section, the rcode to be set to NOERROR, and in the answer section, the rcode to be set to NOERROR, and
the AA, QR and RD bits to be set in the header; RA the AA, QR and RD bits to be set in the header; RA
may also be set <xref target="RFC1034" format="default"/>. We do not may also be set <xref target="RFC1034" format="default"/>. We do not
expect an OPT record to be returned <xref target="RFC6891" format="default"/>. expect an OPT record to be returned <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that recursive queries work: Check that recursive queries work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +noad +rec soa $zone @$server dig +noedns +noad +rec soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to be present expect: flag: rd to be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Unknown Opcodes</name> <name>Testing Unknown Opcodes</name>
<t> <t>
Construct a DNS message that consists of only a DNS Construct a DNS message that consists of only a DNS
header with opcode set to 15 (currently not allocated), header with opcode set to 15 (currently not allocated),
no DNS header bits set, and empty question, answer, no DNS header bits set, and empty question, answer,
authority, and additional sections. </t> authority, and additional sections. </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that new opcodes are handled: Check that new opcodes are handled:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +noad +opcode=15 +norec +header-only @$server dig +noedns +noad +opcode=15 +norec +header-only @$server
expect: status: NOTIMP expect: status: NOTIMP
expect: opcode: 15 expect: opcode: 15
expect: all sections to be empty expect: all sections to be empty
expect: flag: aa to NOT be present expect: flag: aa to NOT be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing TCP</name> <name>Testing TCP</name>
<t> <t>
Whether a server accepts TCP connections can be tested Whether a server accepts TCP connections can be tested
by first checking that it responds to UDP queries to by first checking that it responds to UDP queries to
confirm that it is up and operating, then attempting the confirm that it is up and operating, then attempting the
same query over TCP. An additional query should be made same query over TCP. An additional query should be made
over UDP if the TCP connection attempt fails to confirm over UDP if the TCP connection attempt fails to confirm
that the server under test is still operating. that the server under test is still operating.
skipping to change at line 867 skipping to change at line 867
<t> <t>
We expect the SOA record for the zone to be returned We expect the SOA record for the zone to be returned
in the answer section, the rcode to be set to NOERROR, and in the answer section, the rcode to be set to NOERROR, and
the AA and QR bits to be set in the header; RA may the AA and QR bits to be set in the header; RA may
also be set <xref target="RFC1034" format="default"/>. We do not expect also be set <xref target="RFC1034" format="default"/>. We do not expect
an OPT record to be returned <xref target="RFC6891" format="default"/>. an OPT record to be returned <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that TCP queries work: Check that TCP queries work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +noedns +noad +norec +tcp soa $zone @$server dig +noedns +noad +norec +tcp soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: rd to NOT be present expect: flag: rd to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
expect: the OPT record to NOT be present expect: the OPT record to NOT be present
]]></artwork> ]]></sourcecode>
<t keepWithPrevious="true"> <t keepWithPrevious="true">
The requirement that TCP be supported is defined The requirement that TCP be supported is defined
in <xref target="RFC7766" format="default"/>. in <xref target="RFC7766" format="default"/>.
</t> </t>
</section> </section>
</section> </section>
<section anchor="testing-edns" numbered="true" toc="default"> <section anchor="testing-edns" numbered="true" toc="default">
<name>Testing: Extended DNS</name> <name>Testing: Extended DNS</name>
<t> <t>
The next set of tests cover various aspects of EDNS The next set of tests cover various aspects of EDNS
skipping to change at line 913 skipping to change at line 913
the AA and QR bits to be set in the header; RA may the AA and QR bits to be set in the header; RA may
also be set <xref target="RFC1034" format="default"/>. We expect also be set <xref target="RFC1034" format="default"/>. We expect
an OPT record to be returned. There should be no EDNS an OPT record to be returned. There should be no EDNS
flags present in the response. The EDNS version field flags present in the response. The EDNS version field
should be 0, and there should be no EDNS options present should be 0, and there should be no EDNS options present
<xref target="RFC6891" format="default"/>. <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that plain EDNS queries work: Check that plain EDNS queries work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=0 +noad +norec soa $zone @$server dig +nocookie +edns=0 +noad +norec soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
<t keepWithPrevious="true"> <t keepWithPrevious="true">
+nocookie disables sending an EDNS COOKIE option, which +nocookie disables sending an EDNS COOKIE option, which
is otherwise enabled by default in BIND 9.11.0 (and is otherwise enabled by default in BIND 9.11.0 (and
later). later).
</t> </t>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing EDNS Version Negotiation</name> <name>Testing EDNS Version Negotiation</name>
<t> <t>
Ask for the SOA record of a zone the server is nominally Ask for the SOA record of a zone the server is nominally
skipping to change at line 950 skipping to change at line 950
BADVERS and the QR bit to be set in the header; RA BADVERS and the QR bit to be set in the header; RA
may also be set <xref target="RFC1034" format="default"/>. We expect may also be set <xref target="RFC1034" format="default"/>. We expect
an OPT record to be returned. There should be no EDNS an OPT record to be returned. There should be no EDNS
flags present in the response. The EDNS version field flags present in the response. The EDNS version field
should be 0 in the response, as no other EDNS version should be 0 in the response, as no other EDNS version
has as yet been specified <xref target="RFC6891" format="default"/>. has as yet been specified <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS version 1 queries work (EDNS supported): Check that EDNS version 1 queries work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=1 +noednsneg +noad +norec soa $zone @$server dig +nocookie +edns=1 +noednsneg +noad +norec soa $zone @$server
expect: status: BADVERS expect: status: BADVERS
expect: the SOA record to NOT be present in the answer section expect: the SOA record to NOT be present in the answer section
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to NOT be present expect: flag: aa to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
<t keepWithPrevious="true"> <t keepWithPrevious="true">
+noednsneg has been set, as dig supports EDNS version +noednsneg has been set, as dig supports EDNS version
negotiation, and we want to see only the response to the negotiation, and we want to see only the response to the
initial EDNS version 1 query. initial EDNS version 1 query.
</t> </t>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Unknown EDNS Options</name> <name>Testing Unknown EDNS Options</name>
<t> <t>
Ask for the SOA record of the configured zone. This Ask for the SOA record of the configured zone. This
skipping to change at line 992 skipping to change at line 992
an OPT record to be returned. There should be no EDNS an OPT record to be returned. There should be no EDNS
flags present in the response. The EDNS version field flags present in the response. The EDNS version field
should be 0, as EDNS versions other than 0 are yet to should be 0, as EDNS versions other than 0 are yet to
be specified, and there should be no EDNS options present, be specified, and there should be no EDNS options present,
as unknown EDNS options are supposed to be ignored by the as unknown EDNS options are supposed to be ignored by the
server (<xref target="RFC6891" sectionFormat="of" section="6.1.1"/>). server (<xref target="RFC6891" sectionFormat="of" section="6.1.1"/>).
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS queries with an unknown option work (EDNS supported): Check that EDNS queries with an unknown option work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=0 +noad +norec +ednsopt=100 soa $zone @$server dig +nocookie +edns=0 +noad +norec +ednsopt=100 soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: OPT=100 to NOT be present expect: OPT=100 to NOT be present
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Unknown EDNS Flags</name> <name>Testing Unknown EDNS Flags</name>
<t> <t>
Ask for the SOA record of the configured zone. This Ask for the SOA record of the configured zone. This
query is made with no DNS flag bits set. EDNS version query is made with no DNS flag bits set. EDNS version
0 is used without any EDNS options. An unassigned EDNS 0 is used without any EDNS options. An unassigned EDNS
flag bit is set (0x40 in this case). flag bit is set (0x40 in this case).
</t> </t>
<t> <t>
skipping to change at line 1026 skipping to change at line 1026
also be set <xref target="RFC1034" format="default"/>. We expect also be set <xref target="RFC1034" format="default"/>. We expect
an OPT record to be returned. There should be no EDNS an OPT record to be returned. There should be no EDNS
flags present in the response, as unknown EDNS flags are flags present in the response, as unknown EDNS flags are
supposed to be ignored. The EDNS version field supposed to be ignored. The EDNS version field
should be 0, and there should be no EDNS options present should be 0, and there should be no EDNS options present
<xref target="RFC6891" format="default"/>. <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS queries with unknown flags work (EDNS supported): Check that EDNS queries with unknown flags work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=0 +noad +norec +ednsflags=0x40 soa $zone @$server dig +nocookie +edns=0 +noad +norec +ednsflags=0x40 soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: MBZ not to be present expect: MBZ not to be present
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
<t keepWithPrevious="true"> <t keepWithPrevious="true">
MBZ (Must Be Zero) is a dig-specific indication that MBZ (Must Be Zero) is a dig-specific indication that
a flag bit has been incorrectly copied, as per a flag bit has been incorrectly copied, as per
<xref target="RFC6891" sectionFormat="of" section="6.1.4"/>. <xref target="RFC6891" sectionFormat="of" section="6.1.4"/>.
</t> </t>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing EDNS Version Negotiation with Unknown EDNS Flags</name> <name>Testing EDNS Version Negotiation with Unknown EDNS Flags</name>
<t> <t>
Ask for the SOA record of the configured zone. This Ask for the SOA record of the configured zone. This
skipping to change at line 1066 skipping to change at line 1066
an OPT record to be returned. There should be no EDNS an OPT record to be returned. There should be no EDNS
flags present in the response, as unknown EDNS flags are flags present in the response, as unknown EDNS flags are
supposed to be ignored. The EDNS version field should supposed to be ignored. The EDNS version field should
be 0, as EDNS versions other than 0 are yet to be be 0, as EDNS versions other than 0 are yet to be
specified, and there should be no EDNS options present specified, and there should be no EDNS options present
<xref target="RFC6891" format="default"/>. <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS version 1 queries with unknown flags work (EDNS supported): Check that EDNS version 1 queries with unknown flags work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=1 +noednsneg +noad +norec +ednsflags=0x40 soa \ dig +nocookie +edns=1 +noednsneg +noad +norec +ednsflags=0x40 soa \
$zone @$server $zone @$server
expect: status: BADVERS expect: status: BADVERS
expect: SOA record to NOT be present expect: SOA record to NOT be present
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: MBZ not to be present expect: MBZ not to be present
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to NOT be present expect: flag: aa to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing EDNS Version Negotiation with Unknown EDNS Options</name> <name>Testing EDNS Version Negotiation with Unknown EDNS Options</name>
<t> <t>
Ask for the SOA record of the configured zone. This Ask for the SOA record of the configured zone. This
query is made with no DNS flag bits set. EDNS version query is made with no DNS flag bits set. EDNS version
1 is used. An unknown EDNS option is present. We have 1 is used. An unknown EDNS option is present. We have
picked an unassigned code of 100 for the example below. picked an unassigned code of 100 for the example below.
Any unassigned EDNS option code could have been chosen for Any unassigned EDNS option code could have been chosen for
this test. this test.
skipping to change at line 1103 skipping to change at line 1103
may also be set <xref target="RFC1034" format="default"/>. We expect may also be set <xref target="RFC1034" format="default"/>. We expect
an OPT record to be returned. There should be no EDNS an OPT record to be returned. There should be no EDNS
flags present in the response. The EDNS version field flags present in the response. The EDNS version field
should be 0, as EDNS versions other than 0 are yet should be 0, as EDNS versions other than 0 are yet
to be specified, and there should be no EDNS options to be specified, and there should be no EDNS options
present <xref target="RFC6891" format="default"/>. present <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS version 1 queries with unknown options work (EDNS supported): Check that EDNS version 1 queries with unknown options work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=1 +noednsneg +noad +norec +ednsopt=100 soa \ dig +nocookie +edns=1 +noednsneg +noad +norec +ednsopt=100 soa \
$zone @$server $zone @$server
expect: status: BADVERS expect: status: BADVERS
expect: SOA record to NOT be present expect: SOA record to NOT be present
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: OPT=100 to NOT be present expect: OPT=100 to NOT be present
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to NOT be present expect: flag: aa to NOT be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing Truncated Responses</name> <name>Testing Truncated Responses</name>
<t> <t>
Ask for the DNSKEY records of the configured zone, which Ask for the DNSKEY records of the configured zone, which
must be a DNSSEC signed zone. This query is made with must be a DNSSEC signed zone. This query is made with
no DNS flag bits set. EDNS version 0 is used without no DNS flag bits set. EDNS version 0 is used without
any EDNS options. The only EDNS flag set is DO. The any EDNS options. The only EDNS flag set is DO. The
EDNS UDP buffer size is set to 512. The intention of EDNS UDP buffer size is set to 512. The intention of
this query is to elicit a truncated response from the this query is to elicit a truncated response from the
skipping to change at line 1143 skipping to change at line 1143
format="default"/>. We expect an OPT record to be present in the format="default"/>. We expect an OPT record to be present in the
response. There should be no EDNS flags other than DO present in response. There should be no EDNS flags other than DO present in
the response. The EDNS version field should be 0, and there should the response. The EDNS version field should be 0, and there should
be no EDNS options present <xref target="RFC6891" be no EDNS options present <xref target="RFC6891"
format="default"/>.</t> format="default"/>.</t>
<t> <t>
If TC is not set, it is not possible to confirm that the If TC is not set, it is not possible to confirm that the
server correctly adds the OPT record to the truncated server correctly adds the OPT record to the truncated
responses or not. responses or not.
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +norec +dnssec +bufsize=512 +ignore dnskey $zone @$server dig +norec +dnssec +bufsize=512 +ignore dnskey $zone @$server
expect: NOERROR expect: NOERROR
expect: OPT record with version set to 0 expect: OPT record with version set to 0
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing DO=1 Handling</name> <name>Testing DO=1 Handling</name>
<t> <t>
Ask for the SOA record of the configured zone, which Ask for the SOA record of the configured zone, which
does not need to be DNSSEC signed. This query is made does not need to be DNSSEC signed. This query is made
with no DNS flag bits set. EDNS version 0 is used with no DNS flag bits set. EDNS version 0 is used
without any EDNS options. The only EDNS flag set is without any EDNS options. The only EDNS flag set is
DO. DO.
</t> </t>
skipping to change at line 1171 skipping to change at line 1171
server supports DNSSEC, otherwise it should be clear; RA may also be server supports DNSSEC, otherwise it should be clear; RA may also be
set <xref target="RFC1034" format="default"/>. We expect an OPT set <xref target="RFC1034" format="default"/>. We expect an OPT
record to be returned. There should be no EDNS flags other than DO record to be returned. There should be no EDNS flags other than DO
present in the response, which should be present if the server present in the response, which should be present if the server
supports DNSSEC. The EDNS version field should be 0, and there supports DNSSEC. The EDNS version field should be 0, and there
should be no EDNS options present <xref target="RFC6891" should be no EDNS options present <xref target="RFC6891"
format="default"/>.</t> format="default"/>.</t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that DO=1 queries work (EDNS supported): Check that DO=1 queries work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=0 +noad +norec +dnssec soa $zone @$server dig +nocookie +edns=0 +noad +norec +dnssec soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: DO=1 to be present if an RRSIG is in the response expect: DO=1 to be present if an RRSIG is in the response
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to be present expect: flag: aa to be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing EDNS Version Negotiation with DO=1</name> <name>Testing EDNS Version Negotiation with DO=1</name>
<t> <t>
Ask for the SOA record of the configured zone, which does Ask for the SOA record of the configured zone, which does
not need to be DNSSEC signed. This query is made with no not need to be DNSSEC signed. This query is made with no
DNS flag bits set. EDNS version 1 is used without any EDNS DNS flag bits set. EDNS version 1 is used without any EDNS
options. The only EDNS flag set is DO. options. The only EDNS flag set is DO.
</t> </t>
<t>We expect the SOA record for the zone NOT to be returned in the answer <t>We expect the SOA record for the zone NOT to be returned in the answer
skipping to change at line 1203 skipping to change at line 1203
format="default"/>. format="default"/>.
We expect an OPT record to be returned. There We expect an OPT record to be returned. There
should be no EDNS flags other than DO present in the response, which should be no EDNS flags other than DO present in the response, which
should be there if the server supports DNSSEC. The EDNS version should be there if the server supports DNSSEC. The EDNS version
field should be 0, and there should be no EDNS options present <xref field should be 0, and there should be no EDNS options present <xref
target="RFC6891" format="default"/>.</t> target="RFC6891" format="default"/>.</t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS version 1, DO=1 queries work (EDNS supported): Check that EDNS version 1, DO=1 queries work (EDNS supported):
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +nocookie +edns=1 +noednsneg +noad +norec +dnssec soa \ dig +nocookie +edns=1 +noednsneg +noad +norec +dnssec soa \
$zone @$server $zone @$server
expect: status: BADVERS expect: status: BADVERS
expect: SOA record to NOT be present expect: SOA record to NOT be present
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: DO=1 to be present if the EDNS version 0 DNSSEC query test expect: DO=1 to be present if the EDNS version 0 DNSSEC query test
returned DO=1 returned DO=1
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to NOT be present expect: flag: aa to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Testing with Multiple Defined EDNS Options</name> <name>Testing with Multiple Defined EDNS Options</name>
<t>Ask for the SOA record of the configured zone. This query is <t>Ask for the SOA record of the configured zone. This query is
made with no DNS flag bits set. EDNS version 0 is used. A number made with no DNS flag bits set. EDNS version 0 is used. A number
of defined EDNS options are present (NSID <xref target="RFC5001" of defined EDNS options are present (NSID <xref target="RFC5001"
format="default"/>, DNS COOKIE <xref target="RFC7873" format="default"/>, DNS COOKIE <xref target="RFC7873"
format="default"/>, EDNS Client Subnet <xref target="RFC7871" format="default"/>, EDNS Client Subnet <xref target="RFC7871"
format="default"/>, and EDNS Expire <xref target="RFC7314" format="default"/>, and EDNS Expire <xref target="RFC7314"
format="default"/>).</t> format="default"/>).</t>
skipping to change at line 1239 skipping to change at line 1239
also be set <xref target="RFC1034" format="default"/>. We expect an OPT also be set <xref target="RFC1034" format="default"/>. We expect an OPT
record to be returned. There should be no EDNS flags record to be returned. There should be no EDNS flags
present in the response. The EDNS version field should present in the response. The EDNS version field should
be 0. Any of the requested EDNS options supported be 0. Any of the requested EDNS options supported
by the server and permitted server configuration may by the server and permitted server configuration may
be returned <xref target="RFC6891" format="default"/>. be returned <xref target="RFC6891" format="default"/>.
</t> </t>
<t keepWithNext="true"> <t keepWithNext="true">
Check that EDNS queries with multiple defined EDNS options work: Check that EDNS queries with multiple defined EDNS options work:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode name="" type=""><![CDATA[
dig +edns=0 +noad +norec +cookie +nsid +expire +subnet=0.0.0.0/0 \ dig +edns=0 +noad +norec +cookie +nsid +expire +subnet=0.0.0.0/0 \
soa $zone @$server soa $zone @$server
expect: status: NOERROR expect: status: NOERROR
expect: the SOA record to be present in the answer section expect: the SOA record to be present in the answer section
expect: an OPT record to be present in the additional section expect: an OPT record to be present in the additional section
expect: EDNS Version 0 in response expect: EDNS Version 0 in response
expect: flag: aa to be present expect: flag: aa to be present
expect: flag: ad to NOT be present expect: flag: ad to NOT be present
]]></artwork> ]]></sourcecode>
</section> </section>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>When EDNS Is Not Supported</name> <name>When EDNS Is Not Supported</name>
<t> <t>
If EDNS is not supported by the nameserver, we expect a If EDNS is not supported by the nameserver, we expect a
response to each of the above queries. That response may response to each of the above queries. That response may
be a FORMERR error response, or the OPT record may just be a FORMERR error response, or the OPT record may just
be ignored. be ignored.
</t> </t>
 End of changes. 36 change blocks. 
36 lines changed or deleted 36 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/