On 04. 07. 24 10:28, Joe Abley wrote:
Hey,

On 4 Jul 2024, at 09:15, Petr Špaček <[email protected]> wrote:

To be clear:
Let's not hang too tight on this particular example. It could be something crazy like

qname.zone1.test. CNAME target2.example.
target2.example. CNAME final.example.net.
final.example.net. A 192.0.2.1

(i.e. zone names have nothing in common except for the root)

Yep. I still think the language you quoted would benefit from some clarification though. Perhaps:

1.2. Terminology

ADD:

In this document, an "enclosing zone" of a domain name means a zone in which the domain name is present as an owner name, or any parent of that zone. For example, if B.C.EXAMPLE and EXAMPLE are zones, but C.EXAMPLE is not, the domain name A.B.C.EXAMPLE would have the enclosing zones B.C.EXAMPLE, EXAMPLE and the root zone.

3.2 Responders

OLD:

    A name server that (a) understands the ZONEVERSION option, (b)
    receives a query with the ZONEVERSION option, (c) is authoritative
    for the zone of the original QNAME, and (d) chooses to honor a
    particular ZONEVERSION request responds by including a TYPE and
    corresponding VERSION value in a ZONEVERSION option in an EDNS(0) OPT
    pseudo-RR in the response message.


NEW:

    A name server that (a) understands the ZONEVERSION option, (b)
    receives a query with the ZONEVERSION option, (c) is authoritative
    for one or more enclosing zones of the original QNAME, and (d) chooses to 
honor a
    particular ZONEVERSION request responds by including a TYPE and
    corresponding VERSION value in one or more ZONEVERSION options in an 
EDNS(0) OPT
    pseudo-RR in the response message.


OLD:

    A name server MAY include more than one ZONEVERSION option in the
    response if it supports multiple TYPEs.  A name server MAY also
    include more than one ZONEVERSION option in the response if it is
    authoritative for more than one zone of the corresponding QNAME.  A
    name server MUST NOT include more than one ZONEVERSION option for a
    given TYPE and LABELCOUNT.


NEW:

    A name server MAY include more than one ZONEVERSION option in the
    response if it supports multiple TYPEs.  A name server MAY also
    include more than one ZONEVERSION option in the response if it is
    authoritative for more than one enclosing zone of the corresponding QNAME.  
A
    name server MUST NOT include more than one ZONEVERSION option for a
    given TYPE and LABELCOUNT.

Sounds clearer to me. I gather there's no appetite to make the wire format more generic and I think it's also fine.

Only comment I have is that LABELCOUNT could have been TYPE-dependent so a new TYPE could define different mechanism to identify zone, but hey, wasting 1 byte is not a big deal in the age of multi-gigabyte videos playing in the background constantly.



Unrelated thoughts:

### OPCODE
Currently the document sorta implicitly talks about DNS queries - mainly implied by the structure of section 3.2 and listed possible answer types and RCODEs.

Should the document be explicitly limited to OPCODE=QUERY, or is there value in allowing other opcodes?

E.g. RCODE=YXRRSET comes to mind, where it could be useful for OPCODE=UPDATE as well as OPCODE=QUERY.

Oh, it just occured to me:
What if I throw in OPCODE=QUERY QTYPE=AXFR/IXFR just for fun.
Allow? Disallow? Leave undefined?



### Error handling advice
While re-reading it once more I wonder if sections 3.1 Initiators and 3.2 Responders should have some more words about when to do when various MUST/SHOULDs are violated?

Say initiator gets answer with exactly duplicated ZONEVERSION. What now?
And what if LABEL and TYPE are duplicate but with different SERIAL values? What now?

Drop it on the floor as signal FORMERR in both cases? Or process and display as usual in the first but drop the second case? Or what?


This is my generic complains with dnsop documents - they often do not say what's expected behavior when constraints are violated. We can take it as a though experiment and see where we get.


Ad one specific case which _is_ defined:
> A name server MUST ignore invalid ZONEVERSION options present in the query message.

Does that mean that server MUST ignore ZONEVERSION query with 60 000 bytes of payload and proceed as usual? I would say it warrants FORMERR :-)


If you think I'm insane, well, you might be right! In my defense I've spent last year dealing with weird attacks misusing DNS protocol so I'm in the under-contant-attack mood...

--
Petr Špaček
Internet Systems Consortium

_______________________________________________
DNSOP mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to