Re: [dhcwg] Comments on draft-ietf-dhc-dhcpv6-opt-netboot-05

Ted Lemon <Ted.Lemon@nominum.com> Tue, 06 October 2009 20:21 UTC

Return-Path: <Ted.Lemon@nominum.com>
X-Original-To: dhcwg@core3.amsl.com
Delivered-To: dhcwg@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E54AC3A6960 for <dhcwg@core3.amsl.com>; Tue, 6 Oct 2009 13:21:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.277
X-Spam-Level:
X-Spam-Status: No, score=-6.277 tagged_above=-999 required=5 tests=[AWL=0.322, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id INPftxeCpYTg for <dhcwg@core3.amsl.com>; Tue, 6 Oct 2009 13:21:30 -0700 (PDT)
Received: from exprod7og103.obsmtp.com (exprod7og103.obsmtp.com [64.18.2.159]) by core3.amsl.com (Postfix) with ESMTP id 9AFAD3A6914 for <dhcwg@ietf.org>; Tue, 6 Oct 2009 13:21:29 -0700 (PDT)
Received: from source ([64.89.228.229]) (using TLSv1) by exprod7ob103.postini.com ([64.18.6.12]) with SMTP ID DSNKSsunK+1iV0MRk9YQ2xgSM5efa8LO81FP@postini.com; Tue, 06 Oct 2009 13:23:09 PDT
Received: from webmail.nominum.com (webmail.nominum.com [64.89.228.50]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (Client CN "webmail.nominum.com", Issuer "Go Daddy Secure Certification Authority" (verified OK)) by shell-too.nominum.com (Postfix) with ESMTP id 5A2931B82F7; Tue, 6 Oct 2009 13:23:15 -0700 (PDT)
Received: from vpna-148.vpn.nominum.com (64.89.227.148) by exchange-01.win.nominum.com (64.89.228.50) with Microsoft SMTP Server (TLS) id 8.1.393.1; Tue, 6 Oct 2009 13:23:06 -0700
MIME-Version: 1.0 (Apple Message framework v1076)
Content-Type: text/plain; charset="us-ascii"; format="flowed"; delsp="yes"
From: Ted Lemon <Ted.Lemon@nominum.com>
In-Reply-To: <200910061941.n96Jfa4D013250@cichlid.raleigh.ibm.com>
Date: Tue, 06 Oct 2009 13:23:03 -0700
Content-Transfer-Encoding: 7bit
Message-ID: <6F224598-2D3A-41BD-B1CE-02384905227D@nominum.com>
References: <994ABFCB-3ABF-484C-9855-1EEACC663CF4@nominum.com> <200910061918.n96JI5Nv005405@cichlid.raleigh.ibm.com> <D4C9A450-68AD-45E2-AED4-189051D48D05@nominum.com> <200910061928.n96JSrCV005622@cichlid.raleigh.ibm.com> <A29118D6-3D66-4998-B7D3-AF1E0C52703C@nominum.com> <200910061941.n96Jfa4D013250@cichlid.raleigh.ibm.com>
To: Thomas Narten <narten@us.ibm.com>
X-Mailer: Apple Mail (2.1076)
Cc: DHC-WG WG <dhcwg@ietf.org>, Damien Neil <Damien.Neil@nominum.com>
Subject: Re: [dhcwg] Comments on draft-ietf-dhc-dhcpv6-opt-netboot-05
X-BeenThere: dhcwg@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <dhcwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/dhcwg>, <mailto:dhcwg-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dhcwg>
List-Post: <mailto:dhcwg@ietf.org>
List-Help: <mailto:dhcwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dhcwg>, <mailto:dhcwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Oct 2009 20:21:32 -0000

On Oct 6, 2009, at 12:41 PM, Thomas Narten wrote:
> The issue that I see is that a simple implementation might want to
> process DHCP options one at a time in order. Find first option,
> process, discard. Go to next option, repeat.

Okay, I can see your point, and this (netboot) would certainly be the  
case where that would be most likely to be desired.   However, when I  
think about how I'd implement this in practice, I'm skeptical that  
your observation holds, because it seems unlikely to me that the  
client would, in practice, also be the thing evaluating these options.

In practice, I would expect the client to be one module, and the boot  
loader to be another module.   The client would probably parse all the  
options and store them somewhere, and then trigger whatever other  
modules needed to run after first acquiring an IP address.   One of  
these would be the boot loader.

I would not expect the DHCP client to invoke the boot loader in the  
middle of the option parsing process.   In fact it's impossible that  
it could, since there's no guarantee that the IP address, which must  
be processed prior to doing the boot loading, would appear prior to  
the netboot option.

Practically speaking, what's going to happen is that each module that  
has to run prior to the boot loader is, like the boot loader, going to  
have to make one or more passes across the list of options received by  
the client.   Then the boot loader will have to do the same thing.    
So the client is going to have to present the options in such a way  
that it's easy to iterate across them.

This means that by the time the boot loader is triggered, the code  
iterating across client options is going to have been run several  
times.   It's no problem for the boot loader to run it several more  
times, once for each possible netboot object.   It's certainly not a  
performance problem, and I don't think it adds to code complexity.

So while I agree in principle that the way this works feels a little  
weird, in practice I don't see this as a problem with the protocol.