Re: Proposed resolution: PTR queries for 254.169.in-addr.arpa

Stuart Cheshire <[email protected]> Fri, 29 Apr 2005 15:39:07 +0100
Newsgroups gmane.ietf.zeroconf
Message-ID <[email protected]>
>Here is a proposed resolution to the Issue:
>
>"Mapping from IPv4 addresses to host names is conventionally done
>by issuing DNS queries for names of the form,
>"x.x.x.x.in-addr.arpa." When used for link-local addresses, which
>have significance only on the local link, it is inappropriate to
>send such DNS queries beyond the local link.
>DNS clients MUST NOT send unicast DNS queries for any name that
>falls within the "254.169.in-addr.arpa." domain.

The text above I agree with.

>Recursive name servers MUST NOT allow these queries to
>escape the local scope.  Recursive name servers MAY reply
>with RCODE 3, or they MAY silently discard the request.

This text I have some reservations about. It suffers from the 
all-to-common disease that "we couldn't decide, so we'll agree to 
disagree". That's not the role of a specification. A specification is 
supposed to specify. It reminds me 802.11af (Power over Ethernet) where 
they couldn't decide whether to specify that the power shares the 
100Base-T data pairs, or runs over the two unused pairs, so the 
specification says that switch vendors can do either, and ALL PoE devices 
have to be able to work BOTH ways, thereby increasing cost and complexity 
and opportunity for problems and incompatibility.

I think we all agree that recursive name servers should not allow these 
queries to escape and place a burden on IANA name servers, but all the 
arguments about returning RCODE 3 instead of silently dropping them 
revolve around the purported burden that retransmitting clients impose on 
a recursive name server, and the people making those arguments have 
offered NO operational data showing any evidence that this purported 
burden is real. We've had 169.254 addresses in Mac and Windows for FIVE 
years now, and they are in UPnP devices, every network printer made for 
the last couple of years, and other devices. Where is the evidence of an 
actual burden on local recursive name servers caused by these devices or 
their peers?

>By default, recursive name server implementations SHOULD be
>configured to act as if they were authoritative for an
>empty 254.169.in-addr.arpa zone and return RCODE 3 for any
>such query.  Implementations SHOULD allow this default to
>be overridden.  Returning an RCODE 3 is the correct default
>setting because it reduces the query load but also because if
>the site administrator has not set up the reverse tree
>corresponding to IPv4 Link-Local addresses in use,
>returning RCODE 3 is in fact the correct answer."

This text I profoundly disagree with. It looks like it was written by 
someone who knows about DNS, but not about IPv4 Link-Local addressing, 
which is a problem. To write about how DNS and IPv4LL interact, you need 
to understand both.

Consider this sentence:

>... if the site administrator has not set up the reverse tree
>corresponding to IPv4 Link-Local addresses in use,
>returning RCODE 3 is in fact the correct answer.

What on earth does that mean? Who is the "site administrator"? The whole 
point of IPv4LL is for small transient ad-hoc networks where there's no 
DHCP server, no DNS server, and definitely no "site administrator"?

The whole point of IPv4LL is that hosts assign their own addresses, at 
random. The "site administrator" is not in control of what IPv4 
Link-Local addresses are in use; the individual devices are. The concept 
of a site administrator manually setting up a reverse tree corresponding 
to IPv4 Link-Local addresses in use, when he or she has no knowledge of 
what 
IPv4 Link-Local addresses will be in use from one minute to the next, is 
utter nonsense. That concept may be applicable to net 10 and the other 
private address ranges, but not to IPv4LL. Each host operates 
autonomously, in cooperation with its peers, to select a unique IPv4LL 
address of its own choosing. Therefore in the IPv4LL world the only 
credible course of action to find out the host name corresponding to a 
given random address is to ask the host that chose that random address 
what it thinks its name is. Asking some other name server makes no sense.

Returning an authoritative NXDOMAIN error for 254.169.in-addr.arpa names 
is not the semantically correct response. The semantically correct 
response for a server to give to such a query is, "Why are you asking 
me?" Possible semantically correct responses are to ignore the query, or 
possibly REFUSED (5), but not an authoritative assertion that no such 
name exists. The name does exist; the client just asked the wrong entity.

Robert Elz suggested this pragmatic solution:

>to keep the query rate on the in-addr.arpa servers rational, they
>should simply delegate this domain somewhere, with a lengthy TTL.
>It could delegate it to nowhere, one solution might be
>
>	254.169.in-addr.arpa.    2592000 IN NS ns.254.169.in-addr.arpa.
>	ns.254.169.in-addr.arpa. 2592000 IN A  169.254.103.76 ; glue
>
>which would get the queries off the in-addr.arpa servers for a month,
>then result in timeouts from anything actually doing lookups - help
>get people to fix implementations or configurations to avoid the lookups
>in the first place.

Something close to this is already done:

>[chesh7:~] cheshire% dig -t ns 254.169.in-addr.arpa
>
>; <<>> DiG 9.2.2 <<>> -t ns 254.169.in-addr.arpa
>;; global options:  printcmd
>;; Got answer:
>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32401
>;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
>
>;; QUESTION SECTION:
>;254.169.in-addr.arpa.          IN      NS
>
>;; ANSWER SECTION:
>254.169.in-addr.arpa.   604800  IN      NS      blackhole-1.iana.org.
>254.169.in-addr.arpa.   604800  IN      NS      blackhole-2.iana.org.
>
>;; ADDITIONAL SECTION:
>blackhole-1.iana.org.   2365    IN      A       192.175.48.6
>blackhole-2.iana.org.   452     IN      A       192.175.48.42
>
>;; Query time: 483 msec
>;; SERVER: 17.128.100.10#53(17.128.100.10)
>;; WHEN: Fri Apr 29 14:48:14 2005
>;; MSG SIZE  rcvd: 130

As to the address to give, I'd recommend 169.254.0.0 as the logical 
non-address for this non-server. Our spec already says:

>   The first 256 and last 256 addresses in the 169.254/16
>   prefix are reserved for future use

This could be the first of such "future uses".

Stuart Cheshire <[email protected]>
 * Wizard Without Portfolio, Apple Computer, Inc.
 * www.stuartcheshire.org