Subject: [rfc2462bis issue 277] M/O flags and DHCPv6

From: JINMEI Tatuya / 神明達哉 <[email-masked]>
Date: Fri, 27 Feb 2004 21:31:57 +0900

(note: this is a long message.)

One major open issue of rfc2462bis is semantics of the M/O bit,
what "stateful configuration" means, etc.

Ralph Droms raised a set of questions in March 2003:

a. the text needs to be updated to use RFC 2119 keywords
b. which keywords?
c. what is "the stateful configuration protocol"?
d. if the answer to "c" is DHCPv6, should RFC 2462 more
   explicitly reference the configuration-only version
   of DHCPv6 in the description of the 'O'flag?

I've been thinking about these questions, and I now have my personal
answers.

Since this message is lengthy, I'll first summarize the major
(proposed) changes as follows:

- clarify that the stateful protocol *is* DHCPv6.  For example, say in
  Section 1 that:

   In this document, Stateful autoconfiguration for IPv6 means DHCPv6
   [7].

- change the first part of Section 5.5.2 to:
   If a link has no routers, a host MAY attempt to use stateful
   autoconfiguration to obtain addresses and other configuration
   information.  An implementation MAY provide a way to enable the
   invocation of stateful autoconfiguration in this case, but the
   default SHOULD be disabled.

(i.e. change MUST in the first sentence to MAY, and modify the second
   sentence accordingly)

- use "SHOULD" instead of "should" in some related sentences of
  Section 5.5.3.  For example, we'll have the following sentence:

   If the value of ManagedFlag changes from FALSE to
   TRUE, and the host is not already running the stateful address
   autoconfiguration protocol, the host SHOULD invoke the stateful
   address autoconfiguration protocol, ...

If you have time, and particularly if you have objections to some of
the above changes, please look at the following discussions.

*** regarding question c ****

I'd first like to answer this question.  RFC2462 currently says:

   Stateful autoconfiguration for IPv6 is the subject of future work
   [DHCPv6].
(Section 1)

And, considering the latest standardization status, the current
revision of rfc2462bis says:

   Stateful autoconfiguration for IPv6 is the subject of DHCPv6 [7].

However, I still don't think this is crystal clear.  I believe we
should first clarify whether "stateful autoconfiguration" *equals to*
DHCPv6 (as specified in RFC3315), or whether we should still leave the
possibility of (future) other stateful protocols.  And then we should
clarify this point in rfc2462bis more explicitly.

Personally, I would prefer the first option (i.e., the "stateful
protocol" equals to DHCPv6).  Flexibility is in general a good thing,
but in this case, I don't see a reasonable practical reason to leave
other possibilities with ambiguous wording, particularly because the
ambiguity has annoyed people and caused similar questions/discussions
again and again.

If we can agree on this, I'll change the above sentence like:

   In this document, Stateful autoconfiguration for IPv6 means DHCPv6
   [7].

In the followings, I assume we adopt this interpretation (but it won't
matter much even if we do not).

*** regarding question a ****

First, I think we can concentrate on Section 5 "PROTOCOL
SPECIFICATION" (and its subsections).  For example, someone pointed
out that the following sentence in section 4 is "ambiguous":

   A "managed address
   configuration" flag indicates whether hosts should use stateful
   autoconfiguration to obtain addresses.

because it uses "should", not "SHOULD".

But I don't think we should care about the wording in Section 4, since
it's just an overview of the protocol, not the protocol specification
itself.  In fact, there are no RFC2119 keywords throughout Section 4.
Of course, we may have to revisit the wording when we resolve question
b ("which keyword?") though.

Concentrating on Section 5, I've found the following candidates of
RFC2119 keywords:

======================      start candidates    ======================
1. Section 5.2
      ManagedFlag      Copied from the M flag field (i.e., the ...
                       The flag indicates whether or not addresses are
                       to be configured using the stateful
                       autoconfiguration mechanism.

   where "are to be" may need to be, e.g., "SHOULD be".

2. Section 5.2
      OtherConfigFlag  Copied from the O flag field (i.e., the "other ...
                       The flag indicates whether or not information
                       other than addresses is to be obtained using the
                       stateful autoconfiguration mechanism.

   where "is to be" may need to be, e.g., "SHOULD be".

3. Section 5.5.3

   ... If the value of ManagedFlag changes from FALSE to
   TRUE, and the host is not already running the stateful address
   autoconfiguration protocol, the host should invoke the stateful
   address autoconfiguration protocol, ...

   where "the host should invoke" may need to be, e.g., "the host
   SHOULD invoke".

4. Section 5.5.3

   ...  If the value of the ManagedFlag
   changes from TRUE to FALSE, the host should continue running the
   stateful address autoconfiguration, ...

   where "the host should continue" may need to be, e.g., "the host
   SHOULD continue".

5. Section 5.5.3

   ... If the
   value of OtherConfigFlag changes from FALSE to TRUE, the host should
   invoke the stateful autoconfiguration protocol, ...

   where "the host should invoke" may need to be, e.g., "the host
   SHOULD invoke".

6. Section 5.5.3

   ...  If
   the value of the OtherConfigFlag changes from TRUE to FALSE, the host
   should continue running the stateful address autoconfiguration
   protocol, ...

   where "the host should continue" may need to be, e.g., "the host
   SHOULD continue".
======================      end candidates    ======================

In my current impression, we can leave 1 and 2 unchanged, but we'll
need to use RFC2119 keywords for the rest.

*** regarding question b ****

In addition to the above candidates, the following parts already using
RFC2119 keywords will need to be discussed here:

7. Section 5.5.2
   If a link has no routers, a host MUST attempt to use stateful
   autoconfiguration to obtain addresses and other configuration
   information.

8. Section 5.5.2
   An implementation MAY provide a way to disable the
   invocation of stateful autoconfiguration in this case, but the
   default SHOULD be enabled.

9. Section 5.5.3
   In particular, a host MUST
   NOT reinvoke stateful address configuration if it is already
   participating in the stateful protocol as a result of an earlier
   advertisement.

10. Section 5.5.3
   In particular, a host MUST NOT reinvoke stateful
   configuration if it is already participating in the stateful protocol
   as a result of an earlier advertisement.

To choose appropriate keywords, I'd like to be synchronized with the
node requirements draft (draft-ietf-ipv6-node-requirements-08.txt).
It says in Section 4.5.5 that:

   Stateful Address Autoconfiguration MAY be supported. DHCPv6 [RFC-
   3315] is the standard stateful address configuration protocol; see
   section 5.3 for DHCPv6 support.

   Nodes which do not support Stateful Address Autoconfiguration may be
   unable to obtain any IPv6 addresses aside from link-local addresses
   when it receives a router advertisement with the 'M' flag (Managed
   address configuration) set and which contains no prefixes advertised
   for Stateless Address Autoconfiguration (see section 4.5.2).
   ...

That is (in my understanding), implementing DHCPv6 is basically
optional with warnings about the case of not implementing it.  I know
this was a controversial issue, but I believe the node-requirements
draft made a reasonable decision in terms of practical and realistic
deployment path while honoring future flexibility.

So, I'd like to propose changing candidate 7 to:

   If a link has no routers, a host MAY attempt to use stateful
   autoconfiguration to obtain addresses and other configuration
   information.

Similarly, change candidate 8 to:
   An implementation MAY provide a way to enable the
   invocation of stateful autoconfiguration in this case, but the
   default SHOULD be disabled.

Another reason for the change is because we can at least use
link-local addresses within a single link without a router.

For candidates 3 to 6, I think "SHOULD" is appropriate, since this
only happens the network manager explicitly turns on the M or O flag
and the effect of this setting is described in the node-requirements
draft with warnings.

I also think "MUST NOT"s in candidates 9 and 10 are okay for the same
reason.

*** regarding question d ****

(I interpret "the configuration-only version of DHCPv6" as so called
"stateless DHCPv6" described in draft-ietf-dhc-dhcpv6-stateless-04.txt.)

This is not a strong opinion, but I'd currently say "no" for this
question.  The reasons are:

- in my opinion, the stateless DHCPv6 service should be a "ubiquitous"
  service, and hosts that need autoconfiguration should try it by
  default (that is, without seeing an O flag set, which needs an
  explicit configuration in routers).

- the O bit indicates a "stateful" mechanism for other configuration
  information than addresses.  If the information actually includes
  some real "other" stateful resources (probably in a future
  extension), using the stateless version of DHCPv6 may result in an
  incomplete service.

Even if we agree on my opinion, however, it might still be useful to
note that the protocol invoked by the O bit should be the full-spec
DHCPv6 instead of the stateless version.

					JINMEI, Tatuya
					Communication Platform Lab.
					Corporate R&D Center, Toshiba Corp.
					[email-masked]

--------------------------------------------------------------------
IETF IPv6 working group mailing list
[email-masked]
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

---

From: [email-masked]
Date: Mon, 1 Mar 2004 06:14:36 +0200

Jinmei,

Here are my 2 cents; I'll send comments on the points I have
comments, otherwise note any non-comment as a non-objection.

>    address autoconfiguration protocol, ...

This is OK with me.

>    In this document, Stateful autoconfiguration for IPv6 means DHCPv6

I agree with your text.  I don't see the need to keep this as an open
issue in the standard.

> Concentrating on Section 5, I've found the following candidates of

I don't have a strong opinion on the use of keywords.  Either way is OK,
in my opinion.
> DHCPv6 instead of the stateless version.

I think noting this would be a good thing.

John