Re: [DNSOP] Introducing draft-vavrusa-dnsop-aaaa-for-free

Marek Vavruša <mvavrusa@cloudflare.com> Tue, 22 March 2016 19:12 UTC

Return-Path: <mvavrusa@cloudflare.com>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4FB6F12D867 for <dnsop@ietfa.amsl.com>; Tue, 22 Mar 2016 12:12:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cloudflare.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OTVar181xl5r for <dnsop@ietfa.amsl.com>; Tue, 22 Mar 2016 12:12:09 -0700 (PDT)
Received: from mail-yw0-x22f.google.com (mail-yw0-x22f.google.com [IPv6:2607:f8b0:4002:c05::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3B2FD12D176 for <dnsop@ietf.org>; Tue, 22 Mar 2016 12:12:09 -0700 (PDT)
Received: by mail-yw0-x22f.google.com with SMTP id g127so266977797ywf.2 for <dnsop@ietf.org>; Tue, 22 Mar 2016 12:12:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=WtVpNXw0jDehzIbedvQ4KXtZlZ9KPf0ILfcdqquQDZE=; b=EiVwiES+UTvrcoc7NzRi5ON0nx861cbzdYLe+vwPNh6U0l9+8RstREcKua5LBF3bXY AQv1m6STgoyzcalMhucCCvVr0PS3YZ2OOQ1TQf37126xbxX1ENMeAuu9zlHxoD8pwh5W RjD67ms0b5e1knlGRHbWUKQ4ziCL/WCgOeiVQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=WtVpNXw0jDehzIbedvQ4KXtZlZ9KPf0ILfcdqquQDZE=; b=g4kLfpMXyf81bAo5MosMSsYnAZXiRR/FWfXfOzP7uKO6CxvEsU+/W3KcPEBA92pTzn jtGPNgsoZ9RV9zgjZdHr7yWkm8rPXAuJHrhKGT4EmTcvTUztEXpr0Ckbg6wcY9RrEFmi BANmsJ3G5teh8oBTOy2uVkZPRj00+zP6Cy2UVCUIvrvSasaK6UHPZf5aCVn3ik4a2ybA /QrgcXdE8i5X+FyZZ2vgYkcFQIJqjJc7Mq0XevNnqcLhXxkTETxgCDupNjhhBuNZ0cg7 5qtXou6J+1Uf8Yy1XYXYOUTjNBj53f9SB2ABXb+xUhgAQLhXAogs5ZgbWlCONwHbYM+2 gs7Q==
X-Gm-Message-State: AD7BkJKgATXPxMDUC6wV8tgGNLcz8FEniXMmIH9R7Bg8i4pxzZOJBShKzaXMVxbF4rmXn6v81xLnI3EVykldBMPO
MIME-Version: 1.0
X-Received: by 10.13.240.69 with SMTP id z66mr19780122ywe.330.1458673928450; Tue, 22 Mar 2016 12:12:08 -0700 (PDT)
Received: by 10.37.35.130 with HTTP; Tue, 22 Mar 2016 12:12:08 -0700 (PDT)
In-Reply-To: <CAHPuVdVMMYny9d68fGeLPKUWZvEjD+Kk-in6eFrO=sND7bRtQw@mail.gmail.com>
References: <CAC=TB13r_7TPEcUeZqH6sxqKXHRn7TgFwLwdqjBxa57aqS1MZg@mail.gmail.com> <alpine.LSU.2.00.1603221140220.11434@hermes-2.csi.cam.ac.uk> <CAHPuVdVMMYny9d68fGeLPKUWZvEjD+Kk-in6eFrO=sND7bRtQw@mail.gmail.com>
Date: Tue, 22 Mar 2016 12:12:08 -0700
Message-ID: <CAC=TB11OrH1Myro+CCEMJWy67nYhDCrGWVhe+jM568o2CL7vEA@mail.gmail.com>
From: Marek Vavruša <mvavrusa@cloudflare.com>
To: Shumon Huque <shuque@gmail.com>
Content-Type: multipart/alternative; boundary="94eb2c035cd8596a8c052ea7fd8f"
Archived-At: <http://mailarchive.ietf.org/arch/msg/dnsop/LEya8oubc-8AiMcpdH2UagZzCXI>
Cc: Tony Finch <dot@dotat.at>, "dnsop@ietf.org WG" <dnsop@ietf.org>
Subject: Re: [DNSOP] Introducing draft-vavrusa-dnsop-aaaa-for-free
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 22 Mar 2016 19:12:11 -0000

Thanks everybody for comments! It's a lot so I'll try to rephrase and
answer the questions below.

1. No signalling to client when AAAA is unavailable

I didn't want to include it in the beginning but I see it has a merit.
DNSSEC has means to provide authenticated non-existence for free, so I
think it's worth for auth server to add either data or non-existence proof
for any applicable RR.
e.g. if it has AAAA, but not A, it would provide AAAA RRs and NSECX for A;
if it has A but not AAAA, it would provide A RRs and NSECX for AAAA

For legacy case of no DNSSEC, an SOA in the authority indicates that no
record matching QNAME+QTYPE exists, but can't effectively signalise
non-existence of the additional address records. Which is not great, but
I'm not in for legalising yet-another EDNS option, and it also would
require client to signalise that it can handle such option before an auth
server raises it in the answer. For this case specifically, I am okay with
client making additional AAAA query to recheck.
To defense: resolvers keep track of auth functionality (ability to do EDNS,
IPv6 availability, ...), this is not any different. If the auth shows that
it either supports this (by at least one positive case) or not (this case),
resolver will remember it and act accordingly next time.

2. Behavior of stubs is not explicit in the draft

I should have stated this explicitly, the draft doesn't update behaviour of
stub resolvers. In my opinion, they should use the most basic form of DNS
and work only over local or trusted network, hence no latency issues.

2. Stubs and recursors during NS resolution issue parallel queries

That is correct, the draft expects software changes if accepted. Saying
that it doesn't have any effect is not entirely true though. The latency is
max(rtt_a, rtt_aaaa) in the best case and one of the queries time out or is
blocked in the worst case. In addition, this doubles query rate on
authoritatives and requires more logic on clients (which is error prone -
see latest glibc bug), especially when one of the replies gets ratelimited,
truncated or answered from different node. On the contrary, waiting for
single answer is simple.

3. AAAA query doesn't offer A records

That is a valid point. Long answer: I think the logic of clients asking for
IPv6 is flawed from the get-go. For a smooth protocol version upgrade,
authoritatives should have had a way to push IPv6 on clients instead of
waiting for them to ask for it. The A record is unfortunately defined as a
32-bit Internet address. I think it should be redefined as "Internet
address". This way, if a client wants to ask a server about IP address, it
would _always_ use an A query and get a list of A, AAAA and possibly
something new. It would be up to client's discretion to pick an address
version that it understands. The benefit of this is that it doesn't require
additional queries or major client-side changes. Somebody has said IPv6 is
here to stay, I'd like to share this certainty. Meta-types (sort of what I
want an A to become) are considered bad, but DNS was built around name to
address translation so optimising for this case might be worth it. Offering
A records for AAAA drags the need for backward compatibility (even more if
we ever have a newer address record) and more code exceptions.

Marek

On Tue, Mar 22, 2016 at 8:55 AM, Shumon Huque <shuque@gmail.com> wrote:

> On Tue, Mar 22, 2016 at 7:41 AM, Tony Finch <dot@dotat.at> wrote:
>
>> Marek Vavruša <mvavrusa@cloudflare.com> wrote:
>> >
>> > there was an interest in reducing latency for address record lookups.
>> > Me and Olafur wrote a draft on adding AAAA records to A answers and
>> > treating them as authoritative. This fixes latency issues with NS
>> > A/AAAA discovery in resolvers and improves caching for clients (AAAA
>> > already cached by the time client comes asking for it).
>>
>> Regarding NS discovery, you should be aware that BIND queries for name
>> server A and AAAA concurrently. So this draft would just make packets
>> bigger without helping latency.
>>
>
> It's worth noting that several "happy eyeballs" style APIs issue
> concurrent
> AAAA/A queries also, like the Apple connect-by-name APIs. Also getdns
> does this. AAAA and A go out back to back, put typically AAAA is put out
> on the wire first.
>
> --
> Shumon Huque
>
>