On Wed, May 12, 2021 at 9:33 PM Ben Schwartz <bem...@google.com> wrote:

> On Wed, May 12, 2021 at 7:14 PM Brian Dickson <
> brian.peter.dick...@gmail.com> wrote:
>
>> It is demonstrably more likely that a complex parser will have problems,
>> than something that combines data from simple RRs in simple RRsets will
>> have problems.
>> (The history of SMTP is, I think, a good poster child for this, with MX,
>> A, AAAA, plus DNSSEC and TLSA support in the clients, which are email
>> transport things, not merely DNS things.)
>>
>
> The SVCB parameters' wire format is an extremely simple TLV arrangement; I
> don't think "a complex parser" is required.
>

This is an apples/oranges argument, the parsing complexity I'm referring to
(I thought explicitly, but I guess that is too far up-thread) is the
presentation (aka zone file) format.
The initial opinions (not just mine) were that the format, while maybe
familiar to HTTP implementers, is very un-DNS-like, and the proposition was
that the complexity was not strictly necessary.

While combining multiple simple records into a complex record, in wire
format, would not be difficult, it is not what DNS authority servers do,
and is not what resolvers do.

But, the _wire format_ of the original proposed record is not at issue, and
never has been, so I don't understand why you bring that up.


> It's also far from a novel design for DNS; in fact, it's identical to the
> widely implemented OPT RR RDATA format from 1999 [1][2].
>

That is actually an interesting point, for one very important reason: NONE
of the OPT RR elements are zone file constructs. They are all metadata,
typically established by the configurations of various implementations of
DNS clients and servers (including authority servers and resolvers).

So, you are actually making the point for me, that the wire format of
something that isn't a zone file component, can be complex and trivial to
parse. We agree on this completely. The TLV aspect is well understood, and
a component of many protocols (e.g. BGP, another protocol I'm actively
involved in via the IDR WG).

Having complex records in zone files is unwise, if it is not strictly
required.

The question was raised, as to whether that format is strictly required,
and I think the consensus is that it is not.


>
> What you're describing here, an arrangement in which clients partition
> RRSets into subsets and then reassemble bindings from those subsets,
> strikes me as highly novel, in contrast, and somewhat more complex.
>

It is a simple table join using a single key. It was unabashedly ripped off
from the RDBMS field of programming. Or actually COBOL, from the early
1980's. It's a hack, slightly clever maybe, but extremely simple and
reliable.
The requirement that each SvcParameter occur only once, is actually
enforced directly via the 4-tuple uniquess criteria for DNS: owner, class,
type, RDATA. If the RDATA consists of priority, enum, key, value pair, DNS
enforces the uniqueness automatically.
(This technically makes the semantic component of what would otherwise be a
complex parser moot, and the syntactic part, the easy part, is all that
needs to be implemented.)
This also vastly simplifies the encoding/decoding of unknown RDATA, since
the priority, enum, and key are numeric values of fixed size, leaving a
single "value" component.

The enumerator is the key (for the table join). The client does not need to
check parameter uniqueness. It only needs to match up the enums to recreate
the JSON of the objects in the array of structures (or regroup them into
the OPT RR wire format if you prefer).
This is the absolute simplest thing to code, and the absolute furthest
thing from "novel". Its use as an encoding in DNS might be new, but it is
the kind of thing that unit tests can handle trivially.

So, to be clear, I'm only explaining the what and how, and maybe some parts
of the why. I'm not in particular advocating strongly for using it, only
presenting it as a viable option, for other folks to discuss the merits of.


>
> Perhaps complexity is subjective.  The important thing is that the
> standard be reasonably implementable.  I hope that the list of published
> implementations [3] will serve as convincing evidence that the current
> draft is sufficient in that regard.
>

Implementable isn't the same as maintainable or simple to debug, or to
confirm interoperability. This is particularly a concern across situations
of zone file export, copy, and subsequent import on all of the other
implementations. You may be underestimating the number of implementations.
Switching to a zone file format that is simpler to parse would go a long
way to improving those.

Brian
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to