Re: [DNSOP] comments on draft-ietf-dnsop-edns-client-subnet-00

Wilmer van der Gaast <wilmer@google.com> Thu, 08 January 2015 19:36 UTC

Return-Path: <wilmer@google.com>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C18131A9080 for <dnsop@ietfa.amsl.com>; Thu, 8 Jan 2015 11:36:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.089
X-Spam-Level:
X-Spam-Status: No, score=-1.089 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, MIME_8BIT_HEADER=0.3, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
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 vNRCCieVi1_8 for <dnsop@ietfa.amsl.com>; Thu, 8 Jan 2015 11:36:03 -0800 (PST)
Received: from mail-ie0-x22f.google.com (mail-ie0-x22f.google.com [IPv6:2607:f8b0:4001:c03::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B51401A9089 for <dnsop@ietf.org>; Thu, 8 Jan 2015 11:36:01 -0800 (PST)
Received: by mail-ie0-f175.google.com with SMTP id x19so11278926ier.6 for <dnsop@ietf.org>; Thu, 08 Jan 2015 11:36:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=9TwfcihFLT8SorDy7XT6xbYNF3FST5/0CVS4iPwEkAU=; b=fRdD/y4rOZE/uwYqlN2Vdrn3XyWmmr9xF60R19a3ePqLS/0nrjYTOXHbNLa6IA31pC HS1W31nigL292eJxWjC2xXmr00TkZenXni3BRtj/UCR556g8NHC1zXhl99Y70SQc6SLT By6Ef32126rdsJ/tCf+ahzldA5djV1tRbeQ7gXmMHBfQ1sXNRc670OuGjausRimvWvUw 1A8gTw4m137XgnABmtpF5yQSQp3zHAAIzCI+h1JYiAcWzY2XNvXy/Z4o5MaVD0eAr4k8 kCeQ3TQdwcAA+XELQJnL+g6EHkB7ptOiedS9jdB2V1so+tRkpDtmJ2naHgnxX37kJzLr o4Lw==
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:content-type :content-transfer-encoding; bh=9TwfcihFLT8SorDy7XT6xbYNF3FST5/0CVS4iPwEkAU=; b=UybeO2/H4hMvXBdLc/dcsnisothU5kpRthb84qSWcBLYdv8KdCQml3QQo0SrgdTFoo IBS0VM+U/tIs6k7M7KVZn7enMV3C0rSMpoqwmYK1/6iLf6X9O3vSBB5qW3NtM+OZ51yV Ak60haIkbkxRygbRU0A41c3IHLtAorE5RAel4V6kyEJRw5NtxUmyri0pPNsrNapkBxAz Kco31E3PGZt+IbvnznJ+DFLWHQlcZBPJEB94iCBQIQ3vmxuP76UPfItNkWFMwIESaz6N FQ30rreTAE5gXVSc+x2TdIqDtT1O6F4liyXzubWpAHoLWl1v1jTr/ZkRh/QCYuGAl8zt pQgw==
X-Gm-Message-State: ALoCoQlHSJREv3ToJuJa/Zi7lD463TI5J6+gnf3GPjyLUjn6+BOMBzdNL3qPnvRl1Xh9VC5VX6s1
MIME-Version: 1.0
X-Received: by 10.107.168.216 with SMTP id e85mr10508315ioj.89.1420745760761; Thu, 08 Jan 2015 11:36:00 -0800 (PST)
Received: by 10.64.142.113 with HTTP; Thu, 8 Jan 2015 11:36:00 -0800 (PST)
In-Reply-To: <CAJE_bqeY3g7s4HN=5XpoT5Z=4FqgRRTrmOXDSA_0sidWOZ5jiQ@mail.gmail.com>
References: <CAJE_bqeY3g7s4HN=5XpoT5Z=4FqgRRTrmOXDSA_0sidWOZ5jiQ@mail.gmail.com>
Date: Thu, 08 Jan 2015 19:36:00 +0000
Message-ID: <CAMbvoaJ=ciOa7RowLq-bfZLMK7fQ4Sef2FUBOjohSnZ8XRaECw@mail.gmail.com>
From: Wilmer van der Gaast <wilmer@google.com>
To: 神明達哉 <jinmei@wide.ad.jp>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/dnsop/klezlvjzhUB2KCIoaWolbqKqkRg>
Cc: draft-ietf-dnsop-edns-client-subnet@tools.ietf.org, dnsop <dnsop@ietf.org>
Subject: Re: [DNSOP] comments on draft-ietf-dnsop-edns-client-subnet-00
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Thu, 08 Jan 2015 19:36:04 -0000

Hello everyone,

Only just spotted this thread after a coworker pointed me at it. I
won't be able to follow up to everything, but will try to address some
of the questions.

Re NETMASK: Yeah, sorry, poor choice of terminology early on in the
doc. Prefix length is the right term to use, it just felt like the
point was clear and it was too late to change it. But feel free, of
course, it's definitely more correct.

On 31 December 2014 at 19:31, 神明達哉 <jinmei@wide.ad.jp> wrote:
>
> - Section 6.3
>
>    fields, as detailed below.  Note that the additional and authority
>    sections from a DNS response message are specifically excluded here.
>    Any information cached from these sections MUST NOT be tied to a
>    network.
>
>   What if the "optimized" reply is a negative one for some specific
>   client addresses (while it's positive for some other addresses)?

So, this opens an interesting separate debate: I always thought the
debate specifically disallows using ECS to generate negative
responses: A name must exist or not exist, ECS info is only for
helping out with picking a location closer to the user. However I've
never actually included such a claim into the draft.

>   Or are we simply excluding the support for negative optimized
>   replies?  (If so, I think it would be worth noting explicitly).
>
Definitely should have been noted, and now I've heard some voices of
support for negative responses based on ECS. I myself am still not in
favour.

>   If I understand this (and Section 6.3 in general), the following
>   "suboptimal" scenario could happen: [...]

I think this has been responded to already, but if not.. Let me first
start with some sort of intro:

ECS is mostly meant to be very simple. Some early versions did not
mention transitive use of the option. The user can pass a 0/0 option
for privacy, but otherwise none at all, and resolvers/INSes were not
expected to use any ECS info other than info they generated themselves
from the end user's IP address, including exactly as many bits as they
want to include themselves (and really for IPv4 this should be a /24
because more info is rarely useful and less info very quickly makes
ECS useless).

Many of the confusing parts of the ECS draft now are caused by support
for a transitive ECS option. :-/

To get to your scenario:

>   - The Authoritative Server is configured with two prefixes for
>     optimized responses: 2001:db8::/32 and 2001:db8:2::/48
>   - The Recursive Server sends a query with SOURCE of 2001:db8:1::/48
>   - The Authoritative Server finds the best matching prefix for the
>     SOURCE is 2001:db8::/32 and returns a response corresponding to
>     it, setting SCOPE NETMASK to 32
>   - The Recursive Server receives the response and caches it
>   - The Recursive Server receives a query from 2001:db8:2::1, and
>     finds it has a matching cache (with prefix being 2001:db8::/32)
>     and uses the cached response to answer the query, even if it could
>     get the specifically optimized response for 2001:db8:2::/48 from
>     the Authoritative Server.
>
This is not what the draft is meant to say and I do think this is
explained elsewhere. The response the authority sent here should mean:
"I have nothing for that very specific /48 you sent me, but something
for the /32 it is part of. You can use it for that /48 but if you get
a query for another /48 within it you should re-query me." I think
this is explained in the caching section.

I don't expect this problem to happen much with IPv4 unless someone
sends less specific info than a /24, which could happen if it's poorly
configured, or if it has a client that sends it short ECS options.

(IPv6 is a different story, and with IPv6 it's pretty hard to choose a
good recommended default prefix length...)

> - Section 6.3
>
>    Any reply containing an edns-client-subnet option considered invalid
>    should be treated as if no edns-client-subnet option was specified at
>    all.
>
>   What specifically does "considered invalid" mean?  And, depending on
>   that, shouldn't the reply rather be discarded in such a case?
>
Interesting question. We ourselves were mostly just trying to be
conservative, and not lose traffic/queries from buggy resolvers.
(Being liberal in what you accept, etc.) If the rest of the query is
perfectly valid, we can still send a response that will get the user
to a working endpoint, it *might* just not be as close to the user as
it could have been.

>   If these challenges make CDN-like operators unwilling to deploy
>   DNSSEC and this option makes the optimization even more attractive,
>   then this option could help hinder wider deployment of DNSSEC.

I don't think ECS contributes to this significantly though. A CDN
nameserver is really just an authority with a "few" more A/AAAA
records than your average nameserver, that would therefore need to
keep a "few" more signatures as well. The number is still finite, a
CDN nameserver doesn't dynamically generate random IPv6 addresses for
its responses, right?

Hrm, actually, NSEC might actually be a good reason why ECS can't be
used for negative responses?

>    Users who wish their full IP address to be hidden can include an
>    edns-client-subnet option specifying the wildcard address 0.0.0.0/0
>    (i.e.  FAMILY set to 1 (IPv4), SOURCE NETMASK to 0 and no ADDRESS).
>
>   What if the user (stub resolver)'s address is IPv6?  Should it still
>   set FAMILY to 1?
>
Doesn't really matter, the point the client is trying to get across is
that it doesn't want its query origin IP address to be in an ECS
option. Whther the client is querying over IPv4 or IPv6 might in fact
be a piece of information then so hardcoding to always using 0.0.0.0/0
might be preferable.

Whether it's an IPv4 or IPv6 address the end user is after should
already be clear from the qtype.

> - Section 10.2
>
>    With multiple queries for the same name in flight, the attacker has a
>    higher chance of success in sending a matching response (with the
>    address 0.0.0.0/0 to get it cached for many hosts).
>
>   Another IPv4-centric description.  This should probably be, e.g.
>   "with the SCOPE NETMASK being 0, meaning an empty prefix".
>
It's just an example, I went for an IP address to save on words. COuld
consider mixing ::/0 (less typing in fact!) and 0.0.0.0/0 in various
examples.

-- 
Wilmer van der Gaast, London Traffic/Edge SRE.