summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc7227.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc7227.txt')
-rw-r--r--doc/rfc/rfc7227.txt1963
1 files changed, 1963 insertions, 0 deletions
diff --git a/doc/rfc/rfc7227.txt b/doc/rfc/rfc7227.txt
new file mode 100644
index 0000000..87a8042
--- /dev/null
+++ b/doc/rfc/rfc7227.txt
@@ -0,0 +1,1963 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) D. Hankins
+Request for Comments: 7227 Google
+BCP: 187 T. Mrugalski
+Updates: 3315 M. Siodelski
+Category: Best Current Practice ISC
+ISSN: 2070-1721 S. Jiang
+ Huawei Technologies Co., Ltd.
+ S. Krishnan
+ Ericsson
+ May 2014
+
+
+ Guidelines for Creating New DHCPv6 Options
+
+Abstract
+
+ This document provides guidance to prospective DHCPv6 option
+ developers to help them create option formats that are easily
+ adoptable by existing DHCPv6 software. It also provides guidelines
+ for expert reviewers to evaluate new registrations. This document
+ updates RFC 3315.
+
+Status of This Memo
+
+ This memo documents an Internet Best Current Practice.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ BCPs is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc7227.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 1]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+Copyright Notice
+
+ Copyright (c) 2014 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 2]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 5
+ 3. When to Use DHCPv6 . . . . . . . . . . . . . . . . . . . . . 5
+ 4. General Principles . . . . . . . . . . . . . . . . . . . . . 5
+ 5. Reusing Other Option Formats . . . . . . . . . . . . . . . . 6
+ 5.1. Option with IPv6 Addresses . . . . . . . . . . . . . . . 7
+ 5.2. Option with Single Flag (Boolean) . . . . . . . . . . . . 8
+ 5.3. Option with IPv6 Prefix . . . . . . . . . . . . . . . . . 9
+ 5.4. Option with 32-bit Integer Value . . . . . . . . . . . . 10
+ 5.5. Option with 16-bit Integer Value . . . . . . . . . . . . 10
+ 5.6. Option with 8-bit Integer Value . . . . . . . . . . . . . 11
+ 5.7. Option with URI . . . . . . . . . . . . . . . . . . . . . 11
+ 5.8. Option with Text String . . . . . . . . . . . . . . . . . 12
+ 5.9. Option with Variable-Length Data . . . . . . . . . . . . 13
+ 5.10. Option with DNS Wire Format Domain Name List . . . . . . 14
+ 6. Avoid Conditional Formatting . . . . . . . . . . . . . . . . 15
+ 7. Avoid Aliasing . . . . . . . . . . . . . . . . . . . . . . . 15
+ 8. Choosing between an FQDN and an Address . . . . . . . . . . . 16
+ 9. Encapsulated Options in DHCPv6 . . . . . . . . . . . . . . . 19
+ 10. Additional States Considered Harmful . . . . . . . . . . . . 20
+ 11. Configuration Changes Occur at Fixed Times . . . . . . . . . 21
+ 12. Multiple Provisioning Domains . . . . . . . . . . . . . . . . 21
+ 13. Chartering Requirements and Advice for Responsible Area
+ Directors . . . . . . . . . . . . . . . . . . . . . . . . . . 22
+ 14. Considerations for Creating New Formats . . . . . . . . . . . 23
+ 15. Option Size . . . . . . . . . . . . . . . . . . . . . . . . . 23
+ 16. Singleton Options . . . . . . . . . . . . . . . . . . . . . . 24
+ 17. Option Order . . . . . . . . . . . . . . . . . . . . . . . . 25
+ 18. Relay Options . . . . . . . . . . . . . . . . . . . . . . . . 25
+ 19. Clients Request Their Options . . . . . . . . . . . . . . . . 26
+ 20. Transition Technologies . . . . . . . . . . . . . . . . . . . 26
+ 21. Recommended Sections in the New Document . . . . . . . . . . 27
+ 21.1. DHCPv6 Client Behavior Text . . . . . . . . . . . . . . 28
+ 21.2. DHCPv6 Server Behavior Text . . . . . . . . . . . . . . 28
+ 21.3. DHCPv6 Relay Agent Behavior Text . . . . . . . . . . . . 29
+ 22. Should the New Document Update Existing RFCs? . . . . . . . . 29
+ 23. Security Considerations . . . . . . . . . . . . . . . . . . . 29
+ 24. Privacy Considerations . . . . . . . . . . . . . . . . . . . 31
+ 25. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31
+ 26. References . . . . . . . . . . . . . . . . . . . . . . . . . 31
+ 26.1. Normative References . . . . . . . . . . . . . . . . . . 31
+ 26.2. Informative References . . . . . . . . . . . . . . . . . 32
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 3]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+1. Introduction
+
+ Most protocol developers ask themselves if a protocol will work, or
+ work efficiently. These are important questions, but another less
+ frequently considered question is whether the proposed protocol
+ presents itself needless barriers to adoption by deployed software.
+
+ DHCPv6 [RFC3315] software implementors are not merely faced with the
+ task of handling a given option's format on the wire. The option
+ must fit into every stage of the system's process, starting with the
+ user interface used to enter the configuration up to the machine
+ interfaces where configuration is ultimately consumed.
+
+ Another frequently overlooked aspect of rapid adoption is whether the
+ option requires operators to be intimately familiar with the option's
+ internal format in order to use it. Most DHCPv6 software provides a
+ facility for handling unknown options at the time of publication.
+ The handling of such options usually needs to be manually configured
+ by the operator. But, if doing so requires extensive reading (more
+ than can be covered in a simple FAQ, for example), it inhibits
+ adoption.
+
+ So, although a given solution would work, and might even be space,
+ time, or aesthetically optimal, a given option is presented with a
+ series of ever-worsening challenges to be adopted:
+
+ o If it doesn't fit neatly into existing configuration files.
+
+ o If it requires source code changes to be adopted and, hence,
+ upgrades of deployed software.
+
+ o If it does not share its deployment fate in a general manner with
+ other options, standing alone in requiring code changes or
+ reworking configuration file syntaxes.
+
+ o If the option would work well in the particular deployment
+ environment the proponents currently envision, but it has equally
+ valid uses in some other environment where the proposed option
+ format would fail or would produce inconsistent results.
+
+ There are many things DHCPv6 option creators can do to avoid the
+ pitfalls in this list entirely, or failing that, to make software
+ implementors' lives easier and improve its chances for widespread
+ adoption.
+
+ This document is envisaged as a help for protocol developers that
+ define new options and for expert reviewers that review submitted
+ proposals.
+
+
+
+Hankins, et al. Best Current Practice [Page 4]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+2. Requirements Language
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+3. When to Use DHCPv6
+
+ Principally, DHCPv6 carries configuration parameters for its clients.
+ Any knob, dial, slider, or checkbox on the client system, such as "my
+ domain name servers", "my hostname", or even "my shutdown
+ temperature", are candidates for being configured by DHCPv6.
+
+ The presence of such a knob isn't enough, because DHCPv6 also
+ presents the extension of an administrative domain -- the operator of
+ the network to which the client is currently attached. Someone runs
+ not only the local switching network infrastructure to which the
+ client is directly (or wirelessly) attached but the various methods
+ of accessing the external Internet via local assist services that the
+ network must also provide (such as domain name servers or routers).
+ This means that, even if a configuration parameter can be potentially
+ delivered by DHCPv6, it is necessary to evaluate whether it is
+ reasonable for this parameter to be under the control of the
+ administrator of whatever network a client is attached to at any
+ given time.
+
+ Note that the client is not required to configure any of these values
+ received via DHCPv6 (e.g., due to having these values locally
+ configured by its own administrator). But, it needs to be noted that
+ overriding DHCPv6-provided values may cause the client to be denied
+ certain services in the network to which it has attached. The
+ possibility of having a higher level of control over client node
+ configuration is one of the reasons that DHCPv6 is preferred in
+ enterprise networks.
+
+4. General Principles
+
+ The primary guiding principle to follow in order to enhance an
+ option's adoptability is reuse. The option should be created in such
+ a way that does not require any new or special case software to
+ support. If old software that is currently deployed and in the field
+ can adopt the option through supplied configuration facilities, then
+ it's fairly certain that new software can formally adopt it easily.
+
+ There are at least two classes of DHCPv6 options: simple options,
+ which are provided explicitly to carry data from one side of the
+ DHCPv6 exchange to the other (such as name servers, domain names, or
+ time servers), and a protocol class of options, which require special
+
+
+
+Hankins, et al. Best Current Practice [Page 5]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ processing on the part of the DHCPv6 software or are used during
+ special processing (such as the Fully Qualified Domain Name (FQDN)
+ option [RFC4704]), and so forth; these options carry data that is the
+ result of a routine in some DHCPv6 software.
+
+ The guidelines laid out here should be applied in a relaxed manner
+ for the protocol class of options. Wherever a special case code is
+ already required to adopt the DHCPv6 option, it is substantially more
+ reasonable to format the option in a less generic fashion, if there
+ are measurable benefits to doing so.
+
+5. Reusing Other Option Formats
+
+ The easiest approach to manufacturing trivially deployable DHCPv6
+ options is to assemble the option out of whatever common fragments
+ fit, possibly allowing a group of data elements to repeat to fill the
+ remaining space (if present) and thus provide multiple values. Place
+ all fixed-size values at the start of the option and any variable
+ -/indeterminate-sized values at the tail end of the option.
+
+ This means that implementations will likely be able to reuse code
+ paths designed to support the other options.
+
+ There is a trade-off between the adoptability of previously defined
+ option formats and the advantages that new or specialized formats can
+ provide. In general, it is usually preferable to reuse previously
+ used option formats.
+
+ However, it isn't very practical to consider the bulk of DHCPv6
+ options already allocated and to consider which of those solve a
+ similar problem. So, the following list of common option format data
+ elements is provided as shorthand. Please note that it is not
+ complete in terms of exampling every option format ever devised.
+
+ If more complex options are needed, those basic formats mentioned
+ here may be considered as primitives (or 'fragment types') that can
+ be used to build more complex formats. It should be noted that it is
+ often easier to implement two options with trivial formats than one
+ option with a more complex format. That is not an unconditional
+ requirement though. In some cases, splitting one complex option into
+ two or more simple options introduces inter-option dependencies that
+ should be avoided. In such a case, it is usually better to keep one
+ complex option.
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 6]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+5.1. Option with IPv6 Addresses
+
+ This option format is used to carry one or many IPv6 addresses. In
+ some cases, the number of allowed addresses is limited (e.g., to
+ one):
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ | ipv6-address |
+ | |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ | ipv6-address |
+ | |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: Option with IPv6 Addresses
+
+ Examples of use:
+
+ o DHCPv6 Server Unicast Address [RFC3315] (a single address only)
+
+ o Session Initiation Protocol (SIP) Servers IPv6 Address List
+ [RFC3319]
+
+ o DNS Recursive Name Servers [RFC3646]
+
+ o Network Information Service (NIS) Servers [RFC3898]
+
+ o Simple Network Time Protocol (SNTP) Servers [RFC4075]
+
+ o Broadcast and Multicast Service Controller IPv6 Address Option for
+ DHCPv6 [RFC4280]
+
+ o Mobile IPv6 (MIPv6) Home Agent Address [RFC6610] (a single address
+ only)
+
+ o Network Time Protocol (NTP) Server Address [RFC5908] (a single
+ address only)
+
+
+
+
+Hankins, et al. Best Current Practice [Page 7]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ o NTP Multicast Address [RFC5908] (a single address only)
+
+5.2. Option with Single Flag (Boolean)
+
+ Sometimes, it is useful to convey a single flag that can take either
+ on or off values. Instead of specifying an option with 1 bit of
+ usable data and 7 bits of padding, it is better to define an option
+ without any content. It is the presence or absence of the option
+ that conveys the value. This approach has the additional benefit of
+ the absent option designating the default; that is, the administrator
+ has to take explicit actions to deploy the opposite of the default
+ value.
+
+ The absence of the option represents the default value, and the
+ presence of the option represents the other value, but that does not
+ necessarily mean that absence is "off" (or "false") and presence is
+ "on" (or "true"). That is, if it's desired that the default value
+ for a bistable option is "true"/"on", then the presence of that
+ option would turn it off (make it false). If the option presence
+ signifies an off/false state, that should be reflected in the option
+ name, e.g., OPTION_DISABLE_FOO.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Option for Conveying Boolean
+
+ Examples of use:
+
+ o DHCPv6 Rapid Commit [RFC3315]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 8]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+5.3. Option with IPv6 Prefix
+
+ Sometimes, there is a need to convey an IPv6 prefix. The information
+ to be carried by such an option includes the 128-bit IPv6 prefix
+ together with a length of this prefix taking values from 0 to 128.
+ Using the simplest approach, the option could convey this data in two
+ fixed-length fields: one carrying the prefix length and another
+ carrying the prefix. However, in many cases, /64 or shorter prefixes
+ are used. This implies that the large part of the prefix data
+ carried by the option would have its bits set to 0 and would be
+ unused. In order to avoid carrying unused data, it is recommended to
+ store the prefix in the variable-length data field. The appropriate
+ option format is defined as follows:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | prefix6len | ipv6-prefix |
+ +-+-+-+-+-+-+-+-+ (variable length) |
+ . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: Option with IPv6 Prefix
+
+ option-length is set to 1 + length of the IPv6 prefix.
+
+ prefix6len is 1 octet long and specifies the length in bits of the
+ IPv6 prefix. Typically allowed values are 0 to 128.
+
+ The ipv6-prefix field is a variable-length field that specifies the
+ IPv6 prefix. The length is (prefix6len + 7) / 8. This field is
+ padded with 0 bits up to the nearest octet boundary when prefix6len
+ is not divisible by 8.
+
+ Examples of use:
+
+ o Default Mapping Rule [MAP]
+
+ For example, the prefix 2001:db8::/60 would be encoded with an
+ option-length of 9, prefix6-len would be set to 60, and the
+ ipv6-prefix would be 8 octets and would contain octets 20 01 0d b8 00
+ 00 00 00.
+
+ It should be noted that the IAPREFIX option defined by [RFC3633] uses
+ a full-length 16-octet prefix field. The concern about option length
+ was not well understood at the time of its publication.
+
+
+
+Hankins, et al. Best Current Practice [Page 9]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+5.4. Option with 32-bit Integer Value
+
+ This option format can be used to carry a 32-bit signed or unsigned
+ integer value:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 32-bit-integer |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 4: Option with 32-bit Integer Value
+
+ Examples of use:
+
+ o Information Refresh Time [RFC4242]
+
+5.5. Option with 16-bit Integer Value
+
+ This option format can be used to carry 16-bit signed or unsigned
+ integer values:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 16-bit-integer |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 5: Option with 16-bit Integer Value
+
+ Examples of use:
+
+ o Elapsed Time [RFC3315]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 10]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+5.6. Option with 8-bit Integer Value
+
+ This option format can be used to carry 8-bit integer values:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 8-bit-integer |
+ +-+-+-+-+-+-+-+-+
+
+ Figure 6: Option with 8-bit Integer Value
+
+ Examples of use:
+
+ o DHCPv6 Preference [RFC3315]
+
+5.7. Option with URI
+
+ A Uniform Resource Identifier (URI) [RFC3986] is a compact sequence
+ of characters that identifies an abstract or physical resource. The
+ term "Uniform Resource Locator" (URL) refers to the subset of URIs
+ that, in addition to identifying a resource, provide a means of
+ locating the resource by describing its primary access mechanism
+ (e.g., its network "location"). This option format can be used to
+ carry a single URI:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ . URI (variable length) .
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+ Figure 7: Option with URI
+
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 11]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ Examples of use:
+
+ o Boot File URL [RFC5970]
+
+ An alternate encoding to support multiple URIs is available. An
+ option must be defined to use either the single URI format above or
+ the multiple URI format below depending on whether a single URI is
+ always sufficient or if multiple URIs are possible.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ . .
+ . uri-data .
+ . . . . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 8: Option with Multiple URIs
+
+ Each instance of the uri-data is formatted as follows:
+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
+ | uri-len | URI |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
+
+ The uri-len is 2 octets long and specifies the length of the URI
+ data. Although the URI format in theory supports up to 64 KB of
+ data, in practice, large chunks of data may be problematic. See
+ Section 15 for details.
+
+5.8. Option with Text String
+
+ A text string is a sequence of characters that have no semantics.
+ The encoding of the text string MUST be specified. Unless otherwise
+ specified, all text strings in newly defined options are expected to
+ be Unicode strings that are encoded using UTF-8 [RFC3629] in Net-
+ Unicode form [RFC5198]. Please note that all strings containing only
+ 7-bit ASCII characters are also valid UTF-8 Net-Unicode strings.
+
+ If a data format has semantics other than just being text, it is not
+ a string; e.g., an FQDN is not a string, and a URI is also not a
+ string because they have different semantics. A string must not
+ include any terminator (such as a null byte). The null byte is
+ treated as any other character and does not have any special meaning.
+ This option format can be used to carry a text string:
+
+
+
+
+Hankins, et al. Best Current Practice [Page 12]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ . String .
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+ Figure 9: Option with Text String
+
+ Examples of use:
+
+ o Timezone Options for DHCPv6 [RFC4833]
+
+ An alternate encoding to support multiple text strings is available.
+ An option must be defined to use either the single text string format
+ above or the multiple text string format below, depending on whether
+ a single text string is always sufficient or if multiple text strings
+ are possible.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ . .
+ . text-data .
+ . . . . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 10: Option with Multiple Text Strings
+
+ Each instance of the text-data is formatted as follows:
+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
+ | text-len | String |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
+
+ The text-len is 2 octets long and specifies the length of the string.
+
+5.9. Option with Variable-Length Data
+
+ This option can be used to carry variable-length data of any kind.
+ Internal representation of carried data is option specific. Whenever
+ this format is used by the new option being defined, the data
+ encoding should be documented.
+
+
+
+Hankins, et al. Best Current Practice [Page 13]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ This option format provides a lot of flexibility to pass data of
+ almost any kind. Though, whenever possible, it is highly recommended
+ to use more specialized options, with field types better matching
+ carried data types.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ . .
+ . variable-length data .
+ . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 11: Option with Variable-Length Data
+
+ Examples of use:
+
+ o Client Identifier [RFC3315]
+
+ o Server Identifier [RFC3315]
+
+5.10. Option with DNS Wire Format Domain Name List
+
+ This option is used to carry 'domain search' lists or any host or
+ domain name. It uses the same format as described in Section 5.9 but
+ with the special data encoding, as described in Section 8 of
+ [RFC3315]. This data encoding supports carrying multiple instances
+ of hosts or domain names in a single option by terminating each
+ instance with the byte value of 0.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | option-code | option-length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | DNS Wire Format Domain Name List |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 12: Option with DNS Wire Format Domain Name List
+
+ Examples of use:
+
+ o SIP Servers Domain Name List [RFC3319] (many domains)
+
+ o NIS Domain Name [RFC3898] (many domains)
+
+
+
+Hankins, et al. Best Current Practice [Page 14]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ o Location-to-Service Translation (LoST) Server Domain Name
+ [RFC5223]
+
+ o Location Information Server (LIS) Domain Name [RFC5986]
+
+ o Dual-Stack Lite (DS-Lite) Address Family Transition Router (AFTR)
+ Location [RFC6334] (a single FQDN)
+
+ o Home Network Identifier [RFC6610] (a single FQDN)
+
+ o Home Agent FQDN [RFC6610] (a single FQDN)
+
+6. Avoid Conditional Formatting
+
+ Placing an octet at the start of the option that informs the software
+ how to process the remaining octets of the option may appear simple
+ to the casual observer. But, the only conditional formatting methods
+ that are in widespread use today are 'protocol' class options.
+ Therefore, conditional formatting requires new code to be written and
+ complicates future interoperability should new conditional formats be
+ added; existing code has to ignore conditional formats that it does
+ not support.
+
+7. Avoid Aliasing
+
+ Options are said to be aliases of each other if they provide input to
+ the same configuration parameter. A commonly proposed example is to
+ configure the location of some new service ("my foo server") using a
+ binary IP address, a domain name field, and a URL. This kind of
+ aliasing is undesirable and is not recommended.
+
+ In this case, where three different formats are supposed, it more
+ than triples the work of the software involved, requiring support for
+ not merely one format but support to produce and digest all three.
+ Furthermore, code development and testing must cover all possible
+ combinations of defined formats. Since clients cannot predict what
+ values the server will provide, they must request all formats. So,
+ in the case where the server is configured with all formats, DHCPv6
+ message bandwidth is wasted on option contents that are redundant.
+ Also, the DHCPv6 option number space is wasted, as three new option
+ codes are required rather than one.
+
+ It also becomes unclear which types of values are mandatory and how
+ configuring some of the options may influence the others. For
+ example, if an operator configures the URL only, should the server
+ synthesize a domain name and an IP address?
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 15]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ A single configuration value on a host is probably presented to the
+ operator (or other software on the machine) in a single field or
+ channel. If that channel has a natural format, then any alternative
+ formats merely make more work for intervening software in providing
+ conversions.
+
+ So, the best advice is to choose the one method that best fulfills
+ the requirements for simplicity (such as with an IP address and a
+ port pair), late binding (such as with DNS), or completeness (such as
+ with a URL).
+
+8. Choosing between an FQDN and an Address
+
+ Some parameters may be specified as an FQDN or an address. In most
+ cases, one or the other should be used. This section discusses pros
+ and cons of each approach and is intended to help make an informed
+ decision in that regard. It is strongly discouraged to define both
+ option types at the same time (see Section 7), unless there is
+ sufficient motivation to do so.
+
+ There is no single recommendation that works for every case. It very
+ much depends on the nature of the parameter being configured. For
+ parameters that are network specific or represent certain aspects of
+ network infrastructure, like available mobility services, in most
+ cases addresses are a more usable choice. For parameters that can be
+ considered an application-specific configuration, like SIP servers,
+ it is usually better to use an FQDN.
+
+ Applications are often better suited to deal with FQDN failures than
+ with address failures. Most operating systems provide a way to retry
+ an FQDN resolution if the previous attempt fails. That type of error
+ recovery is supported by a great number of applications. On the
+ other hand, there is typically no API available for applications to
+ reconfigure over DHCP to get a new address value if the one received
+ is no longer appropriate. This problem may be usually addressed by
+ providing a list of addresses rather than just a single one. That,
+ on the other hand, requires a defined procedure on how multiple
+ addresses should be used (all at once, round robin, try first and
+ fail over to the next if it fails, etc.).
+
+ An FQDN provides a higher level of indirection and ambiguity. In
+ many cases, that may be considered a benefit, but it can be
+ considered a flaw in others. For example, one operator suggested
+ that the same name be resolved to different addresses, depending on
+ the point of attachment of the host doing the resolution. This is
+ one way to provide localized addressing. However, in order to do
+ this, it is necessary to violate the DNS convention that a query on a
+ particular name should always return the same answer (aside from the
+
+
+
+Hankins, et al. Best Current Practice [Page 16]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ ordering of IP addresses in the response, which is supposed to be
+ varied by the name server). This same locality of reference for
+ configuration information can be achieved directly using DHCP, since
+ the DHCP server must know the network topology in order to provide IP
+ address or prefix configuration.
+
+ The other type of ambiguity is related to multiple provisioning
+ domains (see Section 12). The stub resolver on the DHCP client
+ cannot at present be assumed to make the DNS query for a DHCP-
+ supplied FQDN on the same interface on which it received its DHCP
+ configuration and may, therefore, get a different answer from the DNS
+ than was intended.
+
+ This is particularly a problem when the normal expected use of the
+ option makes sense with a private DNS zone(s), as might be the case
+ on an enterprise network. It may also be the case that the client
+ has an explicit DNS server configured and may, therefore, never query
+ the enterprise network's internal DNS server.
+
+ An FQDN does require a resolution into an actual address. This
+ implies the question as to when the FQDN resolution should be
+ conducted. There are a couple of possible answers: a) by the server,
+ when it is started, b) by the server, when it is about to send an
+ option, c) by the client, immediately after receiving an option, and
+ d) by the client, when the content of the option is actually
+ consumed. For a), b), and possibly c), the option should really
+ convey an address, not an FQDN. The only real incentive to use an
+ FQDN is case d). It is the only case that allows possible changes in
+ the DNS to be picked up by clients.
+
+ If the parameter is expected to be used by constrained devices (low
+ power, battery operated, and low capabilities) or in very lossy
+ networks, it may be appealing to drop the requirement of performing
+ the DNS resolution and use addresses. Another example of a
+ constrained device is a network-booted device, where despite the fact
+ that the node itself is very capable once it's booted, the boot prom
+ is quite constrained.
+
+ Another aspect that should be considered is time required for the
+ clients to notice any configuration changes. Consider a case where a
+ server configures service A using an address and service B using an
+ FQDN. When an administrator decides to update the configuration, he
+ or she can update the DHCP server configuration to change both
+ services. If the clients do not support reconfigure (which is an
+ optional feature of RFC 3315 but in some environments, e.g., cable
+ modems, is mandatory), the configuration will be updated on the
+ clients after the T1 timer elapses. Depending on the nature of the
+ change (is it a new server added to a cluster of already operating
+
+
+
+Hankins, et al. Best Current Practice [Page 17]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ servers or a new server that replaces the only available server that
+ crashed?), this may be an issue. On the other hand, updating service
+ B may be achieved with a DNS record update. That information may be
+ cached by caching DNS servers for up to Time to Live (TTL).
+ Depending on the values of T1 and TTL, one update may be faster than
+ another. Furthermore, depending on the nature of the change (planned
+ modification or unexpected failure), T1 or TTL may be lowered before
+ the change to speed up new configuration adoption.
+
+ Simply speaking, protocol designers don't know what the TTL or the T1
+ time will be, so they can't make assumptions about whether a DHCP
+ option will be refreshed more quickly based on T1 or TTL.
+
+ Addresses have the benefit of being easier to implement and handle by
+ the DHCP software. An address option is simpler to use, has
+ validation that is trivial (multiple of 16 constitutes a valid
+ option), is explicit, and does not allow any ambiguity. It is faster
+ (does not require extra round-trip time), so it is more efficient,
+ which can be especially important for energy-restricted devices. It
+ also does not require that the client implements a DNS resolution.
+
+ An FQDN imposes a number of additional failure modes and issues that
+ should be dealt with:
+
+ 1. The client must have knowledge about available DNS servers. That
+ typically means that option DNS_SERVERS [RFC3646] is mandatory.
+ This should be mentioned in the document that defines the new
+ option. It is possible that the server will return the FQDN
+ option but not the DNS server's option. There should be a brief
+ discussion about it;
+
+ 2. The DNS may not be reachable;
+
+ 3. The DNS may be available but may not have appropriate information
+ (e.g., no AAAA records for the specified FQDN);
+
+ 4. The address family must be specified (A, AAAA, or any); the
+ information being configured may require a specific address
+ family (e.g., IPv6), but there may be a DNS record only of
+ another type (e.g., A only with an IPv4 address).
+
+ 5. What should the client do if there are multiple records available
+ (use only the first one, use all, use one and switch to the
+ second if the first fails for whatever reason, etc.). This may
+ be an issue if there is an expectation that the parameter being
+ configured will need exactly one address;
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 18]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ 6. Multihomed devices may be connected to different administrative
+ domains with each domain providing different information in the
+ DNS (e.g., an enterprise network exposing private domains). The
+ client may send DNS queries to a different DNS server; and
+
+ 7. It should be mentioned if Internationalized Domain Names are
+ allowed. If they are, DNS option encoding should be specified.
+
+ Address options that are used with overly long T1 (renew timer)
+ values have some characteristics of hard-coded values. That is
+ strongly discouraged. See [RFC4085] for an in-depth discussion. If
+ the option may appear in Information-request, its lifetime should be
+ controlled using the information refresh time option [RFC4242].
+
+ One specific case that makes the choice between an address and an
+ FQDN not obvious is a DNS Security (DNSSEC) bootstrap scenario.
+ DNSSEC validation imposes a requirement for clock sync (to the
+ accuracy reasonably required to consider signature inception and
+ expiry times). This often implies usage of NTP configuration.
+
+ However, if NTP is provided as an FQDN, there is no way to validate
+ its DNSSEC signature. This is a somewhat weak argument though, as
+ providing an NTP server as an address is also not verifiable using
+ DNSSEC. If the trustworthiness of the configuration provided by the
+ DHCP server is in question, DHCPv6 offers mechanisms that allow
+ server authentication.
+
+9. Encapsulated Options in DHCPv6
+
+ Most options are conveyed in a DHCPv6 message directly. Although
+ there is no codified normative language for such options, they are
+ often referred to as top-level options. Many options may include
+ other options. Such inner options are often referred to as
+ encapsulated or nested options. Those options are sometimes called
+ sub-options, but this term actually means something else and,
+ therefore, should never be used to describe encapsulated options. It
+ is recommended to use the term "encapsulated" as this terminology is
+ used in [RFC3315]. The difference between encapsulated and sub-
+ options is that the former uses normal DHCPv6 option numbers, while
+ the latter uses option number space specific to a given parent
+ option. It should be noted that, contrary to DHCPv4, there is no
+ shortage of option numbers; therefore, almost all options share a
+ common option space. For example, option type 1 meant different
+ things in DHCPv4, depending if it was located in the top level or
+ inside of the Relay Agent Information option. There is no such
+ ambiguity in DHCPv6 (with the exception of [RFC5908], which SHOULD
+ NOT be used as a template for future DHCP option definitions).
+
+
+
+
+Hankins, et al. Best Current Practice [Page 19]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ From the implementation perspective, it is easier to implement
+ encapsulated options rather than sub-options, as the implementors do
+ not have to deal with separate option spaces and can use the same
+ buffer parser in several places throughout the code.
+
+ Such encapsulation is not limited to one level. There is at least
+ one defined option that is encapsulated twice: Identity Association
+ for Prefix Delegation (IA_PD), as defined in Section 9 of [RFC3633],
+ conveys the Identity Association (IA) Prefix (IAPREFIX), as defined
+ in Section 10 of [RFC3633]. Such a delegated prefix may contain an
+ excluded prefix range that is represented by the PD_EXCLUDE option
+ that is conveyed as encapsulated inside IAPREFIX (PD_EXCLUDE is
+ defined in [RFC6603]). It seems awkward to refer to such options as
+ sub-sub-option or doubly encapsulated option; therefore, the
+ "encapsulated option" term is typically used, regardless of the
+ nesting level.
+
+ When defining a DHCP-based configuration mechanism for a protocol
+ that requires something more complex than a single option, it may be
+ tempting to group configuration values using sub-options. That
+ should preferably be avoided, as it increases complexity of the
+ parser. It is much easier, faster, and less error prone to parse a
+ large number of options on a single (top-level) scope than to parse
+ options on several scopes. The use of sub-options should be avoided
+ as much as possible, but it is better to use sub-options rather than
+ conditional formatting.
+
+ It should be noted that currently there is no clear way defined for
+ requesting sub-options. Most known implementations are simply using
+ the top-level Option Request Option (ORO) for requesting both top-
+ level and encapsulated options.
+
+10. Additional States Considered Harmful
+
+ DHCP is designed for provisioning clients. Less experienced protocol
+ designers often assume that it is easy to define an option that will
+ convey a different parameter for each client in a network. Such
+ problems arose during designs of the Mapping of Address and Port
+ (MAP) [MAP] and IPv4 Residual Deployment (4rd) [SOLUTION-4rd]. While
+ it would be easier for provisioned clients to get ready to use per-
+ client option values, such a requirement puts exceedingly large loads
+ on the server side. The new extensions may introduce new
+ implementation complexity and additional database state on the
+ server. Alternatives should be considered, if possible. As an
+ example, [MAP] was designed in a way that all clients are provisioned
+ with the same set of MAP options, and each provisioned client uses
+ its unique address and delegated prefix to generate client-specific
+
+
+
+
+Hankins, et al. Best Current Practice [Page 20]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ information. Such a solution does not introduce any additional state
+ for the server and, therefore, scales better.
+
+ It also should be noted that contrary to DHCPv4, DHCPv6 keeps several
+ timers for renewals. Each IA_NA (addresses) and IA_PD (prefixes)
+ contains T1 and T2 timers that designate time after which the client
+ will initiate renewal. Those timers apply only to their associated
+ IA containers. Refreshing other parameters should be initiated after
+ a time specified in the information refresh time option (defined in
+ [RFC4242]), carried in the Reply message, and returned in response to
+ the Information-request message. Introducing additional timers make
+ deployment unnecessarily complex and SHOULD be avoided.
+
+11. Configuration Changes Occur at Fixed Times
+
+ In general, DHCPv6 clients only refresh configuration data from the
+ DHCP server when the T1 timer expires. Although there is a
+ Reconfigure mechanism that allows a DHCP server to request that
+ clients initiate reconfiguration, support for this mechanism is
+ optional and cannot be relied upon.
+
+ Even when DHCP clients refresh their configuration information, not
+ all consumers of DHCP-sourced configuration data notice these
+ changes. For instance, if a server is started using parameters
+ received in an early DHCP transaction, but does not check for updates
+ from DHCP, it may well continue to use the same parameter
+ indefinitely. There are a few operating systems that take care of
+ reconfiguring services when the client moves to a new network (e.g.,
+ based on mechanisms like [RFC4436], [RFC4957], or [RFC6059]), but
+ it's worth bearing in mind that a renew may not always result in the
+ client taking up new configuration information that it receives.
+
+ In light of the above, when designing an option you should take into
+ consideration the fact that your option may hold stale data that will
+ only be updated at an arbitrary time in the future.
+
+12. Multiple Provisioning Domains
+
+ In some cases, there could be more than one DHCPv6 server on a link,
+ with each providing a different set of parameters. One notable
+ example of such a case is a home network with a connection to two
+ independent ISPs.
+
+ The DHCPv6 specification does not provide clear advice on how to
+ handle multiple provisioning sources. Although [RFC3315] states that
+ a client that receives more than one Advertise message may respond to
+ one or more of them, such capability has not been observed in
+ existing implementations. Existing clients will pick one server and
+
+
+
+Hankins, et al. Best Current Practice [Page 21]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ will continue the configuration process with that server, ignoring
+ all other servers.
+
+ In addition, a node that acts as a DHCPv6 client may be connected to
+ more than one physical network. In most cases, it will operate a
+ separate DHCP client state machine on each interface and acquire
+ different, possibly conflicting, information through each. This
+ information will not be acquired in any synchronized way.
+
+ Existing nodes cannot be assumed to systematically segregate
+ configuration information on the basis of its source; as a result, it
+ is quite possible that a node may receive an FQDN on one network
+ interface but do the DNS resolution on a different network interface,
+ using different DNS servers. As a consequence, DNS resolution done
+ by the DHCP server is more likely to behave predictably than DNS
+ resolution done on a multi-interface or multihomed client.
+
+ This is a generic DHCP issue and should not be dealt within each
+ option separately. This issue is better dealt with using a protocol-
+ level solution, and fixing this problem should not be attempted on a
+ per-option basis. Work is ongoing in the IETF to provide a
+ systematic solution to this problem.
+
+13. Chartering Requirements and Advice for Responsible Area Directors
+
+ Adding a simple DHCP option is straightforward and generally
+ something that any working group (WG) can do, perhaps with some help
+ from designated DHCP experts. However, when new fragment types need
+ to be devised, this requires the attention of DHCP experts and should
+ not be done in a WG that doesn't have a quorum of such experts. This
+ is true whether the new fragment type has the same structure as an
+ existing fragment type but with different semantics, or the new
+ format has a new structure.
+
+ Responsible Area Directors for WGs that wish to add a work item to a
+ WG charter to define a new DHCP option should get clarity from the WG
+ as to whether the new option will require a new fragment type or new
+ semantics, or whether it is a simple DHCP option that fits existing
+ definitions.
+
+ If a WG needs a new fragment type, it is preferable to see if another
+ WG exists whose members already have sufficient expertise to evaluate
+ the new work. If such a working group is available, the work should
+ be chartered in that working group instead. If there is no other WG
+ with DHCP expertise that can define the new fragment type, the
+ responsible AD should seek help from known DHCP experts within the
+ IETF to provide advice and frequent early review as the original WG
+ defines the new fragment type.
+
+
+
+Hankins, et al. Best Current Practice [Page 22]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ In either case, the new option should be defined in a separate
+ document, and the work should focus on defining a new format that
+ generalizes well and can be reused, rather than a single-use fragment
+ type. The WG that needs the new fragment type can define their new
+ option referencing the new fragment type document, and the work can
+ generally be done in parallel, avoiding unnecessary delays. Having
+ the definition in its own document will foster reuse of the new
+ fragment type.
+
+ The responsible AD should work with all relevant WG Chairs and DHCP
+ experts to ensure that the new fragment type document has in fact
+ been carefully reviewed by the experts and appears satisfactory.
+
+ Responsible Area Directors for WGs that are considering defining
+ options that actually update DHCP, as opposed to simple options,
+ should go through a process similar to that described above when
+ trying to determine where to do the work. Under no circumstances
+ should a WG be given a charter deliverable to define a new DHCP
+ option, and then on the basis of that charter item actually make
+ updates to DHCP.
+
+14. Considerations for Creating New Formats
+
+ When defining new options, one specific consideration to evaluate is
+ whether or not options of a similar format would need to have
+ multiple or single values encoded (whatever differs from the current
+ option) and how that might be accomplished in a similar format.
+
+ When defining a new option, it is best to synthesize the option
+ format using fragment types already in use. However, in some cases,
+ there may be no fragment type that accomplishes the intended purpose.
+
+ The matter of size considerations and option order are further
+ discussed in Sections 15 and 17.
+
+15. Option Size
+
+ DHCPv6 [RFC3315] allows for packet sizes up to 64 KB. First, through
+ its use of link-local addresses, it avoids many of the deployment
+ problems that plague DHCPv4 and is actually a UDP over the IPv6-based
+ protocol (compared to DHCPv4, which is mostly UDP over IPv4 but with
+ layer-2 hacks). Second, RFC 3315 explicitly refers readers to
+ Section 5 of [RFC2460], which describes an MTU of 1280 octets and a
+ minimum fragment reassembly of 1500 octets. It's feasible to suggest
+ that DHCPv6 is capable of having larger options deployed over it, and
+ at least no common upper limit is yet known to have been encoded by
+ its implementors. It is not really possible to describe a fixed
+
+
+
+
+Hankins, et al. Best Current Practice [Page 23]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ limit that cleanly divides workable option sizes from those that are
+ too big.
+
+ It is advantageous to prefer option formats that contain the desired
+ information in the smallest form factor that satisfies the
+ requirements. Common sense still applies here. It is better to
+ split distinct values into separate octets rather than propose overly
+ complex bit-shifting operations to save several bits (or even an
+ octet or two) that would be padded to the next octet boundary anyway.
+
+ DHCPv6 does allow for multiple instances of a given option, and they
+ are treated as distinct values following the defined format; however,
+ this feature is generally preferred to be restricted to protocol
+ class features (such as the IA_* series of options). In such cases,
+ it is better to define an option as an array if it is possible. It
+ is recommended to clarify (with normative language) whether a given
+ DHCPv6 option may appear once or multiple times. The default
+ assumption is only once.
+
+ In general, if a lot of data needs to be configured (for example,
+ some option lengths are quite large), DHCPv6 may not be the best
+ choice to deliver such configuration information and SHOULD simply be
+ used to deliver a URI that specifies where to obtain the actual
+ configuration information.
+
+16. Singleton Options
+
+ Although [RFC3315] states that each option type MAY appear more than
+ once, the original idea was that multiple instances are reserved for
+ stateful options, like IA_NA or IA_PD. For most other options, it is
+ usually expected that they will appear once at most. Such options
+ are called singleton options. Sadly, RFCs have often failed to
+ clearly specify whether or not a given option can appear more than
+ once.
+
+ Documents that define new options SHOULD state whether or not these
+ options are singletons. Unless otherwise specified, newly defined
+ options are considered to be singletons. If multiple instances are
+ allowed, the document MUST explain how to use them. Care should be
+ taken not to assume that they will be processed in the order they
+ appear in the message. See Section 17 for more details.
+
+ When deciding whether single or multiple option instances are allowed
+ in a message, take into consideration how the content of the option
+ will be used. Depending on the service being configured, it may or
+ may not make sense to have multiple values configured. If multiple
+ values make sense, it is better to explicitly allow that by using an
+ option format that allows multiple values within one option instance.
+
+
+
+Hankins, et al. Best Current Practice [Page 24]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ Allowing multiple option instances often leads to confusion.
+ Consider the following example. Basic DS-Lite architecture assumes
+ that the B4 element (DHCPv6 client) will receive the AFTR option and
+ establish a single tunnel to the configured tunnel termination point
+ (AFTR). During the standardization process of [RFC6334], there was a
+ discussion whether multiple instances of the DS-Lite tunnel option
+ should be allowed. This created an unfounded expectation that the
+ clients receiving multiple instances of the option will somehow know
+ when one tunnel endpoint goes offline and do some sort of failover
+ between other values provided in other instances of the AFTR option.
+ Others assumed that if there are multiple options, the client will
+ somehow do load balancing between the provided tunnel endpoints.
+ Neither failover nor load balancing was defined for the DS-Lite
+ architecture, so it caused confusion. It was eventually decided to
+ allow only one instance of the AFTR option.
+
+17. Option Order
+
+ Option order, either the order among many DHCPv6 options or the order
+ of multiple instances of the same option, SHOULD NOT be significant.
+ New documents MUST NOT assume any specific option processing order.
+
+ As there is no explicit order for multiple instances of the same
+ option, an option definition SHOULD instead restrict ordering by
+ using a single option that contains ordered fields.
+
+ As [RFC3315] does not impose option order, some implementations use
+ hash tables to store received options (which is a conformant
+ behavior). Depending on the hash implementation, the processing
+ order is almost always different then the order in which the options
+ appeared in the packet on the wire.
+
+18. Relay Options
+
+ In DHCPv4, all relay options are organized as sub-options within the
+ DHCP Relay Agent Information option [RFC3046]. And, an independent
+ number space called "DHCP Relay Agent Sub-options" is maintained by
+ IANA. Different from DHCPv4, in DHCPv6, relay options are defined in
+ the same way as client/server options, and they also use the same
+ option number space as client/server options. Future DHCPv6 relay
+ options MUST be allocated from this single DHCPv6 option number
+ space.
+
+ For example, the Relay-Supplied Options option [RFC6422] may also
+ contain some DHCPv6 options as permitted, such as the Extensible
+ Authentication Protocol (EAP) Re-authentication Protocol (ERP) Local
+ Domain Name DHCPv6 Option [RFC6440].
+
+
+
+
+Hankins, et al. Best Current Practice [Page 25]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+19. Clients Request Their Options
+
+ The DHCPv6 Option Request Option (OPTION_ORO) [RFC3315] is an option
+ that serves two purposes -- to inform the server what options the
+ client supports and what options the client is willing to consume.
+
+ For some options, such as the options required for the functioning of
+ DHCPv6 itself, it doesn't make sense to require that they be
+ explicitly requested using the Option Request Option. In all other
+ cases, it is prudent to assume that any new option must be present on
+ the relevant option request list if the client desires to receive it.
+
+ It is tempting to add text that requires the client to include a new
+ option in the Option Request Option list, similar to this text:
+ "Clients MUST place the foo option code on the Option Request Option
+ list, clients MAY include option foo in their packets as hints for
+ the server as values the desire, and servers MUST include option foo
+ when the client requests it (and the server has been so configured)".
+ Such text is discouraged as there are several issues with it. First,
+ it assumes that client implementation that supports a given option
+ will always want to use it. This is not true. The second and more
+ important reason is that such text essentially duplicates the
+ mechanism already defined in [RFC3315]. It is better to simply refer
+ to the existing mechanism rather than define it again. See
+ Section 21 for proposed examples on how to do that.
+
+ Creators of DHCPv6 options cannot assume special ordering of options
+ either as they appear in the Option Request Option or as they appear
+ within the packet. Although it is reasonable to expect that options
+ will be processed in the order they appear in ORO, server software is
+ not required to sort DHCPv6 options into the same order in Reply
+ messages.
+
+ It should also be noted that options values are not required to be
+ aligned within the DHCP packet; even the option code and option
+ length may appear on odd-byte boundaries.
+
+20. Transition Technologies
+
+ The transition from IPv4 to IPv6 is progressing. Many transition
+ technologies are proposed to speed it up. As a natural consequence,
+ there are also DHCP options proposed to provision those proposals.
+ The inevitable question is whether the required parameters should be
+ delivered over DHCPv4 or DHCPv6. Authors often don't give much
+ thought about it and simply pick DHCPv6 without realizing the
+ consequences. IPv6 is expected to stay with us for many decades, and
+ so is DHCPv6. There is no mechanism available to deprecate an option
+ in DHCPv6, so any options defined will stay with us as long as the
+
+
+
+Hankins, et al. Best Current Practice [Page 26]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ DHCPv6 protocol itself lasts. It seems likely that such options
+ defined to transition from IPv4 will outlive IPv4 by many decades.
+ From that perspective, it is better to implement provisioning of the
+ transition technologies in DHCPv4, which will be obsoleted together
+ with IPv4.
+
+ When the network infrastructure becomes IPv6 only, the support for
+ IPv4-only nodes may still be needed. In such a scenario, a mechanism
+ for providing IPv4 configuration information over IPv6-only networks
+ may be needed. See [IPv4-CONFIG] for further details.
+
+21. Recommended Sections in the New Document
+
+ There are three major entities in DHCPv6: server, relay agent, and
+ client. It is very helpful for implementors to include separate
+ sections that describe operation for those three major entities.
+ Even when a given entity does not participate, it is useful to have a
+ very short section stating that it must not send a given option and
+ must ignore it when received.
+
+ There is also a separate entity called the "requestor", which is a
+ special client-like type that participates in the leasequery protocol
+ [RFC5007] [RFC5460]. A similar section for the requestor is not
+ required, unless the new option has anything to do with the requestor
+ (or it is likely that the reader may think that is has). It should
+ be noted that while in the majority of deployments the requestor is
+ co-located with the relay agent, those are two separate entities from
+ the protocol perspective, and they may be used separately. There are
+ stand-alone requestor implementations available.
+
+ The following sections include proposed text for such sections. That
+ text is not required to appear, but it is appropriate in most cases.
+ Additional or modified text specific to a given option is often
+ required.
+
+ Although the requestor is a somewhat uncommon functionality, its
+ existence should be noted, especially when allowing or disallowing
+ options to appear in certain messages or to be sent by certain
+ entities. Additional message types may appear in the future, besides
+ types defined in [RFC3315]. Therefore, authors are encouraged to
+ familiarize themselves with a list of currently defined DHCPv6
+ messages available on the IANA website [IANA].
+
+ Typically, new options are requested by clients and assigned by the
+ server, so there is no specific relay behavior. Nevertheless, it is
+ good to include a section for relay agent behavior and simply state
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 27]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ that there are no additional requirements for relays. The same
+ applies for client behavior if the options are to be exchanged
+ between the relay and server.
+
+ Sections that contain option definitions MUST include a formal
+ verification procedure. Often it is very simple, e.g., an option
+ that conveys an IPv6 address must be exactly 16-bytes long, but
+ sometimes the rules are more complex. It is recommended to refer to
+ existing documents (e.g., Section 8 of RFC 3315 for domain name
+ encoding) rather than trying to repeat such rules.
+
+21.1. DHCPv6 Client Behavior Text
+
+ Clients MAY request option foo, as defined in [RFC3315], Sections
+ 17.1.1, 18.1.1, 18.1.3, 18.1.4, 18.1.5, and 22.7. As a convenience
+ to the reader, we mention here that the client includes requested
+ option codes in the Option Request Option.
+
+ Optional text (if the client's hints make sense): The client also MAY
+ include option foo in its Solicit, Request, Renew, Rebind, and
+ Information-request messages as a hint for the server regarding
+ preferred option values.
+
+ Optional text (if the option contains an FQDN): If the client
+ requests an option that conveys an FQDN, it is expected that the
+ contents of that option will be resolved using DNS. Hence, the
+ following text may be useful: Clients that request option foo SHOULD
+ also request option OPTION_DNS_SERVERS as specified in [RFC3646].
+
+ Clients MUST discard option foo if it is invalid (i.e., it did not
+ pass the validation steps defined in Section X.Y).
+
+ Optional text (if option foo in expected to be exchanged between
+ relays and servers): Option foo is exchanged between relays and
+ servers only. Clients are not aware of the usage of option foo.
+ Clients MUST ignore received option foo.
+
+21.2. DHCPv6 Server Behavior Text
+
+ Sections 17.2.2 and 18.2 of [RFC3315] govern server operation in
+ regards to option assignment. As a convenience to the reader, we
+ mention here that the server will send option foo only if configured
+ with specific values for foo and if the client requested it.
+
+ Optional text: Option foo is a singleton. Servers MUST NOT send more
+ than one instance of the foo option.
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 28]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ Optional text (if the server is never supposed to receive option
+ foo): Servers MUST ignore the incoming foo option.
+
+21.3. DHCPv6 Relay Agent Behavior Text
+
+ It's never appropriate for a relay agent to add options to a message
+ heading toward the client, and relay agents don't actually construct
+ Relay-reply messages anyway.
+
+ Optional text (if the foo option is exchanged between the clients and
+ server or between requestors and servers): there are no additional
+ requirements for relays.
+
+ Optional text (if relays are expected to insert or consume option
+ foo): Relay agents MAY include option foo in a Relay-forward message
+ when forwarding packets from clients to the servers.
+
+22. Should the New Document Update Existing RFCs?
+
+ Authors often ask themselves whether their proposal updates existing
+ RFCs, especially RFC 3315. In April 2013, there were about 80
+ options defined. Had all documents that defined them also updated
+ RFC 3315, comprehension of such a document set would be extremely
+ difficult. It should be noted that "extends" and "updates" are two
+ very different verbs. If a new document defines a new option that
+ clients request and servers provide, it merely extends current
+ standards, so "updates RFC 3315" is not required in the new document
+ header. On the other hand, if a new document replaces or modifies
+ existing behavior and includes clarifications or other corrections,
+ it should be noted that it updates the other document. For example,
+ [RFC6644] clearly updates [RFC3315] as it replaces existing text with
+ new text.
+
+ If in doubt, authors should try to determine whether an implementor
+ reading the base RFC alone (without reading the new document) would
+ be able to properly implement the software. If the base RFC is
+ sufficient, then the new document probably does not update the base
+ RFC. On the other hand, if reading your new document is necessary to
+ properly implement the base RFC, then the new document most likely
+ updates the base RFC.
+
+23. Security Considerations
+
+ DHCPv6 does have an authentication mechanism [RFC3315] that makes it
+ possible for DHCPv6 software to discriminate between authentic
+ endpoints and man-in-the-middle. Other authentication mechanisms may
+ optionally be deployed. Sadly, as of 2014, the authentication in
+ DHCPv6 is rarely used, and support for it is not common in existing
+
+
+
+Hankins, et al. Best Current Practice [Page 29]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ implementations. Some specific deployment types make it mandatory
+ (or parts thereof, e.g., DOCSIS3.0-compatible cable modems require
+ reconfigure-key support), so in certain cases, specific
+ authentication aspects can be relied upon. That is not true in the
+ generic case, though.
+
+ So, while creating a new option, it is prudent to assume that the
+ DHCPv6 packet contents are always transmitted in the clear, and
+ actual production use of the software will probably be vulnerable at
+ least to man-in-the-middle attacks from within the network, even
+ where the network itself is protected from external attacks by
+ firewalls. In particular, some DHCPv6 message exchanges are
+ transmitted to multicast addresses that are likely broadcast anyway.
+
+ If an option is of a specific fixed length, it is useful to remind
+ the implementor of the option data's full length. This is easily
+ done by declaring the specific value of the 'length' tag of the
+ option. This helps to gently remind implementors to validate the
+ option length before digesting them into likewise fixed-length
+ regions of memory or stack.
+
+ If an option may be of variable size (such as having indeterminate
+ length fields, such as domain names or text strings), it is advisable
+ to explicitly remind the implementor to be aware of the potential for
+ long options. Either define a reasonable upper limit (and suggest
+ validating it) or explicitly remind the implementor that an option
+ may be exceptionally long (to be prepared to handle errors rather
+ than truncate values).
+
+ For some option contents, out-of-bound values may be used to breach
+ security. An IP address field might be made to carry a loopback
+ address or local multicast address, and depending on the protocol,
+ this may lead to undesirable results. A domain name field may be
+ filled with contrived contents that exceed the limitations placed
+ upon domain name formatting; as this value is possibly delivered to
+ "internal configuration" records of the system, it may be implicitly
+ trusted without being validated.
+
+ Authors of documents defining new DHCP options are, therefore,
+ strongly advised to explicitly define validation measures that
+ recipients of such options are required to do before processing such
+ options. However, validation measures already defined by RFC 3315 or
+ other specifications referenced by the new option document are
+ redundant and can introduce errors, so authors are equally strongly
+ advised to refer to the base specification for any such validation
+ language rather than copying it into the new specification.
+
+ See also Section 24.
+
+
+
+Hankins, et al. Best Current Practice [Page 30]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+24. Privacy Considerations
+
+ As discussed in Section 23, the DHCPv6 packets are typically
+ transmitted in the clear, so they are susceptible to eavesdropping.
+ This should be considered when defining options that may convey
+ personally identifying information (PII) or any other type of
+ sensitive data.
+
+ If the transmission of sensitive or confidential content is required,
+ it is still possible to secure communication between relay agents and
+ servers. Relay agents and servers communicating with relay agents
+ must support the use of IPsec Encapsulating Security Payload (ESP)
+ with encryption in transport mode, according to Section 3.1.1 of
+ [RFC4303] and Section 21.1 of [RFC3315]. Sadly, this requirement is
+ almost universally ignored in real deployments. Even if the
+ communication path between the relay agents and server is secured,
+ the path between the clients and relay agents or server is not.
+
+ Unless underlying transmission technology provides a secure
+ transmission channel, the DHCPv6 options SHOULD NOT include PII or
+ other sensitive information. If there are special circumstances that
+ warrant sending such information over unsecured DHCPv6, the dangers
+ MUST be clearly discussed in the security considerations.
+
+25. Acknowledgements
+
+ The authors would like to thank Simon Perreault, Bernie Volz, Ted
+ Lemon, Bud Millwood, Ralph Droms, Barry Leiba, Benoit Claise, Brian
+ Haberman, Richard Barnes, Stephen Farrell, and Stewart Bryant for
+ their comments.
+
+26. References
+
+26.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
+ and M. Carney, "Dynamic Host Configuration Protocol for
+ IPv6 (DHCPv6)", RFC 3315, July 2003.
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 31]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+26.2. Informative References
+
+ [IANA] IANA, "Dynamic Host Configuration Protocol for IPv6
+ (DHCPv6)",
+ <http://www.iana.org/assignments/dhcpv6-parameters/>.
+
+ [IPv4-CONFIG]
+ Rajtar, B. and I. Farrer, "Provisioning IPv4 Configuration
+ Over IPv6 Only Networks", Work in Progress, February 2014.
+
+ [MAP] Mrugalski, T., Troan, O., Farrer, I., Perreault, S., Dec,
+ W., Bao, C., Yeh, L., and X. Deng, "DHCPv6 Options for
+ configuration of Softwire Address and Port Mapped
+ Clients", Work in Progress, March 2014.
+
+ [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
+ (IPv6) Specification", RFC 2460, December 1998.
+
+ [RFC3046] Patrick, M., "DHCP Relay Agent Information Option", RFC
+ 3046, January 2001.
+
+ [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration
+ Protocol (DHCPv6) Options for Session Initiation Protocol
+ (SIP) Servers", RFC 3319, July 2003.
+
+ [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
+ 10646", STD 63, RFC 3629, November 2003.
+
+ [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic
+ Host Configuration Protocol (DHCP) version 6", RFC 3633,
+ December 2003.
+
+ [RFC3646] Droms, R., "DNS Configuration options for Dynamic Host
+ Configuration Protocol for IPv6 (DHCPv6)", RFC 3646,
+ December 2003.
+
+ [RFC3898] Kalusivalingam, V., "Network Information Service (NIS)
+ Configuration Options for Dynamic Host Configuration
+ Protocol for IPv6 (DHCPv6)", RFC 3898, October 2004.
+
+ [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+ Resource Identifier (URI): Generic Syntax", STD 66, RFC
+ 3986, January 2005.
+
+ [RFC4075] Kalusivalingam, V., "Simple Network Time Protocol (SNTP)
+ Configuration Option for DHCPv6", RFC 4075, May 2005.
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 32]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ [RFC4085] Plonka, D., "Embedding Globally-Routable Internet
+ Addresses Considered Harmful", BCP 105, RFC 4085, June
+ 2005.
+
+ [RFC4242] Venaas, S., Chown, T., and B. Volz, "Information Refresh
+ Time Option for Dynamic Host Configuration Protocol for
+ IPv6 (DHCPv6)", RFC 4242, November 2005.
+
+ [RFC4280] Chowdhury, K., Yegani, P., and L. Madour, "Dynamic Host
+ Configuration Protocol (DHCP) Options for Broadcast and
+ Multicast Control Servers", RFC 4280, November 2005.
+
+ [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC
+ 4303, December 2005.
+
+ [RFC4436] Aboba, B., Carlson, J., and S. Cheshire, "Detecting
+ Network Attachment in IPv4 (DNAv4)", RFC 4436, March 2006.
+
+ [RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for
+ IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN)
+ Option", RFC 4704, October 2006.
+
+ [RFC4833] Lear, E. and P. Eggert, "Timezone Options for DHCP", RFC
+ 4833, April 2007.
+
+ [RFC4957] Krishnan, S., Montavont, N., Njedjou, E., Veerepalli, S.,
+ and A. Yegin, "Link-Layer Event Notifications for
+ Detecting Network Attachments", RFC 4957, August 2007.
+
+ [RFC5007] Brzozowski, J., Kinnear, K., Volz, B., and S. Zeng,
+ "DHCPv6 Leasequery", RFC 5007, September 2007.
+
+ [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network
+ Interchange", RFC 5198, March 2008.
+
+ [RFC5223] Schulzrinne, H., Polk, J., and H. Tschofenig, "Discovering
+ Location-to-Service Translation (LoST) Servers Using the
+ Dynamic Host Configuration Protocol (DHCP)", RFC 5223,
+ August 2008.
+
+ [RFC5460] Stapp, M., "DHCPv6 Bulk Leasequery", RFC 5460, February
+ 2009.
+
+ [RFC5908] Gayraud, R. and B. Lourdelet, "Network Time Protocol (NTP)
+ Server Option for DHCPv6", RFC 5908, June 2010.
+
+ [RFC5970] Huth, T., Freimann, J., Zimmer, V., and D. Thaler, "DHCPv6
+ Options for Network Boot", RFC 5970, September 2010.
+
+
+
+Hankins, et al. Best Current Practice [Page 33]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+ [RFC5986] Thomson, M. and J. Winterbottom, "Discovering the Local
+ Location Information Server (LIS)", RFC 5986, September
+ 2010.
+
+ [RFC6059] Krishnan, S. and G. Daley, "Simple Procedures for
+ Detecting Network Attachment in IPv6", RFC 6059, November
+ 2010.
+
+ [RFC6334] Hankins, D. and T. Mrugalski, "Dynamic Host Configuration
+ Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite",
+ RFC 6334, August 2011.
+
+ [RFC6422] Lemon, T. and Q. Wu, "Relay-Supplied DHCP Options", RFC
+ 6422, December 2011.
+
+ [RFC6440] Zorn, G., Wu, Q., and Y. Wang, "The EAP Re-authentication
+ Protocol (ERP) Local Domain Name DHCPv6 Option", RFC 6440,
+ December 2011.
+
+ [RFC6603] Korhonen, J., Savolainen, T., Krishnan, S., and O. Troan,
+ "Prefix Exclude Option for DHCPv6-based Prefix
+ Delegation", RFC 6603, May 2012.
+
+ [RFC6610] Jang, H., Yegin, A., Chowdhury, K., Choi, J., and T.
+ Lemon, "DHCP Options for Home Information Discovery in
+ Mobile IPv6 (MIPv6)", RFC 6610, May 2012.
+
+ [RFC6644] Evans, D., Droms, R., and S. Jiang, "Rebind Capability in
+ DHCPv6 Reconfigure Messages", RFC 6644, July 2012.
+
+ [SOLUTION-4rd]
+ Despres, R., Jiang, S., Penno, R., Lee, Y., Chen, G., and
+ M. Chen, "IPv4 Residual Deployment via IPv6 - a Stateless
+ Solution (4rd)", Work in Progress, October 2013.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 34]
+
+RFC 7227 DHCPv6 Option Guidelines May 2014
+
+
+Authors' Addresses
+
+ David W. Hankins
+ Google, Inc.
+ 1600 Amphitheatre Parkway
+ Mountain View, CA 94043
+ USA
+
+ EMail: dhankins@google.com
+
+
+ Tomek Mrugalski
+ Internet Systems Consortium, Inc.
+ 950 Charter Street
+ Redwood City, CA 94063
+ USA
+
+ Phone: +1-650-423-1345
+ EMail: tomasz.mrugalski@gmail.com
+
+
+ Marcin Siodelski
+ Internet Systems Consortium, Inc.
+ 950 Charter Street
+ Redwood City, CA 94063
+ USA
+
+ Phone: +1-650-423-1431
+ EMail: msiodelski@gmail.com
+
+ Sheng Jiang
+ Huawei Technologies Co., Ltd.
+ Q14, Huawei Campus, No. 156 Beiqing Road
+ Hai-Dian District, Beijing, 100095
+ P.R. China
+
+ EMail: jiangsheng@huawei.com
+
+
+ Suresh Krishnan
+ Ericsson
+ 8400 Blvd Decarie
+ Town of Mount Royal, Quebec
+ Canada
+
+ EMail: suresh.krishnan@ericsson.com
+
+
+
+
+
+Hankins, et al. Best Current Practice [Page 35]
+