[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "DNS-4to6 automatic mapping" - No more DNS-ALGs & 6then4 DNS queries



On 26 nov 2007, at 6:40, Erik Kline wrote:

For this, let's specify that a next release of the DNS sotware (BIND and
others) will have to include a DNS-4to6 AUTOMATIC MAPPING.
With it, an IPv6 RR is automatically created, within the DNS, for each
existing IPv4 RR, using for this the *mapped address format* of RFC
2373.

The question is: do we really have a problem?

Yes, people recommend turning off IPv6 on forums here and there, but this used to be because there were some DNS servers out there that would reply with an error when queried for AAAA records. That problem has been solved 99.9%, unless I'm mistaken. Also, apparently turning off IPv6 helps agains all kinds of problems that are provably IPv6- unrelated.

I think any effort would be better spent by making sure OSes don't send AAAA queries when there is no IPv6 connectivity.

You can achieve pretty much the same result by placing the A records in the additional section of responses to AAAA queries, without creating a need for mapped addresses. This could be done very simply, but changing DNS implementations for IPv6 capable servers will only solve part of the operational problems encountered today.

Right.

These operational problems are direct consequences of the current IETF recommendation to always ask first for the AAAA record if the client is IPv6 capable. This is a very aggressive stance, designed to maximize the occurrence of IPv6 connections. If we wanted to smooth transition, we could take a softer stance, e.g. let dual- stack hosts only send AAAA queries if it can reasonably presume that the target server is IPv6 capable.

Out of curiosity: how would a machine determine what it can
"reasonably presume" to be IPv6 capable?  Some locally administrated
policy directives for the host's resolver?

Indeed. There is no way to know that without asking for AAAA records.

The problem with implementing new features that aren't actually used (which is what happens if you prefer A records - something Windows users can do manually using the policy table, by the way) is that over time broken behavior grows and then when usage finally occurs it doesn't work. Examples:

- HTTP pipelining
- ECN bits
- path MTU discovery

And so on.

If people don't want to use IPv6 they should either disable the protocol or set up an appropriate RFC 3484 policy table. If IPv6 connectivity is available, the only reasonable thing to do is prefer that by default.

Separately: I wonder if there was any discussion of creating a DNS rr
query type with the essential meaning "A*", i.e. give me A records,
AAAA, A6 (while they were being tried), hence A*.

There already is a * query type but I gather that trouble with that is that it won't go out and make sure that copies of all possible records are available, if there is something in the cache you get that.

The problem with a new query type is that you could end up asking for:

A*
AAAA
A

Which takes longer than:

AAAA
A

But again: do we really have a problem? The first query can take some time because the delegation tree must be traversed at least partially, but after that the following query(ies) can go directly to the authorative server so the delay is minimal.