Re: Comments on draft-yourtchenko-colitti-nd-reduce-multicast

Erik Nordmark <nordmark@acm.org> Tue, 25 February 2014 21:56 UTC

Return-Path: <nordmark@acm.org>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 76CAC1A0257 for <ipv6@ietfa.amsl.com>; Tue, 25 Feb 2014 13:56:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.189
X-Spam-Level: **
X-Spam-Status: No, score=2.189 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, MIME_HTML_ONLY=0.723, RCVD_IN_DNSWL_NONE=-0.0001, SPF_SOFTFAIL=0.665] 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 oWePv5H1K0nM for <ipv6@ietfa.amsl.com>; Tue, 25 Feb 2014 13:56:16 -0800 (PST)
Received: from d.mail.sonic.net (d.mail.sonic.net [64.142.111.50]) by ietfa.amsl.com (Postfix) with ESMTP id 0A3111A01E5 for <ipv6@ietf.org>; Tue, 25 Feb 2014 13:56:16 -0800 (PST)
Received: from [192.168.10.18] ([78.204.24.4]) (authenticated bits=0) by d.mail.sonic.net (8.14.4/8.14.4) with ESMTP id s1PLr65o030990 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Tue, 25 Feb 2014 13:53:07 -0800
Message-ID: <530D10C2.3080208@acm.org>
Date: Tue, 25 Feb 2014 13:53:06 -0800
From: Erik Nordmark <nordmark@acm.org>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.3.0
MIME-Version: 1.0
To: Ole Troan <otroan@employees.org>
Subject: Re: Comments on draft-yourtchenko-colitti-nd-reduce-multicast
References: <5305AF13.5060201@acm.org> <7461F3DA-FB05-400D-9C54-2F30C73DE2B9@employees.org> <530BCF83.4090500@acm.org> <F401125A-6D2F-4306-85E2-F13DDDCAA7F3@employees.org> <530CAC9D.1040105@acm.org> <2CFB5723-A676-4ADD-B555-83752997CFD7@employees.org>
In-Reply-To: <2CFB5723-A676-4ADD-B555-83752997CFD7@employees.org>
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Sonic-ID: C;Emp8NWee4xGJPtl8OBdzQA== M;dCIbNmee4xGJPtl8OBdzQA==
Archived-At: http://mailarchive.ietf.org/arch/msg/ipv6/M0XRDUQGWlZJWmXp2sW_1iQNUcI
Cc: Andrew Yourtchenko <ayourtch@cisco.com>, 6man WG <ipv6@ietf.org>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Feb 2014 21:56:18 -0000

On 2/25/14 7:45 AM, Ole Troan wrote:

So a potential approach would be to have the host form its address using the SLAAC method it prefers (such as stable-privacy) and then go through the DHCP (discovery plus request/response having the IA_NA/TA with the formed address). I don't know if we can use the 2 packet DHCP exchange for this or need the 4 packet one.  The host would get lifetimes back from the DHCP server so it would know when it needs to renew.
you could only use 2 message exchange if there was a single DHCP server on the link.
I guess the host would need to do the discover once, but then can do each address registration with just 2 messages.

If all the hosts on the link were to do this, and the DHCP service is 100% reliable, then this would ensure no duplicates.
But it has issues with incremental deployment where some hosts do this but not the legacy hosts, since the legacy hosts would do current DAD probes and not find out about the addresses registered with the DHCP server. If the DHCP server is on-link it could proxy respond (and also implicitly learn about registrations from those DAD probes - with the limitations for implicit registrations which I'm trying to write down), but what about the case of DHCP relay(s) on the link and an off-link DHCP server?
DHCP always has an on-link presence, be it the relay or the server. in theory (which is very far from practice), relays are stateless. for this discussion I suggest we assume DHCP must be deployed so that there is a DHCP server on-link and on every router.
You can't have it on every router unless there is a server-server protocol to coordinate the address assignments/registrations between the routers that are on the same link. There is no IETF standard for this (it was discussed and abandoned in the DHC WG a long time back).

with regards to your legacy point, with DHCP we can "declare" that there is no legacy. if you want to connect to networks like these, then DHCP is the only option for address assignment. just like there are networks deployed like that today.
I fear you are equating DHCPv6 as implemented by hosts today, and the extensions on the hosts necessary to use DHCP for address registrations. If you say that you will only support hosts that implement DHCP address registrations (for all addresses SLAAC - 4941, stable-privacy, microsoft privacy addresses, etc) then you will support no hosts at all on those links.

That sounds like a non starter to me.

In that case it seems like the DHCP relays need to relay all DAD packets to the DHCP server, so that it can respond (duplicate or ok), and build it state.
any scheme we can find that has no or few legacy implications would be good.
in the above scheme with the deployment restrictions outlined, DAD messages could be silently dropped at the AP/router.

And should the DHCP service loose some or all of its state (e.g., a cold standby is started after a hardware failure) then it doesn't have a way to rebuild its state from the network until the lifetimes cause the new hosts to renew. And for legacy hosts the DHCP server/relay would need to glean on data packets to reliably find out about addresses that are in use since the legacy host do not "renew" with an additional DAD probe in a predictable time.
I agree that DHCP performs poorly with regards to "server initiated" messages.
after a state-loss event you could do one of (again assuming no host changes):
 - DHCP bulk lease query
Who would respond to that? There is no relay in your picture as I understand it.
 - fall back to normal ND behaviour
When the DHCP server or router crashes it typically starts clean, hence it doesn't know whether it lost state, or is a newly installed/configured node. Thus it wouldn't be "fall back" AFAICT, but actually a requirement to always start in normal ND behavior and then somehow move towards DHCP address registrations.

You probably want to walk through all the details and write down the proposal - more efficient than me trying to guess and second guess how you think it might work and poke holes at my own guesses.

 - low timers
 - learn DHCP database from neighbouring routers

Thus it seems like in order to solve DAD using DHCPv6 we need to
1. solve how do reliably do implicit registrations from DAD (and data packets?) for legacy hosts in DHCP relay/server
2. new interaction between DHCP relay and server to handle legacy hosts in normal operation
3. ditto in the case of DHCP server state loss
I don't think we should go there, and if that's where we want to go, then I'm much more open at looking at new approaches.
I don't see how you can support legacy hosts without that. We can't assume that legacy hosts do DHCP address registrations for RFC 4941 temporary addresses when the A flag is set. Clearing the A flag means that some legacy hosts will not work on those links.


Note that this doesn't remove the need to multicast Neighbor Solutions for address resolutions, since the DHCP server or relay is not required to be implemented in the router (it might be in some deployments and products). Even when it implemented in the router, there would need to be a mechanism to share the state of IP->MAC address between the routers on the link.
Thus to solve that we need
4. DHCP server track MAC address to get IP->MAC binding
yes. so I have never heard about a case where a DHCP relay wasn't on the forwarding path.
relays or servers must in any case be on-link. I suggested above that we simplify the scenario (and discussion) by assuming the DHCP server was on-link and running on a router.

with regards to the IP -> MAC binding.
 - DHCP server gleans that information from ND/DHCP packets (e.g. RS) (ugly score of 3)
 - Hosts implement RFC6939 (ugly score of 2)
 - DHCP server uses normal address resolution to learn the L3/L2 mapping
The last choice implies a multicast NS from the DHCP server, right?

The idea was to avoid modifying hosts (by reusing DHCP) and reduce multicast - that seems to be hard.


5. Sharing of DHCP server state with all the routers on the link
yes, that's the trickiest part of this scheme.
this is a challenge whatever solution you choose here. even with ND register, where the proposal is for hosts to register with all on-link routers, you may get into a state where the databases aren't in sync. and also it forces hosts to quickly detect the appearance of a new router on the link.
efficient-nd (that you like to call nd register) is robust against database inconsistencies - eventual consistency.

If a new router appears and there are no use of multicast NS then the router needs to get the NCE database in any approach.
That could be using a yet-to-be-invented-and-standardized db sync protocol, vendor proprietary protocol, using unicast NS/NA between the routers, or involving the hosts as in ARO.

In all of those cases the new router might be asked to forward packets before it has a complete db. Might result in packets being dropped on the floor, or fallback to multicast NS to the hosts.

a fallback to normal ND is the only approach I can see off hand. for any solution we propose here.
I want to verify that I understand the context. Are you saying that any time there are two or more routers on the link we can not use the new scheme and can only use 4861? That doesn't make sense - we must aim higher.

With the above we still haven't addressed the unsolicited multicast RAs, thus we'd also need
6. Method to avoid multicast RAs - host driven unicast RS to refresh?
yes, that's independent of this I think. but as I think Andrew outlines in his document you can get reasonably far with that without host changes.

Note that if we solve 1, 5', and 6 we have a complete solution i.e.
1. solve how do reliably do implicit registrations from DAD (and data packets) in routers
5': sharing of that registration state (explicitly or implicitly) between the routers on the link
6. Method to avoid multicast RAs - host driven unicast RS to refresh?


Thus I don't see how "reusing DHCP" makes for less work - it seems to create a lot more  work by changing not only hosts and routers but also DHCP servers and DHCP relays plus defining additional need for state sharing which doesn't exist today.
if we need to put the state in the network, then I don't see that the maintaining network state for the L3/L2 mapping is different regardless of how you wrap the data.
Sorry, I don't understand your comment nor how it relates to the part of my text that you quoted.
Please explain.

[And as I've indicated, I think that #1 is actually hard even if there are products that do that with constrained applicability today. More about that later since it doesn't affect the difference between "reuse DHCP" and other parts of the solution space AFAICT.]
I think DHCP is largely a deployment choice. and that unless we agree on the assumptions, e.g. no legacy (which means we don't need 1) then I agree with you. DHCP as a solution only makes sense within certain constraints.

again I don't see how 6 isn't orthogonal to this. ah, sorry double negative. ;-)

4 and 5 are the biggest issues with a DHCP based solution.
no host changes, but definitely router/DHCP changes, and possibly AP changes.
Explain how a host which uses RFC 4941 address does not need changes.

      
DAD was invented largely to detect manual misconfiguration.
No, it was actually a lot more about EUI-64 derived IIDs and the fact that some vendors had issued NICs which all had the same MAC addresses. Those rare situations were a pain to track down. Hence at or around the time of the 1st Stockholm IETF we came up with this single NUD probe.

Since then we have temporary addresses, CGA, stable-privacy etc  which depend on DAD being able to detect duplicates.
But manual misconfig never entered in the picture AFAIR.
as long as the network is assigning the address instead of the host, DAD isn't required.
the assigning entity could do the duplicate detection itself, and that it can do from its own valid source address.
Yes, but that doesn't work with the security and privacy model for stable-privacy and CGA and their likes. Hence a non-starter AFAICT.

depending on network entities detecting a DAD message and using that to inject state in the network is a poor choice I think. DAD is unreliable, default DAD attempts is zero. 
Default DAD attempts is one - not zero.
But it isn't reliable in the case of random packet loss, spanning tree reconvergence triggering packet loss, sleeping hosts, etc, etc.
although it is sent as L2 unicast it will still have a typical failure rate of 1-5% on WIFI.

if we want network state for link-local addresses, and duplicate address detection, and also allow applications to use link-local addresses, then we need to 'figure' something out. I agree that without host changes that's tricky. while the network might detect and install state for the link-local address on e.g. RS/DHCP SOLICIT, the host might not be receptible to changing it after DAD has passed.

lots of good points here, do you collect them for a later draft?
Yes, I'm trying to capture the design tradeoffs.
Counting on you all to keep me honest ;-)

   Erik

 


--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6" rel="nofollow">https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------