On Tue, Jun 11, 2019 at 6:35 PM Joe Abley <jab...@hopcount.ca> wrote:
> On Jun 11, 2019, at 20:04, Evan Hunt <e...@isc.org> wrote: > > > MHO, the ANAME is the real answer we're sending; the A and AAAA records > > are just friendly hand-holding for legacy servers. It doesn't make sense > > to me to demote the real answer into the additional section, any more > than > > it would have to move DNAME there. The protocol specificaions are clear > on > > this point - the more so considering we've already deployed DNAME - and > my > > sympathies for an implementation that got it wrong would be limited. > > I think DNAME provides a useful example. I think emulating DNAME's > demonstrated success in both being tolerated and interpreted correctly > is useful. > I agree that there is much from DNAME that can be useful to learn from. I think it helps to articulate what DNAME did, and why it worked (well, and at all): DNAME returned both DNAME and synthesized CNAME records, for queries received below the DNAME "cut" (query longer than the matching label for the DNAME). When a recursive queried an authority server, if it got back a DNAME but did not understand it, it ignored the DNAME but processed the CNAME (as if only the CNAME existed) (plus any other data like chained CNAMEs or A/AAAA records) When a client queried a recursive, there were two possible kinds of recursive: DNAME-aware, and DNAME-unaware. The same general answers were received, modulo the presence of the DNAME. If the client received, and understood, DNAME, it was effectively the same as if no CNAMEs had ever been sent or cached. If the client did not understand DNAME, then it would ignore any DNAME, and use the CNAME -- at that point, the question of whether the resolver spoke DNAME was more or less moot. The elegance of this was due to the fact that a synthesized CNAME was compatible with the namespace structure which might include a DNAME, as well as additional CNAMEs and/or DNAMEs. All of this is unfortunate, because of the fact that there is no genuinely backward compatible record similar to ANAME that can be used, without a very strong likelihood of breaking things. >From authority to recursive: You can't return an ANAME and a CNAME (as a backward-compatible rewrite signal that corresponds to the ANAME), since the CNAME will effectively obscure other RRTYPEs that might coexist (e.g. at the zone apex). >From recursive to client: An ANAME-aware resolver can maybe return a fully-resolved A/AAAA record, along with an ANAME (optionally with additional ANAME/CNAME/DNAME records chained) -- but I think testing this would strongly be advised. So, I suspect having the ANAME in the Answer section is worth experimenting (and the history of DNAME suggests it would not break badly). The real problem here, is the "other" record for backward compatibility isn't a rewrite-type (such as CNAME or DNAME), but is a "promoted" A/AAAA record of potentially limited utility and questionable provenance (due to geo-ip stuff, TTL stuff, and RRSIG problems). Brian
_______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop