Let's assume for the purposes of argument that we have a DNS server that
knows how to translate between A-labels an U-labels. Then I invent this
DNS record
foo VARIANT n1 n2 n3 n4 ...
The fields are 32 bit ints, each of which is interpreted as a UTF-32 code
point. The meaning is that in the subtree at and below this name, n1 is a
canonical code point and the rest are variants. If you get a request with
an a-label that doesn't exist, turn it in to a u-label, replace any of the
variants n2..nx with canonical n1, turn it back into an a-label and try
again. It might synthesize new RRs for the requested name, or CNAMEs give
or take the CNAME at the apex issue.
The idea is to have a bunch of VARIANT records at the apex that describe
the LGR variants for the zone, and the server applies them to all of the
names in the zone. With lots of names and lots of variants, this lets the
server handle a potentially exponential set of names without an
exponential set of records.
Bad things:
* It's really ugly, crosses the boundary between A-label and U-label
* The set of VARIANT records could be pretty big, thousands to handle
traditional and simplified Chinese (although in a zone without dynamic
updates you could prune it to the characters that occur in names in the
zone)
* Needs online signing
* Could get kind of strange delegating sets of names across an NS
* Doesn't handle conditional stuff in LGRs although I'm not sure how
important that is in this case.
* Not obvious how to signal to the client what the base version of a
synthesized name was, if the client wants to treat all the variants "the
same"
Good things:
* Handles M**N names with linear number of records.
Regards,
John Levine, jo...@taugh.com, Taughannock Networks, Trumansburg NY
Please consider the environment before reading this e-mail. https://jl.ly
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop