Re: [v6ops] DAD again [was: draft-ietf-v6ops-host-addr-availability discussion]

Brian E Carpenter <brian.e.carpenter@gmail.com> Tue, 17 November 2015 01:46 UTC

Return-Path: <brian.e.carpenter@gmail.com>
X-Original-To: v6ops@ietfa.amsl.com
Delivered-To: v6ops@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F32271ACCEC for <v6ops@ietfa.amsl.com>; Mon, 16 Nov 2015 17:46:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
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 5mnMYSHYIK24 for <v6ops@ietfa.amsl.com>; Mon, 16 Nov 2015 17:45:58 -0800 (PST)
Received: from mail-pa0-x230.google.com (mail-pa0-x230.google.com [IPv6:2607:f8b0:400e:c03::230]) (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 400591ACCE1 for <v6ops@ietf.org>; Mon, 16 Nov 2015 17:45:58 -0800 (PST)
Received: by pabfh17 with SMTP id fh17so196479797pab.0 for <v6ops@ietf.org>; Mon, 16 Nov 2015 17:45:58 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:organization:message-id:date :user-agent:mime-version:in-reply-to:content-type :content-transfer-encoding; bh=SJ392rdrTO9GpDiJb1TqhdQUtNpwUpbriLmxWyRw7/U=; b=yeiXSc5hukk7m+ldFwS7AJvtmuuTvlz4VyArYgBjUp5nUiJ6wBx0K8zioeuKlRCYIx t5KZwC066r/RxJQvLcTDLv4D6cRspJnudlMj5UVDoMgUgtR5Zlwp322BIJbkAg19NIDR 05UpcUEbjIwcDt6QYiR71PCnTn5yWUl+QIx3i+xQhliHRGywj6z1S9usM0rgj8C2VzYp PV2W/73pA97LQNJ0+ntha1dcdeeTXhGFsV7Fc09voCqMjCfYrRDvzs475tYaJaTb/zOS ajj5o35hMc7HqIIHOFC09V/tvs7/J8kUjLORqXNCRa8LBo03zSYebyzMPnOrA3PL3dvN VaIw==
X-Received: by 10.66.221.105 with SMTP id qd9mr59981925pac.46.1447724757850; Mon, 16 Nov 2015 17:45:57 -0800 (PST)
Received: from [10.0.3.190] ([97.65.203.35]) by smtp.gmail.com with ESMTPSA id d7sm39089083pas.31.2015.11.16.17.45.54 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 16 Nov 2015 17:45:56 -0800 (PST)
To: "Templin, Fred L" <Fred.L.Templin@boeing.com>, Lorenzo Colitti <lorenzo@google.com>
References: <8D175A1F-B1AE-44B4-838E-1C853B6C937D@cisco.com> <2134F8430051B64F815C691A62D9831832F391A7@XCH-BLV-504.nw.nos.boeing.com> <CAKD1Yr15C-uoxUw0kgWO-d=LmUK8qWGLS7vt+22W+k8xXtDY+g@mail.gmail.com> <2134F8430051B64F815C691A62D9831832F393F1@XCH-BLV-504.nw.nos.boeing.com> <2134F8430051B64F815C691A62D9831832F3941D@XCH-BLV-504.nw.nos.boeing.com> <563811DF.9020603@gmail.com> <2134F8430051B64F815C691A62D9831832F394F7@XCH-BLV-504.nw.nos.boeing.com> <563821EB.3040508@gmail.com> <2134F8430051B64F815C691A62D9831832F39A09@XCH-BLV-504.nw.nos.boeing.com> <56392B6D.8030703@gmail.com> <2134F8430051B64F815C691A62D9831832F3A88F@XCH-BLV-504.nw.nos.boeing.com>
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
Organization: University of Auckland
Message-ID: <564A86D3.6050708@gmail.com>
Date: Tue, 17 Nov 2015 14:45:55 +1300
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0
MIME-Version: 1.0
In-Reply-To: <2134F8430051B64F815C691A62D9831832F3A88F@XCH-BLV-504.nw.nos.boeing.com>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/v6ops/2lZT3m17VV8QSliLyZV83FAs1a8>
Cc: "v6ops@ietf.org" <v6ops@ietf.org>
Subject: Re: [v6ops] DAD again [was: draft-ietf-v6ops-host-addr-availability discussion]
X-BeenThere: v6ops@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: v6ops discussion list <v6ops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/v6ops>, <mailto:v6ops-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/v6ops/>
List-Post: <mailto:v6ops@ietf.org>
List-Help: <mailto:v6ops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2015 01:46:06 -0000

I guess I've been puzzling over this for ten days, but the PD
discussion made me think about it again. Read to the end to
reload the context and seem my comment:

On 04/11/2015 11:37, Templin, Fred L wrote:
> Hi Brian,
> 
>> -----Original Message-----
>> From: Brian E Carpenter [mailto:brian.e.carpenter@gmail.com]
>> Sent: Tuesday, November 03, 2015 1:47 PM
>> To: Templin, Fred L; Lorenzo Colitti
>> Cc: v6ops@ietf.org
>> Subject: DAD again [was: draft-ietf-v6ops-host-addr-availability discussion]
>>
>> Hello Fred,
>>
>> On 03/11/2015 20:10, Templin, Fred L wrote:
>>> Hi Brian,
>>>
>>>> -----Original Message-----
>>>> From: Brian E Carpenter [mailto:brian.e.carpenter@gmail.com]
>>>> Sent: Monday, November 02, 2015 6:55 PM
>>>> To: Templin, Fred L; Lorenzo Colitti
>>>> Cc: v6ops@ietf.org
>>>> Subject: Re: [v6ops] draft-ietf-v6ops-host-addr-availability discussion
>>>>
>>>> Hi Fred,
>>>> On 03/11/2015 14:59, Templin, Fred L wrote:
>>>>> Hi Brian,
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Brian E Carpenter [mailto:brian.e.carpenter@gmail.com]
>>>>>> Sent: Monday, November 02, 2015 5:46 PM
>>>>>> To: Templin, Fred L; Lorenzo Colitti
>>>>>> Cc: v6ops@ietf.org
>>>>>> Subject: Re: [v6ops] draft-ietf-v6ops-host-addr-availability discussion
>>>>>>
>>>>>> On 03/11/2015 14:31, Templin, Fred L wrote:
>>>>>>> Bumping up one level – is it clear to everyone that it is OK to assign addresses
>>>>>>> taken from a DHCPv6 delegated prefix to the interface over which the prefix
>>>>>>> was received?
>>>>>>
>>>>>> If it was legitimately received, I can't see why it wouldn't be OK.
>>>>>
>>>>> OK. When the DHCPv6 server grants a prefix delegation to the client,
>>>>> the server is asserting that that prefix is unique and is now the sole
>>>>> property of the client. So, when you say legitimately received I
>>>>> agree and that is actually a core requirement of DHCPv6 PD.
>>>>> Otherwise, if the DHCPv6 server gave out duplicate prefixes, the
>>>>> routing system would become hopelessly corrupted and address
>>>>> duplication would be the least of our worries.
>>>>>
>>>>>>> And, that DAD is not required for those addresses?
>>>>>>
>>>>>> How is that safe? What is to stop a host running SLAAC once it
>>>>>> sees that prefix in an RA, and hitting the same IID by chance?
>>>>>> At least you need to specify that the A bit must not be set.
>>>>>
>>>>> I am talking about DAD on interface "A" being the interface over
>>>>> which the client receives the prefix delegation. No other node on
>>>>> interface "A" may use the delegated prefix, and no router on
>>>>> interface "A" may advertise the prefix in an RA. The prefix is the
>>>>> sole property of the client that received the PD, so the client is
>>>>> free to assign addresses without needing DAD.
>>>>
>>>> That usage of "may" might confuse some people, so let's pretend
>>>> you used a "MUST NOT" construct instead. I could still construct
>>>> a host stack that would ignore the issue: its logic would be
>>>> "I sent an RS and got no RA/PIO with A=1; but I see traffic from
>>>> prefix 2bad:dead:beef::/64, so I'll do SLAAC and DAD in that prefix."
>>>
>>> The malicious (or otherwise broken) host 'A' could configure any number
>>> of addresses it likes, but it would do so in a vacuum because ingress
>>> filtering will prevent a packet with a source address from a prefix
>>> belonging to host B from being accepted. So, node B has no reason
>>> to fear address duplication by node A.
>>
>> I'm not sure how an ingress filter somewhere upstream would know that
>> the packet came from the "wrong" host. But I don't think that's enough;
>> a duplicate address on the LAN is already a problem in itself.
>>
>>> Also, what if node B in fact did do DAD and A heard it? What is to stop
>>> A from configuring a duplicate address and trying to use it just to mess
>>> up the legitimate operation of node B?
>>
>> Nothing. That, I think, is why the RFCs make DAD mandatory.
>>
>>>
>>> What you are describing is a broken implementation that could only
>>> be employed by a malicious host, and not something that honors
>>> the standards.
>>
>> I don't think it's malicious; it's just trying to get IPv6 connectivity
>> in the face of what it sees as a broken router that isn't responding
>> to RS. But that isn't really my point - my point is that whatever we
>> do, it's impossible to assert that a duplicate address will never arise.
>>
>>> Doing DAD is not going to guard against malicious
>>> hosts.
>>
>> No, but it might allow you to detect the resulting anomaly.
> 
> 
> Actually, the simpler answer to your question is that the node would
> act as a host internally, but appear to be a router on the link from an
> outside observer's perspective. And, routers do not do DAD for the
> source addresses of packets that pass through them.

All routers are also IPv6 nodes, and by definition have an active
IPv6 interface with an address on each of their links. All IPv6 nodes
are supposed to perform DAD on their addresses. RFC 4862 is clear that
this applies even if SLAAC is not used:

   The Duplicate
   Address Detection algorithm is performed on all addresses,
   independently of whether they are obtained via stateless
   autoconfiguration or DHCPv6.

and specifically requires routers to perform DAD:

   In addition, routers are expected to successfully pass the
   Duplicate Address Detection procedure described in this document on
   all addresses prior to assigning them to an interface.

In fact it's particularly important that routers detect any address
collision on any of their interfaces, because downstream hosts or other
routers use each address as a next hop.

I can readily believe that implementations where static addresses are
configured on a simple pt2pt link skip this, but doing so on a broadcast
or NBMA link seems wrong to me.

    Brian

     Brian