Re: [dhcwg] Review of draft-ietf-dhc-option-guidelines

David Hankins <dhankins@google.com> Sun, 02 October 2011 04:42 UTC

Return-Path: <dhankins@google.com>
X-Original-To: dhcwg@ietfa.amsl.com
Delivered-To: dhcwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 51DD021F8C15 for <dhcwg@ietfa.amsl.com>; Sat, 1 Oct 2011 21:42:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.976
X-Spam-Level:
X-Spam-Status: No, score=-105.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fBTVEl8wtpgb for <dhcwg@ietfa.amsl.com>; Sat, 1 Oct 2011 21:42:53 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.44.51]) by ietfa.amsl.com (Postfix) with ESMTP id 5B57221F8C14 for <dhcwg@ietf.org>; Sat, 1 Oct 2011 21:42:51 -0700 (PDT)
Received: from hpaq14.eem.corp.google.com (hpaq14.eem.corp.google.com [172.25.149.14]) by smtp-out.google.com with ESMTP id p924jl7Q011736 for <dhcwg@ietf.org>; Sat, 1 Oct 2011 21:45:47 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1317530748; bh=WEvsIktDvkbc5eC1uElJz22/81c=; h=MIME-Version:In-Reply-To:References:Date:Message-ID:Subject:From: To:Cc:Content-Type; b=kHUhGGz8K6riKLDNZqBSemShRNu3V87ApGVCn2taOiDRmX1tPfHfioZ4vPye6cwnO 0Dy17syzhV0ZLaKpIxmPw==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=dkim-signature:mime-version:in-reply-to:references:date: message-id:subject:from:to:cc:content-type:x-system-of-record; b=MVNQHHuQurvEcWv1+1kAWSJX3RMNr5rB3k8u42sQ+mDoNIy0U2+9B0pPt1MEVjp55 RqWXqqnLlfUpxKncIGVGA==
Received: from ywn1 (ywn1.prod.google.com [10.192.14.1]) by hpaq14.eem.corp.google.com with ESMTP id p924jjW5030309 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for <dhcwg@ietf.org>; Sat, 1 Oct 2011 21:45:46 -0700
Received: by ywn1 with SMTP id 1so2993103ywn.38 for <dhcwg@ietf.org>; Sat, 01 Oct 2011 21:45:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=beta; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=03KjmLZHppUJNcqGfmAmSGnOVW2Yl+Kjws8NUTrOjwY=; b=jSCrcZ/Y+afkx9XDDN+uIH3spMjXgGan6jq3fkYrBxC0XwCcyPkb/m/q+bSTRE1d9s Edgj0GjF+cl08jxjZ9Eg==
Received: by 10.101.65.12 with SMTP id s12mr12049870ank.25.1317530744992; Sat, 01 Oct 2011 21:45:44 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.101.65.12 with SMTP id s12mr12049866ank.25.1317530744784; Sat, 01 Oct 2011 21:45:44 -0700 (PDT)
Received: by 10.100.14.5 with HTTP; Sat, 1 Oct 2011 21:45:44 -0700 (PDT)
In-Reply-To: <5D36713D8A4E7348A7E10DF7437A4B920122B5BD@SZXEML506-MBS.china.huawei.com>
References: <5D36713D8A4E7348A7E10DF7437A4B920122B5BD@SZXEML506-MBS.china.huawei.com>
Date: Sat, 01 Oct 2011 21:45:44 -0700
Message-ID: <CACLSHdQd5tE_Hmfz=RnpznTdRr4qwvk+YmaJeMtVQgCpxgeaHg@mail.gmail.com>
From: David Hankins <dhankins@google.com>
To: Jiangsheng <jiangsheng@huawei.com>
Content-Type: multipart/alternative; boundary="001636eee02306097304ae4988e0"
X-System-Of-Record: true
Cc: dhc WG <dhcwg@ietf.org>
Subject: Re: [dhcwg] Review of draft-ietf-dhc-option-guidelines
X-BeenThere: dhcwg@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: <dhcwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Sun, 02 Oct 2011 04:42:55 -0000

I'm finally getting time to work on this again...

On Thu, Aug 11, 2011 at 1:16 AM, Jiangsheng <jiangsheng@huawei.com> wrote:

> As agreed in the IETF 81 meeting, I have reviewed
> draft-ietf-dhc-option-guidelines and have below comments.
>
> Overall, this guideline is very useful. If it was published, it should be
> recommended in DHC WG charter page.
>
> 1. The very first and maybe the most important comment is: it is better to
> separate DHCPv4 and DHCPv6. It means we should have two dedicated drafts for
> DHCPv4 and DHCPv6. DHCPv4 and DHCPv6 are similar, but two different
> protocols. Some of discussions may be common between them, some of
> discussion may have very different base. Combining this discussion may
> harmful. Section 9, "option size" is an example. The option size
> requirements for DHCPv4 and DHCPv6 are different.
>
> Separating them would make the discussion more explicitly and targeting
> right readers. Say, one who is designing a new DHCPv6 option would not care
> how this may relevant to a DHCPv4 option.
>
> Furthermore, if DHCPv4 option space has freeze or will freeze, guidelines
> for new DHCPv4 option may be meaningless.
>

I agree, but I don't really have the time to separate the draft. :(


> 2. In the introduction section, this draft mentioned support for unknown
> options. It is unclear for me, at least from the draft contents, how this
> can happen? It may be possible to add new option at the server side, how the
> client support it?
>

The ISC DHCP client and server share the same mechanism described in the
Appendix.

My understanding of the Windows DHCP client is that it stores a copy of
anything it receives in the registry and applications that require or
support a new option will fetch it there.  Unfortunately, my memory is that
there isn't a way to add the option to the PRL.  The dhcpinform-clarify
draft documents for example the behavior of the Industry Updater ("Windows
Updates"), which tickles the DHCP client to send a new set of DHCPINFORMs
requesting option 252 - an option not supported (or not requested) by the
base DHCP client, but desired by the Industry Updater.

The Solaris client, if memory serves, has an extensive configuration in
/etc/dhcp.  Operators can manipulate the parameter request list, and have it
request new options.  Again these are stored in a place with a consistent
format so the operator's tools can fetch values.

More frequently however this feature is most useful to the DHCP Server
operator, as you have indicated.

3. The section 2, "when to use DHCP" does not mentioned "IP address
> configuration", which is the most important usage of DHCP. Unless this text
> is dedicate for new DHCP option (the current text does not claim so), IP
> address configuration should be added.
>

Well, the section was intended to help with the situation where you have a
specified problem, and you are asking if DHCP should be used in the
solution.  Certainly, IP addressing is already handled, but so too should it
be appropriate to resolve new addressing problems with DHCP.

I tried to provide the generic answer to that question - "any knob, dial, or
slider", and only list some examples.  It isn't meant to be a complete list.
 I certainly think "my IP address" counts as host configuration.

Do you think the current text is acceptable?

4. Disagree on the order of "when to use DHCP". The current text suggests
> using DHCP is first because client want information. But, in my
> understanding, network administration want to push/enforce some
> configuration is the most important requirements.
>

The order isn't intended to convey importance...but I think they are of
equal importance actually.

It's certainly true that in some cases clients only have a knob because
administrators want to be able to set it.  But I don't think for most new
options that that is always the case; usually some new protocol or client
feature needs a conveyance for configuration state.

5. The draft states, in section 2, "the client still reserves the right to
> ignore values received via DHCP". That's right. But this may be at their own
> risk to be rejected by network administration. This kind of observation
> should also mentioned. Otherwise, the above next may be misleading: client
> can ignore DHCP configuration without any effect.
>

This section is specifically trying to answer the question of whether it's
appropriate to use DHCP for a particular problem statement.  I don't want to
get encumbered in the minutiae of protocol implementation...

The specific problem we've had with objection to using DHCP in a few cases
is "we don't want to use DHCP for new protocol X, because I (an IETF
attendee) want to be able to configure my laptop myself."

If the protocol workers are quite happy being configured by the network
administrator, that is already a solved problem.

6. At the end of section 4, there are some rules how to organize values in
> the option. There should be more, such as the order of fixed size values,
> the order of multiple variable sized values.
>

I don't think there are any current best practices.  We don't sweat micro
alignment for particular integer lengths (and it'll be ruined by other
options in the payload anyway).

However I think the language is a bit stilted for variable length options.
 In DHCPv4 the main variable length options would simply use the rest of the
option data.  In DHCPv6 there are some variable length formats.

So there are a few things we've seen that we're trying to avoid.

The first is defining 6 options for one protocol (which is hard on DHCPv4),
where the client would request all 6 all the time.

The second was an option I recall that wanted to use a NVT ascii string,
followed by a zero byte (NULL value), followed by various fixed length
values.  The NULL in this case wastes an octet, purely because of ordering,
and complicates client parsing (there's no support for such a thing in most
software).

7. section 5, using the conclusion as title can be more explicit: "avoid
> conditional formatting". This also looks like the title of section 6.
>

Done.


> 8. the title of section 6 has a typo: avoid alciasing/aliasing
>

I don't know if I already fixed this, but it's fixed in my xml copy.


> 9. "in the case where the server is configured with all formats, DHCP
> option space is wasted on option contents that are redundant". This is not
> necessary true - usage of sub-option can reduce the dhcp option type to be
> only 1. Although the usage of sub-option is not recommended in the next
> section. The readers may have question here. Suggest to add one sentence for
> sub-option and refer to next section.
>

So, here I think we are talking about an unfortunately overloaded
terminology.

The "options space" in the DHCPv4 packet (the area after the BOOTP header)
is here referred to as the options space.

The text isn't referring to the DHCPv4 option code space. :(

10. Title of section 7 is misleading. It looks like it will introduce
> several new formats in this section. Suggest to change as "consideration on
> creating new formats".
>

Good point, it's now "Considerations for Creating New Formats".


> 11. in Section 9, the discussion regarding to DHCPv6 cannot draw the
> conclusion "prefer option formats...in the SMALLEST form factor". Be clear,
> I do agree the conclusion, but not the analysis.
>

Do you think it is possible to describe a specific upper fixed limit for
DHCPv6 in all deployments?

I don't see how the conclusion isn't supported by the evidence.

12. That the address is better than FQDN is a bad example for we should
> separate DHCPv4 and DHCPv6 discussion. FQDN has become favourite over IPv6
> address in many recent DHCPv6 option design. We have RFC6334,
> draft-ietf-mif-dhcpv6-route-option and etc. The FQDN is more flexible and
> may benefit in load-balance scenarios.
>

I don't agree.  The FQDN has been selected in recent work despite that it is
technically inferior.

The entirely non-technical motivations for those decisions will continue to
over-rule any guidelines we set here.

13. This draft says nothing about option orders, which is also important.
> The principle should be not give any specific order when design a new DHCP
> option. The option should be allowed to appear any place in the DHCP
> message. The only exception is security option(s). They need to perform
> algorithm over all other options. They may be allowed to located at the end.
>

It gets very hard to write concise language here, since the DHCPv6 style of
options is for options to contain options whose codes are taken from the
same option spaces.  "Anywhere in the packet" is nice and simple, but very
wrong in DHCPv6.


> 14. draft-ietf-dhc-secure-dhcpv6 should be mentioned in the security
> consideration section. If it deployed, some threats, like man-in-middle can
> be prevented since it introduced an data integrity protection for DHCPv6
> messages.
>

Are option contents authors going to format their options differently from
this information?

Mostly, I'd prefer not to gate publication of the draft on the publication
of another draft.

15. The text regarding to fixed/variable length options in security
> consideration section looks mis-located for me. They are not security
> relevant.
>

Buffer overflows are security problems, especially since most DHCP client
software is run by the system's super-user (or in simple firmware, having no
user separation).  An author of a DHCP option draft would do well to try to
think about how they can word the presentation of their option to enhance an
implementor's wariness of buffer overruns.

-- 
David W. Hankins
SRE - Systems Engineer
Google, Inc.