diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8415.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8415.txt')
-rw-r--r-- | doc/rfc/rfc8415.txt | 8627 |
1 files changed, 8627 insertions, 0 deletions
diff --git a/doc/rfc/rfc8415.txt b/doc/rfc/rfc8415.txt new file mode 100644 index 0000000..c52bcb3 --- /dev/null +++ b/doc/rfc/rfc8415.txt @@ -0,0 +1,8627 @@ + + + + + + +Internet Engineering Task Force (IETF) T. Mrugalski +Request for Comments: 8415 M. Siodelski +Obsoletes: 3315, 3633, 3736, 4242, 7083, ISC + 7283, 7550 B. Volz +Category: Standards Track A. Yourtchenko +ISSN: 2070-1721 Cisco + M. Richardson + SSW + S. Jiang + Huawei + T. Lemon + Nibbhaya Consulting + T. Winters + UNH-IOL + November 2018 + + + Dynamic Host Configuration Protocol for IPv6 (DHCPv6) + +Abstract + + This document describes the Dynamic Host Configuration Protocol for + IPv6 (DHCPv6): an extensible mechanism for configuring nodes with + network configuration parameters, IP addresses, and prefixes. + Parameters can be provided statelessly, or in combination with + stateful assignment of one or more IPv6 addresses and/or IPv6 + prefixes. DHCPv6 can operate either in place of or in addition to + stateless address autoconfiguration (SLAAC). + + This document updates the text from RFC 3315 (the original DHCPv6 + specification) and incorporates prefix delegation (RFC 3633), + stateless DHCPv6 (RFC 3736), an option to specify an upper bound for + how long a client should wait before refreshing information (RFC + 4242), a mechanism for throttling DHCPv6 clients when DHCPv6 service + is not available (RFC 7083), and relay agent handling of unknown + messages (RFC 7283). In addition, this document clarifies the + interactions between models of operation (RFC 7550). As such, this + document obsoletes RFC 3315, RFC 3633, RFC 3736, RFC 4242, RFC 7083, + RFC 7283, and RFC 7550. + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 1] + +RFC 8415 DHCP for IPv6 November 2018 + + +Status of This Memo + + This is an Internet Standards Track document. + + 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 + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc8415. + +Copyright Notice + + Copyright (c) 2018 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 + (https://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. + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 2] + +RFC 8415 DHCP for IPv6 November 2018 + + +Table of Contents + + 1. Introduction ....................................................6 + 1.1. Relationship to Previous DHCPv6 Standards ..................7 + 1.2. Relationship to DHCPv4 .....................................8 + 2. Requirements ....................................................8 + 3. Background ......................................................8 + 4. Terminology .....................................................9 + 4.1. IPv6 Terminology ...........................................9 + 4.2. DHCP Terminology ..........................................11 + 5. Client/Server Exchanges ........................................16 + 5.1. Client/Server Exchanges Involving Two Messages ............16 + 5.2. Client/Server Exchanges Involving Four Messages ...........17 + 5.3. Server/Client Exchanges ...................................18 + 6. Operational Models .............................................18 + 6.1. Stateless DHCP ............................................18 + 6.2. DHCP for Non-temporary Address Assignment .................19 + 6.3. DHCP for Prefix Delegation ................................19 + 6.4. DHCP for Customer Edge Routers ............................22 + 6.5. DHCP for Temporary Addresses ..............................22 + 6.6. Multiple Addresses and Prefixes ...........................22 + 7. DHCP Constants .................................................23 + 7.1. Multicast Addresses .......................................23 + 7.2. UDP Ports .................................................24 + 7.3. DHCP Message Types ........................................24 + 7.4. DHCP Option Codes .........................................26 + 7.5. Status Codes ..............................................26 + 7.6. Transmission and Retransmission Parameters ................27 + 7.7. Representation of Time Values and "Infinity" as a + Time Value ................................................28 + 8. Client/Server Message Formats ..................................29 + 9. Relay Agent/Server Message Formats .............................30 + 9.1. Relay-forward Message .....................................31 + 9.2. Relay-reply Message .......................................31 + 10. Representation and Use of Domain Names ........................32 + 11. DHCP Unique Identifier (DUID) .................................32 + 11.1. DUID Contents ............................................33 + 11.2. DUID Based on Link-Layer Address Plus Time (DUID-LLT) ....33 + 11.3. DUID Assigned by Vendor Based on Enterprise + Number (DUID-EN) .........................................35 + 11.4. DUID Based on Link-Layer Address (DUID-LL) ...............36 + 11.5. DUID Based on Universally Unique Identifier (DUID-UUID) ..37 + 12. Identity Association ..........................................37 + 12.1. Identity Associations for Address Assignment .............38 + 12.2. Identity Associations for Prefix Delegation ..............38 + + + + + + +Mrugalski, et al. Standards Track [Page 3] + +RFC 8415 DHCP for IPv6 November 2018 + + + 13. Assignment to an IA ...........................................39 + 13.1. Selecting Addresses for Assignment to an IA_NA ...........39 + 13.2. Assignment of Temporary Addresses ........................40 + 13.3. Assignment of Prefixes for IA_PD .........................41 + 14. Transmission of Messages by a Client ..........................41 + 14.1. Rate Limiting ............................................41 + 14.2. Client Behavior when T1 and/or T2 Are 0 ..................42 + 15. Reliability of Client-Initiated Message Exchanges .............43 + 16. Message Validation ............................................45 + 16.1. Use of Transaction IDs ...................................45 + 16.2. Solicit Message ..........................................46 + 16.3. Advertise Message ........................................46 + 16.4. Request Message ..........................................46 + 16.5. Confirm Message ..........................................47 + 16.6. Renew Message ............................................47 + 16.7. Rebind Message ...........................................47 + 16.8. Decline Message ..........................................47 + 16.9. Release Message ..........................................48 + 16.10. Reply Message ...........................................48 + 16.11. Reconfigure Message .....................................48 + 16.12. Information-request Message .............................49 + 16.13. Relay-forward Message ...................................49 + 16.14. Relay-reply Message .....................................49 + 17. Client Source Address and Interface Selection .................49 + 17.1. Source Address and Interface Selection for + Address Assignment .......................................49 + 17.2. Source Address and Interface Selection for Prefix + Delegation ...............................................50 + 18. DHCP Configuration Exchanges ..................................50 + 18.1. A Single Exchange for Multiple IA Options ................53 + 18.2. Client Behavior ..........................................53 + 18.2.1. Creation and Transmission of Solicit Messages .....55 + 18.2.2. Creation and Transmission of Request Messages .....57 + 18.2.3. Creation and Transmission of Confirm Messages .....59 + 18.2.4. Creation and Transmission of Renew Messages .......60 + 18.2.5. Creation and Transmission of Rebind Messages ......62 + 18.2.6. Creation and Transmission of + Information-request Messages ......................63 + 18.2.7. Creation and Transmission of Release Messages .....64 + 18.2.8. Creation and Transmission of Decline Messages .....65 + 18.2.9. Receipt of Advertise Messages .....................67 + 18.2.10. Receipt of Reply Messages ........................68 + 18.2.10.1. Reply for Solicit (with Rapid + Commit), Request, Renew, or Rebind ......69 + 18.2.10.2. Reply for Release and Decline ...........72 + 18.2.10.3. Reply for Confirm .......................72 + 18.2.10.4. Reply for Information-request ...........72 + + + + +Mrugalski, et al. Standards Track [Page 4] + +RFC 8415 DHCP for IPv6 November 2018 + + + 18.2.11. Receipt of Reconfigure Messages ..................72 + 18.2.12. Refreshing Configuration Information .............73 + 18.3. Server Behavior ..........................................74 + 18.3.1. Receipt of Solicit Messages .......................75 + 18.3.2. Receipt of Request Messages .......................77 + 18.3.3. Receipt of Confirm Messages .......................79 + 18.3.4. Receipt of Renew Messages .........................79 + 18.3.5. Receipt of Rebind Messages ........................81 + 18.3.6. Receipt of Information-request Messages ...........83 + 18.3.7. Receipt of Release Messages .......................84 + 18.3.8. Receipt of Decline Messages .......................85 + 18.3.9. Creation of Advertise Messages ....................85 + 18.3.10. Transmission of Advertise and Reply Messages .....87 + 18.3.11. Creation and Transmission of Reconfigure + Messages .........................................87 + 18.4. Reception of Unicast Messages ............................88 + 19. Relay Agent Behavior ..........................................89 + 19.1. Relaying a Client Message or a Relay-forward Message .....89 + 19.1.1. Relaying a Message from a Client ..................90 + 19.1.2. Relaying a Message from a Relay Agent .............90 + 19.1.3. Relay Agent Behavior with Prefix Delegation .......91 + 19.2. Relaying a Relay-reply Message ...........................91 + 19.3. Construction of Relay-reply Messages .....................91 + 19.4. Interaction between Relay Agents and Servers .............92 + 20. Authentication of DHCP Messages ...............................93 + 20.1. Security of Messages Sent between Servers and + Relay Agents .............................................94 + 20.2. Summary of DHCP Authentication ...........................94 + 20.3. Replay Detection .........................................94 + 20.4. Reconfiguration Key Authentication Protocol (RKAP) .......95 + 20.4.1. Use of the Authentication Option in RKAP ..........96 + 20.4.2. Server Considerations for RKAP ....................96 + 20.4.3. Client Considerations for RKAP ....................97 + 21. DHCP Options ..................................................97 + 21.1. Format of DHCP Options ...................................98 + 21.2. Client Identifier Option .................................99 + 21.3. Server Identifier Option .................................99 + 21.4. Identity Association for Non-temporary Addresses + Option ..................................................100 + 21.5. Identity Association for Temporary Addresses Option .....102 + 21.6. IA Address Option .......................................104 + 21.7. Option Request Option ...................................106 + 21.8. Preference Option .......................................108 + 21.9. Elapsed Time Option .....................................108 + 21.10. Relay Message Option ...................................109 + 21.11. Authentication Option ..................................110 + 21.12. Server Unicast Option ..................................111 + 21.13. Status Code Option .....................................112 + + + +Mrugalski, et al. Standards Track [Page 5] + +RFC 8415 DHCP for IPv6 November 2018 + + + 21.14. Rapid Commit Option ....................................114 + 21.15. User Class Option ......................................115 + 21.16. Vendor Class Option ....................................116 + 21.17. Vendor-specific Information Option .....................117 + 21.18. Interface-Id Option ....................................119 + 21.19. Reconfigure Message Option .............................121 + 21.20. Reconfigure Accept Option ..............................121 + 21.21. Identity Association for Prefix Delegation Option ......122 + 21.22. IA Prefix Option .......................................124 + 21.23. Information Refresh Time Option ........................126 + 21.24. SOL_MAX_RT Option ......................................127 + 21.25. INF_MAX_RT Option ......................................128 + 22. Security Considerations ......................................130 + 23. Privacy Considerations .......................................133 + 24. IANA Considerations ..........................................133 + 25. Obsoleted Mechanisms .........................................138 + 26. References ...................................................139 + 26.1. Normative References ....................................139 + 26.2. Informative References ..................................140 + Appendix A. Summary of Changes ...................................146 + Appendix B. Appearance of Options in Message Types ...............149 + Appendix C. Appearance of Options in the "options" Field of DHCP + Options ..............................................151 + Acknowledgments ..................................................152 + Authors' Addresses ...............................................153 + +1. Introduction + + This document describes DHCP for IPv6 (DHCPv6), a client/server + protocol that provides managed configuration of devices. The basic + operation of DHCPv6 provides configuration for clients connected to + the same link as the server. Relay agent functionality is also + defined for enabling communication between clients and servers that + are not on the same link. + + DHCPv6 can provide a device with addresses assigned by a DHCPv6 + server and other configuration information; this data is carried in + options. DHCPv6 can be extended through the definition of new + options to carry configuration information not specified in this + document. + + DHCPv6 also provides a mechanism for automated delegation of IPv6 + prefixes using DHCPv6, as originally specified in [RFC3633]. Through + this mechanism, a delegating router can delegate prefixes to + requesting routers. Use of this mechanism is specified as part of + [RFC7084] and by [TR-187]. + + + + + +Mrugalski, et al. Standards Track [Page 6] + +RFC 8415 DHCP for IPv6 November 2018 + + + DHCP can also be used just to provide other configuration options + (i.e., no addresses or prefixes). That implies that the server does + not have to track any state; thus, this mode is called "stateless + DHCPv6". Mechanisms necessary to support stateless DHCPv6 are much + smaller than mechanisms needed to support stateful DHCPv6. [RFC3736] + was written to document just those portions of DHCPv6 needed to + support DHCPv6 stateless operation. + + The remainder of this introduction summarizes the relationship to the + previous DHCPv6 standards (see Section 1.1) and clarifies the stance + with regard to DHCPv4 (see Section 1.2). Section 5 describes the + message exchange mechanisms to illustrate DHCP operation rather than + provide an exhaustive list of all possible interactions, and + Section 6 provides an overview of common operational models. + Section 18 explains client and server operation in detail. + +1.1. Relationship to Previous DHCPv6 Standards + + The initial specification of DHCPv6 was defined in [RFC3315], and a + number of follow-up documents were published over the years: + + - [RFC3633] ("IPv6 Prefix Options for Dynamic Host Configuration + Protocol (DHCP) version 6") + + - [RFC3736] ("Stateless Dynamic Host Configuration Protocol (DHCP) + Service for IPv6") + + - [RFC4242] ("Information Refresh Time Option for Dynamic Host + Configuration Protocol for IPv6 (DHCPv6)") + + - [RFC7083] ("Modification to Default Values of SOL_MAX_RT and + INF_MAX_RT") + + - [RFC7283] ("Handling Unknown DHCPv6 Messages") + + - [RFC7550] ("Issues and Recommendations with Multiple Stateful + DHCPv6 Options") + + This document provides a unified, corrected, and cleaned-up + definition of DHCPv6 that also covers all applicable errata filed + against older RFCs (see the list in Appendix A). As such, it + obsoletes the RFCs listed in the previous paragraph. Also, there are + a small number of mechanisms that were obsoleted; see Section 25 and + Appendix A. + + + + + + + +Mrugalski, et al. Standards Track [Page 7] + +RFC 8415 DHCP for IPv6 November 2018 + + +1.2. Relationship to DHCPv4 + + The operational models and relevant configuration information for + DHCPv4 [RFC2131] [RFC2132] and DHCPv6 are sufficiently different that + integration between the two services is not included in this + document. [RFC3315] suggested that future work might be to extend + DHCPv6 to carry IPv4 address and configuration information. However, + the current consensus of the IETF is that DHCPv4 should be used + rather than DHCPv6 when conveying IPv4 configuration information to + nodes. For IPv6-only networks, [RFC7341] describes a transport + mechanism to carry DHCPv4 messages using the DHCPv6 protocol for the + dynamic provisioning of IPv4 address and configuration information. + + Merging DHCPv4 and DHCPv6 configuration is out of scope for this + document. [RFC4477] discusses some issues and possible strategies + for running DHCPv4 and DHCPv6 services together. While [RFC4477] is + a bit dated, it provides a good overview of the issues at hand. + +2. Requirements + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + + This document also makes use of internal conceptual variables to + describe protocol behavior and external variables that an + implementation must allow system administrators to change. The + specific variable names, how their values change, and how their + settings influence protocol behavior are provided to demonstrate + protocol behavior. An implementation is not required to have them in + the exact form described here, as long as its external behavior is + consistent with that described in this document. + +3. Background + + [RFC8200] ("Internet Protocol, Version 6 (IPv6) Specification") + provides the base architecture and design of IPv6. In addition to + [RFC8200], related work in IPv6 that an implementer would be best + served to study includes + + - [RFC4291] ("IP Version 6 Addressing Architecture") + + - [RFC4862] ("IPv6 Stateless Address Autoconfiguration") + + - [RFC4861] ("Neighbor Discovery for IP version 6 (IPv6)") + + + + +Mrugalski, et al. Standards Track [Page 8] + +RFC 8415 DHCP for IPv6 November 2018 + + + These specifications enable DHCP to build upon the IPv6 work to + provide robust stateful autoconfiguration. + + [RFC4291] defines the address scope that can be used in an IPv6 + implementation and also provides various configuration architecture + guidelines for network designers of the IPv6 address space. Two + advantages of IPv6 are that support for multicast is required and + nodes can create link-local addresses during initialization. The + availability of these features means that a client can use its + link-local address and a well-known multicast address to discover and + communicate with DHCP servers or relay agents on its link. + + [RFC4862] specifies procedures by which a node may autoconfigure + addresses based on Router Advertisements [RFC4861] and the use of a + valid lifetime to support renumbering of addresses on the Internet. + Compatibility with stateless address autoconfiguration is a design + requirement of DHCP. + + IPv6 Neighbor Discovery [RFC4861] is the node discovery protocol in + IPv6 that replaces and enhances functions of ARP [RFC826]. To + understand IPv6 and stateless address autoconfiguration, it is + strongly recommended that implementers understand IPv6 Neighbor + Discovery. + +4. Terminology + + This section defines terminology specific to IPv6 and DHCP used in + this document. + +4.1. IPv6 Terminology + + IPv6 terminology from [RFC8200], [RFC4291], and [RFC4862] relevant to + this specification is included below. + + address An IP-layer identifier for an interface or + a set of interfaces. + + GUA Global unicast address (see [RFC4291]). + + host Any node that is not a router. + + IP Internet Protocol Version 6 (IPv6). The + terms "IPv4" and "IPv6" are used only in + contexts where it is necessary to avoid + ambiguity. + + interface A node's attachment to a link. + + + + +Mrugalski, et al. Standards Track [Page 9] + +RFC 8415 DHCP for IPv6 November 2018 + + + link A communication facility or medium over + which nodes can communicate at the link + layer, i.e., the layer immediately below + IP. Examples are Ethernet (simple or + bridged); Point-to-Point Protocol (PPP) and + PPP over Ethernet (PPPoE) links; and + Internet-layer (or higher) "tunnels", such + as tunnels over IPv4 or IPv6 itself. + + link-layer identifier A link-layer identifier for an interface -- + for example, IEEE 802 addresses for + Ethernet or Token Ring network interfaces. + + link-local address An IPv6 address having a link-only scope, + indicated by having the prefix (fe80::/10), + that can be used to reach neighboring nodes + attached to the same link. Every IPv6 + interface on which DHCPv6 can reasonably be + useful has a link-local address. + + multicast address An identifier for a set of interfaces + (typically belonging to different nodes). + A packet sent to a multicast address is + delivered to all interfaces identified by + that address. + + neighbor A node attached to the same link. + + node A device that implements IP. + + packet An IP header plus payload. + + prefix The initial bits of an address, or a set + of IP addresses that share the same + initial bits. + + prefix length The number of bits in a prefix. + + router A node that forwards IP packets not + explicitly addressed to itself. + + ULA Unique local address (see [RFC4193]). + + unicast address An identifier for a single interface. A + packet sent to a unicast address is + delivered to the interface identified by + that address. + + + + +Mrugalski, et al. Standards Track [Page 10] + +RFC 8415 DHCP for IPv6 November 2018 + + +4.2. DHCP Terminology + + Terminology specific to DHCP can be found below. + + appropriate to the link An address is "appropriate to the link" + when the address is consistent with the + DHCP server's knowledge of the network + topology, prefix assignment, and address + assignment policies. + + binding A binding (or client binding) is a group of + server data records containing the + information the server has about the + addresses or delegated prefixes in an + Identity Association (IA) or configuration + information explicitly assigned to the + client. Configuration information that has + been returned to a client through a policy, + such as the information returned to all + clients on the same link, does not require + a binding. A binding containing + information about an IA is indexed by the + tuple <DUID, IA-type, IAID> (where IA-type + is the type of lease in the IA -- for + example, temporary). A binding containing + configuration information for a client is + indexed by <DUID>. See below for + definitions of DUID, IA, and IAID. + + configuration parameter An element of the configuration information + set on the server and delivered to the + client using DHCP. Such parameters may be + used to carry information to be used by a + node to configure its network subsystem and + enable communication on a link or + internetwork, for example. + + container option An option that encapsulates other options + (for example, the IA_NA option (see + Section 21.4) may contain IA Address + options (see Section 21.6)). + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 11] + +RFC 8415 DHCP for IPv6 November 2018 + + + delegating router The router that acts as a DHCP server and + responds to requests for delegated + prefixes. This document primarily uses the + term "DHCP server" or "server" when + discussing the "delegating router" + functionality of prefix delegation (see + Section 1). + + DHCP Dynamic Host Configuration Protocol for + IPv6. The terms "DHCPv4" and "DHCPv6" are + used only in contexts where it is necessary + to avoid ambiguity. + + DHCP client Also referred to as "client". A node that + initiates requests on a link to obtain + configuration parameters from one or more + DHCP servers. The node may act as a + requesting router (see below) if it + supports prefix delegation. + + DHCP domain A set of links managed by DHCP and operated + by a single administrative entity. + + DHCP relay agent Also referred to as "relay agent". A node + that acts as an intermediary to deliver + DHCP messages between clients and servers. + In certain configurations, there may be + more than one relay agent between clients + and servers, so a relay agent may send DHCP + messages to another relay agent. + + DHCP server Also referred to as "server". A node that + responds to requests from clients. It may + or may not be on the same link as the + client(s). Depending on its capabilities, + if it supports prefix delegation it may + also feature the functionality of a + delegating router. + + DUID A DHCP Unique Identifier for a DHCP + participant. Each DHCP client and server + has exactly one DUID. See Section 11 for + details of the ways in which a DUID may be + constructed. + + + + + + + +Mrugalski, et al. Standards Track [Page 12] + +RFC 8415 DHCP for IPv6 November 2018 + + + encapsulated option A DHCP option that is usually only + contained in another option. For example, + the IA Address option is contained in IA_NA + or IA_TA options (see Section 21.5). See + Section 9 of [RFC7227] for a more complete + definition. + + IA Identity Association: a collection of + leases assigned to a client. Each IA has + an associated IAID (see below). A client + may have more than one IA assigned to it -- + for example, one for each of its + interfaces. Each IA holds one type of + lease; for example, an identity association + for temporary addresses (IA_TA) holds + temporary addresses, and an identity + association for prefix delegation (IA_PD) + holds delegated prefixes. Throughout this + document, "IA" is used to refer to an + identity association without identifying + the type of a lease in the IA. At the time + of writing this document, there are three + IA types defined: IA_NA, IA_TA, and IA_PD. + New IA types may be defined in the future. + + IA option(s) At the time of writing this document, one + or more IA_NA, IA_TA, and/or IA_PD options. + New IA types may be defined in the future. + + IAID Identity Association Identifier: an + identifier for an IA, chosen by the client. + Each IA has an IAID, which is chosen to be + unique among IAIDs for IAs of a specific + type that belong to that client. + + IA_NA Identity Association for Non-temporary + Addresses: an IA that carries assigned + addresses that are not temporary addresses + (see "IA_TA"). See Section 21.4 for + details on the IA_NA option. + + IA_PD Identity Association for Prefix Delegation: + an IA that carries delegated prefixes. See + Section 21.21 for details on the IA_PD + option. + + + + + + +Mrugalski, et al. Standards Track [Page 13] + +RFC 8415 DHCP for IPv6 November 2018 + + + IA_TA Identity Association for Temporary + Addresses: an IA that carries temporary + addresses (see [RFC4941]). See + Section 21.5 for details on the IA_TA + option. + + lease A contract by which the server grants the + use of an address or delegated prefix to + the client for a specified period of time. + + message A unit of data carried as the payload of a + UDP datagram, exchanged among DHCP servers, + relay agents, and clients. + + Reconfigure key A key supplied to a client by a server. + Used to provide security for Reconfigure + messages (see Section 7.3 for the list of + available message types). + + relaying A DHCP relay agent relays DHCP messages + between DHCP participants. + + requesting router The router that acts as a DHCP client and + is requesting prefix(es) to be assigned. + This document primarily uses the term "DHCP + client" or "client" when discussing the + "requesting router" functionality of prefix + delegation (see Section 1). + + retransmission Another attempt to send the same DHCP + message by a client or server, as a result + of not receiving a valid response to the + previously sent messages. The + retransmitted message is typically modified + prior to sending, as required by the DHCP + specifications. In particular, the client + updates the value of the Elapsed Time + option in the retransmitted message. + + RKAP The Reconfiguration Key Authentication + Protocol (see Section 20.4). + + singleton option An option that is allowed to appear only + once as a top-level option or at any + encapsulation level. Most options are + singletons. + + + + + +Mrugalski, et al. Standards Track [Page 14] + +RFC 8415 DHCP for IPv6 November 2018 + + + T1 The time interval after which the client is + expected to contact the server that did the + assignment to extend (renew) the lifetimes + of the addresses assigned (via IA_NA + option(s)) and/or prefixes delegated (via + IA_PD option(s)) to the client. T1 is + expressed as an absolute value in messages + (in seconds), is conveyed within IA + containers (currently the IA_NA and IA_PD + options), and is interpreted as a time + interval since the packet's reception. The + value stored in the T1 field in IA options + is referred to as the T1 value. The actual + time when the timer expires is referred to + as the T1 time. + + T2 The time interval after which the client is + expected to contact any available server to + extend (rebind) the lifetimes of the + addresses assigned (via IA_NA option(s)) + and/or prefixes delegated (via IA_PD + option(s)) to the client. T2 is expressed + as an absolute value in messages (in + seconds), is conveyed within IA containers + (currently the IA_NA and IA_PD options), + and is interpreted as a time interval since + the packet's reception. The value stored + in the T2 field in IA options is referred + to as the T2 value. The actual time when + the timer expires is referred to as the + T2 time. + + top-level option An option conveyed in a DHCP message + directly, i.e., not encapsulated in any + other option, as described in Section 9 of + [RFC7227]. + + transaction ID An opaque value used to match responses + with replies initiated by either a client + or a server. + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 15] + +RFC 8415 DHCP for IPv6 November 2018 + + +5. Client/Server Exchanges + + Clients and servers exchange DHCP messages using UDP (see [RFC768] + and BCP 145 [RFC8085]). The client uses a link-local address or + addresses determined through other mechanisms for transmitting and + receiving DHCP messages. + + A DHCP client sends most messages using a reserved, link-scoped + multicast destination address so that the client need not be + configured with the address or addresses of DHCP servers. + + To allow a DHCP client to send a message to a DHCP server that is not + attached to the same link, a DHCP relay agent on the client's link + will relay messages between the client and server. The operation of + the relay agent is transparent to the client. The discussion of + message exchanges in the remainder of this section will omit the + description of the relaying of messages by relay agents. + + Once the client has determined the address of a server, it may, under + some circumstances, send messages directly to the server using + unicast. + +5.1. Client/Server Exchanges Involving Two Messages + + When a DHCP client does not need to have a DHCP server assign IP + addresses or delegated prefixes to it, the client can obtain other + configuration information such as a list of available DNS servers + [RFC3646] or NTP servers [RFC5908] through a single message and reply + exchange with a DHCP server. To obtain other configuration + information, the client first sends an Information-request message to + the All_DHCP_Relay_Agents_and_Servers multicast address. Servers + respond with a Reply message containing the other configuration + information for the client. + + A client may also request the server to expedite address assignment + and/or prefix delegation by using a two-message exchange instead of + the normal four-message exchange as discussed in the next section. + Expedited assignment can be requested by the client, and servers may + or may not honor the request (see Sections 18.3.1 and 21.14 for more + details and why servers may not honor this request). Clients may + request this expedited service in environments where it is likely + that there is only one server available on a link and no expectation + that a second server would become available, or when completing the + configuration process as quickly as possible is a priority. + + + + + + + +Mrugalski, et al. Standards Track [Page 16] + +RFC 8415 DHCP for IPv6 November 2018 + + + To request the expedited two-message exchange, the client sends a + Solicit message to the All_DHCP_Relay_Agents_and_Servers multicast + address requesting the assignment of addresses and/or delegated + prefixes and other configuration information. This message includes + an indication (the Rapid Commit option; see Section 21.14) that the + client is willing to accept an immediate Reply message from the + server. The server that is willing to commit the assignment of + addresses and/or delegated prefixes to the client immediately + responds with a Reply message. The configuration information and the + addresses and/or delegated prefixes in the Reply message are then + immediately available for use by the client. + + Each address or delegated prefix assigned to the client has + associated preferred and valid lifetimes specified by the server. To + request an extension of the lifetimes assigned to an address or + delegated prefix, the client sends a Renew message to the server. + The server sends a Reply message to the client with the new + lifetimes, allowing the client to continue to use the address or + delegated prefix without interruption. If the server is unable to + extend the lifetime of an address or delegated prefix, it indicates + this by returning the address or delegated prefix with lifetimes of + 0. At the same time, the server may assign other addresses or + delegated prefixes. + + See Section 18 for descriptions of additional two-message exchanges + between the client and server. + +5.2. Client/Server Exchanges Involving Four Messages + + To request the assignment of one or more addresses and/or delegated + prefixes, a client first locates a DHCP server and then requests the + assignment of addresses and/or delegated prefixes and other + configuration information from the server. The client sends a + Solicit message to the All_DHCP_Relay_Agents_and_Servers multicast + address to find available DHCP servers. Any server that can meet the + client's requirements responds with an Advertise message. The client + then chooses one of the servers and sends a Request message to the + server asking for confirmed assignment of addresses and/or delegated + prefixes and other configuration information. The server responds + with a Reply message that contains the confirmed addresses, delegated + prefixes, and configuration. + + As described in the previous section, the client can request an + extension of the lifetimes assigned to addresses or delegated + prefixes (this is a two-message exchange). + + + + + + +Mrugalski, et al. Standards Track [Page 17] + +RFC 8415 DHCP for IPv6 November 2018 + + +5.3. Server/Client Exchanges + + A server that has previously communicated with a client and + negotiated for the client to listen for Reconfigure messages may send + the client a Reconfigure message to initiate the client to update its + configuration by sending an Information-request, Renew, or Rebind + message. The client then performs the two-message exchange as + described earlier. This can be used to expedite configuration + changes to a client, such as the need to renumber a network (see + [RFC6879]). + +6. Operational Models + + This section describes some of the current most common DHCP + operational models. The described models are not mutually exclusive + and are sometimes used together. For example, a device may start in + stateful mode to obtain an address and, at a later time when an + application is started, request additional parameters using + stateless mode. + + This document assumes that the DHCP servers and the client, + communicating with the servers via a specific interface, belong to a + single provisioning domain. + + DHCP may be extended to support additional stateful services that may + interact with one or more of the models described below. Such + interaction should be considered and documented as part of any future + protocol extension. + +6.1. Stateless DHCP + + Stateless DHCP [RFC3736] is used when DHCP is not used for obtaining + a lease but a node (DHCP client) desires one or more DHCP "other + configuration" parameters, such as a list of DNS recursive name + servers or DNS domain search lists [RFC3646]. Stateless DHCP may be + used when a node initially boots or at any time the software on the + node requires some missing or expired configuration information that + is available via DHCP. + + This is the simplest and most basic operation for DHCP and requires a + client (and a server) to support only two messages -- + Information-request and Reply. Note that DHCP servers and relay + agents typically also need to support the Relay-forward and + Relay-reply messages to accommodate operation when clients and + servers are not on the same link. + + + + + + +Mrugalski, et al. Standards Track [Page 18] + +RFC 8415 DHCP for IPv6 November 2018 + + +6.2. DHCP for Non-temporary Address Assignment + + This model of operation was the original motivation for DHCP. It is + appropriate for situations where stateless address autoconfiguration + alone is insufficient or impractical, e.g., because of network + policy, additional requirements such as dynamic updates to the DNS, + or client-specific requirements. + + The model of operation for non-temporary address assignment is as + follows. The server is provided with prefixes from which it may + allocate addresses to clients, as well as any related network + topology information as to which prefixes are present on which links. + A client requests a non-temporary address to be assigned by the + server. The server allocates an address or addresses appropriate for + the link on which the client is connected. The server returns the + allocated address or addresses to the client. + + Each address has associated preferred and valid lifetimes, which + constitute an agreement about the length of time over which the + client is allowed to use the address. A client can request an + extension of the lifetimes on an address and is required to terminate + the use of an address if the valid lifetime of the address expires. + + Typically, clients request other configuration parameters, such as + the DNS name server addresses and domain search lists, when + requesting addresses. + + Clients can also request more than one address or set of addresses + (see Sections 6.6 and 12). + +6.3. DHCP for Prefix Delegation + + The prefix delegation mechanism, originally described in [RFC3633], + is another stateful mode of operation and was originally intended for + simple delegation of prefixes from a delegating router (DHCP server) + to requesting routers (DHCP clients). It is appropriate for + situations in which the delegating router (1) does not have knowledge + about the topology of the networks to which the requesting router is + attached and (2) does not require other information aside from the + identity of the requesting router to choose a prefix for delegation. + This mechanism is appropriate for use by an ISP to delegate a prefix + to a subscriber, where the delegated prefix would possibly be + subnetted and assigned to the links within the subscriber's network. + [RFC7084] and [RFC7368] describe such use in detail. + + The design of this prefix delegation mechanism meets the requirements + for prefix delegation in [RFC3769]. + + + + +Mrugalski, et al. Standards Track [Page 19] + +RFC 8415 DHCP for IPv6 November 2018 + + + While [RFC3633] assumes that the DHCP client is a router (hence the + use of "requesting router") and that the DHCP server is a router + (hence the use of "delegating router"), DHCP prefix delegation itself + does not require that the client forward IP packets not addressed to + itself and thus does not require that the client (or server) be a + router as defined in [RFC8200]. Also, in many cases (such as + tethering or hosting virtual machines), hosts are already forwarding + IP packets and thus are operating as routers as defined in [RFC8200]. + Therefore, this document mostly replaces "requesting router" with + "client" and "delegating router" with "server". + + The model of operation for prefix delegation is as follows. A server + is provisioned with prefixes to be delegated to clients. A client + requests prefix(es) from the server, as described in Section 18. The + server chooses prefix(es) for delegation and responds with prefix(es) + to the client. The client is then responsible for the delegated + prefix(es). For example, the client might assign a subnet from a + delegated prefix to one of its interfaces and begin sending Router + Advertisements for the prefix on that link. + + Each prefix has an associated preferred lifetime and valid lifetime, + which constitute an agreement about the length of time over which the + client is allowed to use the prefix. A client can request an + extension of the lifetimes on a delegated prefix and is required to + terminate the use of a delegated prefix if the valid lifetime of the + prefix expires. + + + + + + + + + + + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 20] + +RFC 8415 DHCP for IPv6 November 2018 + + + Figure 1 illustrates a network architecture in which prefix + delegation could be used. + + ______________________ \ + / \ \ + | ISP core network | \ + \__________ ___________/ | + | | + +-------+-------+ | + | Aggregation | | ISP + | device | | network + | (delegating | | + | router) | | + +-------+-------+ | + | / + |Network link to / + |subscriber premises / + | + +------+------+ \ + | CPE | \ + | (requesting | \ + | router) | | + +----+---+----+ | + | | | Subscriber + ---+-------------+-----+ +-----+------ | network + | | | | + +----+-----+ +-----+----+ +----+-----+ | + |Subscriber| |Subscriber| |Subscriber| / + | PC | | PC | | PC | / + +----------+ +----------+ +----------+ / + + Figure 1: Prefix Delegation Network + + In this example, the server (delegating router) is configured with a + set of prefixes to be used for assignment to customers at the time of + each customer's first connection to the ISP service. The prefix + delegation process begins when the client (requesting router) + requests configuration information through DHCP. The DHCP messages + from the client are received by the server in the aggregation device. + When the server receives the request, it selects an available prefix + or prefixes for delegation to the client. The server then returns + the prefix or prefixes to the client. + + The client subnets the delegated prefix and assigns the longer + prefixes to links in the subscriber's network. In a typical scenario + based on the network shown in Figure 1, the client subnets a single + delegated /48 prefix into /64 prefixes and assigns one /64 prefix to + each of the links in the subscriber network. + + + +Mrugalski, et al. Standards Track [Page 21] + +RFC 8415 DHCP for IPv6 November 2018 + + + The prefix delegation options can be used in conjunction with other + DHCP options carrying other configuration information to the client. + + The client may, in turn, provide DHCP service to nodes attached to + the internal network. For example, the client may obtain the + addresses of DNS and NTP servers from the ISP server and then pass + that configuration information on to the subscriber hosts through a + DHCP server in the client (requesting router). + + If the client uses a delegated prefix to configure addresses on + interfaces on itself or other nodes behind it, the preferred and + valid lifetimes of those addresses MUST be no longer than the + remaining preferred and valid lifetimes, respectively, for the + delegated prefix at any time. In particular, if the delegated prefix + or a prefix derived from it is advertised for stateless address + autoconfiguration [RFC4862], the advertised preferred and valid + lifetimes MUST NOT exceed the corresponding remaining lifetimes of + the delegated prefix. + +6.4. DHCP for Customer Edge Routers + + The DHCP requirements and network architecture for Customer Edge + Routers are described in [RFC7084]. This model of operation combines + address assignment (see Section 6.2) and prefix delegation (see + Section 6.3). In general, this model assumes that a single set of + transactions between the client and server will assign or extend the + client's non-temporary addresses and delegated prefixes. + +6.5. DHCP for Temporary Addresses + + Temporary addresses were originally introduced to avoid privacy + concerns with stateless address autoconfiguration, which based + 64 bits of the address on the EUI-64 (see [RFC4941]. They were added + to DHCP to provide complementary support when stateful address + assignment is used. + + Temporary address assignment works mostly like non-temporary address + assignment (see Section 6.2); however, these addresses are generally + intended to be used for a short period of time and not to have their + lifetimes extended, though they can be if required. + +6.6. Multiple Addresses and Prefixes + + DHCP allows a client to receive multiple addresses. During typical + operation, a client sends one instance of an IA_NA option and the + server assigns at most one address from each prefix assigned to the + link to which the client is attached. In particular, the server can + be configured to serve addresses out of multiple prefixes for a given + + + +Mrugalski, et al. Standards Track [Page 22] + +RFC 8415 DHCP for IPv6 November 2018 + + + link. This is useful in cases such as when a network renumbering + event is in progress. In a typical deployment, the server will grant + one address for each IA_NA option (see Section 21.4). + + A client can explicitly request multiple addresses by sending + multiple IA_NA options (and/or IA_TA options; see Section 21.5). A + client can send multiple IA_NA (and/or IA_TA) options in its initial + transmissions. Alternatively, it can send an extra Request message + with additional new IA_NA (and/or IA_TA) options (or include them in + a Renew message). + + The same principle also applies to prefix delegation. In principle, + DHCP allows a client to request new prefixes to be delegated by + sending additional IA_PD options (see Section 21.21). However, a + typical operator usually prefers to delegate a single, larger prefix. + In most deployments, it is recommended that the client request a + larger prefix in its initial transmissions rather than request + additional prefixes later on. + + The exact behavior of the server (whether to grant additional + addresses and prefixes or not) is up to the server policy and is out + of scope for this document. + + For more information on how the server distinguishes between IA + option instances, see Section 12. + +7. DHCP Constants + + This section describes various program and networking constants used + by DHCP. + +7.1. Multicast Addresses + + DHCP makes use of the following multicast addresses: + + All_DHCP_Relay_Agents_and_Servers (ff02::1:2) + A link-scoped multicast address used by a client to communicate + with neighboring (i.e., on-link) relay agents and servers. All + servers and relay agents are members of this multicast group. + + All_DHCP_Servers (ff05::1:3) + A site-scoped multicast address used by a relay agent to + communicate with servers, either because the relay agent wants to + send messages to all servers or because it does not know the + unicast addresses of the servers. Note that in order for a relay + agent to use this address, it must have an address of sufficient + + + + + +Mrugalski, et al. Standards Track [Page 23] + +RFC 8415 DHCP for IPv6 November 2018 + + + scope to be reachable by the servers. All servers within the site + are members of this multicast group on the interfaces that are + within the site. + +7.2. UDP Ports + + Clients listen for DHCP messages on UDP port 546. Servers and relay + agents listen for DHCP messages on UDP port 547. + +7.3. DHCP Message Types + + DHCP defines the following message types. The formats of these + messages are provided in Sections 8 and 9. Additional message types + have been defined and may be defined in the future; see + <https://www.iana.org/assignments/dhcpv6-parameters>. The numeric + encoding for each message type is shown in parentheses. + + SOLICIT (1) A client sends a Solicit message to locate + servers. + + ADVERTISE (2) A server sends an Advertise message to + indicate that it is available for DHCP + service, in response to a Solicit message + received from a client. + + REQUEST (3) A client sends a Request message to request + configuration parameters, including + addresses and/or delegated prefixes, from a + specific server. + + CONFIRM (4) A client sends a Confirm message to any + available server to determine whether the + addresses it was assigned are still + appropriate to the link to which the client + is connected. + + RENEW (5) A client sends a Renew message to the + server that originally provided the + client's leases and configuration + parameters to extend the lifetimes on the + leases assigned to the client and to update + other configuration parameters. + + + + + + + + + +Mrugalski, et al. Standards Track [Page 24] + +RFC 8415 DHCP for IPv6 November 2018 + + + REBIND (6) A client sends a Rebind message to any + available server to extend the lifetimes on + the leases assigned to the client and to + update other configuration parameters; this + message is sent after a client receives no + response to a Renew message. + + REPLY (7) A server sends a Reply message containing + assigned leases and configuration + parameters in response to a Solicit, + Request, Renew, or Rebind message received + from a client. A server sends a Reply + message containing configuration parameters + in response to an Information-request + message. A server sends a Reply message in + response to a Confirm message confirming or + denying that the addresses assigned to the + client are appropriate to the link to which + the client is connected. A server sends a + Reply message to acknowledge receipt of a + Release or Decline message. + + RELEASE (8) A client sends a Release message to the + server that assigned leases to the client + to indicate that the client will no longer + use one or more of the assigned leases. + + DECLINE (9) A client sends a Decline message to a + server to indicate that the client has + determined that one or more addresses + assigned by the server are already in use + on the link to which the client is + connected. + + RECONFIGURE (10) A server sends a Reconfigure message to a + client to inform the client that the server + has new or updated configuration parameters + and that the client is to initiate a + Renew/Reply, Rebind/Reply, or + Information-request/Reply transaction with + the server in order to receive the updated + information. + + INFORMATION-REQUEST (11) A client sends an Information-request + message to a server to request + configuration parameters without the + assignment of any leases to the client. + + + + +Mrugalski, et al. Standards Track [Page 25] + +RFC 8415 DHCP for IPv6 November 2018 + + + RELAY-FORW (12) A relay agent sends a Relay-forward message + to relay messages to servers, either + directly or through another relay agent. + The received message -- either a client + message or a Relay-forward message from + another relay agent -- is encapsulated in + an option in the Relay-forward message. + + RELAY-REPL (13) A server sends a Relay-reply message to a + relay agent containing a message that the + relay agent delivers to a client. The + Relay-reply message may be relayed by other + relay agents for delivery to the + destination relay agent. + + The server encapsulates the client message + as an option in the Relay-reply message, + which the relay agent extracts and relays + to the client. + +7.4. DHCP Option Codes + + DHCP makes extensive use of options in messages; some of these are + defined later, in Section 21. Additional options are defined in + other documents or may be defined in the future (see [RFC7227] for + guidance on new option definitions). + +7.5. Status Codes + + DHCP uses status codes to communicate the success or failure of + operations requested in messages from clients and servers and to + provide additional information about the specific cause of the + failure of a message. The specific status codes are defined in + Section 21.13. + + If the Status Code option (see Section 21.13) does not appear in a + message in which the option could appear, the status of the message + is assumed to be Success. + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 26] + +RFC 8415 DHCP for IPv6 November 2018 + + +7.6. Transmission and Retransmission Parameters + + This section presents a table of values used to describe the message + transmission behavior of clients and servers. Some of the values are + adjusted by a randomization factor and backoffs (see Section 15). + Transmissions may also be influenced by rate limiting (see + Section 14.1). + + +-----------------+------------------+------------------------------+ + | Parameter | Default | Description | + +-----------------+------------------+------------------------------+ + | SOL_MAX_DELAY | 1 sec | Max delay of first Solicit | + | | | | + | SOL_TIMEOUT | 1 sec | Initial Solicit timeout | + | | | | + | SOL_MAX_RT | 3600 secs | Max Solicit timeout value | + | | | | + | REQ_TIMEOUT | 1 sec | Initial Request timeout | + | | | | + | REQ_MAX_RT | 30 secs | Max Request timeout value | + | | | | + | REQ_MAX_RC | 10 | Max Request retry attempts | + | | | | + | CNF_MAX_DELAY | 1 sec | Max delay of first Confirm | + | | | | + | CNF_TIMEOUT | 1 sec | Initial Confirm timeout | + | | | | + | CNF_MAX_RT | 4 secs | Max Confirm timeout | + | | | | + | CNF_MAX_RD | 10 secs | Max Confirm duration | + | | | | + | REN_TIMEOUT | 10 secs | Initial Renew timeout | + | | | | + | REN_MAX_RT | 600 secs | Max Renew timeout value | + | | | | + | REB_TIMEOUT | 10 secs | Initial Rebind timeout | + | | | | + | REB_MAX_RT | 600 secs | Max Rebind timeout value | + | | | | + | INF_MAX_DELAY | 1 sec | Max delay of first | + | | | Information-request | + | | | | + | INF_TIMEOUT | 1 sec | Initial Information-request | + | | | timeout | + | | | | + | INF_MAX_RT | 3600 secs | Max Information-request | + | | | timeout value | + | | | | + + + +Mrugalski, et al. Standards Track [Page 27] + +RFC 8415 DHCP for IPv6 November 2018 + + + | REL_TIMEOUT | 1 sec | Initial Release timeout | + | | | | + | REL_MAX_RC | 4 | Max Release retry attempts | + | | | | + | DEC_TIMEOUT | 1 sec | Initial Decline timeout | + | | | | + | DEC_MAX_RC | 4 | Max Decline retry attempts | + | | | | + | REC_TIMEOUT | 2 secs | Initial Reconfigure timeout | + | | | | + | REC_MAX_RC | 8 | Max Reconfigure attempts | + | | | | + | HOP_COUNT_LIMIT | 8 | Max hop count in a | + | | | Relay-forward message | + | | | | + | IRT_DEFAULT | 86400 secs (24 | Default information refresh | + | | hours) | time | + | | | | + | IRT_MINIMUM | 600 secs | Min information refresh time | + | | | | + | MAX_WAIT_TIME | 60 secs | Max required time to wait | + | | | for a response | + +-----------------+------------------+------------------------------+ + + Table 1: Transmission and Retransmission Parameters + +7.7. Representation of Time Values and "Infinity" as a Time Value + + All time values for lifetimes, T1, and T2 are unsigned 32-bit + integers and are expressed in units of seconds. The value 0xffffffff + is taken to mean "infinity" when used as a lifetime (as in [RFC4861]) + or a value for T1 or T2. + + Setting the valid lifetime of an address or a delegated prefix to + 0xffffffff ("infinity") amounts to a permanent assignment of an + address or delegation to a client and should only be used in cases + where permanent assignments are desired. + + Care should be taken in setting T1 or T2 to 0xffffffff ("infinity"). + A client will never attempt to extend the lifetimes of any addresses + in an IA with T1 set to 0xffffffff. A client will never attempt to + use a Rebind message to locate a different server to extend the + lifetimes of any addresses in an IA with T2 set to 0xffffffff. + + + + + + + + +Mrugalski, et al. Standards Track [Page 28] + +RFC 8415 DHCP for IPv6 November 2018 + + +8. Client/Server Message Formats + + All DHCP messages sent between clients and servers share an identical + fixed-format header and a variable-format area for options. + + All values in the message header and in options are in network byte + order. + + Options are stored serially in the "options" field, with no padding + between the options. Options are byte-aligned but are not aligned in + any other way (such as on 2-byte or 4-byte boundaries). + + The following diagram illustrates the format of DHCP messages sent + between clients and servers: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | msg-type | transaction-id | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + . options . + . (variable number and length) . + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 2: Client/Server Message Format + + msg-type Identifies the DHCP message type; the + available message types are listed in + Section 7.3. A 1-octet field. + + transaction-id The transaction ID for this message exchange. + A 3-octet field. + + options Options carried in this message; options are + described in Section 21. A variable-length + field (4 octets less than the size of the + message). + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 29] + +RFC 8415 DHCP for IPv6 November 2018 + + +9. Relay Agent/Server Message Formats + + Relay agents exchange messages with other relay agents and servers to + relay messages between clients and servers that are not connected to + the same link. + + All values in the message header and in options are in network byte + order. + + Options are stored serially in the "options" field, with no padding + between the options. Options are byte-aligned but are not aligned in + any other way (such as on 2-byte or 4-byte boundaries). + + There are two relay agent messages (Relay-forward and Relay-reply), + which share the following format: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | msg-type | hop-count | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | link-address | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | peer-address | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + . . + . options (variable number and length) .... . + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 3: Relay Agent/Server Message Format + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 30] + +RFC 8415 DHCP for IPv6 November 2018 + + + The following sections describe the use of the relay agent message + header. + +9.1. Relay-forward Message + + The following table defines the use of message fields in a + Relay-forward message. + + msg-type RELAY-FORW (12). A 1-octet field. + + hop-count Number of relay agents that have already + relayed this message. A 1-octet field. + + link-address An address that may be used by the server to + identify the link on which the client is + located. This is typically a globally scoped + unicast address (i.e., GUA or ULA), but see + the discussion in Section 19.1.1. A 16-octet + field. + + peer-address The address of the client or relay agent from + which the message to be relayed was received. + A 16-octet field. + + options MUST include a Relay Message option (see + Section 21.10); MAY include other options, + such as the Interface-Id option (see + Section 21.18), added by the relay agent. A + variable-length field (34 octets less than + the size of the message). + + See Section 13.1 for an explanation of how the link-address field + is used. + +9.2. Relay-reply Message + + The following table defines the use of message fields in a + Relay-reply message. + + msg-type RELAY-REPL (13). A 1-octet field. + + hop-count Copied from the Relay-forward message. + A 1-octet field. + + link-address Copied from the Relay-forward message. + A 16-octet field. + + + + + +Mrugalski, et al. Standards Track [Page 31] + +RFC 8415 DHCP for IPv6 November 2018 + + + peer-address Copied from the Relay-forward message. + A 16-octet field. + + options MUST include a Relay Message option (see + Section 21.10); MAY include other options, + such as the Interface-Id option (see + Section 21.18). A variable-length field + (34 octets less than the size of the + message). + +10. Representation and Use of Domain Names + + So that domain names may be encoded uniformly, a domain name or a + list of domain names is encoded using the technique described in + Section 3.1 of [RFC1035]. A domain name, or list of domain names, in + DHCP MUST NOT be stored in compressed form as described in + Section 4.1.4 of [RFC1035]. + +11. DHCP Unique Identifier (DUID) + + Each DHCP client and server has a DUID. DHCP servers use DUIDs to + identify clients for the selection of configuration parameters and in + the association of IAs with clients. DHCP clients use DUIDs to + identify a server in messages where a server needs to be identified. + See Sections 21.2 and 21.3 for details regarding the representation + of a DUID in a DHCP message. + + Clients and servers MUST treat DUIDs as opaque values and MUST only + compare DUIDs for equality. Clients and servers SHOULD NOT in any + other way interpret DUIDs. Clients and servers MUST NOT restrict + DUIDs to the types defined in this document, as additional DUID types + may be defined in the future. It should be noted that an attempt to + parse a DUID to obtain a client's link-layer address is unreliable, + as there is no guarantee that the client is still using the same + link-layer address as when it generated its DUID. Also, such an + attempt will be more and more unreliable as more clients adopt + privacy measures such as those defined in [RFC7844]. If this + capability is required, it is recommended to rely on the Client + Link-Layer Address option instead [RFC6939]. + + The DUID is carried in an option because it may be variable in length + and because it is not required in all DHCP messages. The DUID is + designed to be unique across all DHCP clients and servers, and stable + for any specific client or server. That is, the DUID used by a + client or server SHOULD NOT change over time if at all possible; for + example, a device's DUID should not change as a result of a change in + the device's network hardware or changes to virtual interfaces (e.g., + + + + +Mrugalski, et al. Standards Track [Page 32] + +RFC 8415 DHCP for IPv6 November 2018 + + + logical PPP (over Ethernet) interfaces that may come and go in + Customer Premises Equipment routers). The client may change its DUID + as specified in [RFC7844]. + + The motivation for having more than one type of DUID is that the DUID + must be globally unique and must also be easy to generate. The sort + of globally unique identifier that is easy to generate for any given + device can differ quite widely. Also, some devices may not contain + any persistent storage. Retaining a generated DUID in such a device + is not possible, so the DUID scheme must accommodate such devices. + +11.1. DUID Contents + + A DUID consists of a 2-octet type code represented in network byte + order, followed by a variable number of octets that make up the + actual identifier. The length of the DUID (not including the type + code) is at least 1 octet and at most 128 octets. The following + types are currently defined: + + +------+------------------------------------------------------+ + | Type | Description | + +------+------------------------------------------------------+ + | 1 | Link-layer address plus time | + | 2 | Vendor-assigned unique ID based on Enterprise Number | + | 3 | Link-layer address | + | 4 | Universally Unique Identifier (UUID) [RFC6355] | + +------+------------------------------------------------------+ + + Table 2: DUID Types + + Formats for the variable field of the DUID for the first three of the + above types are shown below. The fourth type, DUID-UUID [RFC6355], + can be used in situations where there is a UUID stored in a device's + firmware settings. + +11.2. DUID Based on Link-Layer Address Plus Time (DUID-LLT) + + This type of DUID consists of a 2-octet type field containing the + value 1, a 2-octet hardware type code, and 4 octets containing a time + value, followed by the link-layer address of any one network + interface that is connected to the DHCP device at the time that the + DUID is generated. The time value is the time that the DUID is + generated, represented in seconds since midnight (UTC), January 1, + 2000, modulo 2^32. The hardware type MUST be a valid hardware type + assigned by IANA; see [IANA-HARDWARE-TYPES]. Both the time and the + hardware type are stored in network byte order. For Ethernet + hardware types, the link-layer address is stored in canonical form, + as described in [RFC2464]. + + + +Mrugalski, et al. Standards Track [Page 33] + +RFC 8415 DHCP for IPv6 November 2018 + + + The following diagram illustrates the format of a DUID-LLT: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DUID-Type (1) | hardware type (16 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | time (32 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . link-layer address (variable length) . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 4: DUID-LLT Format + + The choice of network interface can be completely arbitrary, as long + as that interface provides a globally unique link-layer address for + the link type; the same DUID-LLT SHOULD be used in configuring all + network interfaces connected to the device, regardless of which + interface's link-layer address was used to generate the DUID-LLT. + + Clients and servers using this type of DUID MUST store the DUID-LLT + in stable storage and MUST continue to use this DUID-LLT even if the + network interface used to generate the DUID-LLT is removed. Clients + and servers that do not have any stable storage MUST NOT use this + type of DUID. + + Clients and servers that use this DUID SHOULD attempt to configure + the time prior to generating the DUID, if that is possible, and MUST + use some sort of time source (for example, a real-time clock) in + generating the DUID, even if that time source could not be configured + prior to generating the DUID. The use of a time source makes it + unlikely that two identical DUID-LLTs will be generated if the + network interface is removed from the client and another client then + uses the same network interface to generate a DUID-LLT. A collision + between two DUID-LLTs is very unlikely even if the clocks have not + been configured prior to generating the DUID. + + This method of DUID generation is recommended for all general-purpose + computing devices such as desktop computers and laptop computers, and + also for devices such as printers, routers, and so on, that contain + some form of writable non-volatile storage. + + + + + + + + +Mrugalski, et al. Standards Track [Page 34] + +RFC 8415 DHCP for IPv6 November 2018 + + + It is possible that this algorithm for generating a DUID could result + in a client identifier collision. A DHCP client that generates a + DUID-LLT using this mechanism MUST provide an administrative + interface that replaces the existing DUID with a newly generated + DUID-LLT. + +11.3. DUID Assigned by Vendor Based on Enterprise Number (DUID-EN) + + The vendor assigns this form of DUID to the device. This DUID + consists of the 4-octet vendor's registered Private Enterprise Number + as maintained by IANA [IANA-PEN] followed by a unique identifier + assigned by the vendor. The following diagram summarizes the + structure of a DUID-EN: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DUID-Type (2) | enterprise-number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | enterprise-number (contd) | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + . identifier . + . (variable length) . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 5: DUID-EN Format + + The source of the identifier is left up to the vendor defining it, + but each identifier part of each DUID-EN MUST be unique to the device + that is using it, and MUST be assigned to the device no later than at + the first usage and stored in some form of non-volatile storage. + This typically means being assigned during the manufacturing process + in the case of physical devices or, in the case of virtual machines, + when the image is created or booted for the first time. The + generated DUID SHOULD be recorded in non-erasable storage. The + enterprise-number is the vendor's registered Private Enterprise + Number as maintained by IANA [IANA-PEN]. The enterprise-number is + stored as an unsigned 32-bit number. + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 35] + +RFC 8415 DHCP for IPv6 November 2018 + + + An example DUID of this type might look like this: + + +---+---+---+---+---+---+---+---+ + | 0 | 2 | 0 | 0 | 0 | 9| 12|192| + +---+---+---+---+---+---+---+---+ + |132|211| 3 | 0 | 9 | 18| + +---+---+---+---+---+---+ + + Figure 6: DUID-EN Example + + This example includes the 2-octet type of 2 and the Enterprise Number + (9), followed by 8 octets of identifier data (0x0CC084D303000912). + +11.4. DUID Based on Link-Layer Address (DUID-LL) + + This type of DUID consists of 2 octets containing a DUID type of 3 + and a 2-octet network hardware type code, followed by the link-layer + address of any one network interface that is permanently connected to + the client or server device. For example, a node that has a network + interface implemented in a chip that is unlikely to be removed and + used elsewhere could use a DUID-LL. The hardware type MUST be a + valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. The + hardware type is stored in network byte order. The link-layer + address is stored in canonical form, as described in [RFC2464]. The + following diagram illustrates the format of a DUID-LL: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DUID-Type (3) | hardware type (16 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . link-layer address (variable length) . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 7: DUID-LL Format + + The choice of network interface can be completely arbitrary, as long + as that interface provides a unique link-layer address and is + permanently attached to the device on which the DUID-LL is being + generated. The same DUID-LL SHOULD be used in configuring all + network interfaces connected to the device, regardless of which + interface's link-layer address was used to generate the DUID. + + + + + + + +Mrugalski, et al. Standards Track [Page 36] + +RFC 8415 DHCP for IPv6 November 2018 + + + A DUID-LL is recommended for devices that have a permanently + connected network interface with a link-layer address and do not have + nonvolatile, writable stable storage. A DUID-LL SHOULD NOT be used + by DHCP clients or servers that cannot tell whether or not a network + interface is permanently attached to the device on which the DHCP + client is running. + +11.5. DUID Based on Universally Unique Identifier (DUID-UUID) + + This type of DUID consists of 16 octets containing a 128-bit UUID. + [RFC6355] details when to use this type and how to pick an + appropriate source of the UUID. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DUID-Type (4) | UUID (128 bits) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | | + | -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- + + Figure 8: DUID-UUID Format + +12. Identity Association + + An Identity Association (IA) is a construct through which a server + and a client can identify, group, and manage a set of related IPv6 + addresses or delegated prefixes. Each IA consists of an IAID and + associated configuration information. + + The IAID uniquely identifies the IA and MUST be chosen to be unique + among the IAIDs for that IA type on the client (e.g., an IA_NA with + an IAID of 0 and an IA_PD with an IAID of 0 are each considered + unique). The IAID is chosen by the client. For any given use of an + IA by the client, the IAID for that IA MUST be consistent across + restarts of the DHCP client. The client may maintain consistency by + either storing the IAID in non-volatile storage or using an algorithm + that will consistently produce the same IAID as long as the + configuration of the client has not changed. There may be no way for + a client to maintain consistency of the IAIDs if it does not have + non-volatile storage and the client's hardware configuration changes. + If the client uses only one IAID, it can use a well-known value, + e.g., zero. + + + + + +Mrugalski, et al. Standards Track [Page 37] + +RFC 8415 DHCP for IPv6 November 2018 + + + If the client wishes to obtain a distinctly new address or prefix and + deprecate the existing one, the client sends a Release message to the + server for the IAs using the original IAID. The client then creates + a new IAID, to be used in future messages to obtain leases for the + new IA. + +12.1. Identity Associations for Address Assignment + + A client must associate at least one distinct IA with each of its + network interfaces for which it is to request the assignment of IPv6 + addresses from a DHCP server. The client uses the IAs assigned to an + interface to obtain configuration information from a server for that + interface. Each such IA must be associated with exactly one + interface. + + The configuration information in an IA_NA option consists of one or + more IPv6 addresses along with the T1 and T2 values for the IA. See + Section 21.4 for details regarding the representation of an IA_NA in + a DHCP message. + + The configuration information in an IA_TA option consists of one or + more IPv6 addresses. See Section 21.5 for details regarding the + representation of an IA_TA in a DHCP message. + + Each address in an IA has a preferred lifetime and a valid lifetime, + as defined in [RFC4862]. The lifetimes are transmitted from the DHCP + server to the client in the IA Address option (see Section 21.6). + The lifetimes apply to the use of addresses; see Section 5.5.4 of + [RFC4862]. + +12.2. Identity Associations for Prefix Delegation + + An IA_PD is different from an IA for address assignment in that it + does not need to be associated with exactly one interface. One IA_PD + can be associated with the client, with a set of interfaces, or with + exactly one interface. A client configured to request delegated + prefixes must create at least one distinct IA_PD. It may associate a + distinct IA_PD with each of its downstream network interfaces and use + that IA_PD to obtain a prefix for that interface from the server. + + The configuration information in an IA_PD option consists of one or + more prefixes along with the T1 and T2 values for the IA_PD. See + Section 21.21 for details regarding the representation of an IA_PD in + a DHCP message. + + + + + + + +Mrugalski, et al. Standards Track [Page 38] + +RFC 8415 DHCP for IPv6 November 2018 + + + Each delegated prefix in an IA has a preferred lifetime and a valid + lifetime, as defined in [RFC4862]. The lifetimes are transmitted + from the DHCP server to the client in the IA Prefix option (see + Section 21.22). The lifetimes apply to the use of delegated + prefixes; see Section 5.5.4 of [RFC4862]. + +13. Assignment to an IA + +13.1. Selecting Addresses for Assignment to an IA_NA + + A server selects addresses to be assigned to an IA_NA according to + the address assignment policies determined by the server + administrator and the specific information the server determines + about the client from some combination of the following sources: + + - The link to which the client is attached. The server determines + the link as follows: + + * If the server receives the message directly from the client and + the source address in the IP datagram in which the message was + received is a link-local address, then the client is on the + same link to which the interface over which the message was + received is attached. + + * If the server receives the message from a forwarding relay + agent, then the client is on the same link as the one to which + the interface, identified by the link-address field in the + message from the relay agent, is attached. According to + [RFC6221], the server MUST ignore any link-address field whose + value is zero. The link-address in this case may come from any + of the Relay-forward messages encapsulated in the received + Relay-forward, and in general the most encapsulated (closest + Relay-forward to the client) has the most useful value. + + * If the server receives the message directly from the client and + the source address in the IP datagram in which the message was + received is not a link-local address, then the client is on the + link identified by the source address in the IP datagram (note + that this situation can occur only if the server has enabled + the use of unicast message delivery by the client and the + client has sent a message for which unicast delivery is + allowed). + + - The DUID supplied by the client. + + + + + + + +Mrugalski, et al. Standards Track [Page 39] + +RFC 8415 DHCP for IPv6 November 2018 + + + - Other information in options supplied by the client, e.g., IA + Address options (see Section 21.6) that include the client's + requests for specific addresses. + + - Other information in options supplied by the relay agent. + + By default, DHCP server implementations SHOULD NOT generate + predictable addresses (see Section 4.7 of [RFC7721]). Server + implementers are encouraged to review [RFC4941], [RFC7824], and + [RFC7707] as to possible considerations for how to generate + addresses. + + A server MUST NOT assign an address that is otherwise reserved for + some other purpose. For example, a server MUST NOT assign addresses + that use a reserved IPv6 Interface Identifier [RFC5453] [RFC7136] + [IANA-RESERVED-IID]. + + See [RFC7969] for a more detailed discussion on how servers determine + a client's location on the network. + +13.2. Assignment of Temporary Addresses + + A client may request the assignment of temporary addresses (see + [RFC4941] for the definition of temporary addresses). DHCP handling + of address assignment is no different for temporary addresses. + + Clients ask for temporary addresses, and servers assign them. + Temporary addresses are carried in the IA_TA option (see + Section 21.5). Each IA_TA option typically contains at least one + temporary address for each of the prefixes on the link to which the + client is attached. + + The lifetime of the assigned temporary address is set in the IA + Address option (see Section 21.6) encapsulated in the IA_TA option. + It is RECOMMENDED to set short lifetimes, typically shorter than + TEMP_VALID_LIFETIME and TEMP_PREFERRED_LIFETIME (see Section 5 of + [RFC4941]). + + A DHCP server implementation MAY generate temporary addresses, + referring to the algorithm defined in Section 3.2.1 of [RFC4941], + with the additional condition that any new address is not the same as + any assigned address. + + The server MAY update the DNS for a temporary address, as described + in Section 4 of [RFC4941]. + + + + + + +Mrugalski, et al. Standards Track [Page 40] + +RFC 8415 DHCP for IPv6 November 2018 + + + On the clients, by default, temporary addresses are preferred in + source address selection, according to Rule 7 in Section 5 of + [RFC6724]. However, this policy can be overridden. + + One of the most important properties of a temporary address is to + make it difficult to link the address to different actions over time. + So, it is NOT RECOMMENDED for a client to renew temporary addresses, + though DHCP provides for such a possibility (see Section 21.5). + +13.3. Assignment of Prefixes for IA_PD + + The mechanism through which the server selects prefix(es) for + delegation is not specified in this document. Examples of ways in + which the server might select prefix(es) for a client include static + assignment based on subscription to an ISP, dynamic assignment from a + pool of available prefixes, and selection based on an external + authority such as a RADIUS server using the Framed-IPv6-Prefix option + as described in [RFC3162]. + +14. Transmission of Messages by a Client + + Unless otherwise specified in this document or in a document that + describes how IPv6 is carried over a specific type of link (for link + types that do not support multicast), a client sends DHCP messages to + the All_DHCP_Relay_Agents_and_Servers multicast address. + + DHCP servers SHOULD NOT check to see whether the Layer 2 address used + was multicast or not, as long as the Layer 3 address was correct. + + A client uses multicast to reach all servers or an individual server. + An individual server is indicated by specifying that server's DUID in + a Server Identifier option (see Section 21.3) in the client's + message. (All servers will receive this message, but only the + indicated server will respond.) All servers are indicated when this + option is not supplied. + + A client may send some messages directly to a server using unicast, + as described in Section 21.12. + +14.1. Rate Limiting + + In order to avoid prolonged message bursts that may be caused by + possible logic loops, a DHCP client MUST limit the rate of DHCP + messages it transmits or retransmits. One example is that a client + obtains an address or delegated prefix but does not like the + response, so it reverts back to the Solicit procedure, discovers the + same (sole) server, requests an address or delegated prefix, and gets + the same address or delegated prefix as before (as the server has + + + +Mrugalski, et al. Standards Track [Page 41] + +RFC 8415 DHCP for IPv6 November 2018 + + + this previously requested lease assigned to this client). This loop + can repeat infinitely if there is not a quit/stop mechanism. + Therefore, a client must not initiate transmissions too frequently. + + A recommended method for implementing the rate-limiting function is a + token bucket (see Appendix A of [RFC3290]), limiting the average rate + of transmission to a certain number in a certain time interval. This + method of bounding burstiness also guarantees that the long-term + transmission rate will not be exceeded. + + A transmission rate limit SHOULD be configurable. A possible default + could be 20 packets in 20 seconds. + + For a device that has multiple interfaces, the limit MUST be enforced + on a per-interface basis. + + Rate limiting of forwarded DHCP messages and server-side messages is + out of scope for this specification. + +14.2. Client Behavior when T1 and/or T2 Are 0 + + In certain cases, T1 and/or T2 values may be set to 0. Currently, + there are three such cases: + + 1. a client received an IA_NA option (see Section 21.4) with a zero + value + + 2. a client received an IA_PD option (see Section 21.21) with a zero + value + + 3. a client received an IA_TA option (see Section 21.5) (which does + not contain T1 and T2 fields and these leases are not generally + renewed) + + This is an indication that the renew and rebind times are left to the + discretion of the client. However, they are not completely + discretionary. + + When T1 and/or T2 values are set to 0, the client MUST choose a time + to avoid packet storms. In particular, it MUST NOT transmit + immediately. If the client received multiple IA options, it SHOULD + pick renew and/or rebind transmission times so all IA options are + handled in one exchange, if possible. The client MUST choose renew + and rebind times to not violate rate-limiting restrictions as defined + in Section 14.1. + + + + + + +Mrugalski, et al. Standards Track [Page 42] + +RFC 8415 DHCP for IPv6 November 2018 + + +15. Reliability of Client-Initiated Message Exchanges + + DHCP clients are responsible for reliable delivery of messages in the + client-initiated message exchanges described in Section 18. If a + DHCP client fails to receive an expected response from a server, the + client must retransmit its message according to the retransmission + strategy described in this section. + + Note that the procedure described in this section is slightly + modified when used with the Solicit message. The modified procedure + is described in Section 18.2.1. + + The client begins the message exchange by transmitting a message to + the server. The message exchange terminates when either (1) the + client successfully receives the appropriate response or responses + from a server or servers or (2) the message exchange is considered to + have failed according to the retransmission mechanism described + below. + + The client MUST update an "elapsed-time" value within an Elapsed Time + option (see Section 21.9) in the retransmitted message. In some + cases, the client may also need to modify values in IA Address + options (see Section 21.6) or IA Prefix options (see Section 21.22) + if a valid lifetime for any of the client's leases expires before + retransmission. Thus, whenever this document refers to a + "retransmission" of a client's message, it refers to both modifying + the original message and sending this new message instance to the + server. + + The client retransmission behavior is controlled and described by the + following variables: + + RT Retransmission timeout + + IRT Initial retransmission time + + MRC Maximum retransmission count + + MRT Maximum retransmission time + + MRD Maximum retransmission duration + + RAND Randomization factor + + Specific values for each of these parameters relevant to the various + messages are given in the subsections of Section 18.2, using values + defined in Table 1 in Section 7.6. The algorithm for RAND is common + across all message transmissions. + + + +Mrugalski, et al. Standards Track [Page 43] + +RFC 8415 DHCP for IPv6 November 2018 + + + With each message transmission or retransmission, the client sets RT + according to the rules given below. If RT expires before the message + exchange terminates, the client recomputes RT and retransmits the + message. + + Each of the computations of a new RT includes a randomization factor + (RAND), which is a random number chosen with a uniform distribution + between -0.1 and +0.1. The randomization factor is included to + minimize synchronization of messages transmitted by DHCP clients. + + The algorithm for choosing a random number does not need to be + cryptographically sound. The algorithm SHOULD produce a different + sequence of random numbers from each invocation of the DHCP client. + + RT for the first message transmission is based on IRT: + + RT = IRT + RAND*IRT + + RT for each subsequent message transmission is based on the previous + value of RT: + + RT = 2*RTprev + RAND*RTprev + + MRT specifies an upper bound on the value of RT (disregarding the + randomization added by the use of RAND). If MRT has a value of 0, + there is no upper limit on the value of RT. Otherwise: + + if (RT > MRT) + RT = MRT + RAND*MRT + + MRC specifies an upper bound on the number of times a client may + retransmit a message. Unless MRC is zero, the message exchange fails + once the client has transmitted the message MRC times. + + MRD specifies an upper bound on the length of time a client may + retransmit a message. Unless MRD is zero, the message exchange fails + once MRD seconds have elapsed since the client first transmitted the + message. + + If both MRC and MRD are non-zero, the message exchange fails whenever + either of the conditions specified in the previous two paragraphs + is met. + + If both MRC and MRD are zero, the client continues to transmit the + message until it receives a response. + + + + + + +Mrugalski, et al. Standards Track [Page 44] + +RFC 8415 DHCP for IPv6 November 2018 + + + A client is not expected to listen for a response during the entire + RT period and may turn off listening capabilities after waiting at + least the shorter of RT and MAX_WAIT_TIME due to power consumption + saving or other reasons. Of course, a client MUST listen for a + Reconfigure if it has negotiated for its use with the server. + +16. Message Validation + + This section describes which options are valid in which kinds of + message types and explains what to do when a client or server + receives a message that contains known options that are invalid for + that message. For example, an IA option is not allowed to appear in + an Information-request message. + + Clients and servers MAY choose to either (1) extract information from + such a message if the information is of use to the recipient or + (2) ignore such a message completely and just discard it. + + If a server receives a message that it considers invalid, it MAY send + a Reply message (or Advertise message, as appropriate) with a Server + Identifier option (see Section 21.3), a Client Identifier option (see + Section 21.2) (if one was included in the message), and a Status Code + option (see Section 21.13) with status UnspecFail. + + Clients, relay agents, and servers MUST NOT discard messages that + contain unknown options (or instances of vendor options with unknown + enterprise-number values). These should be ignored as if they were + not present. This is critical to provide for future extensions of + DHCP. + + A server MUST discard any Solicit, Confirm, Rebind, or + Information-request messages it receives with a Layer 3 unicast + destination address. + + A client or server MUST discard any received DHCP messages with an + unknown message type. + +16.1. Use of Transaction IDs + + The "transaction-id" field holds a value used by clients and servers + to synchronize server responses to client messages. A client SHOULD + generate a random number that cannot easily be guessed or predicted + to use as the transaction ID for each new message it sends. Note + that if a client generates easily predictable transaction + identifiers, it may become more vulnerable to certain kinds of + attacks from off-path intruders. A client MUST leave the transaction + ID unchanged in retransmissions of a message. + + + + +Mrugalski, et al. Standards Track [Page 45] + +RFC 8415 DHCP for IPv6 November 2018 + + +16.2. Solicit Message + + Clients MUST discard any received Solicit messages. + + Servers MUST discard any Solicit messages that do not include a + Client Identifier option or that do include a Server Identifier + option. + +16.3. Advertise Message + + Clients MUST discard any received Advertise message that meets any of + the following conditions: + + - the message does not include a Server Identifier option (see + Section 21.3). + + - the message does not include a Client Identifier option (see + Section 21.2). + + - the contents of the Client Identifier option do not match the + client's DUID. + + - the "transaction-id" field value does not match the value the + client used in its Solicit message. + + Servers and relay agents MUST discard any received Advertise + messages. + +16.4. Request Message + + Clients MUST discard any received Request messages. + + Servers MUST discard any received Request message that meets any of + the following conditions: + + - the message does not include a Server Identifier option (see + Section 21.3). + + - the contents of the Server Identifier option do not match the + server's DUID. + + - the message does not include a Client Identifier option (see + Section 21.2). + + + + + + + + +Mrugalski, et al. Standards Track [Page 46] + +RFC 8415 DHCP for IPv6 November 2018 + + +16.5. Confirm Message + + Clients MUST discard any received Confirm messages. + + Servers MUST discard any received Confirm messages that do not + include a Client Identifier option (see Section 21.2) or that do + include a Server Identifier option (see Section 21.3). + +16.6. Renew Message + + Clients MUST discard any received Renew messages. + + Servers MUST discard any received Renew message that meets any of the + following conditions: + + - the message does not include a Server Identifier option (see + Section 21.3). + + - the contents of the Server Identifier option do not match the + server's identifier. + + - the message does not include a Client Identifier option (see + Section 21.2). + +16.7. Rebind Message + + Clients MUST discard any received Rebind messages. + + Servers MUST discard any received Rebind messages that do not include + a Client Identifier option (see Section 21.2) or that do include a + Server Identifier option (see Section 21.3). + +16.8. Decline Message + + Clients MUST discard any received Decline messages. + + Servers MUST discard any received Decline message that meets any of + the following conditions: + + - the message does not include a Server Identifier option (see + Section 21.3). + + - the contents of the Server Identifier option do not match the + server's identifier. + + - the message does not include a Client Identifier option (see + Section 21.2). + + + + +Mrugalski, et al. Standards Track [Page 47] + +RFC 8415 DHCP for IPv6 November 2018 + + +16.9. Release Message + + Clients MUST discard any received Release messages. + + Servers MUST discard any received Release message that meets any of + the following conditions: + + - the message does not include a Server Identifier option (see + Section 21.3). + + - the contents of the Server Identifier option do not match the + server's identifier. + + - the message does not include a Client Identifier option (see + Section 21.2). + +16.10. Reply Message + + Clients MUST discard any received Reply message that meets any of the + following conditions: + + - the message does not include a Server Identifier option (see + Section 21.3). + + - the "transaction-id" field in the message does not match the value + used in the original message. + + If the client included a Client Identifier option (see Section 21.2) + in the original message, the Reply message MUST include a Client + Identifier option, and the contents of the Client Identifier option + MUST match the DUID of the client. If the client did not include a + Client Identifier option in the original message, the Reply message + MUST NOT include a Client Identifier option. + + Servers and relay agents MUST discard any received Reply messages. + +16.11. Reconfigure Message + + Servers and relay agents MUST discard any received Reconfigure + messages. + + Clients MUST discard any Reconfigure message that meets any of the + following conditions: + + - the message was not unicast to the client. + + - the message does not include a Server Identifier option (see + Section 21.3). + + + +Mrugalski, et al. Standards Track [Page 48] + +RFC 8415 DHCP for IPv6 November 2018 + + + - the message does not include a Client Identifier option (see + Section 21.2) that contains the client's DUID. + + - the message does not include a Reconfigure Message option (see + Section 21.19). + + - the Reconfigure Message option msg-type is not a valid value. + + - the message does not include authentication (such as RKAP; see + Section 20.4) or fails authentication validation. + +16.12. Information-request Message + + Clients MUST discard any received Information-request messages. + + Servers MUST discard any received Information-request message that + meets any of the following conditions: + + - the message includes a Server Identifier option (see + Section 21.3), and the DUID in the option does not match the + server's DUID. + + - the message includes an IA option. + +16.13. Relay-forward Message + + Clients MUST discard any received Relay-forward messages. + +16.14. Relay-reply Message + + Clients and servers MUST discard any received Relay-reply messages. + +17. Client Source Address and Interface Selection + + The client's behavior regarding interface selection is different, + depending on the purpose of the configuration. + +17.1. Source Address and Interface Selection for Address Assignment + + When a client sends a DHCP message to the + All_DHCP_Relay_Agents_and_Servers multicast address, it SHOULD send + the message through the interface for which configuration information + (including the addresses) is being requested. However, the client + MAY send the message through another interface if the interface for + which configuration is being requested is a logical interface without + direct link attachment or the client is certain that two interfaces + are attached to the same link. + + + + +Mrugalski, et al. Standards Track [Page 49] + +RFC 8415 DHCP for IPv6 November 2018 + + + When a client sends a DHCP message directly to a server using unicast + (after receiving the Server Unicast option (see Section 21.12) from + that server), the source address in the header of the IPv6 datagram + MUST be an address assigned to the interface for which the client is + interested in obtaining configuration and that is suitable for use by + the server in responding to the client. + +17.2. Source Address and Interface Selection for Prefix Delegation + + Delegated prefixes are not associated with a particular interface in + the same way as addresses are for address assignment as mentioned in + Section 17.1 above. + + When a client sends a DHCP message for the purpose of prefix + delegation, it SHOULD be sent on the interface associated with the + upstream router (typically, connected to an ISP network); see + [RFC7084]. The upstream interface is typically determined by + configuration. This rule applies even in the case where a separate + IA_PD is used for each downstream interface. + + When a client sends a DHCP message directly to a server using unicast + (after receiving the Server Unicast option (see Section 21.12) from + that server), the source address SHOULD be an address that is from + the upstream interface and that is suitable for use by the server in + responding to the client. + +18. DHCP Configuration Exchanges + + A client initiates a message exchange with a server or servers to + acquire or update configuration information of interest. A client + has many reasons to initiate the configuration exchange. Some of the + more common ones are: + + 1. as part of the operating system configuration/bootstrap process, + + 2. when requested to do so by the application layer (through an + operating-system-specific API), + + 3. when a Router Advertisement indicates that DHCPv6 is available + for address configuration (see Section 4.2 of [RFC4861]), + + 4. as required to extend the lifetime of address(es) and/or + delegated prefix(es), using Renew and Rebind messages, or + + 5. upon the receipt of a Reconfigure message, when requested to do + so by a server. + + + + + +Mrugalski, et al. Standards Track [Page 50] + +RFC 8415 DHCP for IPv6 November 2018 + + + The client is responsible for creating IAs and requesting that a + server assign addresses and/or delegated prefixes to the IAs. The + client first creates the IAs and assigns IAIDs to them. The client + then transmits a Solicit message containing the IA options describing + the IAs. The client MUST NOT be using any of the addresses or + delegated prefixes for which it tries to obtain the bindings by + sending the Solicit message. In particular, if the client had some + valid bindings and has chosen to start the server discovery process + to obtain the same bindings from a different server, the client MUST + stop using the addresses and delegated prefixes for the bindings that + it had obtained from the previous server (see Section 18.2.7 for more + details on what "stop using" means in this context) and that it is + now trying to obtain from a new server. + + A DHCP client that does not need to have a DHCP server assign IP + addresses or delegated prefixes to it can obtain configuration + information such as a list of available DNS servers [RFC3646] or NTP + servers [RFC5908] through a single message and reply exchange with a + DHCP server. To obtain configuration information, the client first + sends an Information-request message (see Section 18.2.6) to the + All_DHCP_Relay_Agents_and_Servers multicast address. Servers respond + with a Reply message containing the configuration information for the + client (see Section 18.3.6). + + To request the assignment of one or more addresses or delegated + prefixes, a client first locates a DHCP server and then requests the + assignment of addresses/prefixes and other configuration information + from the server. The client does this by sending the Solicit message + (see Section 18.2.1) to the All_DHCP_Relay_Agents_and_Servers + multicast address and collecting Advertise messages from the servers + that respond to the client's message; the client then selects a + server from which it wants to obtain configuration information. This + process is referred to as server discovery. When the client has + selected the server, it sends a Request message to that server as + described in Section 18.2.2. + + A client willing to perform the Solicit/Reply message exchange + described in Section 18.2.1 includes a Rapid Commit option (see + Section 21.14) in its Solicit message. + + Servers that can assign addresses or delegated prefixes to the IAs + respond to the client with an Advertise message or Reply message if + the client included a Rapid Commit option and the server is + configured to accept it. + + If the server responds with an Advertise message, the client + initiates a configuration exchange as described in Section 18.2.2. + + + + +Mrugalski, et al. Standards Track [Page 51] + +RFC 8415 DHCP for IPv6 November 2018 + + + A server may initiate a message exchange with a client by sending a + Reconfigure message to cause the client to send a Renew, Rebind, or + Information-request message to refresh its configuration information + as soon as the Reconfigure message is received by the client. + + Figure 9 shows a timeline diagram of the messages exchanged between a + client and two servers for the typical lifecycle of one or more + leases. This starts with the four-message Solicit/Advertise/ + Request/Reply exchange to obtain the lease(s), followed by a + two-message Renew/Reply exchange to extend the lifetime on the + lease(s), and then ends with a two-message Release/Reply exchange to + end the client's use of the lease(s). + + Server Server + (not selected) Client (selected) + + v v v + | | | + | Begins initialization | + | | | + start of | _____________/|\_____________ | + 4-message |/ Solicit | Solicit \| + exchange | | | + Determines | Determines + configuration | configuration + | | | + |\ | ____________/| + | \________ | /Advertise | + | Advertise\ |/ | + | \ | | + | Collects Advertises | + | \ | | + | Selects configuration | + | | | + | _____________/|\_____________ | + |/ Request | Request \| + | | | + | | Commits configuration + | | | + end of | | _____________/| + 4-message | |/ Reply | + exchange | | | + | Initialization complete | + | | | + . . . + . . . + | T1 (renewal) timer expires | + | | | + + + +Mrugalski, et al. Standards Track [Page 52] + +RFC 8415 DHCP for IPv6 November 2018 + + + 2-message | _____________/|\_____________ | + exchange |/ Renew | Renew \| + | | | + | | Commits extended lease(s) + | | | + | | _____________/| + | |/ Reply | + . . . + . . . + | | | + | Graceful shutdown | + | | | + 2-message | _____________/|\_____________ | + exchange |/ Release | Release \| + | | | + | | Discards lease(s) + | | | + | | _____________/| + | |/ Reply | + | | | + v v v + + Figure 9: Timeline Diagram of the Messages Exchanged between a Client + and Two Servers for the Typical Lifecycle of One or More Leases + +18.1. A Single Exchange for Multiple IA Options + + This document assumes that a client SHOULD use a single transaction + for all of the IA options required on an interface; this simplifies + the client implementation and reduces the potential number of + transactions required (for the background on this design choice, + refer to Section 4 of [RFC7550]). To facilitate a client's use of a + single transaction for all IA options, servers MUST return the same + T1/T2 values for all IA options in a Reply (see Sections 18.3.2, + 18.3.4, and 18.3.5) so that the client will generate a single + transaction when renewing or rebinding its leases. However, because + some servers may not yet conform to this requirement, a client MUST + be prepared to select appropriate T1/T2 times as described in + Section 18.2.4. + +18.2. Client Behavior + + A client uses the Solicit message to discover DHCP servers configured + to assign leases or return other configuration parameters on the link + to which the client is attached. + + A client uses Request, Renew, Rebind, Release, and Decline messages + during the normal lifecycle of addresses and delegated prefixes. + + + +Mrugalski, et al. Standards Track [Page 53] + +RFC 8415 DHCP for IPv6 November 2018 + + + When a client detects that it may have moved to a new link, it uses + Confirm if it only has addresses and Rebind if it has delegated + prefixes (and addresses). It uses Information-request messages when + it needs configuration information but no addresses and no prefixes. + + When a client requests multiple IA option types or multiple instances + of the same IA types in a Solicit, Request, Renew, or Rebind, it is + possible that the available server(s) may only be configured to offer + a subset of them. When possible, the client SHOULD use the best + configuration available and continue to request the additional IAs in + subsequent messages. This allows the client to maintain a single + session and state machine. In practice, especially in the case of + handling IA_NA and IA_PD requests [RFC7084], this situation should be + rare or a result of a temporary operational error. Thus, it is more + likely that the client will get all configuration if it continues, in + each subsequent configuration exchange, to request all the + configuration information it is programmed to try to obtain, + including any stateful configuration options for which no results + were returned in previous message exchanges. + + Upon receipt of a Reconfigure message from the server, a client + responds with a Renew, Rebind, or Information-request message as + indicated by the Reconfigure Message option (see Section 21.19). The + client SHOULD be suspicious of the Reconfigure message (they may be + faked), and it MUST NOT abandon any resources it might have already + obtained. The client SHOULD treat the Reconfigure message as if the + T1 timer had expired. The client will expect the server to send IAs + and/or other configuration information to the client in a Reply + message. + + If the client has a source address of sufficient scope that can be + used by the server as a return address and the client has received a + Server Unicast option (see Section 21.12) from the server, the client + SHOULD unicast any Request, Renew, Release, and Decline messages to + the server. + + Use of unicast may avoid delays due to the relaying of messages by + relay agents, as well as avoid overhead on servers due to the + delivery of client messages to multiple servers. However, requiring + the client to relay all DHCP messages through a relay agent enables + the inclusion of relay agent options in all messages sent by the + client. The server should enable the use of unicast only when relay + agent options will not be used. + + + + + + + + +Mrugalski, et al. Standards Track [Page 54] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.1. Creation and Transmission of Solicit Messages + + The client sets the "msg-type" field to SOLICIT. The client + generates a transaction ID and inserts this value in the + "transaction-id" field. + + The client MUST include a Client Identifier option (see Section 21.2) + to identify itself to the server. The client includes IA options for + any IAs to which it wants the server to assign leases. + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + The client uses IA_NA options (see Section 21.4) to request the + assignment of non-temporary addresses, IA_TA options (see + Section 21.5) to request the assignment of temporary addresses, and + IA_PD options (see Section 21.21) to request prefix delegation. + IA_NA, IA_TA, or IA_PD options, or a combination of all, can be + included in DHCP messages. In addition, multiple instances of any IA + option type can be included. + + The client MAY include addresses in IA Address options (see + Section 21.6) encapsulated within IA_NA and IA_TA options as hints to + the server about the addresses for which the client has a preference. + + The client MAY include values in IA Prefix options (see + Section 21.22) encapsulated within IA_PD options as hints for the + delegated prefix and/or prefix length for which the client has a + preference. See Section 18.2.4 for more on prefix-length hints. + + The client MUST include an Option Request option (ORO) (see + Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) + and any other options the client is interested in receiving. The + client MAY additionally include instances of those options that are + identified in the Option Request option, with data values as hints to + the server about parameter values the client would like to have + returned. + + The client includes a Reconfigure Accept option (see Section 21.20) + if the client is willing to accept Reconfigure messages from the + server. + + The client MUST NOT include any other options in the Solicit message, + except as specifically allowed in the definition of individual + options. + + + + + +Mrugalski, et al. Standards Track [Page 55] + +RFC 8415 DHCP for IPv6 November 2018 + + + The first Solicit message from the client on the interface SHOULD be + delayed by a random amount of time between 0 and SOL_MAX_DELAY. This + random delay helps desynchronize clients that start a DHCP session at + the same time, such as after recovery from a power failure or after a + router outage after seeing that DHCP is available in Router + Advertisement messages (see Section 4.2 of [RFC4861]). + + The client transmits the message according to Section 15, using the + following parameters: + + IRT SOL_TIMEOUT + + MRT SOL_MAX_RT + + MRC 0 + + MRD 0 + + A client that wishes to use the Rapid Commit two-message exchange + includes a Rapid Commit option (see Section 21.14) in its Solicit + message. The client may receive a number of different replies from + different servers. The client will make note of any valid Advertise + messages that it receives. The client will discard any Reply + messages that do not contain the Rapid Commit option. + + Upon receipt of a valid Reply with the Rapid Commit option, the + client processes the message as described in Section 18.2.10. + + At the end of the first RT period, if no suitable Reply messages are + received but the client has valid Advertise messages, then the client + processes the Advertise as described in Section 18.2.9. + + If the client subsequently receives a valid Reply message that + includes a Rapid Commit option, it does one of the following: + + - processes the Reply message as described in Section 18.2.10 and + discards any Reply messages received in response to the Request + message + + - processes any Reply messages received in response to the Request + message and discards the Reply message that includes the Rapid + Commit option + + If the client is waiting for an Advertise message, the mechanism + described in Section 15 is modified as follows for use in the + transmission of Solicit messages. The message exchange is not + terminated by the receipt of an Advertise before the first RT has + elapsed. Rather, the client collects valid Advertise messages until + + + +Mrugalski, et al. Standards Track [Page 56] + +RFC 8415 DHCP for IPv6 November 2018 + + + the first RT has elapsed. Also, the first RT MUST be selected to be + strictly greater than IRT by choosing RAND to be strictly greater + than 0. + + A client MUST collect valid Advertise messages for the first + RT seconds, unless it receives a valid Advertise message with a + preference value of 255. The preference value is carried in the + Preference option (see Section 21.8). Any valid Advertise that does + not include a Preference option is considered to have a preference + value of 0. If the client receives a valid Advertise message that + includes a Preference option with a preference value of 255, the + client immediately begins a client-initiated message exchange (as + described in Section 18.2.2) by sending a Request message to the + server from which the Advertise message was received. If the client + receives a valid Advertise message that does not include a Preference + option with a preference value of 255, the client continues to wait + until the first RT elapses. If the first RT elapses and the client + has received a valid Advertise message, the client SHOULD continue + with a client-initiated message exchange by sending a Request + message. + + If the client does not receive any valid Advertise messages before + the first RT has elapsed, it then applies the retransmission + mechanism described in Section 15. The client terminates the + retransmission process as soon as it receives any valid Advertise + message, and the client acts on the received Advertise message + without waiting for any additional Advertise messages. + + A DHCP client SHOULD choose MRC and MRD values of 0. If the DHCP + client is configured with either MRC or MRD set to a value other than + 0, it MUST stop trying to configure the interface if the message + exchange fails. After the DHCP client stops trying to configure the + interface, it SHOULD restart the reconfiguration process after some + external event, such as user input, system restart, or when the + client is attached to a new link. + +18.2.2. Creation and Transmission of Request Messages + + The client uses a Request message to populate IAs with leases and + obtain other configuration information. The client includes one or + more IA options in the Request message. The server then returns + leases and other information about the IAs to the client in IA + options in a Reply message. + + The client sets the "msg-type" field to REQUEST. The client + generates a transaction ID and inserts this value in the + "transaction-id" field. + + + + +Mrugalski, et al. Standards Track [Page 57] + +RFC 8415 DHCP for IPv6 November 2018 + + + The client MUST include the identifier of the destination server in a + Server Identifier option (see Section 21.3). + + The client MUST include a Client Identifier option (see Section 21.2) + to identify itself to the server. The client adds any other + appropriate options, including one or more IA options. + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + The client MUST include an Option Request option (see Section 21.7) + to request the SOL_MAX_RT option (see Section 21.24) and any other + options the client is interested in receiving. The client MAY + additionally include instances of those options that are identified + in the Option Request option, with data values as hints to the server + about parameter values the client would like to have returned. + + The client includes a Reconfigure Accept option (see Section 21.20) + if the client is willing to accept Reconfigure messages from the + server. + + The client transmits the message according to Section 15, using the + following parameters: + + IRT REQ_TIMEOUT + + MRT REQ_MAX_RT + + MRC REQ_MAX_RC + + MRD 0 + + If the message exchange fails, the client takes an action based on + the client's local policy. Examples of actions the client might take + include the following: + + - Select another server from a list of servers known to the client + -- for example, servers that responded with an Advertise message. + + - Initiate the server discovery process described in Section 18. + + - Terminate the configuration process and report failure. + + + + + + + + +Mrugalski, et al. Standards Track [Page 58] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.3. Creation and Transmission of Confirm Messages + + The client uses a Confirm message when it has only addresses (no + delegated prefixes) assigned by a DHCP server to determine if it is + still connected to the same link when the client detects a change in + network information as described in Section 18.2.12. + + The client sets the "msg-type" field to CONFIRM. The client + generates a transaction ID and inserts this value in the + "transaction-id" field. + + The client MUST include a Client Identifier option (see Section 21.2) + to identify itself to the server. + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + The client includes IA options for all of the IAs assigned to the + interface for which the Confirm message is being sent. The IA + options include all of the addresses the client currently has + associated with those IAs. The client SHOULD set the T1 and T2 + fields in any IA_NA options (see Section 21.4) and the + preferred-lifetime and valid-lifetime fields in the IA Address + options (see Section 21.6) to 0, as the server will ignore these + fields. + + The first Confirm message from the client on the interface MUST be + delayed by a random amount of time between 0 and CNF_MAX_DELAY. The + client transmits the message according to Section 15, using the + following parameters: + + IRT CNF_TIMEOUT + + MRT CNF_MAX_RT + + MRC 0 + + MRD CNF_MAX_RD + + If the client receives no responses before the message transmission + process terminates, as described in Section 15, the client SHOULD + continue to use any leases, using the last known lifetimes for those + leases, and SHOULD continue to use any other previously obtained + configuration parameters. + + + + + + +Mrugalski, et al. Standards Track [Page 59] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.4. Creation and Transmission of Renew Messages + + To extend the preferred and valid lifetimes for the leases assigned + to the IAs and obtain new addresses or delegated prefixes for IAs, + the client sends a Renew message to the server from which the leases + were obtained; the Renew message includes IA options for the IAs + whose lease lifetimes are to be extended. The client includes IA + Address options (see Section 21.6) within IA_NA (see Section 21.4) + and IA_TA (see Section 21.5) options for the addresses assigned to + the IAs. The client includes IA Prefix options (see Section 21.22) + within IA_PD options (see Section 21.21) for the delegated prefixes + assigned to the IAs. + + The server controls the time at which the client should contact the + server to extend the lifetimes on assigned leases through the T1 and + T2 values assigned to an IA. However, as the client SHOULD + renew/rebind all IAs from the server at the same time, the client + MUST select T1 and T2 times from all IA options that will guarantee + that the client initiates transmissions of Renew/Rebind messages not + later than at the T1/T2 times associated with any of the client's + bindings (earliest T1/T2). + + At time T1, the client initiates a Renew/Reply message exchange to + extend the lifetimes on any leases in the IA. + + A client MUST also initiate a Renew/Reply message exchange before + time T1 if the client's link-local address used in previous + interactions with the server is no longer valid and it is willing to + receive Reconfigure messages. + + If T1 or T2 had been set to 0 by the server (for an IA_NA or IA_PD) + or there are no T1 or T2 times (for an IA_TA) in a previous Reply, + the client may, at its discretion, send a Renew or Rebind message, + respectively. The client MUST follow the rules defined in + Section 14.2. + + The client sets the "msg-type" field to RENEW. The client generates + a transaction ID and inserts this value in the "transaction-id" + field. + + The client MUST include a Server Identifier option (see Section 21.3) + in the Renew message, identifying the server with which the client + most recently communicated. + + The client MUST include a Client Identifier option (see Section 21.2) + to identify itself to the server. The client adds any appropriate + options, including one or more IA options. + + + + +Mrugalski, et al. Standards Track [Page 60] + +RFC 8415 DHCP for IPv6 November 2018 + + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + For IAs to which leases have been assigned, the client includes a + corresponding IA option containing an IA Address option for each + address assigned to the IA and an IA Prefix option for each prefix + assigned to the IA. The client MUST NOT include addresses and + prefixes in any IA option that the client did not obtain from the + server or that are no longer valid (that have a valid lifetime of 0). + + The client MAY include an IA option for each binding it desires but + has been unable to obtain. In this case, if the client includes the + IA_PD option to request prefix delegation, the client MAY include the + IA Prefix option encapsulated within the IA_PD option, with the + "IPv6-prefix" field set to 0 and the "prefix-length" field set to the + desired length of the prefix to be delegated. The server MAY use + this value as a hint for the prefix length. The client SHOULD NOT + include an IA Prefix option with the "IPv6-prefix" field set to 0 + unless it is supplying a hint for the prefix length. + + The client includes an Option Request option (see Section 21.7) to + request the SOL_MAX_RT option (see Section 21.24) and any other + options the client is interested in receiving. The client MAY + include options with data values as hints to the server about + parameter values the client would like to have returned. + + The client transmits the message according to Section 15, using the + following parameters: + + IRT REN_TIMEOUT + + MRT REN_MAX_RT + + MRC 0 + + MRD Remaining time until earliest T2 + + The message exchange is terminated when the earliest time T2 is + reached. While the client is responding to a Reconfigure, the client + ignores and discards any additional Reconfigure messages it may + receive. + + The message exchange is terminated when the earliest time T2 is + reached, at which point the client begins the Rebind message exchange + (see Section 18.2.5). + + + + + +Mrugalski, et al. Standards Track [Page 61] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.5. Creation and Transmission of Rebind Messages + + At time T2 (which will only be reached if the server to which the + Renew message was sent starting at time T1 has not responded), the + client initiates a Rebind/Reply message exchange with any available + server. + + A Rebind is also used to verify delegated prefix bindings but with + different retransmission parameters as described in Section 18.2.3. + + The client constructs the Rebind message as described in + Section 18.2.4, with the following differences: + + - The client sets the "msg-type" field to REBIND. + + - The client does not include the Server Identifier option (see + Section 21.3) in the Rebind message. + + The client transmits the message according to Section 15, using the + following parameters: + + IRT REB_TIMEOUT + + MRT REB_MAX_RT + + MRC 0 + + MRD Remaining time until valid lifetimes of all leases in all + IAs have expired + + If all leases for an IA have expired, the client may choose to + include this IA in subsequent Rebind messages to indicate that the + client is interested in assignment of the leases to this IA. + + The message exchange is terminated when the valid lifetimes of all + leases across all IAs have expired, at which time the client uses the + Solicit message to locate a new DHCP server and sends a Request for + the expired IAs to the new server. If the terminated Rebind exchange + was initiated as a result of receiving a Reconfigure message, the + client ignores and discards the Reconfigure message. + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 62] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.6. Creation and Transmission of Information-request Messages + + The client uses an Information-request message to obtain + configuration information without having addresses and/or delegated + prefixes assigned to it. + + The client sets the "msg-type" field to INFORMATION-REQUEST. The + client generates a transaction ID and inserts this value in the + "transaction-id" field. + + The client SHOULD include a Client Identifier option (see + Section 21.2) to identify itself to the server (however, see + Section 4.3.1 of [RFC7844] for reasons why a client may not want to + include this option). If the client does not include a Client + Identifier option, the server will not be able to return any + client-specific options to the client, or the server may choose not + to respond to the message at all. + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + The client MUST include an Option Request option (see Section 21.7) + to request the INF_MAX_RT option (see Section 21.25), the Information + Refresh Time option (see Section 21.23), and any other options the + client is interested in receiving. The client MAY include options + with data values as hints to the server about parameter values the + client would like to have returned. + + When responding to a Reconfigure, the client includes a Server + Identifier option (see Section 21.3) with the identifier from the + Reconfigure message to which the client is responding. + + The first Information-request message from the client on the + interface MUST be delayed by a random amount of time between 0 and + INF_MAX_DELAY. The client transmits the message according to + Section 15, using the following parameters: + + IRT INF_TIMEOUT + + MRT INF_MAX_RT + + MRC 0 + + MRD 0 + + + + + + +Mrugalski, et al. Standards Track [Page 63] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.7. Creation and Transmission of Release Messages + + To release one or more leases, a client sends a Release message to + the server. + + The client sets the "msg-type" field to RELEASE. The client + generates a transaction ID and places this value in the + "transaction-id" field. + + The client places the identifier of the server that allocated the + lease(s) in a Server Identifier option (see Section 21.3). + + The client MUST include a Client Identifier option (see Section 21.2) + to identify itself to the server. + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + The client includes options containing the IAs for the leases it is + releasing in the "options" field. The leases to be released MUST be + included in the IAs. Any leases for the IAs the client wishes to + continue to use MUST NOT be added to the IAs. + + The client MUST stop using all of the leases being released before + the client begins the Release message exchange process. For an + address, this means the address MUST have been removed from the + interface. For a delegated prefix, this means the prefix MUST have + been advertised with a Preferred Lifetime and a Valid Lifetime of 0 + in a Router Advertisement message as described in part (e) of + Section 5.5.3 of [RFC4862]; also see requirement L-13 in Section 4.3 + of [RFC7084]. + + The client MUST NOT use any of the addresses it is releasing as the + source address in the Release message or in any subsequently + transmitted message. + + Because Release messages may be lost, the client should retransmit + the Release if no Reply is received. However, there are scenarios + where the client may not wish to wait for the normal retransmission + timeout before giving up (e.g., on power down). Implementations + SHOULD retransmit one or more times but MAY choose to terminate the + retransmission procedure early. + + + + + + + + +Mrugalski, et al. Standards Track [Page 64] + +RFC 8415 DHCP for IPv6 November 2018 + + + The client transmits the message according to Section 15, using the + following parameters: + + IRT REL_TIMEOUT + + MRT 0 + + MRC REL_MAX_RC + + MRD 0 + + If leases are released but the Reply from a DHCP server is lost, the + client will retransmit the Release message, and the server may + respond with a Reply indicating a status of NoBinding. Therefore, + the client does not treat a Reply message with a status of NoBinding + in a Release message exchange as if it indicates an error. + + Note that if the client fails to release the lease, each lease + assigned to the IA will be reclaimed by the server when the valid + lifetime of that lease expires. + +18.2.8. Creation and Transmission of Decline Messages + + If a client detects that one or more addresses assigned to it by a + server are already in use by another node, the client sends a Decline + message to the server to inform it that the address is suspect. + + The Decline message is not used in prefix delegation; thus, the + client MUST NOT include IA_PD options (see Section 21.21) in the + Decline message. + + The client sets the "msg-type" field to DECLINE. The client + generates a transaction ID and places this value in the + "transaction-id" field. + + The client places the identifier of the server that allocated the + address(es) in a Server Identifier option (see Section 21.3). + + The client MUST include a Client Identifier option (see Section 21.2) + to identify itself to the server. + + The client MUST include an Elapsed Time option (see Section 21.9) to + indicate how long the client has been trying to complete the current + DHCP message exchange. + + + + + + + +Mrugalski, et al. Standards Track [Page 65] + +RFC 8415 DHCP for IPv6 November 2018 + + + The client includes options containing the IAs for the addresses it + is declining in the "options" field. The addresses to be declined + MUST be included in the IAs. Any addresses for the IAs the client + wishes to continue to use should not be added to the IAs. + + The client MUST NOT use any of the addresses it is declining as the + source address in the Decline message or in any subsequently + transmitted message. + + The client transmits the message according to Section 15, using the + following parameters: + + IRT DEC_TIMEOUT + + MRT 0 + + MRC DEC_MAX_RC + + MRD 0 + + If addresses are declined but the Reply from a DHCP server is lost, + the client will retransmit the Decline message, and the server may + respond with a Reply indicating a status of NoBinding. Therefore, + the client does not treat a Reply message with a status of NoBinding + in a Decline message exchange as if it indicates an error. + + The client SHOULD NOT send a Release message for other bindings it + may have received just because it sent a Decline message. The client + SHOULD retain the non-conflicting bindings. The client SHOULD treat + the failure to acquire a binding (due to the conflict) as equivalent + to not having received the binding, insofar as how it behaves when + sending Renew and Rebind messages. + + + + + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 66] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.9. Receipt of Advertise Messages + + Upon receipt of one or more valid Advertise messages, the client + selects one or more Advertise messages based upon the following + criteria. + + - Those Advertise messages with the highest server preference value + SHOULD be preferred over all other Advertise messages. The client + MAY choose a less preferred server if that server has a better set + of advertised parameters, such as the available set of IAs, as + well as the set of other configuration options advertised. + + - Within a group of Advertise messages with the same server + preference value, a client MAY select those servers whose + Advertise messages advertise information of interest to the + client. + + Once a client has selected Advertise message(s), the client will + typically store information about each server, such as the server + preference value, addresses advertised, when the advertisement was + received, and so on. + + In practice, this means that the client will maintain independent + per-IA state machines for each selected server. + + If the client needs to select an alternate server in the case that a + chosen server does not respond, the client chooses the next server + according to the criteria given above. + + The client MUST process any SOL_MAX_RT option (see Section 21.24) and + INF_MAX_RT option (see Section 21.25) present in an Advertise + message, even if the message contains a Status Code option (see + Section 21.13) indicating a failure, and the Advertise message will + be discarded by the client. A client SHOULD only update its + SOL_MAX_RT and INF_MAX_RT values if all received Advertise messages + that contained the corresponding option specified the same value; + otherwise, it should use the default value (see Section 7.6). + + The client MUST ignore any Advertise message that contains no + addresses (IA Address options (see Section 21.6) encapsulated in + IA_NA options (see Section 21.4) or IA_TA options (see Section 21.5)) + and no delegated prefixes (IA Prefix options (see Section 21.22) + encapsulated in IA_PD options (see Section 21.21)), with the + exception that the client: + + - MUST process an included SOL_MAX_RT option and + + - MUST process an included INF_MAX_RT option. + + + +Mrugalski, et al. Standards Track [Page 67] + +RFC 8415 DHCP for IPv6 November 2018 + + + A client can record in an activity log or display to the user any + associated status message(s). + + The client ignoring an Advertise message MUST NOT restart the Solicit + retransmission timer. + +18.2.10. Receipt of Reply Messages + + Upon the receipt of a valid Reply message in response to a Solicit + with a Rapid Commit option (see Section 21.14), Request, Confirm, + Renew, Rebind, or Information-request message, the client extracts + the top-level Status Code option (see Section 21.13) if present. + + The client MUST process any SOL_MAX_RT option (see Section 21.24) and + INF_MAX_RT option (see Section 21.25) present in a Reply message, + even if the message contains a Status Code option indicating a + failure. + + If the client receives a Reply message with a status code of + UnspecFail, the server is indicating that it was unable to process + the client's message due to an unspecified failure condition. If the + client retransmits the original message to the same server to retry + the desired operation, the client MUST limit the rate at which it + retransmits the message and limit the duration of the time during + which it retransmits the message (see Section 14.1). + + If the client receives a Reply message with a status code of + UseMulticast, the client records the receipt of the message and sends + subsequent messages to the server through the interface on which the + message was received using multicast. The client resends the + original message using multicast. + + Otherwise (no status code or another status code), the client + processes the Reply as described below based on the original message + for which the Reply was received. + + The client MAY choose to report any status code or message from the + Status Code option in the Reply message. + + When a client received a configuration option in an earlier Reply and + then sends a Renew, Rebind, or Information-request and the requested + option is not present in the Reply, the client SHOULD stop using the + previously received configuration information. In other words, the + client should behave as if it never received this configuration + option and return to the relevant default state. If there is no + viable way to stop using the received configuration information, the + values received/configured from the option MAY persist if there are + no other sources for that data and they have no external impact. For + + + +Mrugalski, et al. Standards Track [Page 68] + +RFC 8415 DHCP for IPv6 November 2018 + + + example, a client that previously received a Client FQDN option (see + [RFC4704]) and used it to set up its hostname is allowed to continue + using it if there is no reasonable way for a node to unset its + hostname and it has no external impact. As a counter-example, a + client that previously received an NTP server address from the DHCP + server and does not receive it anymore MUST stop using the configured + NTP server address. The client SHOULD be open to other sources of + the same configuration information. This behavior does not apply to + any IA options, as their processing is described in detail in the + next section. + + When a client receives a requested option that has an updated value + from what was previously received, the client SHOULD make use of that + updated value as soon as possible for its configuration information. + +18.2.10.1. Reply for Solicit (with Rapid Commit), Request, Renew, or + Rebind + + If the client receives a NotOnLink status from the server in response + to a Solicit (with a Rapid Commit option; see Section 21.14) or a + Request, the client can either reissue the message without specifying + any addresses or restart the DHCP server discovery process (see + Section 18). + + If the Reply was received in response to a Solicit (with a Rapid + Commit option), Request, Renew, or Rebind message, the client updates + the information it has recorded about IAs from the IA options + contained in the Reply message: + + - Calculate T1 and T2 times (based on T1 and T2 values sent in the + packet and the packet reception time), if appropriate for the + IA type. + + - Add any new leases in the IA option to the IA as recorded by the + client. + + - Update lifetimes for any leases in the IA option that the client + already has recorded in the IA. + + - Discard any leases from the IA, as recorded by the client, that + have a valid lifetime of 0 in the IA Address or IA Prefix option. + + - Leave unchanged any information about leases the client has + recorded in the IA but that were not included in the IA from the + server. + + + + + + +Mrugalski, et al. Standards Track [Page 69] + +RFC 8415 DHCP for IPv6 November 2018 + + + If the client can operate with the addresses and/or prefixes obtained + from the server: + + - The client uses the addresses, delegated prefixes, and other + information from any IAs that do not contain a Status Code option + with the NoAddrsAvail or NoPrefixAvail status code. The client + MAY include the IAs for which it received the NoAddrsAvail or + NoPrefixAvail status code, with no addresses or prefixes, in + subsequent Renew and Rebind messages sent to the server, to retry + obtaining the addresses or prefixes for these IAs. + + - The client MUST perform duplicate address detection as per + Section 5.4 of [RFC4862], which does list some exceptions, on each + of the received addresses in any IAs on which it has not performed + duplicate address detection during processing of any of the + previous Reply messages from the server. The client performs the + duplicate address detection before using the received addresses + for any traffic. If any of the addresses are found to be in use + on the link, the client sends a Decline message to the server for + those addresses as described in Section 18.2.8. + + - For each assigned address that does not have any associated + reachability information (see the definition of "on-link" in + Section 2.1 of [RFC4861]), in order to avoid the problems + described in [RFC4943], the client MUST NOT assume that any + addresses are reachable on-link as a result of receiving an IA_NA + or IA_TA. Addresses obtained from an IA_NA or IA_TA MUST NOT be + used to form an implicit prefix with a length other than 128. + + - For each delegated prefix, the client assigns a subnet to each of + the links to which the associated interfaces are attached. + + When a client subnets a delegated prefix, it must assign + additional bits to the prefix to generate unique, longer prefixes. + For example, if the client in Figure 1 were delegated + 2001:db8:0::/48, it might generate 2001:db8:0:1::/64 and + 2001:db8:0:2::/64 for assignment to the two links in the + subscriber network. If the client were delegated 2001:db8:0::/48 + and 2001:db8:5::/48, it might assign 2001:db8:0:1::/64 and + 2001:db8:5:1::/64 to one of the links, and 2001:db8:0:2::/64 and + 2001:db8:5:2::/64 for assignment to the other link. + + If the client uses a delegated prefix to configure addresses on + interfaces on itself or other nodes behind it, the preferred and + valid lifetimes of those addresses MUST be no longer than the + remaining preferred and valid lifetimes, respectively, for the + delegated prefix at any time. In particular, if the delegated + + + + +Mrugalski, et al. Standards Track [Page 70] + +RFC 8415 DHCP for IPv6 November 2018 + + + prefix or a prefix derived from it is advertised for stateless + address autoconfiguration [RFC4862], the advertised preferred and + valid lifetimes MUST NOT exceed the corresponding remaining + lifetimes of the delegated prefix. + + Management of the specific configuration information is detailed in + the definition of each option in Section 21. + + If the Reply message contains any IAs but the client finds no usable + addresses and/or delegated prefixes in any of these IAs, the client + may either try another server (perhaps restarting the DHCP server + discovery process) or use the Information-request message to obtain + other configuration information only. + + When the client receives a Reply message in response to a Renew or + Rebind message, the client: + + - Sends a Request message to the server that responded if any of the + IAs in the Reply message contain the NoBinding status code. The + client places IA options in this message for all IAs. The client + continues to use other bindings for which the server did not + return an error. + + - Sends a Renew/Rebind if any of the IAs are not in the Reply + message, but as this likely indicates that the server that + responded does not support that IA type, sending immediately is + unlikely to produce a different result. Therefore, the client + MUST rate-limit its transmissions (see Section 14.1) and MAY just + wait for the normal retransmission time (as if the Reply message + had not been received). The client continues to use other + bindings for which the server did return information. + + - Otherwise accepts the information in the IA. + + Whenever a client restarts the DHCP server discovery process or + selects an alternate server as described in Section 18.2.9, the + client SHOULD stop using all the addresses and delegated prefixes for + which it has bindings and try to obtain all required leases from the + new server. This facilitates the client using a single state machine + for all bindings. + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 71] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.2.10.2. Reply for Release and Decline + + When the client receives a valid Reply message in response to a + Release message, the client considers the Release event completed, + regardless of the Status Code option (see Section 21.13) returned by + the server. + + When the client receives a valid Reply message in response to a + Decline message, the client considers the Decline event completed, + regardless of the Status Code option(s) returned by the server. + +18.2.10.3. Reply for Confirm + + If the client receives any Reply messages that indicate a status of + Success (explicit or implicit), the client can use the addresses in + the IA and ignore any messages that indicate a NotOnLink status. + When the client only receives one or more Reply messages with the + NotOnLink status in response to a Confirm message, the client + performs DHCP server discovery as described in Section 18. + +18.2.10.4. Reply for Information-request + + Refer to Section 21.23 for details on how the Information Refresh + Time option (whether or not present in the Reply) should be handled + by the client. + +18.2.11. Receipt of Reconfigure Messages + + A client receives Reconfigure messages sent to UDP port 546 on + interfaces for which it has acquired configuration information + through DHCP. These messages may be sent at any time. Since the + results of a reconfiguration event may affect application-layer + programs, the client SHOULD log these events and MAY notify these + programs of the change through an implementation-specific interface. + + Upon receipt of a valid Reconfigure message, the client responds with + a Renew message, a Rebind message, or an Information-request message + as indicated by the Reconfigure Message option (see Section 21.19). + The client ignores the "transaction-id" field in the received + Reconfigure message. While the transaction is in progress, the + client discards any Reconfigure messages it receives. + + The Reconfigure message acts as a trigger that signals the client to + complete a successful message exchange. Once the client has received + a Reconfigure, the client proceeds with the message exchange + (retransmitting the Renew, Rebind, or Information-request message if + necessary); the client MUST ignore any additional Reconfigure + messages until the exchange is complete. + + + +Mrugalski, et al. Standards Track [Page 72] + +RFC 8415 DHCP for IPv6 November 2018 + + + Duplicate messages will be ignored because the client will begin the + exchange after the receipt of the first Reconfigure. Retransmitted + messages will either (1) trigger the exchange (if the first + Reconfigure was not received by the client) or (2) be ignored. The + server MAY discontinue retransmission of Reconfigure messages to the + client once the server receives the Renew, Rebind, or + Information-request message from the client. + + It might be possible for a duplicate or retransmitted Reconfigure to + be sufficiently delayed (and delivered out of order) that it arrives + at the client after the exchange (initiated by the original + Reconfigure) has been completed. In this case, the client would + initiate a redundant exchange. The likelihood of delayed and + out-of-order delivery is small enough to be ignored. The consequence + of the redundant exchange is inefficiency rather than incorrect + operation. + +18.2.12. Refreshing Configuration Information + + Whenever a client may have moved to a new link, the + prefixes/addresses assigned to the interfaces on that link may no + longer be appropriate for the link to which the client is attached. + Examples of times when a client may have moved to a new link include + the following: + + - The client reboots (and has stable storage and persistent DHCP + state). + + - The client is reconnected to a link on which it has obtained + leases. + + - The client returns from sleep mode. + + - The client changes access points (e.g., if using Wi-Fi + technology). + + When the client detects that it may have moved to a new link and it + has obtained addresses and no delegated prefixes from a server, the + client SHOULD initiate a Confirm/Reply message exchange. The client + includes any IAs assigned to the interface that may have moved to a + new link, along with the addresses associated with those IAs, in its + Confirm message. Any responding servers will indicate whether those + addresses are appropriate for the link to which the client is + attached with the status in the Reply message it returns to the + client. + + + + + + +Mrugalski, et al. Standards Track [Page 73] + +RFC 8415 DHCP for IPv6 November 2018 + + + If the client has any valid delegated prefixes obtained from the DHCP + server, the client MUST initiate a Rebind/Reply message exchange as + described in Section 18.2.5, with the exception that the + retransmission parameters should be set as for the Confirm message + (see Section 18.2.3). The client includes IA_NAs, IA_TAs, and + IA_PDs, along with the associated leases, in its Rebind message. + + If the client has only obtained network information using + Information-request/Reply message exchanges, the client MUST initiate + an Information-request/Reply message exchange as described in + Section 18.2.6. + + If not associated with one of the above-mentioned conditions, a + client SHOULD initiate a Renew/Reply exchange (as if the T1 time + expired) as described in Section 18.2.4 or an Information-request/ + Reply exchange as described in Section 18.2.6 if the client detects a + significant change regarding the prefixes available on the link (when + new prefixes are added or existing prefixes are deprecated), as this + may indicate a configuration change. However, a client MUST + rate-limit such attempts to avoid flooding a server with requests + when there are link issues (for example, only doing one of these at + most every 30 seconds). + +18.3. Server Behavior + + For this discussion, the server is assumed to have been configured in + an implementation-specific manner with configurations of interest to + clients. + + A server sends an Advertise message in response to each valid Solicit + message it receives to announce the availability of the server to the + client. + + In most cases, the server will send a Reply in response to Request, + Confirm, Renew, Rebind, Decline, Release, and Information-request + messages sent by a client. The server will also send a Reply in + response to a Solicit with a Rapid Commit option (see Section 21.14) + when the server is configured to respond with committed lease + assignments. + + These Advertise and Reply messages MUST always contain the Server + Identifier option (see Section 21.3) containing the server's DUID and + the Client Identifier option (see Section 21.2) from the client + message if one was present. + + In most response messages, the server includes options containing + configuration information for the client. The server must be aware + of the recommendations on packet sizes and the use of fragmentation + + + +Mrugalski, et al. Standards Track [Page 74] + +RFC 8415 DHCP for IPv6 November 2018 + + + as discussed in Section 5 of [RFC8200]. If the client included an + Option Request option (see Section 21.7) in its message, the server + includes options in the response message containing configuration + parameters for all of the options identified in the Option Request + option that the server has been configured to return to the client. + The server MAY return additional options to the client if it has been + configured to do so. + + Any message sent from a client may arrive at the server encapsulated + in one or more Relay-forward messages. The server MUST use the + received message to construct the proper Relay-reply message to allow + the response to the received message to be relayed through the same + relay agents (in reverse order) as the original client message; see + Section 19.3 for more details. The server may also need to record + this information with each client in case it is needed to send a + Reconfigure message at a later time, unless the server has been + configured with addresses that can be used to send Reconfigure + messages directly to the client (see Section 18.3.11). Note that + servers that support leasequery [RFC5007] also need to record this + information. + + By sending Reconfigure messages, the server MAY initiate a + configuration exchange to cause DHCP clients to obtain new addresses, + prefixes, and other configuration information. For example, an + administrator may use a server-initiated configuration exchange when + links in the DHCP domain are to be renumbered or when other + configuration options are updated, perhaps because servers are moved, + added, or removed. + + When a client receives a Reconfigure message from the server, the + client initiates sending a Renew, Rebind, or Information-request + message as indicated by msg-type in the Reconfigure Message option + (see Section 21.19). The server sends IAs and/or other configuration + information to the client in a Reply message. The server MAY include + options containing the IAs and new values for other configuration + parameters in the Reply message, even if those IAs and parameters + were not requested in the client's message. + +18.3.1. Receipt of Solicit Messages + + See Section 18.4 for details regarding the handling of Solicit + messages received via unicast. Unicast transmission of Solicit + messages is not allowed, regardless of whether the Server Unicast + option (see Section 21.12) is configured or not. + + The server determines the information about the client and its + location as described in Section 13 and checks its administrative + policy about responding to the client. If the server is not + + + +Mrugalski, et al. Standards Track [Page 75] + +RFC 8415 DHCP for IPv6 November 2018 + + + permitted to respond to the client, the server discards the Solicit + message. For example, if the administrative policy for the server is + that it may only respond to a client that is willing to accept a + Reconfigure message, if the client does not include a Reconfigure + Accept option (see Section 21.20) in the Solicit message, the server + discards the Solicit message. + + If (1) the server is permitted to respond to the client, (2) the + client has not included a Rapid Commit option (see Section 21.14) in + the Solicit message, or (3) the server has not been configured to + respond with committed assignments of leases and other resources, the + server sends an Advertise message to the client as described in + Section 18.3.9. + + If the client has included a Rapid Commit option in the Solicit + message and the server has been configured to respond with committed + assignments of leases and other resources, the server responds to the + Solicit with a Reply message. The server produces the Reply message + as though it had received a Request message as described in + Section 18.3.2. The server transmits the Reply message as described + in Section 18.3.10. The server MUST commit the assignment of any + addresses and delegated prefixes or other configuration information + before sending a Reply message to a client. In this case, the server + includes a Rapid Commit option in the Reply message to indicate that + the Reply is in response to a Solicit message. + + DISCUSSION: + + When using the Solicit/Reply message exchange, the server commits + the assignment of any leases before sending the Reply message. + The client can assume that it has been assigned the leases in the + Reply message and does not need to send a Request message for + those leases. + + Typically, servers that are configured to use the Solicit/Reply + message exchange will be deployed so that only one server will + respond to a Solicit message. If more than one server responds, + the client will only use the leases from one of the servers, while + the leases from the other servers will be committed to the client + but not used by the client. + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 76] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.3.2. Receipt of Request Messages + + See Section 18.4 for details regarding the handling of Request + messages received via unicast. + + When the server receives a valid Request message, the server creates + the bindings for that client according to the server's policy and + configuration information and records the IAs and other information + requested by the client. + + The server constructs a Reply message by setting the "msg-type" field + to REPLY and copying the transaction ID from the Request message into + the "transaction-id" field. + + The server MUST include in the Reply message a Server Identifier + option (see Section 21.3) containing the server's DUID and the Client + Identifier option (see Section 21.2) from the Request message. + + The server examines all IAs in the message from the client. + + For each IA_NA option (see Section 21.4) and IA_TA option (see + Section 21.5) in the Request message, the server checks if the + prefixes of included addresses are appropriate for the link to which + the client is connected. If any of the prefixes of the included + addresses are not appropriate for the link to which the client is + connected, the server MUST return the IA to the client with a Status + Code option (see Section 21.13) with the value NotOnLink. If the + server does not send the NotOnLink status code but it cannot assign + any IP addresses to an IA, the server MUST return the IA option in + the Reply message with no addresses in the IA and a Status Code + option containing status code NoAddrsAvail in the IA. + + For any IA_PD option (see Section 21.21) in the Request message to + which the server cannot assign any delegated prefixes, the server + MUST return the IA_PD option in the Reply message with no prefixes in + the IA_PD and with a Status Code option containing status code + NoPrefixAvail in the IA_PD. + + The server MAY assign different addresses and/or delegated prefixes + to an IA than those included within the IA of the client's Request + message. + + For all IAs to which the server can assign addresses or delegated + prefixes, the server includes the IAs with addresses (for IA_NAs and + IA_TAs), prefixes (for IA_PDs), and other configuration parameters + and records the IA as a new client binding. The server MUST NOT + include any addresses or delegated prefixes in the IA that the server + does not assign to the client. + + + +Mrugalski, et al. Standards Track [Page 77] + +RFC 8415 DHCP for IPv6 November 2018 + + + The T1/T2 times set in each applicable IA option for a Reply MUST be + the same values across all IAs. The server MUST determine the T1/T2 + times across all of the applicable client's bindings in the Reply. + This facilitates the client being able to renew all of the bindings + at the same time. + + The server SHOULD include a Reconfigure Accept option (see + Section 21.20) if the server policy enables the reconfigure mechanism + and the client supports it. Currently, sending this option in a + Reply is technically redundant, as the use of the reconfiguration + mechanism requires authentication; at present, the only defined + mechanism is RKAP (see Section 20.4), and the presence of the + reconfigure key signals support for the acceptance of Reconfigure + messages. However, there may be better security mechanisms defined + in the future that would cause RKAP to not be used anymore. + + The server includes other options containing configuration + information to be returned to the client as described in + Section 18.3. + + If the server finds that the client has included an IA in the Request + message for which the server already has a binding that associates + the IA with the client, the server sends a Reply message with + existing bindings, possibly with updated lifetimes. The server may + update the bindings according to its local policies, but the server + SHOULD generate the response again and not simply retransmit + previously sent information, even if the "transaction-id" field value + matches a previous transmission. The server MUST NOT cache its + responses. + + DISCUSSION: + + Cached replies are bad because lifetimes need to be updated + (either decrease the timers by the amount of time elapsed since + the original transmission or keep the lifetime values and update + the lease information in the server's database). Also, if the + message uses any security protection (such as the Replay Detection + Method (RDM), as described in Section 20.3), its value must be + updated. Additionally, any digests must be updated. Given all of + the above, caching replies is far more complex than simply sending + the same buffer as before, and it is easy to miss some of those + steps. + + + + + + + + + +Mrugalski, et al. Standards Track [Page 78] + +RFC 8415 DHCP for IPv6 November 2018 + + +18.3.3. Receipt of Confirm Messages + + See Section 18.4 for details regarding the handling of Confirm + messages received via unicast. Unicast transmission of Confirm + messages is not allowed, regardless of whether the Server Unicast + option (see Section 21.12) is configured or not. + + When the server receives a Confirm message, the server determines + whether the addresses in the Confirm message are appropriate for the + link to which the client is attached. If all of the addresses in the + Confirm message pass this test, the server returns a status of + Success. If any of the addresses do not pass this test, the server + returns a status of NotOnLink. If the server is unable to perform + this test (for example, the server does not have information about + prefixes on the link to which the client is connected) or there were + no addresses in any of the IAs sent by the client, the server + MUST NOT send a Reply to the client. + + The server ignores the T1 and T2 fields in the IA options and the + preferred-lifetime and valid-lifetime fields in the IA Address + options (see Section 21.6). + + The server constructs a Reply message by setting the "msg-type" field + to REPLY and copying the transaction ID from the Confirm message into + the "transaction-id" field. + + The server MUST include in the Reply message a Server Identifier + option (see Section 21.3) containing the server's DUID and the Client + Identifier option (see Section 21.2) from the Confirm message. The + server includes a Status Code option (see Section 21.13) indicating + the status of the Confirm message. + +18.3.4. Receipt of Renew Messages + + See Section 18.4 for details regarding the handling of Renew messages + received via unicast. + + For each IA in the Renew message from a client, the server locates + the client's binding and verifies that the information in the IA from + the client matches the information stored for that client. + + If the server finds the client entry for the IA, the server sends the + IA back to the client with new lifetimes and, if applicable, T1/T2 + times. If the server is unable to extend the lifetimes of an address + or delegated prefix in the IA, the server MAY choose not to include + the IA Address option (see Section 21.6) for that address or IA + Prefix option (see Section 21.22) for that delegated prefix. If the + server chooses to include the IA Address or IA Prefix option for such + + + +Mrugalski, et al. Standards Track [Page 79] + +RFC 8415 DHCP for IPv6 November 2018 + + + an address or delegated prefix, the server SHOULD set T1 and T2 + values to the valid lifetime for the IA option unless the server also + includes other addresses or delegated prefixes that the server is + able to extend for the IA. Setting T1 and T2 to values equal to the + valid lifetime informs the client that the leases associated with + said IA will not be extended, so there is no point in trying. Also, + it avoids generating unnecessary traffic as the remaining lifetime + approaches 0. + + The server may choose to change the list of addresses or delegated + prefixes and the lifetimes in IAs that are returned to the client. + + If the server finds that any of the addresses in the IA are not + appropriate for the link to which the client is attached, the server + returns the address to the client with lifetimes of 0. + + If the server finds that any of the delegated prefixes in the IA are + not appropriate for the link to which the client is attached, the + server returns the delegated prefix to the client with lifetimes + of 0. + + For each IA for which the server cannot find a client entry, the + server has the following choices, depending on the server's policy + and configuration information: + + - If the server is configured to create new bindings as a result of + processing Renew messages, the server SHOULD create a binding and + return the IA with assigned addresses or delegated prefixes with + lifetimes and, if applicable, T1/T2 times and other information + requested by the client. If the client included the IA Prefix + option within the IA_PD option (see Section 21.21) with a zero + value in the "IPv6-prefix" field and a non-zero value in the + "prefix-length" field, the server MAY use the "prefix-length" + value as a hint for the length of the prefixes to be assigned (see + [RFC8168] for further details on prefix-length hints). + + - If the server is configured to create new bindings as a result of + processing Renew messages but the server will not assign any + leases to an IA, the server returns the IA option containing a + Status Code option (see Section 21.13) with the NoAddrsAvail or + NoPrefixAvail status code and a status message for a user. + + - If the server does not support creation of new bindings for the + client sending a Renew message or if this behavior is disabled + according to the server's policy or configuration information, the + server returns the IA option containing a Status Code option with + the NoBinding status code and a status message for a user. + + + + +Mrugalski, et al. Standards Track [Page 80] + +RFC 8415 DHCP for IPv6 November 2018 + + + The server constructs a Reply message by setting the "msg-type" field + to REPLY and copying the transaction ID from the Renew message into + the "transaction-id" field. + + The server MUST include in the Reply message a Server Identifier + option (see Section 21.3) containing the server's DUID and the Client + Identifier option (see Section 21.2) from the Renew message. + + The server includes other options containing configuration + information to be returned to the client as described in + Section 18.3. + + The server MAY include options containing the IAs and values for + other configuration parameters, even if those parameters were not + requested in the Renew message. + + The T1/T2 values set in each applicable IA option for a Reply MUST be + the same across all IAs. The server MUST determine the T1/T2 values + across all of the applicable client's bindings in the Reply. This + facilitates the client being able to renew all of the bindings at the + same time. + +18.3.5. Receipt of Rebind Messages + + See Section 18.4 for details regarding the handling of Rebind + messages received via unicast. Unicast transmission of Rebind + messages is not allowed, regardless of whether the Server Unicast + option (see Section 21.12) is configured or not. + + When the server receives a Rebind message that contains an IA option + from a client, it locates the client's binding and verifies that the + information in the IA from the client matches the information stored + for that client. + + If the server finds the client entry for the IA and the server + determines that the addresses or delegated prefixes in the IA are + appropriate for the link to which the client's interface is attached + according to the server's explicit configuration information, the + server SHOULD send the IA back to the client with new lifetimes and, + if applicable, T1/T2 values. If the server is unable to extend the + lifetimes of an address in the IA, the server MAY choose not to + include the IA Address option (see Section 21.6) for this address. + If the server is unable to extend the lifetimes of a delegated prefix + in the IA, the server MAY choose not to include the IA Prefix option + (see Section 21.22) for this prefix. + + + + + + +Mrugalski, et al. Standards Track [Page 81] + +RFC 8415 DHCP for IPv6 November 2018 + + + If the server finds that the client entry for the IA and any of the + addresses or delegated prefixes are no longer appropriate for the + link to which the client's interface is attached according to the + server's explicit configuration information, the server returns those + addresses or delegated prefixes to the client with lifetimes of 0. + + If the server cannot find a client entry for the IA, the server + checks if the IA contains addresses (for IA_NAs and IA_TAs) or + delegated prefixes (for IA_PDs). The server checks if the addresses + and delegated prefixes are appropriate for the link to which the + client's interface is attached according to the server's explicit + configuration information. For any address that is not appropriate + for the link to which the client's interface is attached, the server + MAY include the IA Address option with lifetimes of 0. For any + delegated prefix that is not appropriate for the link to which the + client's interface is attached, the server MAY include the IA Prefix + option with lifetimes of 0. The Reply with lifetimes of 0 + constitutes an explicit notification to the client that the specific + addresses and delegated prefixes are no longer valid and MUST NOT be + used by the client. If the server chooses to not include any IAs + containing IA Address or IA Prefix options with lifetimes of 0 and + the server does not include any other IAs with leases and/or status + codes, the server does not send a Reply message. In this situation, + the server discards the Rebind message. + + Otherwise, for each IA for which the server cannot find a client + entry, the server has the following choices, depending on the + server's policy and configuration information: + + - If the server is configured to create new bindings as a result of + processing Rebind messages (also see the note below about the + Rapid Commit option (Section 21.14)), the server SHOULD create a + binding and return the IA with allocated leases with lifetimes + and, if applicable, T1/T2 values and other information requested + by the client. The server MUST NOT return any addresses or + delegated prefixes in the IA that the server does not assign to + the client. + + - If the server is configured to create new bindings as a result of + processing Rebind messages but the server will not assign any + leases to an IA, the server returns the IA option containing a + Status Code option (see Section 21.13) with the NoAddrsAvail or + NoPrefixAvail status code and a status message for a user. + + + + + + + + +Mrugalski, et al. Standards Track [Page 82] + +RFC 8415 DHCP for IPv6 November 2018 + + + - If the server does not support creation of new bindings for the + client sending a Rebind message or if this behavior is disabled + according to the server's policy or configuration information, the + server returns the IA option containing a Status Code option with + the NoBinding status code and a status message for a user. + + When the server creates new bindings for the IA, it is possible that + other servers also create bindings as a result of receiving the same + Rebind message; see the "DISCUSSION" text in Section 21.14. + Therefore, the server SHOULD only create new bindings during + processing of a Rebind message if the server is configured to respond + with a Reply message to a Solicit message containing the Rapid Commit + option. + + The server constructs a Reply message by setting the "msg-type" field + to REPLY and copying the transaction ID from the Rebind message into + the "transaction-id" field. + + The server MUST include in the Reply message a Server Identifier + option (see Section 21.3) containing the server's DUID and the Client + Identifier option (see Section 21.2) from the Rebind message. + + The server includes other options containing configuration + information to be returned to the client as described in + Section 18.3. + + The server MAY include options containing the IAs and values for + other configuration parameters, even if those IAs and parameters were + not requested in the Rebind message. + + The T1 or T2 values set in each applicable IA option for a Reply MUST + be the same values across all IAs. The server MUST determine the T1 + or T2 values across all of the applicable client's bindings in the + Reply. This facilitates the client being able to renew all of the + bindings at the same time. + +18.3.6. Receipt of Information-request Messages + + See Section 18.4 for details regarding the handling of + Information-request messages received via unicast. + + When the server receives an Information-request message, the client + is requesting configuration information that does not include the + assignment of any leases. The server determines all configuration + parameters appropriate to the client, based on the server + configuration policies known to the server. + + + + + +Mrugalski, et al. Standards Track [Page 83] + +RFC 8415 DHCP for IPv6 November 2018 + + + The server constructs a Reply message by setting the "msg-type" field + to REPLY and copying the transaction ID from the Information-request + message into the "transaction-id" field. + + The server MUST include a Server Identifier option (see Section 21.3) + containing the server's DUID in the Reply message. If the client + included a Client Identifier option (see Section 21.2) in the + Information-request message, the server copies that option to the + Reply message. + + The server includes options containing configuration information to + be returned to the client as described in Section 18.3. The server + MAY include additional options that were not requested by the client + in the Information-request message. + + If the Information-request message received from the client did not + include a Client Identifier option, the server SHOULD respond with a + Reply message containing any configuration parameters that are not + determined by the client's identity. If the server chooses not to + respond, the client may continue to retransmit the + Information-request message indefinitely. + +18.3.7. Receipt of Release Messages + + See Section 18.4 for details regarding the handling of Release + messages received via unicast. + + The server constructs a Reply message by setting the "msg-type" field + to REPLY and copying the transaction ID from the Release message into + the "transaction-id" field. + + Upon the receipt of a valid Release message, the server examines the + IAs and the leases in the IAs for validity. If the IAs in the + message are in a binding for the client and the leases in the IAs + have been assigned by the server to those IAs, the server deletes the + leases from the IAs and makes the leases available for assignment to + other clients. The server ignores leases not assigned to the IAs, + although it may choose to log an error. + + After all the leases have been processed, the server generates a + Reply message and includes a Status Code option (see Section 21.13) + with the value Success, a Server Identifier option (see Section 21.3) + with the server's DUID, and a Client Identifier option (see + Section 21.2) with the client's DUID. For each IA in the Release + message for which the server has no binding information, the server + adds an IA option using the IAID from the Release message and + includes a Status Code option with the value NoBinding in the IA + option. No other options are included in the IA option. + + + +Mrugalski, et al. Standards Track [Page 84] + +RFC 8415 DHCP for IPv6 November 2018 + + + A server may choose to retain a record of assigned leases and IAs + after the lifetimes on the leases have expired to allow the server to + reassign the previously assigned leases to a client. + +18.3.8. Receipt of Decline Messages + + See Section 18.4 for details regarding the handling of Decline + messages received via unicast. + + Upon the receipt of a valid Decline message, the server examines the + IAs and the addresses in the IAs for validity. If the IAs in the + message are in a binding for the client and the addresses in the IAs + have been assigned by the server to those IAs, the server deletes the + addresses from the IAs. The server ignores addresses not assigned to + the IAs (though it may choose to log an error if it finds such + addresses). + + The client has found any addresses in the Decline messages to be + already in use on its link. Therefore, the server SHOULD mark the + addresses declined by the client so that those addresses are not + assigned to other clients and MAY choose to make a notification that + addresses were declined. Local policy on the server determines when + the addresses identified in a Decline message may be made available + for assignment. + + After all the addresses have been processed, the server generates a + Reply message by setting the "msg-type" field to REPLY and copying + the transaction ID from the Decline message into the "transaction-id" + field. The client includes a Status Code option (see Section 21.13) + with the value Success, a Server Identifier option (see Section 21.3) + with the server's DUID, and a Client Identifier option (see + Section 21.2) with the client's DUID. For each IA in the Decline + message for which the server has no binding information, the server + adds an IA option using the IAID from the Decline message and + includes a Status Code option with the value NoBinding in the IA + option. No other options are included in the IA option. + +18.3.9. Creation of Advertise Messages + + The server sets the "msg-type" field to ADVERTISE and copies the + contents of the "transaction-id" field from the Solicit message + received from the client to the Advertise message. The server + includes its server identifier in a Server Identifier option (see + Section 21.3) and copies the Client Identifier option (see + Section 21.2) from the Solicit message into the Advertise message. + + + + + + +Mrugalski, et al. Standards Track [Page 85] + +RFC 8415 DHCP for IPv6 November 2018 + + + The server MAY add a Preference option (see Section 21.8) to carry + the preference value for the Advertise message. The server + implementation SHOULD allow the setting of a server preference value + by the administrator. The server preference value MUST default to 0 + unless otherwise configured by the server administrator. + + The server includes a Reconfigure Accept option (see Section 21.20) + if the server wants to indicate that it supports the Reconfigure + mechanism. This information may be used by the client during the + server selection process. + + The server includes the options the server will return to the client + in a subsequent Reply message. The information in these options may + be used by the client in the selection of a server if the client + receives more than one Advertise message. The server MUST include + options in the Advertise message containing configuration parameters + for all of the options identified in the Option Request option (see + Section 21.7) in the Solicit message that the server has been + configured to return to the client. If the Option Request option + includes a container option, the server MUST include all the options + that are eligible to be encapsulated in the container. The Option + Request option MAY be used to signal support for a feature even when + that option is encapsulated, as in the case of the Prefix Exclude + option [RFC6603]. In this case, special processing is required by + the server. The server MAY return additional options to the client + if it has been configured to do so. + + The server MUST include IA options in the Advertise message + containing any addresses and/or delegated prefixes that would be + assigned to IAs contained in the Solicit message from the client. If + the client has included addresses in the IA Address options (see + Section 21.6) in the Solicit message, the server MAY use those + addresses as hints about the addresses that the client would like to + receive. If the client has included IA Prefix options (see + Section 21.22), the server MAY use the prefix contained in the + "IPv6-prefix" field and/or the prefix length contained in the + "prefix-length" field as hints about the prefixes the client would + like to receive. If the server is not going to assign an address or + delegated prefix received as a hint in the Solicit message, the + server MUST NOT include this address or delegated prefix in the + Advertise message. + + If the server will not assign any addresses to an IA_NA or IA_TA in + subsequent Request messages from the client, the server MUST include + the IA option in the Advertise message with no addresses in that IA + and a Status Code option (see Section 21.13) encapsulated in the IA + option containing status code NoAddrsAvail. + + + + +Mrugalski, et al. Standards Track [Page 86] + +RFC 8415 DHCP for IPv6 November 2018 + + + If the server will not assign any prefixes to an IA_PD in subsequent + Request messages from the client, the server MUST include the IA_PD + option (see Section 21.21) in the Advertise message with no prefixes + in the IA_PD option and a Status Code option encapsulated in the + IA_PD containing status code NoPrefixAvail. + + Transmission of Advertise messages is described in the next section. + +18.3.10. Transmission of Advertise and Reply Messages + + If the original message was received directly by the server, the + server unicasts the Advertise or Reply message directly to the client + using the address in the source address field from the IP datagram in + which the original message was received. The Advertise or Reply + message MUST be unicast through the interface on which the original + message was received. + + If the original message was received in a Relay-forward message, the + server constructs a Relay-reply message with the Reply message in the + payload of a Relay Message option (see Section 21.10). If the + Relay-forward messages included an Interface-Id option (see + Section 21.18), the server copies that option to the Relay-reply + message. The server unicasts the Relay-reply message directly to the + relay agent using the address in the source address field from the IP + datagram in which the Relay-forward message was received. See + Section 19.3 for more details on the construction of Relay-reply + messages. + +18.3.11. Creation and Transmission of Reconfigure Messages + + The server sets the "msg-type" field to RECONFIGURE and sets the + "transaction-id" field to 0. The server includes a Server Identifier + option (see Section 21.3) containing its DUID and a Client Identifier + option (see Section 21.2) containing the client's DUID in the + Reconfigure message. + + Because of the risk of denial-of-service (DoS) attacks against DHCP + clients, the use of a security mechanism is mandated in Reconfigure + messages. The server MUST use DHCP authentication in the Reconfigure + message (see Section 20.4). + + The server MUST include a Reconfigure Message option (see + Section 21.19) to select whether the client responds with a Renew + message, a Rebind message, or an Information-request message. + + The server MUST NOT include any other options in the Reconfigure + message, except as specifically allowed in the definition of + individual options. + + + +Mrugalski, et al. Standards Track [Page 87] + +RFC 8415 DHCP for IPv6 November 2018 + + + A server sends each Reconfigure message to a single DHCP client, + using an IPv6 unicast address of sufficient scope belonging to the + DHCP client. If the server does not have an address to which it can + send the Reconfigure message directly to the client, the server uses + a Relay-reply message (as described in Section 19.3) to send the + Reconfigure message to a relay agent that will relay the message to + the client. The server may obtain the address of the client (and the + appropriate relay agent, if required) through the information the + server has about clients that have been in contact with the server + (see Section 18.3) or through some external agent. + + To reconfigure more than one client, the server unicasts a separate + message to each client. The server may initiate the reconfiguration + of multiple clients concurrently; for example, a server may send a + Reconfigure message to additional clients while previous + reconfiguration message exchanges are still in progress. + + The Reconfigure message causes the client to initiate a Renew/Reply, + Rebind/Reply, or Information-request/Reply message exchange with the + server. The server interprets the receipt of a Renew, Rebind, or + Information-request message (whichever was specified in the original + Reconfigure message) from the client as satisfying the Reconfigure + message request. + + When transmitting the Reconfigure message, the server sets the + retransmission time (RT) to REC_TIMEOUT. If the server does not + receive a Renew, Rebind, or Information-request message from the + client before the RT elapses, the server retransmits the Reconfigure + message, doubles the RT value, and waits again. The server continues + this process until REC_MAX_RC unsuccessful attempts have been made, + at which point the server SHOULD abort the reconfigure process for + that client. + + Default and initial values for REC_TIMEOUT and REC_MAX_RC are + documented in Section 7.6. + +18.4. Reception of Unicast Messages + + Unless otherwise stated in the subsections of Section 18.3 that + discuss the receipt of specific messages, the server is not supposed + to accept unicast traffic when it is not explicitly configured to do + so. For example, unicast transmission is not allowed for Solicit, + Confirm, and Rebind messages (see Sections 18.3.1, 18.3.3, and + 18.3.5, respectively), even if the Server Unicast option (see + Section 21.12) is configured. For Request, Renew, + Information-request, Release, and Decline messages, it is allowed + only if the Server Unicast option is configured. + + + + +Mrugalski, et al. Standards Track [Page 88] + +RFC 8415 DHCP for IPv6 November 2018 + + + When the server receives a message via unicast from a client to which + the server has not sent a Server Unicast option (or is not currently + configured to do so), the server discards that message and responds + with an Advertise (when responding to a Solicit message) or Reply + message (when responding to any other messages) containing a Status + Code option (see Section 21.13) with the value UseMulticast, a Server + Identifier option (see Section 21.3) containing the server's DUID, + the Client Identifier option (see Section 21.2) from the client + message (if any), and no other options. + +19. Relay Agent Behavior + + The relay agent SHOULD be configured to use a list of destination + addresses that includes unicast addresses. The list of destination + addresses MAY include the All_DHCP_Servers multicast address or other + addresses selected by the network administrator. If the relay agent + has not been explicitly configured, it MUST use the All_DHCP_Servers + multicast address as the default. + + If the relay agent relays messages to the All_DHCP_Servers multicast + address or other multicast addresses, it sets the Hop Limit field + to 8. + + If the relay agent receives a message other than Relay-forward and + Relay-reply and the relay agent does not recognize its message type, + it MUST forward the message as described in Section 19.1.1. + +19.1. Relaying a Client Message or a Relay-forward Message + + A relay agent relays both messages from clients and Relay-forward + messages from other relay agents. When a relay agent receives a + Relay-forward message, a recognized message type for which it is not + the intended target, or an unrecognized message type [RFC7283], it + constructs a new Relay-forward message. The relay agent copies the + source address from the header of the IP datagram in which the + message was received into the peer-address field of the Relay-forward + message. The relay agent copies the received DHCP message (excluding + any IP or UDP headers) into a Relay Message option (see + Section 21.10) in the new message. The relay agent adds to the + Relay-forward message any other options it is configured to include. + + [RFC6221] defines a Lightweight DHCPv6 Relay Agent (LDRA) that allows + relay agent information to be inserted by an access node that + performs a link-layer bridging (i.e., non-routing) function. + + + + + + + +Mrugalski, et al. Standards Track [Page 89] + +RFC 8415 DHCP for IPv6 November 2018 + + +19.1.1. Relaying a Message from a Client + + If the relay agent received the message to be relayed from a client, + the relay agent places a globally scoped unicast address (i.e., GUA + or ULA) from a prefix assigned to the link on which the client should + be assigned leases into the link-address field. If such an address + is not available, the relay agent may set the link-address field to a + link-local address from the interface on which the original message + was received. This is not recommended, as it may require that + additional information be provided in the server configuration. See + Section 3.2 of [RFC7969] for a detailed discussion. + + This address will be used by the server to determine the link from + which the client should be assigned leases and other configuration + information. + + The hop-count value in the Relay-forward message is set to 0. + + If the relay agent cannot use the address in the link-address field + to identify the interface through which the response to the client + will be relayed, the relay agent MUST include an Interface-Id option + (see Section 21.18) in the Relay-forward message. The server will + include the Interface-Id option in its Relay-reply message. The + relay agent sets the link-address field as described earlier in this + subsection, regardless of whether the relay agent includes an + Interface-Id option in the Relay-forward message. + +19.1.2. Relaying a Message from a Relay Agent + + If the message received by the relay agent is a Relay-forward message + and the hop-count value in the message is greater than or equal to + HOP_COUNT_LIMIT, the relay agent discards the received message. + + The relay agent copies the source address from the IP datagram in + which the message was received into the peer-address field in the + Relay-forward message and sets the hop-count field to the value of + the hop-count field in the received message incremented by 1. + + If the source address from the IP datagram header of the received + message is a globally scoped unicast address (i.e., GUA or ULA), the + relay agent sets the link-address field to 0; otherwise, the relay + agent sets the link-address field to a globally scoped unicast + address (i.e., GUA or ULA) assigned to the interface on which the + message was received or includes an Interface-Id option (see + Section 21.18) to identify the interface on which the message was + received. + + + + + +Mrugalski, et al. Standards Track [Page 90] + +RFC 8415 DHCP for IPv6 November 2018 + + +19.1.3. Relay Agent Behavior with Prefix Delegation + + A relay agent forwards messages containing prefix delegation options + in the same way as it would relay addresses (i.e., per + Sections 19.1.1 and 19.1.2). + + If a server communicates with a client through a relay agent about + delegated prefixes, the server may need a protocol or other + out-of-band communication to configure routing information for + delegated prefixes on any router through which the client may forward + traffic. + +19.2. Relaying a Relay-reply Message + + The relay agent processes any options included in the Relay-reply + message in addition to the Relay Message option (see Section 21.10). + + The relay agent extracts the message from the Relay Message option + and relays it to the address contained in the peer-address field of + the Relay-reply message. Relay agents MUST NOT modify the message. + + If the Relay-reply message includes an Interface-Id option (see + Section 21.18), the relay agent relays the message from the server to + the client on the link identified by the Interface-Id option. + Otherwise, if the link-address field is not set to 0, the relay agent + relays the message on the link identified by the link-address field. + + If the relay agent receives a Relay-reply message, it MUST process + the message as defined above, regardless of the type of message + encapsulated in the Relay Message option. + +19.3. Construction of Relay-reply Messages + + A server uses a Relay-reply message to (1) return a response to a + client if the original message from the client was relayed to the + server in a Relay-forward message or (2) send a Reconfigure message + to a client if the server does not have an address it can use to send + the message directly to the client. + + A response to the client MUST be relayed through the same relay + agents as the original client message. The server causes this to + happen by creating a Relay-reply message that includes a Relay + Message option (see Section 21.10) containing the message for the + next relay agent in the return path to the client. The contained + Relay-reply message contains another Relay Message option to be sent + to the next relay agent, and so on. The server must record the + + + + + +Mrugalski, et al. Standards Track [Page 91] + +RFC 8415 DHCP for IPv6 November 2018 + + + contents of the peer-address fields in the received message so it can + construct the appropriate Relay-reply message carrying the response + from the server. + + For example, if client C sent a message that was relayed by relay + agent A to relay agent B and then to the server, the server would + send the following Relay-reply message to relay agent B: + + msg-type: RELAY-REPL + hop-count: 1 + link-address: 0 + peer-address: A + Relay Message option containing the following: + msg-type: RELAY-REPL + hop-count: 0 + link-address: address from link to which C is attached + peer-address: C + Relay Message option: <response from server> + + Figure 10: Relay-reply Example + + When sending a Reconfigure message to a client through a relay agent, + the server creates a Relay-reply message that includes a Relay + Message option containing the Reconfigure message for the next relay + agent in the return path to the client. The server sets the + peer-address field in the Relay-reply message header to the address + of the client and sets the link-address field as required by the + relay agent to relay the Reconfigure message to the client. The + server obtains the addresses of the client and the relay agent + through prior interaction with the client or through some external + mechanism. + +19.4. Interaction between Relay Agents and Servers + + Each time a packet is relayed by a relay agent towards a server, a + new encapsulation level is added around the packet. Each relay is + allowed to insert additional options on the encapsulation level it + added but MUST NOT change anything in the packet being encapsulated. + If there are multiple relays between a client and a server, multiple + encapsulations are used. Although it makes packet processing + slightly more complex, it provides the major advantage of having a + clear indication as to which relay inserted which option. The + response packet is expected to travel through the same relays, but in + reverse order. Each time a response packet is relayed back towards a + client, one encapsulation level is removed. + + + + + + +Mrugalski, et al. Standards Track [Page 92] + +RFC 8415 DHCP for IPv6 November 2018 + + + In certain cases, relays can add one or more options. These options + can be added for several reasons: + + - First, relays can provide additional information about the client. + That source of information is usually more trusted by a server + administrator, as it comes from the network infrastructure rather + than the client and cannot be easily spoofed. These options can + be used by the server to determine its allocation policy. + + - Second, a relay may need some information to send a response back + to the client. Relay agents are expected to be stateless (not + retain any state after a packet has been processed). A relay + agent may include the Interface-Id option (see Section 21.18), + which will be echoed back in the response. It can include other + options and ask the server to echo one or more of the options back + in the response. These options can then be used by the relay + agent to send the response back to the client, or for other needs. + The client will never see these options. See [RFC4994] for + details. + + - Third, sometimes a relay is the best device to provide values for + certain options. A relay can insert an option into the packet + being forwarded to the server and ask the server to pass that + option back to the client. The client will receive that option. + It should be noted that the server is the ultimate authority here, + and -- depending on its configuration -- it may or may not send + the option back to the client. See [RFC6422] for details. + + For various reasons, servers may need to retain the relay information + after the packet processing is completed. One is a bulk leasequery + mechanism that may ask for all addresses and/or prefixes that were + assigned via a specific relay. A second is for the reconfigure + mechanism. The server may choose to not send the Reconfigure message + directly to the client but rather to send it via relays. This + particular behavior is considered an implementation detail and is out + of scope for this document. + +20. Authentication of DHCP Messages + + This document introduces two security mechanisms for the + authentication of DHCP messages: (1) authentication (and encryption) + of messages sent between servers and relay agents using IPsec and + (2) protection against misconfiguration of a client caused by a + Reconfigure message sent by a malicious DHCP server. + + The delayed authentication protocol, defined in [RFC3315], has been + obsoleted by this document (see Section 25). + + + + +Mrugalski, et al. Standards Track [Page 93] + +RFC 8415 DHCP for IPv6 November 2018 + + +20.1. Security of Messages Sent between Servers and Relay Agents + + Relay agents and servers that exchange messages can use IPsec as + detailed in [RFC8213]. + +20.2. Summary of DHCP Authentication + + Authentication of DHCP messages is accomplished through the use of + the Authentication option (see Section 21.11). The authentication + information carried in the Authentication option can be used to + reliably identify the source of a DHCP message and to confirm that + the contents of the DHCP message have not been tampered with. + + The Authentication option provides a framework for multiple + authentication protocols. One such protocol, RKAP, is defined in + Section 20.4. Other protocols defined in the future will be + specified in separate documents. + + Any DHCP message MUST NOT include more than one Authentication + option. + + The protocol field in the Authentication option identifies the + specific protocol used to generate the authentication information + carried in the option. The algorithm field identifies a specific + algorithm within the authentication protocol; for example, the + algorithm field specifies the hash algorithm used to generate the + Message Authentication Code (MAC) in the Authentication option. The + RDM field specifies the type of replay detection used in the replay + detection field. + +20.3. Replay Detection + + The RDM field of the Authentication option (see Section 21.11) + determines the type of replay detection used in the replay detection + field. + + If the RDM field contains 0x00, the replay detection field MUST be + set to the value of a strictly monotonically increasing 64-bit + unsigned integer (modulo 2^64). Using this technique can reduce the + danger of replay attacks. This method MUST be supported by all + Authentication option protocols. One choice might be to use the + 64-bit NTP timestamp format [RFC5905]). + + A client that receives a message with the RDM field set to 0x00 MUST + compare its replay detection field with the previous value sent by + that same server (based on the Server Identifier option; see + Section 21.3) and only accept the message if the received value is + greater and record this as the new value. If this is the first time + + + +Mrugalski, et al. Standards Track [Page 94] + +RFC 8415 DHCP for IPv6 November 2018 + + + a client processes an Authentication option sent by a server, the + client MUST record the replay detection value and skip the replay + detection check. + + Servers that support the reconfigure mechanism MUST ensure that the + replay detection value is retained between restarts. Failing to do + so may cause clients to refuse Reconfigure messages sent by the + server, effectively rendering the reconfigure mechanism useless. + +20.4. Reconfiguration Key Authentication Protocol (RKAP) + + RKAP provides protection against misconfiguration of a client caused + by a Reconfigure message sent by a malicious DHCP server. In this + protocol, a DHCP server sends a reconfigure key to the client in the + initial exchange of DHCP messages. The client records the + reconfigure key for use in authenticating subsequent Reconfigure + messages from that server. The server then includes a Hashed Message + Authentication Code (HMAC) computed from the reconfigure key in + subsequent Reconfigure messages. + + Both the reconfigure key sent from the server to the client and the + HMAC in subsequent Reconfigure messages are carried as the + authentication information in an Authentication option (see + Section 21.11). The format of the authentication information is + defined in the following section. + + RKAP is used (initiated by the server) only if the client and server + have negotiated to use Reconfigure messages. + + + + + + + + + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 95] + +RFC 8415 DHCP for IPv6 November 2018 + + +20.4.1. Use of the Authentication Option in RKAP + + The following fields are set in an Authentication option (see + Section 21.11) for RKAP: + + protocol 3 + + algorithm 1 + + RDM 0 + + The format of the authentication information for RKAP is: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Value (128 bits) | + +-+-+-+-+-+-+-+-+ | + . . + . . + . +-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 11: RKAP Authentication Information + + Type Type of data in the Value field carried in this + option: + + 1 Reconfigure key value (used in the Reply + message). + + 2 HMAC-MD5 digest of the message (used in + the Reconfigure message). + + A 1-octet field. + + Value Data as defined by the Type field. A 16-octet + field. + +20.4.2. Server Considerations for RKAP + + The server selects a reconfigure key for a client during the + Request/Reply, Solicit/Reply, or Information-request/Reply message + exchange. The server records the reconfigure key and transmits that + key to the client in an Authentication option (see Section 21.11) in + the Reply message. + + + + +Mrugalski, et al. Standards Track [Page 96] + +RFC 8415 DHCP for IPv6 November 2018 + + + The reconfigure key is 128 bits long and MUST be a cryptographically + strong random or pseudorandom number that cannot easily be predicted. + + To provide authentication for a Reconfigure message, the server + selects a replay detection value according to the RDM selected by the + server and computes an HMAC-MD5 of the Reconfigure message using the + reconfigure key for the client. The server computes the HMAC-MD5 + over the entire DHCP Reconfigure message, including the + Authentication option; the HMAC-MD5 field in the Authentication + option is set to 0 for the HMAC-MD5 computation. The server includes + the HMAC-MD5 in the authentication information field in an + Authentication option included in the Reconfigure message sent to the + client. + +20.4.3. Client Considerations for RKAP + + The client will receive a reconfigure key from the server in an + Authentication option (see Section 21.11) in the initial Reply + message from the server. The client records the reconfigure key for + use in authenticating subsequent Reconfigure messages. + + To authenticate a Reconfigure message, the client computes an + HMAC-MD5 over the Reconfigure message, with zeroes substituted for + the HMAC-MD5 field, using the reconfigure key received from the + server. If this computed HMAC-MD5 matches the value in the + Authentication option, the client accepts the Reconfigure message. + +21. DHCP Options + + Options are used to carry additional information and parameters in + DHCP messages. Every option shares a common base format, as + described in Section 21.1. All values in options are represented in + network byte order. + + This document describes the DHCP options defined as part of the base + DHCP specification. Other options may be defined in the future in + separate documents. See [RFC7227] for guidelines regarding the + definition of new options. See Section 24 for additional information + about the DHCPv6 "Option Codes" registry maintained by IANA. + + Unless otherwise noted, each option may appear only in the options + area of a DHCP message and may appear only once. If an option does + appear multiple times, each instance is considered separate and the + data areas of the options MUST NOT be concatenated or otherwise + combined. + + + + + + +Mrugalski, et al. Standards Track [Page 97] + +RFC 8415 DHCP for IPv6 November 2018 + + + Options that are allowed to appear only once are called "singleton + options". The only non-singleton options defined in this document + are the IA_NA (see Section 21.4), IA_TA (see Section 21.5), Vendor + Class (see Section 21.16), Vendor-specific Information (see + Section 21.17), and IA_PD (see Section 21.21) options. Also, IA + Address (see Section 21.6) and IA Prefix (see Section 21.22) may + appear in their respective IA options more than once. + +21.1. Format of DHCP Options + + The format of DHCP options is: + + 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 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | option-data | + | (option-len octets) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 12: Option Format + + option-code An unsigned integer identifying the specific + option type carried in this option. + A 2-octet field. + + option-len An unsigned integer giving the length of the + option-data field in this option in octets. + A 2-octet field. + + option-data The data for the option; the format of this + data depends on the definition of the option. + A variable-length field (the length, in + octets, is specified by option-len). + + DHCP options are scoped by using encapsulation. Some options apply + generally to the client, some are specific to an IA, and some are + specific to the addresses within an IA. These latter two cases are + discussed in Sections 21.4, 21.5, and 21.6. + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 98] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.2. Client Identifier Option + + The Client Identifier option is used to carry a DUID (see Section 11) + that identifies the client. The format of the Client Identifier + option is: + + 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_CLIENTID | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . DUID . + . (variable length) . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 13: Client Identifier Option Format + + option-code OPTION_CLIENTID (1). + + option-len Length of DUID in octets. + + DUID The DUID for the client. + +21.3. Server Identifier Option + + The Server Identifier option is used to carry a DUID (see Section 11) + that identifies the server. The format of the Server Identifier + option is: + + 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_SERVERID | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . DUID . + . (variable length) . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 14: Server Identifier Option Format + + + + + + + + +Mrugalski, et al. Standards Track [Page 99] + +RFC 8415 DHCP for IPv6 November 2018 + + + option-code OPTION_SERVERID (2). + + option-len Length of DUID in octets. + + DUID The DUID for the server. + +21.4. Identity Association for Non-temporary Addresses Option + + The Identity Association for Non-temporary Addresses (IA_NA) option + is used to carry an IA_NA, the parameters associated with the IA_NA, + and the non-temporary addresses associated with the IA_NA. + + Addresses appearing in an IA_NA option are not temporary addresses + (see Section 21.5). + + The format of the IA_NA option is: + + 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_IA_NA | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | IAID (4 octets) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | T1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | T2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + . IA_NA-options . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 15: Identity Association for Non-temporary Addresses + Option Format + + option-code OPTION_IA_NA (3). + + option-len 12 + length of IA_NA-options field. + + IAID The unique identifier for this IA_NA; the + IAID must be unique among the identifiers for + all of this client's IA_NAs. The number + space for IA_NA IAIDs is separate from the + number space for other IA option types (i.e., + IA_TA and IA_PD). A 4-octet field containing + an unsigned integer. + + + + +Mrugalski, et al. Standards Track [Page 100] + +RFC 8415 DHCP for IPv6 November 2018 + + + T1 The time interval after which the client + should contact the server from which the + addresses in the IA_NA were obtained to + extend the lifetimes of the addresses + assigned to the IA_NA; T1 is a time duration + relative to the current time expressed in + units of seconds. A 4-octet field containing + an unsigned integer. + + T2 The time interval after which the client + should contact any available server to extend + the lifetimes of the addresses assigned to + the IA_NA; T2 is a time duration relative to + the current time expressed in units of + seconds. A 4-octet field containing an + unsigned integer. + + IA_NA-options Options associated with this IA_NA. A + variable-length field (12 octets less than + the value in the option-len field). + + The IA_NA-options field encapsulates those options that are specific + to this IA_NA. For example, all of the IA Address options (see + Section 21.6) carrying the addresses associated with this IA_NA are + in the IA_NA-options field. + + Each IA_NA carries one "set" of non-temporary addresses; it is up to + the server policy to determine how many addresses are assigned, but + typically at most one address is assigned from each prefix assigned + to the link to which the client is attached. + + An IA_NA option may only appear in the options area of a DHCP + message. A DHCP message may contain multiple IA_NA options (though + each must have a unique IAID). + + The status of any operations involving this IA_NA is indicated in a + Status Code option (see Section 21.13) in the IA_NA-options field. + + Note that an IA_NA has no explicit "lifetime" or "lease length" of + its own. When the valid lifetimes of all of the addresses in an + IA_NA have expired, the IA_NA can be considered as having expired. + T1 and T2 are included to give servers explicit control over when a + client recontacts the server about a specific IA_NA. + + In a message sent by a client to a server, the T1 and T2 fields + SHOULD be set to 0. The server MUST ignore any values in these + fields in messages received from a client. + + + + +Mrugalski, et al. Standards Track [Page 101] + +RFC 8415 DHCP for IPv6 November 2018 + + + In a message sent by a server to a client, the client MUST use the + values in the T1 and T2 fields for the T1 and T2 times, unless values + in those fields are 0. The values in the T1 and T2 fields are the + number of seconds until T1 and T2 and are calculated since reception + of the message. + + As per Section 7.7, the value 0xffffffff is taken to mean "infinity" + and should be used carefully. + + The server selects the T1 and T2 values to allow the client to extend + the lifetimes of any addresses in the IA_NA before the lifetimes + expire, even if the server is unavailable for some short period of + time. Recommended values for T1 and T2 are 0.5 and 0.8 times the + shortest preferred lifetime of the addresses in the IA that the + server is willing to extend, respectively. If the "shortest" + preferred lifetime is 0xffffffff ("infinity"), the recommended T1 and + T2 values are also 0xffffffff. If the time at which the addresses in + an IA_NA are to be renewed is to be left to the discretion of the + client, the server sets the T1 and T2 values to 0. The client MUST + follow the rules defined in Section 14.2. + + If a client receives an IA_NA with T1 greater than T2 and both T1 and + T2 are greater than 0, the client discards the IA_NA option and + processes the remainder of the message as though the server had not + included the invalid IA_NA option. + +21.5. Identity Association for Temporary Addresses Option + + The Identity Association for Temporary Addresses (IA_TA) option is + used to carry an IA_TA, the parameters associated with the IA_TA, and + the addresses associated with the IA_TA. All of the addresses in + this option are used by the client as temporary addresses, as defined + in [RFC4941]. The format of the IA_TA option is: + + 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_IA_TA | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | IAID (4 octets) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + . IA_TA-options . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 16: Identity Association for Temporary Addresses Option Format + + + + +Mrugalski, et al. Standards Track [Page 102] + +RFC 8415 DHCP for IPv6 November 2018 + + + option-code OPTION_IA_TA (4). + + option-len 4 + length of IA_TA-options field. + + IAID The unique identifier for this IA_TA; the + IAID must be unique among the identifiers for + all of this client's IA_TAs. The number + space for IA_TA IAIDs is separate from the + number space for other IA option types (i.e., + IA_NA and IA_PD). A 4-octet field containing + an unsigned integer. + + IA_TA-options Options associated with this IA_TA. A + variable-length field (4 octets less than the + value in the option-len field). + + The IA_TA-options field encapsulates those options that are specific + to this IA_TA. For example, all of the IA Address options (see + Section 21.6) carrying the addresses associated with this IA_TA are + in the IA_TA-options field. + + Each IA_TA carries one "set" of temporary addresses. It is up to the + server policy to determine how many addresses are assigned. + + An IA_TA option may only appear in the options area of a DHCP + message. A DHCP message may contain multiple IA_TA options (though + each must have a unique IAID). + + The status of any operations involving this IA_TA is indicated in a + Status Code option (see Section 21.13) in the IA_TA-options field. + + Note that an IA has no explicit "lifetime" or "lease length" of its + own. When the valid lifetimes of all of the addresses in an IA_TA + have expired, the IA can be considered as having expired. + + An IA_TA option does not include values for T1 and T2. A client MAY + request that the valid lifetime on temporary addresses be extended by + including the addresses in an IA_TA option sent in a Renew or Rebind + message to a server. For example, a client would request an + extension on the valid lifetime of a temporary address to allow an + application to continue to use an established TCP connection. + Extending only the valid, but not the preferred, lifetime means the + address will end up in a deprecated state eventually. Existing + connections could continue, but no new ones would be created using + that address. + + + + + + +Mrugalski, et al. Standards Track [Page 103] + +RFC 8415 DHCP for IPv6 November 2018 + + + The client obtains new temporary addresses by sending an IA_TA option + with a new IAID to a server. Requesting new temporary addresses from + the server is the equivalent of generating new temporary addresses as + described in [RFC4941]. The server will generate new temporary + addresses and return them to the client. The client should request + new temporary addresses before the lifetimes on the previously + assigned addresses expire. + + A server MUST return the same set of temporary addresses for the same + IA_TA (as identified by the IAID) as long as those addresses are + still valid. After the lifetimes of the addresses in an IA_TA have + expired, the IAID may be reused to identify a new IA_TA with new + temporary addresses. + +21.6. IA Address Option + + The IA Address option is used to specify an address associated with + an IA_NA or an IA_TA. The IA Address option must be encapsulated in + the IA_NA-options field of an IA_NA option (see Section 21.4) or the + IA_TA-options field of an IA_TA option (see Section 21.5). The + IAaddr-options field encapsulates those options that are specific to + this address. + + The format of the IA Address option is: + + 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_IAADDR | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | IPv6-address | + | | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | preferred-lifetime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | valid-lifetime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . IAaddr-options . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 17: IA Address Option Format + + + + + + +Mrugalski, et al. Standards Track [Page 104] + +RFC 8415 DHCP for IPv6 November 2018 + + + option-code OPTION_IAADDR (5). + + option-len 24 + length of IAaddr-options field. + + IPv6-address An IPv6 address. A client MUST NOT form an + implicit prefix with a length other than 128 + for this address. A 16-octet field. + + preferred-lifetime The preferred lifetime for the address in the + option, expressed in units of seconds. A + 4-octet field containing an unsigned integer. + + valid-lifetime The valid lifetime for the address in the + option, expressed in units of seconds. A + 4-octet field containing an unsigned integer. + + IAaddr-options Options associated with this address. A + variable-length field (24 octets less than + the value in the option-len field). + + In a message sent by a client to a server, the preferred-lifetime and + valid-lifetime fields SHOULD be set to 0. The server MUST ignore any + received values. + + The client SHOULD NOT send the IA Address option with an unspecified + address (::). + + In a message sent by a server to a client, the client MUST use the + values in the preferred-lifetime and valid-lifetime fields for the + preferred and valid lifetimes. The values in these fields are the + number of seconds remaining in each lifetime. + + The client MUST discard any addresses for which the preferred + lifetime is greater than the valid lifetime. + + As per Section 7.7, if the valid lifetime of an address is + 0xffffffff, it is taken to mean "infinity" and should be used + carefully. + + More than one IA Address option can appear in an IA_NA option or an + IA_TA option. + + The status of any operations involving this IA Address is indicated + in a Status Code option in the IAaddr-options field, as specified in + Section 21.13. + + + + + + +Mrugalski, et al. Standards Track [Page 105] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.7. Option Request Option + + The Option Request option is used to identify a list of options in a + message between a client and a server. The format of the Option + Request option is: + + 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_ORO | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | requested-option-code-1 | requested-option-code-2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 18: Option Request Option Format + + option-code OPTION_ORO (6). + + option-len 2 * number of requested options. + + requested-option-code-n The option code for an option requested + by the client. Each option code is a + 2-octet field containing an unsigned + integer. + + A client MUST include an Option Request option in a Solicit, Request, + Renew, Rebind, or Information-request message to inform the server + about options the client wants the server to send to the client. For + certain message types, some option codes MUST be included in the + Option Request option; see Table 4 for details. + + The Option Request option MUST NOT include the following options: + + - Client Identifier (see Section 21.2) + + - Server Identifier (see Section 21.3) + + - IA_NA (see Section 21.4) + + - IA_TA (see Section 21.5) + + - IA_PD (see Section 21.21) + + - IA Address (see Section 21.6) + + - IA Prefix (see Section 21.22) + + + +Mrugalski, et al. Standards Track [Page 106] + +RFC 8415 DHCP for IPv6 November 2018 + + + - Option Request (this section) + + - Elapsed Time (see Section 21.9) + + - Preference (see Section 21.8) + + - Relay Message (see Section 21.10) + + - Authentication (see Section 21.11) + + - Server Unicast (see Section 21.12) + + - Status Code (see Section 21.13) + + - Rapid Commit (see Section 21.14) + + - User Class (see Section 21.15) + + - Vendor Class (see Section 21.16) + + - Interface-Id (see Section 21.18) + + - Reconfigure Message (see Section 21.19) + + - Reconfigure Accept (see Section 21.20) + + Other top-level options MUST appear in the Option Request option or + they will not be sent by the server. Only top-level options MAY + appear in the Option Request option. Options encapsulated in a + container option SHOULD NOT appear in an Option Request option; see + [RFC7598] for an example of container options. However, options MAY + be defined that specify exceptions to this restriction on including + encapsulated options in an Option Request option. For example, the + Option Request option MAY be used to signal support for a feature + even when that option is encapsulated, as in the case of the Prefix + Exclude option [RFC6603]. See Table 4. + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 107] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.8. Preference Option + + The Preference option is sent by a server to a client to control the + selection of a server by the client. + + The format of the Preference option is: + + 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_PREFERENCE | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | pref-value | + +-+-+-+-+-+-+-+-+ + + Figure 19: Preference Option Format + + option-code OPTION_PREFERENCE (7). + + option-len 1. + + pref-value The preference value for the server in this + message. A 1-octet unsigned integer. + + A server MAY include a Preference option in an Advertise message to + control the selection of a server by the client. See Section 18.2.9 + for information regarding the use of the Preference option by the + client and the interpretation of the Preference option data value. + +21.9. Elapsed Time Option + + 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_ELAPSED_TIME | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | elapsed-time | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 20: Elapsed Time Option Format + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 108] + +RFC 8415 DHCP for IPv6 November 2018 + + + option-code OPTION_ELAPSED_TIME (8). + + option-len 2. + + elapsed-time The amount of time since the client began its + current DHCP transaction. This time is + expressed in hundredths of a second + (10^-2 seconds). A 2-octet field containing + an unsigned integer. + + A client MUST include an Elapsed Time option in messages to indicate + how long the client has been trying to complete a DHCP message + exchange. The elapsed time is measured from the time at which the + client sent the first message in the message exchange, and the + elapsed-time field is set to 0 in the first message in the message + exchange. Servers and relay agents use the data value in this option + as input to policy that controls how a server responds to a client + message. For example, the Elapsed Time option allows a secondary + DHCP server to respond to a request when a primary server has not + answered in a reasonable time. The elapsed-time value is a 16-bit + (2-octet) unsigned integer. The client uses the value 0xffff to + represent any elapsed-time values greater than the largest time value + that can be represented in the Elapsed Time option. + +21.10. Relay Message Option + + The Relay Message option carries a DHCP message in a Relay-forward or + Relay-reply message. + + The format of the Relay Message option is: + + 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_RELAY_MSG | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + . DHCP-relay-message . + . . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 21: Relay Message Option Format + + + + + + + + +Mrugalski, et al. Standards Track [Page 109] + +RFC 8415 DHCP for IPv6 November 2018 + + + option-code OPTION_RELAY_MSG (9). + + option-len Length of DHCP-relay-message field. + + DHCP-relay-message In a Relay-forward message, the received + message, relayed verbatim to the next relay + agent or server; in a Relay-reply message, + the message to be copied and relayed to the + relay agent or client whose address is in the + peer-address field of the Relay-reply + message. The length, in octets, is specified + by option-len. + +21.11. Authentication Option + + The Authentication option carries authentication information to + authenticate the identity and contents of DHCP messages. The use of + the Authentication option is described in Section 20. The delayed + authentication protocol, defined in [RFC3315], has been obsoleted by + this document, due to lack of usage (see Section 25). The format of + the Authentication option is: + + 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_AUTH | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | protocol | algorithm | RDM | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | replay detection (64 bits) +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + . authentication information . + . (variable length) . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 22: Authentication Option Format + + option-code OPTION_AUTH (11). + + option-len 11 + length of authentication + information field. + + protocol The authentication protocol used in + this Authentication option. A + 1-octet unsigned integer. + + + + +Mrugalski, et al. Standards Track [Page 110] + +RFC 8415 DHCP for IPv6 November 2018 + + + algorithm The algorithm used in the + authentication protocol. A 1-octet + unsigned integer. + + RDM The replay detection method used in + this Authentication option. A + 1-octet unsigned integer. + + replay detection The replay detection information for + the RDM. A 64-bit (8-octet) field. + + authentication information The authentication information, as + specified by the protocol and + algorithm used in this Authentication + option. A variable-length field + (11 octets less than the value in the + option-len field). + + IANA maintains a registry for the protocol, algorithm, and RDM values + at <https://www.iana.org/assignments/auth-namespaces>. + +21.12. Server Unicast Option + + The server sends this option to a client to indicate to the client + that it is allowed to unicast messages to the server. The format of + the Server Unicast option is: + + 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_UNICAST | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | server-address | + | | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 23: Server Unicast Option Format + + option-code OPTION_UNICAST (12). + + option-len 16. + + server-address The 128-bit address to which the client + should send messages delivered using unicast. + + + + + +Mrugalski, et al. Standards Track [Page 111] + +RFC 8415 DHCP for IPv6 November 2018 + + + The server specifies in the server-address field the address to which + the client is to send unicast messages. When a client receives this + option, where permissible and appropriate the client sends messages + directly to the server using the address specified in the + server-address field of the option. + + When the server sends a Server Unicast option to the client, some + messages from the client will not be relayed by relay agents and will + not include relay agent options from the relay agents. Therefore, a + server should only send a Server Unicast option to a client when + relay agents are not sending relay agent options. A DHCP server + rejects any messages sent inappropriately using unicast to ensure + that messages are relayed by relay agents when relay agent options + are in use. + + Details about when the client may send messages to the server using + unicast are provided in Section 18. + +21.13. Status Code Option + + This option returns a status indication related to the DHCP message + or option in which it appears. The format of the Status Code + option is: + + 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_STATUS_CODE | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | status-code | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + . . + . status-message . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 24: Status Code Option Format + + option-code OPTION_STATUS_CODE (13). + + option-len 2 + length of status-message field. + + status-code The numeric code for the status encoded in + this option. A 2-octet field containing an + unsigned integer. + + + + + + +Mrugalski, et al. Standards Track [Page 112] + +RFC 8415 DHCP for IPv6 November 2018 + + + status-message A UTF-8 encoded [RFC3629] text string + suitable for display to an end user. + MUST NOT be null-terminated. A + variable-length field (2 octets less than the + value in the option-len field). + + A Status Code option may appear in the "options" field of a DHCP + message and/or in the "options" field of another option. If the + Status Code option does not appear in a message in which the option + could appear, the status of the message is assumed to be Success. + + The status-code values previously defined by [RFC3315] and + [RFC3633] are: + + +---------------+------+--------------------------------------------+ + | Name | Code | Description | + +---------------+------+--------------------------------------------+ + | Success | 0 | Success. | + | | | | + | UnspecFail | 1 | Failure, reason unspecified; this status | + | | | code is sent by either a client or a | + | | | server to indicate a failure not | + | | | explicitly specified in this document. | + | | | | + | NoAddrsAvail | 2 | The server has no addresses available to | + | | | assign to the IA(s). | + | | | | + | NoBinding | 3 | Client record (binding) unavailable. | + | | | | + | NotOnLink | 4 | The prefix for the address is not | + | | | appropriate for the link to which the | + | | | client is attached. | + | | | | + | UseMulticast | 5 | Sent by a server to a client to force the | + | | | client to send messages to the server | + | | | using the | + | | | All_DHCP_Relay_Agents_and_Servers | + | | | multicast address. | + | | | | + | NoPrefixAvail | 6 | The server has no prefixes available to | + | | | assign to the IA_PD(s). | + +---------------+------+--------------------------------------------+ + + Table 3: Status Code Definitions + + See the "Status Codes" registry at <https://www.iana.org/assignments/ + dhcpv6-parameters> for the current list of status codes. + + + + +Mrugalski, et al. Standards Track [Page 113] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.14. Rapid Commit Option + + The Rapid Commit option is used to signal the use of the two-message + exchange for address assignment. The format of the Rapid Commit + option is: + + 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_RAPID_COMMIT | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 25: Rapid Commit Option Format + + option-code OPTION_RAPID_COMMIT (14). + + option-len 0. + + A client MAY include this option in a Solicit message if the client + is prepared to perform the Solicit/Reply message exchange described + in Section 18.2.1. + + A server MUST include this option in a Reply message sent in response + to a Solicit message when completing the Solicit/Reply message + exchange. + + DISCUSSION: + + Each server that responds with a Reply to a Solicit that includes + a Rapid Commit option will commit the leases in the Reply message + to the client but will not receive any confirmation that the + client has received the Reply message. Therefore, if more than + one server responds to a Solicit that includes a Rapid Commit + option, all but one server will commit leases that are not + actually used by the client; this could result in incorrect + address information in DNS if the DHCP servers update DNS + [RFC4704], and responses to leasequery requests [RFC5007] may + include information on leases not in use by the client. + + The problem of unused leases can be minimized by designing the + DHCP service so that only one server responds to the Solicit or by + using relatively short lifetimes for newly assigned leases. + + + + + + + + + +Mrugalski, et al. Standards Track [Page 114] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.15. User Class Option + + The User Class option is used by a client to identify the type or + category of users or applications it represents. + + The format of the User Class option is: + + 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_USER_CLASS | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . user-class-data . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 26: User Class Option Format + + option-code OPTION_USER_CLASS (15). + + option-len Length of user-class-data field. + + user-class-data The user classes carried by the client. The + length, in octets, is specified by + option-len. + + The information contained in the data area of this option is + contained in one or more opaque fields that represent the user class + or classes of which the client is a member. A server selects + configuration information for the client based on the classes + identified in this option. For example, the User Class option can be + used to configure all clients of people in the accounting department + with a different printer than clients of people in the marketing + department. The user class information carried in this option MUST + be configurable on the client. + + The data area of the User Class option MUST contain one or more + instances of user-class-data information. Each instance of + user-class-data is formatted as follows: + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ + | user-class-len | opaque-data | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ + + Figure 27: Format of user-class-data Field + + + + + +Mrugalski, et al. Standards Track [Page 115] + +RFC 8415 DHCP for IPv6 November 2018 + + + The user-class-len field is 2 octets long and specifies the length of + the opaque user-class-data in network byte order. + + A server interprets the classes identified in this option according + to its configuration to select the appropriate configuration + information for the client. A server may use only those user classes + that it is configured to interpret in selecting configuration + information for a client and ignore any other user classes. In + response to a message containing a User Class option, a server may + include a User Class option containing those classes that were + successfully interpreted by the server so that the client can be + informed of the classes interpreted by the server. + +21.16. Vendor Class Option + + This option is used by a client to identify the vendor that + manufactured the hardware on which the client is running. The + information contained in the data area of this option is contained in + one or more opaque fields that identify details of the hardware + configuration. The format of the Vendor Class option is: + + 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_VENDOR_CLASS | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | enterprise-number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . vendor-class-data . + . . . . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 28: Vendor Class Option Format + + option-code OPTION_VENDOR_CLASS (16). + + option-len 4 + length of vendor-class-data field. + + enterprise-number The vendor's registered Enterprise Number as + maintained by IANA [IANA-PEN]. A 4-octet + field containing an unsigned integer. + + vendor-class-data The hardware configuration of the node on + which the client is running. A + variable-length field (4 octets less than the + value in the option-len field). + + + + +Mrugalski, et al. Standards Track [Page 116] + +RFC 8415 DHCP for IPv6 November 2018 + + + The vendor-class-data field is composed of a series of separate + items, each of which describes some characteristic of the client's + hardware configuration. Examples of vendor-class-data instances + might include the version of the operating system the client is + running or the amount of memory installed on the client. + + Each instance of vendor-class-data is formatted as follows: + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ + | vendor-class-len | opaque-data | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ + + Figure 29: Format of vendor-class-data Field + + The vendor-class-len field is 2 octets long and specifies the length + of the opaque vendor-class-data in network byte order. + + Servers and clients MUST NOT include more than one instance of + OPTION_VENDOR_CLASS with the same Enterprise Number. Each instance + of OPTION_VENDOR_CLASS can carry multiple vendor-class-data + instances. + +21.17. Vendor-specific Information Option + + This option is used by clients and servers to exchange vendor- + specific information. + + The format of the Vendor-specific Information option is: + + 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_VENDOR_OPTS | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | enterprise-number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . vendor-option-data . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 30: Vendor-specific Information Option Format + + option-code OPTION_VENDOR_OPTS (17). + + option-len 4 + length of vendor-option-data field. + + + + + +Mrugalski, et al. Standards Track [Page 117] + +RFC 8415 DHCP for IPv6 November 2018 + + + enterprise-number The vendor's registered Enterprise Number as + maintained by IANA [IANA-PEN]. A 4-octet + field containing an unsigned integer. + + vendor-option-data Vendor options, interpreted by + vendor-specific code on the clients and + servers. A variable-length field (4 octets + less than the value in the option-len field). + + The definition of the information carried in this option is vendor + specific. The vendor is indicated in the enterprise-number field. + Use of vendor-specific information allows enhanced operation, + utilizing additional features in a vendor's DHCP implementation. A + DHCP client that does not receive requested vendor-specific + information will still configure the node's IPv6 stack to be + functional. + + The vendor-option-data field MUST be encoded as a sequence of + code/length/value fields of format identical to the DHCP options (see + Section 21.1). The sub-option codes are defined by the vendor + identified in the enterprise-number field and are not managed by + IANA. Each of the sub-options is formatted 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | sub-opt-code | sub-option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . sub-option-data . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 31: Vendor-specific Options Format + + sub-opt-code The code for the sub-option. A 2-octet + field. + + sub-option-len An unsigned integer giving the length of the + sub-option-data field in this sub-option in + octets. A 2-octet field. + + sub-option-data The data area for the sub-option. The + length, in octets, is specified by + sub-option-len. + + + + + + +Mrugalski, et al. Standards Track [Page 118] + +RFC 8415 DHCP for IPv6 November 2018 + + + Multiple instances of the Vendor-specific Information option may + appear in a DHCP message. Each instance of the option is interpreted + according to the option codes defined by the vendor identified by the + Enterprise Number in that option. Servers and clients MUST NOT send + more than one instance of the Vendor-specific Information option with + the same Enterprise Number. Each instance of the Vendor-specific + Information option MAY contain multiple sub-options. + + A client that is interested in receiving a Vendor-specific + Information option: + + - MUST specify the Vendor-specific Information option in an Option + Request option. + + - MAY specify an associated Vendor Class option (see Section 21.16). + + - MAY specify the Vendor-specific Information option with + appropriate data. + + Servers only return the Vendor-specific Information options if + specified in Option Request options from clients and: + + - MAY use the Enterprise Numbers in the associated Vendor Class + options to restrict the set of Enterprise Numbers in the + Vendor-specific Information options returned. + + - MAY return all configured Vendor-specific Information options. + + - MAY use other information in the packet or in its configuration to + determine which set of Enterprise Numbers in the Vendor-specific + Information options to return. + +21.18. Interface-Id Option + + The relay agent MAY send the Interface-Id option to identify the + interface on which the client message was received. If a relay agent + receives a Relay-reply message with an Interface-Id option, the relay + agent relays the message to the client through the interface + identified by the option. + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 119] + +RFC 8415 DHCP for IPv6 November 2018 + + + The format of the Interface-Id option is: + + 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_INTERFACE_ID | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . interface-id . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 32: Interface-Id Option Format + + option-code OPTION_INTERFACE_ID (18). + + option-len Length of interface-id field. + + interface-id An opaque value of arbitrary length generated + by the relay agent to identify one of the + relay agent's interfaces. The length, in + octets, is specified by option-len. + + The server MUST copy the Interface-Id option from the Relay-forward + message into the Relay-reply message the server sends to the relay + agent in response to the Relay-forward message. This option MUST NOT + appear in any message except a Relay-forward or Relay-reply message. + + Servers MAY use the interface-id field for parameter assignment + policies. The interface-id value SHOULD be considered an opaque + value, with policies based on exact match only; that is, the + interface-id field SHOULD NOT be internally parsed by the server. + The interface-id value for an interface SHOULD be stable and remain + unchanged -- for example, after the relay agent is restarted; if the + interface-id value changes, a server will not be able to use it + reliably in parameter assignment policies. + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 120] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.19. Reconfigure Message Option + + A server includes a Reconfigure Message option in a Reconfigure + message to indicate to the client whether the client responds with a + Renew message, a Rebind message, or an Information-request message. + The format of the Reconfigure Message option is: + + 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_RECONF_MSG | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | msg-type | + +-+-+-+-+-+-+-+-+ + + Figure 33: Reconfigure Message Option Format + + option-code OPTION_RECONF_MSG (19). + + option-len 1. + + msg-type 5 for Renew message, 6 for Rebind message, + 11 for Information-request message. A + 1-octet unsigned integer. + + The Reconfigure Message option can only appear in a Reconfigure + message. + +21.20. Reconfigure Accept Option + + A client uses the Reconfigure Accept option to announce to the server + whether the client is willing to accept Reconfigure messages, and a + server uses this option to tell the client whether or not to accept + Reconfigure messages. In the absence of this option, the default + behavior is that the client is unwilling to accept Reconfigure + messages. The format of the Reconfigure Accept option is: + + 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_RECONF_ACCEPT | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 34: Reconfigure Accept Option Format + + option-code OPTION_RECONF_ACCEPT (20). + + option-len 0. + + + +Mrugalski, et al. Standards Track [Page 121] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.21. Identity Association for Prefix Delegation Option + + The IA_PD option is used to carry a prefix delegation identity + association, the parameters associated with the IA_PD, and the + prefixes associated with it. The format of the IA_PD option is: + + 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_IA_PD | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | IAID (4 octets) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | T1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | T2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . + . IA_PD-options . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 35: Identity Association for Prefix Delegation Option Format + + option-code OPTION_IA_PD (25). + + option-len 12 + length of IA_PD-options field. + + IAID The unique identifier for this IA_PD; the + IAID must be unique among the identifiers for + all of this client's IA_PDs. The number + space for IA_PD IAIDs is separate from the + number space for other IA option types (i.e., + IA_NA and IA_TA). A 4-octet field containing + an unsigned integer. + + T1 The time interval after which the client + should contact the server from which the + prefixes in the IA_PD were obtained to extend + the lifetimes of the prefixes delegated to + the IA_PD; T1 is a time duration relative to + the message reception time expressed in units + of seconds. A 4-octet field containing an + unsigned integer. + + + + + + + +Mrugalski, et al. Standards Track [Page 122] + +RFC 8415 DHCP for IPv6 November 2018 + + + T2 The time interval after which the client + should contact any available server to extend + the lifetimes of the prefixes assigned to the + IA_PD; T2 is a time duration relative to the + message reception time expressed in units of + seconds. A 4-octet field containing an + unsigned integer. + + IA_PD-options Options associated with this IA_PD. A + variable-length field (12 octets less than + the value in the option-len field). + + The IA_PD-options field encapsulates those options that are specific + to this IA_PD. For example, all of the IA Prefix options (see + Section 21.22) carrying the prefixes associated with this IA_PD are + in the IA_PD-options field. + + An IA_PD option may only appear in the options area of a DHCP + message. A DHCP message may contain multiple IA_PD options (though + each must have a unique IAID). + + The status of any operations involving this IA_PD is indicated in a + Status Code option (see Section 21.13) in the IA_PD-options field. + + Note that an IA_PD has no explicit "lifetime" or "lease length" of + its own. When the valid lifetimes of all of the prefixes in an IA_PD + have expired, the IA_PD can be considered as having expired. T1 and + T2 fields are included to give the server explicit control over when + a client should contact the server about a specific IA_PD. + + In a message sent by a client to a server, the T1 and T2 fields + SHOULD be set to 0. The server MUST ignore any values in these + fields in messages received from a client. + + In a message sent by a server to a client, the client MUST use the + values in the T1 and T2 fields for the T1 and T2 timers, unless + values in those fields are 0. The values in the T1 and T2 fields are + the number of seconds until T1 and T2. + + The server selects the T1 and T2 times to allow the client to extend + the lifetimes of any prefixes in the IA_PD before the lifetimes + expire, even if the server is unavailable for some short period of + time. Recommended values for T1 and T2 are 0.5 and 0.8 times the + shortest preferred lifetime of the prefixes in the IA_PD that the + server is willing to extend, respectively. If the time at which the + prefixes in an IA_PD are to be renewed is to be left to the + discretion of the client, the server sets T1 and T2 to 0. The client + MUST follow the rules defined in Section 14.2. + + + +Mrugalski, et al. Standards Track [Page 123] + +RFC 8415 DHCP for IPv6 November 2018 + + + If a client receives an IA_PD with T1 greater than T2 and both T1 and + T2 are greater than 0, the client discards the IA_PD option and + processes the remainder of the message as though the server had not + included the IA_PD option. + +21.22. IA Prefix Option + + The IA Prefix option is used to specify a prefix associated with an + IA_PD. The IA Prefix option must be encapsulated in the + IA_PD-options field of an IA_PD option (see Section 21.21). + + 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_IAPREFIX | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | preferred-lifetime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | valid-lifetime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | prefix-length | | + +-+-+-+-+-+-+-+-+ IPv6-prefix | + | (16 octets) | + | | + | | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | . + +-+-+-+-+-+-+-+-+ . + . IAprefix-options . + . . + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 36: IA Prefix Option Format + + option-code OPTION_IAPREFIX (26). + + option-len 25 + length of IAprefix-options field. + + preferred-lifetime The preferred lifetime for the prefix in the + option, expressed in units of seconds. A + value of 0xffffffff represents "infinity" + (see Section 7.7). A 4-octet field + containing an unsigned integer. + + + + + + + +Mrugalski, et al. Standards Track [Page 124] + +RFC 8415 DHCP for IPv6 November 2018 + + + valid-lifetime The valid lifetime for the prefix in the + option, expressed in units of seconds. A + value of 0xffffffff represents "infinity". A + 4-octet field containing an unsigned integer. + + prefix-length Length for this prefix in bits. A 1-octet + unsigned integer. + + IPv6-prefix An IPv6 prefix. A 16-octet field. + + IAprefix-options Options associated with this prefix. A + variable-length field (25 octets less than + the value in the option-len field). + + In a message sent by a client to a server, the preferred-lifetime and + valid-lifetime fields SHOULD be set to 0. The server MUST ignore any + received values in these lifetime fields. + + The client SHOULD NOT send an IA Prefix option with 0 in the + "prefix-length" field (and an unspecified value (::) in the + "IPv6-prefix" field). A client MAY send a non-zero value in the + "prefix-length" field and the unspecified value (::) in the + "IPv6-prefix" field to indicate a preference for the size of the + prefix to be delegated. See [RFC8168] for further details on prefix- + length hints. + + The client MUST discard any prefixes for which the preferred lifetime + is greater than the valid lifetime. + + The values in the preferred-lifetime and valid-lifetime fields are + the number of seconds remaining in each lifetime. See + Section 18.2.10.1 for more details on how these values are used for + delegated prefixes. + + As per Section 7.7, the value of 0xffffffff for the preferred + lifetime or the valid lifetime is taken to mean "infinity" and should + be used carefully. + + An IA Prefix option may appear only in an IA_PD option. More than + one IA Prefix option can appear in a single IA_PD option. + + The status of any operations involving this IA Prefix option is + indicated in a Status Code option (see Section 21.13) in the + IAprefix-options field. + + + + + + + +Mrugalski, et al. Standards Track [Page 125] + +RFC 8415 DHCP for IPv6 November 2018 + + +21.23. Information Refresh Time Option + + This option is requested by clients and returned by servers to + specify an upper bound for how long a client should wait before + refreshing information retrieved from a DHCP server. It is only used + in Reply messages in response to Information-request messages. In + other messages, there will usually be other information that + indicates when the client should contact the server, e.g., T1/T2 + times and lifetimes. This option is useful when the configuration + parameters change or during a renumbering event, as clients running + in the stateless mode will be able to update their configuration. + + The format of the Information Refresh Time option is: + + 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_INFORMATION_REFRESH_TIME| option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | information-refresh-time | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 37: Information Refresh Time Option Format + + option-code OPTION_INFORMATION_REFRESH_TIME (32). + + option-len 4. + + information-refresh-time Time duration relative to the current + time, expressed in units of seconds. A + 4-octet field containing an unsigned + integer. + + A DHCP client MUST request this option in the Option Request option + (see Section 21.7) when sending Information-request messages. A + client MUST NOT request this option in the Option Request option in + any other messages. + + A server sending a Reply to an Information-request message SHOULD + include this option if it is requested in the Option Request option + of the Information-request. The option value MUST NOT be smaller + than IRT_MINIMUM. This option MUST only appear in the top-level + options area of Reply messages. + + If the Reply to an Information-request message does not contain this + option, the client MUST behave as if the option with the value + IRT_DEFAULT was provided. + + + + +Mrugalski, et al. Standards Track [Page 126] + +RFC 8415 DHCP for IPv6 November 2018 + + + A client MUST use the refresh time IRT_MINIMUM if it receives the + option with a value less than IRT_MINIMUM. + + As per Section 7.7, the value 0xffffffff is taken to mean "infinity" + and implies that the client should not refresh its configuration data + without some other trigger (such as detecting movement to a new + link). + + If a client contacts the server to obtain new data or refresh some + existing data before the refresh time expires, then it SHOULD also + refresh all data covered by this option. + + When the client detects that the refresh time has expired, it SHOULD + try to update its configuration data by sending an + Information-request as specified in Section 18.2.6, except that the + client MUST delay sending the first Information-request by a random + amount of time between 0 and INF_MAX_DELAY. + + A client MAY have a maximum value for the refresh time, where that + value is used whenever the client receives this option with a value + higher than the maximum. This also means that the maximum value is + used when the received value is "infinity". A maximum value might + make the client less vulnerable to attacks based on forged DHCP + messages. Without a maximum value, a client may be made to use wrong + information for a possibly infinite period of time. There may, + however, be reasons for having a very long refresh time, so it may be + useful for this maximum value to be configurable. + +21.24. SOL_MAX_RT Option + + A DHCP server sends the SOL_MAX_RT option to a client to override the + default value of SOL_MAX_RT. The value of SOL_MAX_RT in the option + replaces the default value defined in Section 7.6. One use for the + SOL_MAX_RT option is to set a higher value for SOL_MAX_RT; this + reduces the Solicit traffic from a client that has not received a + response to its Solicit messages. + + The format of the SOL_MAX_RT option is: + + 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_SOL_MAX_RT | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | SOL_MAX_RT value | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 38: SOL_MAX_RT Option Format + + + +Mrugalski, et al. Standards Track [Page 127] + +RFC 8415 DHCP for IPv6 November 2018 + + + option-code OPTION_SOL_MAX_RT (82). + + option-len 4. + + SOL_MAX_RT value Overriding value for SOL_MAX_RT in seconds; + MUST be in this range: 60 <= "value" <= 86400 + (1 day). A 4-octet field containing an + unsigned integer. + + A DHCP client MUST include the SOL_MAX_RT option code in any Option + Request option (see Section 21.7) it sends in a Solicit message. + + The DHCP server MAY include the SOL_MAX_RT option in any response it + sends to a client that has included the SOL_MAX_RT option code in an + Option Request option. The SOL_MAX_RT option is sent as a top-level + option in the message to the client. + + A DHCP client MUST ignore any SOL_MAX_RT option values that are less + than 60 or more than 86400. + + If a DHCP client receives a message containing a SOL_MAX_RT option + that has a valid value for SOL_MAX_RT, the client MUST set its + internal SOL_MAX_RT parameter to the value contained in the + SOL_MAX_RT option. This value of SOL_MAX_RT is then used by the + retransmission mechanism defined in Sections 15 and 18.2.1. + + The purpose of this mechanism is to give network administrators a way + to avoid excessive DHCP traffic if all DHCP servers become + unavailable. Therefore, this value is expected to be retained for as + long as practically possible. + + An updated SOL_MAX_RT value applies only to the network interface on + which the client received the SOL_MAX_RT option. + +21.25. INF_MAX_RT Option + + A DHCP server sends the INF_MAX_RT option to a client to override the + default value of INF_MAX_RT. The value of INF_MAX_RT in the option + replaces the default value defined in Section 7.6. One use for the + INF_MAX_RT option is to set a higher value for INF_MAX_RT; this + reduces the Information-request traffic from a client that has not + received a response to its Information-request messages. + + + + + + + + + +Mrugalski, et al. Standards Track [Page 128] + +RFC 8415 DHCP for IPv6 November 2018 + + + The format of the INF_MAX_RT option is: + + 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_INF_MAX_RT | option-len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | INF_MAX_RT value | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 39: INF_MAX_RT Option Format + + option-code OPTION_INF_MAX_RT (83). + + option-len 4. + + INF_MAX_RT value Overriding value for INF_MAX_RT in seconds; + MUST be in this range: 60 <= "value" <= 86400 + (1 day). A 4-octet field containing an + unsigned integer. + + A DHCP client MUST include the INF_MAX_RT option code in any Option + Request option (see Section 21.7) it sends in an Information-request + message. + + The DHCP server MAY include the INF_MAX_RT option in any response it + sends to a client that has included the INF_MAX_RT option code in an + Option Request option. The INF_MAX_RT option is a top-level option + in the message to the client. + + A DHCP client MUST ignore any INF_MAX_RT option values that are less + than 60 or more than 86400. + + If a DHCP client receives a message containing an INF_MAX_RT option + that has a valid value for INF_MAX_RT, the client MUST set its + internal INF_MAX_RT parameter to the value contained in the + INF_MAX_RT option. This value of INF_MAX_RT is then used by the + retransmission mechanism defined in Sections 15 and 18.2.6. + + An updated INF_MAX_RT value applies only to the network interface on + which the client received the INF_MAX_RT option. + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 129] + +RFC 8415 DHCP for IPv6 November 2018 + + +22. Security Considerations + + This section discusses security considerations that are not related + to privacy. See Section 23 for a discussion dedicated to privacy. + + The threat to DHCP is inherently an insider threat (assuming a + properly configured network where DHCP ports are blocked on the + perimeter gateways of the enterprise). Regardless of the gateway + configuration, however, the potential attacks by insiders and + outsiders are the same. + + DHCP lacks end-to-end encryption between clients and servers; thus, + hijacking, tampering, and eavesdropping attacks are all possible as a + result. Some network environments (discussed below) can be secured + through various means to minimize these attacks. + + One attack specific to a DHCP client is the establishment of a + malicious server with the intent of providing incorrect configuration + information to the client. The motivation for doing so may be to + mount a "man in the middle" attack that causes the client to + communicate with a malicious server instead of a valid server for + some service (such as DNS or NTP). The malicious server may also + mount a DoS attack through misconfiguration of the client; this + attack would cause all network communication from the client to fail. + + A malicious DHCP server might cause a client to set its SOL_MAX_RT + and INF_MAX_RT parameters to an unreasonably high value with the + SOL_MAX_RT (see Section 21.24) and INF_MAX_RT (see Section 21.25) + options; this may cause an undue delay in a client completing its + DHCP protocol transaction in the case where no other valid response + is received. Assuming that the client also receives a response from + a valid DHCP server, large values for SOL_MAX_RT and INF_MAX_RT will + not have any effect. + + A malicious server can also send a Server Unicast option (see + Section 21.12) to a client in an Advertise message, thus potentially + causing the client to bypass relays and communicate only with the + malicious server for subsequent Request and Renew messages. + + Another threat to DHCP clients originates from mistakenly or + accidentally configured DHCP servers that answer DHCP client requests + with unintentionally incorrect configuration parameters. + + A DHCP client may also be subject to attack through the receipt of a + Reconfigure message from a malicious server that causes the client to + obtain incorrect configuration information from that server. Note + that although a client sends its response (Renew, Rebind, or + Information-request message) through a relay agent and, therefore, + + + +Mrugalski, et al. Standards Track [Page 130] + +RFC 8415 DHCP for IPv6 November 2018 + + + that response will only be received by servers to which DHCP messages + are relayed, a malicious server could send a Reconfigure message to a + client, followed (after an appropriate delay) by a Reply message that + would be accepted by the client. Thus, a malicious server that is + not on the network path between the client and the server may still + be able to mount a Reconfigure attack on a client. The use of + transaction IDs that are cryptographically sound and cannot easily be + predicted will also reduce the probability that such an attack will + be successful. + + Because of the opportunity for attack through the Reconfigure + message, a DHCP client MUST discard any Reconfigure message that does + not include authentication or that does not pass the validation + process for the authentication protocol. + + RKAP, described in Section 20.4, provides protection against the use + of a Reconfigure message by a malicious DHCP server to mount a DoS or + man-in-the-middle attack on a client. This protocol can be + compromised by an attacker that can intercept the initial message in + which the DHCP server sends the key "in plain text" to the client. + + Many of these attacks by rogue servers can be mitigated by making use + of the mechanisms described in [RFC7610] and [RFC7513]. + + The threat specific to a DHCP server is an invalid client + masquerading as a valid client. The motivation for this may be for + theft of service, or to circumvent auditing for any number of + nefarious purposes. + + The threat common to both the client and the server is the "resource- + exhaustion" DoS attack. These attacks typically involve the + exhaustion of available assigned addresses or delegatable prefixes, + or the exhaustion of CPU or network bandwidth, and are present any + time there is a shared resource. Some forms of these exhaustion + attacks can be partially mitigated by appropriate server policy, + e.g., limiting the maximum number of leases any one client can get. + + The messages exchanged between relay agents and servers may be used + to mount a man-in-the-middle or DoS attack. Communication between a + server and a relay agent, and communication between relay agents, can + be authenticated and encrypted through the use of IPsec, as described + in [RFC8213]. + + + + + + + + + +Mrugalski, et al. Standards Track [Page 131] + +RFC 8415 DHCP for IPv6 November 2018 + + + However, the use of manually configured pre-shared keys for IPsec + between relay agents and servers does not defend against replayed + DHCP messages. Replayed messages can represent a DoS attack through + exhaustion of processing resources but not through misconfiguration + or exhaustion of other resources such as assignable addresses and + delegatable prefixes. + + Various network environments also offer levels of security if + deployed as described below. + + - In enterprise and factory networks, use of authentication per + [IEEE-802.1x] can prevent unknown or untrusted clients from + connecting to the network. However, this does not necessarily + assure that the connected client will be a good DHCP or network + actor. + + - For wired networks where clients typically are connected to a + switch port, snooping DHCP multicast (or unicast) traffic becomes + difficult, as the switches limit the traffic delivered to a port. + The client's DHCP multicast packets (with destination address + fe02::1:2) are only forwarded to the DHCP server's (or relay's) + switch port -- not all ports. Also, the server's (or relay's) + unicast replies are only delivered to the target client's port -- + not all ports. + + - In public networks (such as a Wi-Fi network in a coffee shop or + airport), it is possible for others within radio range to snoop + DHCP and other traffic. But in these environments, there is very + little if anything that can be learned from the DHCP traffic + itself (either from client to server or from server to client) if + the privacy considerations provided in Section 23 are followed. + Even for devices that do not follow the privacy considerations, + there is little that can be learned that would not be available + from subsequent communications anyway (such as the device's Media + Access Control (MAC) address). Also, because all clients will + typically receive similar configuration details, a bad actor that + initiates a DHCP request itself can learn much of such + information. As mentioned above, one threat is that the RKAP key + for a client can be learned (if the initial + Solicit/Advertise/Request/Reply exchange is monitored) and trigger + a premature reconfiguration, but this is relatively easily + prevented by disallowing direct client-to-client communication on + these networks or using [RFC7610] and [RFC7513]. + + + + + + + + +Mrugalski, et al. Standards Track [Page 132] + +RFC 8415 DHCP for IPv6 November 2018 + + +23. Privacy Considerations + + For an extended discussion about privacy considerations for the + client, see [RFC7824]: + + - In particular, its Section 3 discusses various identifiers that + could be misused to track the client. + + - Its Section 4 discusses existing mechanisms that may have an + impact on a client's privacy. + + - Finally, its Section 5 discusses potential attack vectors. + + For recommendations regarding how to address or mitigate those + issues, see [RFC7844]. + + This specification does not define any allocation strategies for + servers. Implementers are expected to develop their own algorithm + for the server to choose a resource out of the available pool. + Several possible allocation strategies are mentioned in Section 4.3 + of [RFC7824]. Please keep in mind that the list in [RFC7824] is not + exhaustive; there are certainly other possible strategies. Readers + are also encouraged to read [RFC7707] -- in particular, its + Section 4.1.2, which discusses the problems with certain allocation + strategies. + +24. IANA Considerations + + This document does not define any new DHCP name spaces or + definitions. + + The publication of this document does not change the assignment rules + for new values for message types, option codes, DUID types, or status + codes. + + The list of assigned values used in DHCPv6 is available at + <https://www.iana.org/assignments/dhcpv6-parameters>. + + IANA has updated <https://www.iana.org/assignments/dhcpv6-parameters> + to add a reference to this document for definitions previously + created by [RFC3315], [RFC3633], [RFC4242], and [RFC7083]. + + IANA has added two columns to the DHCPv6 "Option Codes" registry at + <https://www.iana.org/assignments/dhcpv6-parameters> to indicate + which options are allowed to appear in a client's Option Request + option (see Section 21.7) and which options are singleton options + + + + + +Mrugalski, et al. Standards Track [Page 133] + +RFC 8415 DHCP for IPv6 November 2018 + + + (only allowed to appear once as a top-level or encapsulated option; + see Section 16 of [RFC7227]). Table 4 provides the data for the + options assigned by IANA at the time of writing this document. + + +---------+--------------------------+------------------+-----------+ + | Option | Option Name ("OPTION" | Client ORO (1) | Singleton | + | | prefix removed) | | Option | + +---------+--------------------------+------------------+-----------+ + | 1 | CLIENTID | No | Yes | + | 2 | SERVERID | No | Yes | + | 3 | IA_NA | No | No | + | 4 | IA_TA | No | No | + | 5 | IAADDR | No | No | + | 6 | ORO | No | Yes | + | 7 | PREFERENCE | No | Yes | + | 8 | ELAPSED_TIME | No | Yes | + | 9 | RELAY_MSG | No | Yes | + | 11 | AUTH | No | Yes | + | 12 | UNICAST | No | Yes | + | 13 | STATUS_CODE | No | Yes | + | 14 | RAPID_COMMIT | No | Yes | + | 15 | USER_CLASS | No | Yes | + | 16 | VENDOR_CLASS | No | No (2) | + | 17 | VENDOR_OPTS | Optional | No (2) | + | 18 | INTERFACE_ID | No | Yes | + | 19 | RECONF_MSG | No | Yes | + | 20 | RECONF_ACCEPT | No | Yes | + | 21 | SIP_SERVER_D | Yes | Yes | + | 22 | SIP_SERVER_A | Yes | Yes | + | 23 | DNS_SERVERS | Yes | Yes | + | 24 | DOMAIN_LIST | Yes | Yes | + | 25 | IA_PD | No | No | + | 26 | IAPREFIX | No | No | + | 27 | NIS_SERVERS | Yes | Yes | + | 28 | NISP_SERVERS | Yes | Yes | + | 29 | NIS_DOMAIN_NAME | Yes | Yes | + | 30 | NISP_DOMAIN_NAME | Yes | Yes | + | 31 | SNTP_SERVERS | Yes | Yes | + | 32 | INFORMATION_REFRESH_TIME | Required for | Yes | + | | | Information- | | + | | | request | | + | 33 | BCMCS_SERVER_D | Yes | Yes | + | 34 | BCMCS_SERVER_A | Yes | Yes | + | 36 | GEOCONF_CIVIC | Yes | Yes | + | 37 | REMOTE_ID | No | Yes | + | 38 | SUBSCRIBER_ID | No | Yes | + | 39 | CLIENT_FQDN | Yes | Yes | + | 40 | PANA_AGENT | Yes | Yes | + + + +Mrugalski, et al. Standards Track [Page 134] + +RFC 8415 DHCP for IPv6 November 2018 + + + | 41 | NEW_POSIX_TIMEZONE | Yes | Yes | + | 42 | NEW_TZDB_TIMEZONE | Yes | Yes | + | 43 | ERO | No | Yes | + | 44 | LQ_QUERY | No | Yes | + | 45 | CLIENT_DATA | No | Yes | + | 46 | CLT_TIME | No | Yes | + | 47 | LQ_RELAY_DATA | No | Yes | + | 48 | LQ_CLIENT_LINK | No | Yes | + | 49 | MIP6_HNIDF | Yes | Yes | + | 50 | MIP6_VDINF | Yes | Yes | + | 51 | V6_LOST | Yes | Yes | + | 52 | CAPWAP_AC_V6 | Yes | Yes | + | 53 | RELAY_ID | No | Yes | + | 54 | IPv6_Address-MoS | Yes | Yes | + | 55 | IPv6_FQDN-MoS | Yes | Yes | + | 56 | NTP_SERVER | Yes | Yes | + | 57 | V6_ACCESS_DOMAIN | Yes | Yes | + | 58 | SIP_UA_CS_LIST | Yes | Yes | + | 59 | OPT_BOOTFILE_URL | Yes | Yes | + | 60 | OPT_BOOTFILE_PARAM | Yes | Yes | + | 61 | CLIENT_ARCH_TYPE | No | Yes | + | 62 | NII | Yes | Yes | + | 63 | GEOLOCATION | Yes | Yes | + | 64 | AFTR_NAME | Yes | Yes | + | 65 | ERP_LOCAL_DOMAIN_NAME | Yes | Yes | + | 66 | RSOO | No | Yes | + | 67 | PD_EXCLUDE | Yes | Yes | + | 68 | VSS | No | Yes | + | 69 | MIP6_IDINF | Yes | Yes | + | 70 | MIP6_UDINF | Yes | Yes | + | 71 | MIP6_HNP | Yes | Yes | + | 72 | MIP6_HAA | Yes | Yes | + | 73 | MIP6_HAF | Yes | Yes | + | 74 | RDNSS_SELECTION | Yes | No | + | 75 | KRB_PRINCIPAL_NAME | Yes | Yes | + | 76 | KRB_REALM_NAME | Yes | Yes | + | 77 | KRB_DEFAULT_REALM_NAME | Yes | Yes | + | 78 | KRB_KDC | Yes | Yes | + | 79 | CLIENT_LINKLAYER_ADDR | No | Yes | + | 80 | LINK_ADDRESS | No | Yes | + | 81 | RADIUS | No | Yes | + | 82 | SOL_MAX_RT | Required for | Yes | + | | | Solicit | | + | 83 | INF_MAX_RT | Required for | Yes | + | | | Information- | | + | | | request | | + | 84 | ADDRSEL | Yes | Yes | + | 85 | ADDRSEL_TABLE | Yes | Yes | + + + +Mrugalski, et al. Standards Track [Page 135] + +RFC 8415 DHCP for IPv6 November 2018 + + + | 86 | V6_PCP_SERVER | Yes | No | + | 87 | DHCPV4_MSG | No | Yes | + | 88 | DHCP4_O_DHCP6_SERVER | Yes | Yes | + | 89 | S46_RULE | No | No (3) | + | 90 | S46_BR | No | No | + | 91 | S46_DMR | No | Yes | + | 92 | S46_V4V6BIND | No | Yes | + | 93 | S46_PORTPARAMS | No | Yes | + | 94 | S46_CONT_MAPE | Yes | No | + | 95 | S46_CONT_MAPT | Yes | Yes | + | 96 | S46_CONT_LW | Yes | Yes | + | 97 | 4RD | Yes | Yes | + | 98 | 4RD_MAP_RULE | Yes | Yes | + | 99 | 4RD_NON_MAP_RULE | Yes | Yes | + | 100 | LQ_BASE_TIME | No | Yes | + | 101 | LQ_START_TIME | No | Yes | + | 102 | LQ_END_TIME | No | Yes | + | 103 | DHCP Captive-Portal | Yes | Yes | + | 104 | MPL_PARAMETERS | Yes | No | + | 105 | ANI_ATT | No | Yes | + | 106 | ANI_NETWORK_NAME | No | Yes | + | 107 | ANI_AP_NAME | No | Yes | + | 108 | ANI_AP_BSSID | No | Yes | + | 109 | ANI_OPERATOR_ID | No | Yes | + | 110 | ANI_OPERATOR_REALM | No | Yes | + | 111 | S46_PRIORITY | Yes | Yes | + | 112 | MUD_URL_V6 | No | Yes | + | 113 | V6_PREFIX64 | Yes | No | + | 114 | F_BINDING_STATUS | No | Yes | + | 115 | F_CONNECT_FLAGS | No | Yes | + | 116 | F_DNS_REMOVAL_INFO | No | Yes | + | 117 | F_DNS_HOST_NAME | No | Yes | + | 118 | F_DNS_ZONE_NAME | No | Yes | + | 119 | F_DNS_FLAGS | No | Yes | + | 120 | F_EXPIRATION_TIME | No | Yes | + | 121 | F_MAX_UNACKED_BNDUPD | No | Yes | + | 122 | F_MCLT | No | Yes | + | 123 | F_PARTNER_LIFETIME | No | Yes | + | 124 | F_PARTNER_LIFETIME_SENT | No | Yes | + | 125 | F_PARTNER_DOWN_TIME | No | Yes | + | 126 | F_PARTNER_RAW_CLT_TIME | No | Yes | + | 127 | F_PROTOCOL_VERSION | No | Yes | + | 128 | F_KEEPALIVE_TIME | No | Yes | + | 129 | F_RECONFIGURE_DATA | No | Yes | + | 130 | F_RELATIONSHIP_NAME | No | Yes | + | 131 | F_SERVER_FLAGS | No | Yes | + | 132 | F_SERVER_STATE | No | Yes | + | 133 | F_START_TIME_OF_STATE | No | Yes | + + + +Mrugalski, et al. Standards Track [Page 136] + +RFC 8415 DHCP for IPv6 November 2018 + + + | 134 | F_STATE_EXPIRATION_TIME | No | Yes | + | 135 | RELAY_PORT | No | Yes | + | 143 | IPv6_Address-ANDSF | Yes | Yes | + +---------+--------------------------+------------------+-----------+ + + Table 4: Updated Options + + Notes for Table 4: + + (1) In the "Client ORO" column, a "Yes" for an option means that the + client includes this option code in the Option Request option + (see Section 21.7) if it desires that configuration information, + and a "No" means that the option MUST NOT be included (and + servers SHOULD silently ignore that option code if it appears in + a client's Option Request option). + + (2) For each Enterprise Number, there MUST only be a single + instance. + + (3) See [RFC7598] for details. + + IANA has corrected the range of possible status codes in the "Status + Codes" table at <https://www.iana.org/assignments/dhcpv6-parameters> + by replacing 23-255 (as Unassigned) with 23-65535 (the codes are + 16-bit unsigned integers). + + IANA has updated the All_DHCP_Relay_Agents_and_Servers (ff02::1:2) + and All_DHCP_Servers (ff05::1:3) table entries in the "IPv6 Multicast + Address Space Registry" at <https://www.iana.org/assignments/ + ipv6-multicast-addresses> to reference this document instead of + [RFC3315]. + + IANA has added an "Obsolete" annotation in the "DHCPv6 Delayed + Authentication" entry in the "Authentication Suboption (value 8) - + Protocol identifier values" registry at + <https://www.iana.org/assignments/bootp-dhcp-parameters> and has + added an "Obsolete" annotation in the "Delayed Authentication" entry + in the "Protocol Name Space Values" registry at + <https://www.iana.org/assignments/auth-namespaces>. IANA has also + updated these pages to reference this document instead of [RFC3315]. + + IANA has added a reference to this document for the RDM value of 0 to + the "RDM Name Space Values" registry at + <https://www.iana.org/assignments/auth-namespaces>. + + + + + + + +Mrugalski, et al. Standards Track [Page 137] + +RFC 8415 DHCP for IPv6 November 2018 + + + IANA has updated the "Service Name and Transport Protocol Port Number + Registry" at <https://www.iana.org/assignments/ + service-names-port-numbers> as follows: + + 546/udp This document + 547/udp This document + 547/tcp [RFC5460] + 647/tcp [RFC8156] + +25. Obsoleted Mechanisms + + This specification is mostly a corrected and cleaned-up version of + the original specification -- [RFC3315] -- along with numerous + additions from later RFCs. However, there are a small number of + mechanisms that were not widely deployed, were underspecified, or had + other operational issues. Those mechanisms are now considered + deprecated. Legacy implementations MAY support them, but + implementations conformant to this document MUST NOT rely on them. + + The following mechanisms are now obsolete: + + Delayed authentication. This mechanism was underspecified and + presented a significant operational burden. As a result, after + 10 years its adoption was extremely limited at best. + + Lifetime hints sent by a client. Clients used to be allowed to send + lifetime values as hints. This mechanism was not widely + implemented, and there were known misimplementations that sent the + remaining lifetimes rather than total desired lifetimes. That in + turn was sometimes misunderstood by servers as a request for + ever-decreasing lease lifetimes, which caused issues when values + started approaching zero. Clients now SHOULD set lifetimes to 0 + in IA Address and IA Prefix options, and servers MUST ignore any + requested lifetime value. + + T1/T2 hints sent by a client. These had issues similar to those for + the lifetime hints. Clients now SHOULD set the T1/T2 values to 0 + in IA_NA and IA_PD options, and servers MUST ignore any T1/T2 + values supplied by a client. + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 138] + +RFC 8415 DHCP for IPv6 November 2018 + + +26. References + +26.1. Normative References + + [RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, + DOI 10.17487/RFC0768, August 1980, + <https://www.rfc-editor.org/info/rfc768>. + + [RFC1035] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, + November 1987, <https://www.rfc-editor.org/info/rfc1035>. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 4291, DOI 10.17487/RFC4291, + February 2006, <https://www.rfc-editor.org/info/rfc4291>. + + [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, + "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, + DOI 10.17487/RFC4861, September 2007, + <https://www.rfc-editor.org/info/rfc4861>. + + [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless + Address Autoconfiguration", RFC 4862, + DOI 10.17487/RFC4862, September 2007, + <https://www.rfc-editor.org/info/rfc4862>. + + [RFC6221] Miles, D., Ed., Ooghe, S., Dec, W., Krishnan, S., and A. + Kavanagh, "Lightweight DHCPv6 Relay Agent", RFC 6221, + DOI 10.17487/RFC6221, May 2011, + <https://www.rfc-editor.org/info/rfc6221>. + + [RFC6355] Narten, T. and J. Johnson, "Definition of the UUID-Based + DHCPv6 Unique Identifier (DUID-UUID)", RFC 6355, + DOI 10.17487/RFC6355, August 2011, + <https://www.rfc-editor.org/info/rfc6355>. + + [RFC7227] Hankins, D., Mrugalski, T., Siodelski, M., Jiang, S., and + S. Krishnan, "Guidelines for Creating New DHCPv6 Options", + BCP 187, RFC 7227, DOI 10.17487/RFC7227, May 2014, + <https://www.rfc-editor.org/info/rfc7227>. + + + + + + +Mrugalski, et al. Standards Track [Page 139] + +RFC 8415 DHCP for IPv6 November 2018 + + + [RFC7283] Cui, Y., Sun, Q., and T. Lemon, "Handling Unknown DHCPv6 + Messages", RFC 7283, DOI 10.17487/RFC7283, July 2014, + <https://www.rfc-editor.org/info/rfc7283>. + + [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage + Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, + March 2017, <https://www.rfc-editor.org/info/rfc8085>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in + RFC 2119 Key Words", BCP 14, RFC 8174, + DOI 10.17487/RFC8174, May 2017, + <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", STD 86, RFC 8200, + DOI 10.17487/RFC8200, July 2017, + <https://www.rfc-editor.org/info/rfc8200>. + + [RFC8213] Volz, B. and Y. Pal, "Security of Messages Exchanged + between Servers and Relay Agents", RFC 8213, + DOI 10.17487/RFC8213, August 2017, + <https://www.rfc-editor.org/info/rfc8213>. + +26.2. Informative References + + [IANA-HARDWARE-TYPES] + IANA, "Hardware Types", + <https://www.iana.org/assignments/arp-parameters>. + + [IANA-PEN] IANA, "Private Enterprise Numbers", + <https://www.iana.org/assignments/enterprise-numbers>. + + [IANA-RESERVED-IID] + IANA, "Reserved IPv6 Interface Identifiers", + <https://www.iana.org/assignments/ipv6-interface-ids>. + + [IEEE-802.1x] + IEEE, "IEEE Standard for Local and metropolitan area + networks--Port-Based Network Access Control", + IEEE 802.1X-2010, DOI 10.1109/IEEESTD.2010.5409813, + <https://ieeexplore.ieee.org/servlet/ + opac?punumber=5409757>. + + [RFC826] Plummer, D., "An Ethernet Address Resolution Protocol: Or + Converting Network Protocol Addresses to 48.bit Ethernet + Address for Transmission on Ethernet Hardware", STD 37, + RFC 826, DOI 10.17487/RFC0826, November 1982, + <https://www.rfc-editor.org/info/rfc826>. + + + +Mrugalski, et al. Standards Track [Page 140] + +RFC 8415 DHCP for IPv6 November 2018 + + + [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", + RFC 2131, DOI 10.17487/RFC2131, March 1997, + <https://www.rfc-editor.org/info/rfc2131>. + + [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor + Extensions", RFC 2132, DOI 10.17487/RFC2132, March 1997, + <https://www.rfc-editor.org/info/rfc2132>. + + [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet + Networks", RFC 2464, DOI 10.17487/RFC2464, December 1998, + <https://www.rfc-editor.org/info/rfc2464>. + + [RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6", + RFC 3162, DOI 10.17487/RFC3162, August 2001, + <https://www.rfc-editor.org/info/rfc3162>. + + [RFC3290] Bernet, Y., Blake, S., Grossman, D., and A. Smith, "An + Informal Management Model for Diffserv Routers", RFC 3290, + DOI 10.17487/RFC3290, May 2002, + <https://www.rfc-editor.org/info/rfc3290>. + + [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, + C., and M. Carney, "Dynamic Host Configuration Protocol + for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, + July 2003, <https://www.rfc-editor.org/info/rfc3315>. + + [RFC3629] Yergeau, F., "UTF-8, a transformation format of + ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, + November 2003, <https://www.rfc-editor.org/info/rfc3629>. + + [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic + Host Configuration Protocol (DHCP) version 6", RFC 3633, + DOI 10.17487/RFC3633, December 2003, + <https://www.rfc-editor.org/info/rfc3633>. + + [RFC3646] Droms, R., Ed., "DNS Configuration options for Dynamic + Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3646, + DOI 10.17487/RFC3646, December 2003, + <https://www.rfc-editor.org/info/rfc3646>. + + [RFC3736] Droms, R., "Stateless Dynamic Host Configuration Protocol + (DHCP) Service for IPv6", RFC 3736, DOI 10.17487/RFC3736, + April 2004, <https://www.rfc-editor.org/info/rfc3736>. + + [RFC3769] Miyakawa, S. and R. Droms, "Requirements for IPv6 Prefix + Delegation", RFC 3769, DOI 10.17487/RFC3769, June 2004, + <https://www.rfc-editor.org/info/rfc3769>. + + + + +Mrugalski, et al. Standards Track [Page 141] + +RFC 8415 DHCP for IPv6 November 2018 + + + [RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast + Addresses", RFC 4193, DOI 10.17487/RFC4193, October 2005, + <https://www.rfc-editor.org/info/rfc4193>. + + [RFC4242] Venaas, S., Chown, T., and B. Volz, "Information Refresh + Time Option for Dynamic Host Configuration Protocol for + IPv6 (DHCPv6)", RFC 4242, DOI 10.17487/RFC4242, + November 2005, <https://www.rfc-editor.org/info/rfc4242>. + + [RFC4477] Chown, T., Venaas, S., and C. Strauf, "Dynamic Host + Configuration Protocol (DHCP): IPv4 and IPv6 Dual-Stack + Issues", RFC 4477, DOI 10.17487/RFC4477, May 2006, + <https://www.rfc-editor.org/info/rfc4477>. + + [RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for + IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) + Option", RFC 4704, DOI 10.17487/RFC4704, October 2006, + <https://www.rfc-editor.org/info/rfc4704>. + + [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy + Extensions for Stateless Address Autoconfiguration in + IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, + <https://www.rfc-editor.org/info/rfc4941>. + + [RFC4943] Roy, S., Durand, A., and J. Paugh, "IPv6 Neighbor + Discovery On-Link Assumption Considered Harmful", + RFC 4943, DOI 10.17487/RFC4943, September 2007, + <https://www.rfc-editor.org/info/rfc4943>. + + [RFC4994] Zeng, S., Volz, B., Kinnear, K., and J. Brzozowski, + "DHCPv6 Relay Agent Echo Request Option", RFC 4994, + DOI 10.17487/RFC4994, September 2007, + <https://www.rfc-editor.org/info/rfc4994>. + + [RFC5007] Brzozowski, J., Kinnear, K., Volz, B., and S. Zeng, + "DHCPv6 Leasequery", RFC 5007, DOI 10.17487/RFC5007, + September 2007, <https://www.rfc-editor.org/info/rfc5007>. + + [RFC5453] Krishnan, S., "Reserved IPv6 Interface Identifiers", + RFC 5453, DOI 10.17487/RFC5453, February 2009, + <https://www.rfc-editor.org/info/rfc5453>. + + [RFC5460] Stapp, M., "DHCPv6 Bulk Leasequery", RFC 5460, + DOI 10.17487/RFC5460, February 2009, + <https://www.rfc-editor.org/info/rfc5460>. + + + + + + +Mrugalski, et al. Standards Track [Page 142] + +RFC 8415 DHCP for IPv6 November 2018 + + + [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, + "Network Time Protocol Version 4: Protocol and Algorithms + Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, + <https://www.rfc-editor.org/info/rfc5905>. + + [RFC5908] Gayraud, R. and B. Lourdelet, "Network Time Protocol (NTP) + Server Option for DHCPv6", RFC 5908, DOI 10.17487/RFC5908, + June 2010, <https://www.rfc-editor.org/info/rfc5908>. + + [RFC6422] Lemon, T. and Q. Wu, "Relay-Supplied DHCP Options", + RFC 6422, DOI 10.17487/RFC6422, December 2011, + <https://www.rfc-editor.org/info/rfc6422>. + + [RFC6603] Korhonen, J., Ed., Savolainen, T., Krishnan, S., and O. + Troan, "Prefix Exclude Option for DHCPv6-based Prefix + Delegation", RFC 6603, DOI 10.17487/RFC6603, May 2012, + <https://www.rfc-editor.org/info/rfc6603>. + + [RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, + "Default Address Selection for Internet Protocol Version 6 + (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, + <https://www.rfc-editor.org/info/rfc6724>. + + [RFC6879] Jiang, S., Liu, B., and B. Carpenter, "IPv6 Enterprise + Network Renumbering Scenarios, Considerations, and + Methods", RFC 6879, DOI 10.17487/RFC6879, February 2013, + <https://www.rfc-editor.org/info/rfc6879>. + + [RFC6939] Halwasia, G., Bhandari, S., and W. Dec, "Client Link-Layer + Address Option in DHCPv6", RFC 6939, DOI 10.17487/RFC6939, + May 2013, <https://www.rfc-editor.org/info/rfc6939>. + + [RFC7083] Droms, R., "Modification to Default Values of SOL_MAX_RT + and INF_MAX_RT", RFC 7083, DOI 10.17487/RFC7083, + November 2013, <https://www.rfc-editor.org/info/rfc7083>. + + [RFC7084] Singh, H., Beebee, W., Donley, C., and B. Stark, "Basic + Requirements for IPv6 Customer Edge Routers", RFC 7084, + DOI 10.17487/RFC7084, November 2013, + <https://www.rfc-editor.org/info/rfc7084>. + + [RFC7136] Carpenter, B. and S. Jiang, "Significance of IPv6 + Interface Identifiers", RFC 7136, DOI 10.17487/RFC7136, + February 2014, <https://www.rfc-editor.org/info/rfc7136>. + + + + + + + +Mrugalski, et al. Standards Track [Page 143] + +RFC 8415 DHCP for IPv6 November 2018 + + + [RFC7341] Sun, Q., Cui, Y., Siodelski, M., Krishnan, S., and I. + Farrer, "DHCPv4-over-DHCPv6 (DHCP 4o6) Transport", + RFC 7341, DOI 10.17487/RFC7341, August 2014, + <https://www.rfc-editor.org/info/rfc7341>. + + [RFC7368] Chown, T., Ed., Arkko, J., Brandt, A., Troan, O., and J. + Weil, "IPv6 Home Networking Architecture Principles", + RFC 7368, DOI 10.17487/RFC7368, October 2014, + <https://www.rfc-editor.org/info/rfc7368>. + + [RFC7513] Bi, J., Wu, J., Yao, G., and F. Baker, "Source Address + Validation Improvement (SAVI) Solution for DHCP", + RFC 7513, DOI 10.17487/RFC7513, May 2015, + <https://www.rfc-editor.org/info/rfc7513>. + + [RFC7550] Troan, O., Volz, B., and M. Siodelski, "Issues and + Recommendations with Multiple Stateful DHCPv6 Options", + RFC 7550, DOI 10.17487/RFC7550, May 2015, + <https://www.rfc-editor.org/info/rfc7550>. + + [RFC7598] 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", RFC 7598, DOI 10.17487/RFC7598, July 2015, + <https://www.rfc-editor.org/info/rfc7598>. + + [RFC7610] Gont, F., Liu, W., and G. Van de Velde, "DHCPv6-Shield: + Protecting against Rogue DHCPv6 Servers", BCP 199, + RFC 7610, DOI 10.17487/RFC7610, August 2015, + <https://www.rfc-editor.org/info/rfc7610>. + + [RFC7707] Gont, F. and T. Chown, "Network Reconnaissance in IPv6 + Networks", RFC 7707, DOI 10.17487/RFC7707, March 2016, + <https://www.rfc-editor.org/info/rfc7707>. + + [RFC7721] Cooper, A., Gont, F., and D. Thaler, "Security and Privacy + Considerations for IPv6 Address Generation Mechanisms", + RFC 7721, DOI 10.17487/RFC7721, March 2016, + <https://www.rfc-editor.org/info/rfc7721>. + + [RFC7824] Krishnan, S., Mrugalski, T., and S. Jiang, "Privacy + Considerations for DHCPv6", RFC 7824, + DOI 10.17487/RFC7824, May 2016, + <https://www.rfc-editor.org/info/rfc7824>. + + + + + + + +Mrugalski, et al. Standards Track [Page 144] + +RFC 8415 DHCP for IPv6 November 2018 + + + [RFC7844] Huitema, C., Mrugalski, T., and S. Krishnan, "Anonymity + Profiles for DHCP Clients", RFC 7844, + DOI 10.17487/RFC7844, May 2016, + <https://www.rfc-editor.org/info/rfc7844>. + + [RFC7969] Lemon, T. and T. Mrugalski, "Customizing DHCP + Configuration on the Basis of Network Topology", RFC 7969, + DOI 10.17487/RFC7969, October 2016, + <https://www.rfc-editor.org/info/rfc7969>. + + [RFC8156] Mrugalski, T. and K. Kinnear, "DHCPv6 Failover Protocol", + RFC 8156, DOI 10.17487/RFC8156, June 2017, + <https://www.rfc-editor.org/info/rfc8156>. + + [RFC8168] Li, T., Liu, C., and Y. Cui, "DHCPv6 Prefix-Length Hint + Issues", RFC 8168, DOI 10.17487/RFC8168, May 2017, + <https://www.rfc-editor.org/info/rfc8168>. + + [TR-187] Broadband Forum, "TR-187 - IPv6 for PPP Broadband Access", + February 2013, <https://www.broadband-forum.org/ + technical/download/TR-187_Issue-2.pdf>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 145] + +RFC 8415 DHCP for IPv6 November 2018 + + +Appendix A. Summary of Changes + + This appendix provides a summary of the significant changes made to + this updated DHCPv6 specification. + + 1. The Introduction (Section 1) was reorganized and updated. In + particular, the client/server message exchanges were moved into + a new (and expanded) section on their own (see Section 5). + + 2. New sections were added to discuss the relationship to previous + DHCPv6 documents and also to DHCPv4. + + 3. Sections 2 ("Requirements") and 3 ("Background") had very minor + edits. + + 4. Section 4 ("Terminology") had minor edits. + + 5. Section 4.2 ("DHCP Terminology") was expanded to incorporate + definitions from RFC 3633, add T1/T2 definitions, add + definitions useful in describing combined address assignment and + prefix delegation operations, and improve some existing + definitions. + + 6. Section 5 ("Client/Server Exchanges") was added from material + previously in Section 1 of RFC 3315 ("Introduction and + Overview") and was expanded. + + 7. Section 6 ("Operational Models") is new. It provides + information on the kinds of DHCP clients and how they operate. + + 8. Section 7 ("DHCP Constants") was primarily updated to add + constants from RFC 4242 and RFC 7083. Note that the default + HOP_COUNT_LIMIT value was reduced from 32 to 8. + + 9. Sections 8 ("Client/Server Message Formats"), 9 ("Relay Agent/ + Server Message Formats"), and 10 ("Representation and Use of + Domain Names") had only very minor changes. + + 10. Section 11 ("DHCP Unique Identifier (DUID)") now discourages, + rather than disallows, a server to parse the DUID; now includes + some information on the DUID-UUID (RFC 6355); and had other + minor edits. + + 11. Section 12 ("Identity Association") was expanded to better + explain the concept and to also include prefix delegation. + + + + + + +Mrugalski, et al. Standards Track [Page 146] + +RFC 8415 DHCP for IPv6 November 2018 + + + 12. Section 13 ("Assignment to an IA") incorporates material from + two sections (11 and 12) of RFC 3315 and also includes a section + on prefix delegation. + + 13. Section 14 ("Transmission of Messages by a Client") was expanded + to include rate limiting by clients and how clients should + handle T1 or T2 values of 0. + + 14. Section 15 ("Reliability of Client-Initiated Message Exchanges") + was expanded to clarify that the Elapsed Time option must be + updated in retransmitted messages and that a client is not + required to listen for DHCP traffic for the entire + retransmission period. + + 15. Section 16 ("Message Validation") had minor edits. + + 16. Section 17 ("Client Source Address and Interface Selection") was + expanded to include prefix delegation. + + 17. Section 18 ("DHCP Configuration Exchanges") consolidates what + used to be in the following sections in RFC 3315: "DHCP Server + Solicitation" (Section 17), "DHCP Client-Initiated Configuration + Exchange" (Section 18), and "DHCP Server-Initiated Configuration + Exchange" (Section 19). This material was reorganized and + enhanced, and it incorporates prefix delegation from RFC 3633 + and other changes from RFC 4242, RFC 7083, and RFC 7550. A few + changes of note: + + A. The Option Request option is no longer optional for some + messages (Solicit and Information-request), as RFC 7083 + requires clients to request SOL_MAX_RT or INF_MAX_RT + options. + + B. The Reconfigure message should no longer contain + IA_NA/IA_PD, ORO, or other options to indicate to the client + what was reconfigured. The client should request everything + it needs in the response to the Reconfigure. + + C. The lifetime and T1/T2 hints should not be sent by a client + (it should send values of 0 in these fields), and any + non-zero values should be ignored by the server. + + D. Clarified that a server may return different addresses in + the Reply than requested by a client in the Request message. + Also clarified that a server must not include addresses that + it will not assign. + + + + + +Mrugalski, et al. Standards Track [Page 147] + +RFC 8415 DHCP for IPv6 November 2018 + + + Also, Section 18.2.12 ("Refreshing Configuration Information") + was added to indicate use cases for when a client should try to + refresh network information. + + 18. Section 19 ("Relay Agent Behavior") incorporates RFC 7283 and + had minor edits. A new section, "Interaction between Relay + Agents and Servers" (Section 19.4), was added. + + 19. Section 20 ("Authentication of DHCP Messages") includes + significant changes: IPsec materials were mostly removed and + replaced with a reference to RFC 8213, and the delayed + authentication protocol has been obsoleted (see Section 25). + Note that RKAP is still considered current. + + 20. Section 21 ("DHCP Options") was expanded to incorporate + OPTION_IA_PD and OPTION_IAPREFIX from RFC 3633, the Information + Refresh Time option (OPTION_INFORMATION_REFRESH_TIME) from + RFC 4242, and the SOL_MAX_RT and INF_MAX_RT options from + RFC 7083. Some additional edits were made to clarify option + handling, such as which options should not be in an Option + Request option. + + 21. The security considerations (Section 22) were updated to expand + the discussion of security threats and include material from the + incorporated documents, primarily RFC 3633. + + 22. New privacy considerations were added (Section 23) to account + for privacy issues. + + 23. Section 24 ("IANA Considerations") was rewritten to reflect the + changes requested for this document, as other documents have + already made the message, option, DUID, and status code + assignments and this document does not add any new assignments. + + 24. Section 25 ("Obsoleted Mechanisms") is a new section that + documents the mechanisms obsoleted by this specification. + + 25. Appendices B ("Appearance of Options in Message Types") and C + ("Appearance of Options in the "options" Field of DHCP Options") + were updated to reflect the incorporated options from RFC 3633, + RFC 4242, and RFC 7083. + + 26. Where appropriate, informative references have been added to + provide further background and guidance throughout the document + (as can be noted by the vast increase in references). + + + + + + +Mrugalski, et al. Standards Track [Page 148] + +RFC 8415 DHCP for IPv6 November 2018 + + + 27. Changes were made to incorporate the following errata for + RFC 3315: Erratum IDs 294, 295, 1373, 1815, 2471, 2472, 2509, + 2928, 3577, 5450; RFC 3633: Erratum IDs 248, 2468, 2469, 2470, + 3736; and RFC 3736: Erratum ID 3796. Note that Erratum ID 1880 + for RFC 3633 no longer applies, as servers (delegating routers) + ignore received T1/T2 hints (see (C) in item 17 above). + + 28. General changes to other IPv6 specifications, such as removing + the use of site-local unicast addresses and adding unique local + addresses, were made to the document. + + 29. It should be noted that this document does not refer to all + DHCPv6 functionality and specifications. Readers of this + specification should visit <https://www.iana.org/assignments/ + dhcpv6-parameters> and <https://datatracker.ietf.org/wg/dhc/> to + learn of the RFCs that define DHCPv6 messages, options, + status codes, and more. + +Appendix B. Appearance of Options in Message Types + + The following tables indicate with a "*" the options that are allowed + in each DHCP message type. + + These tables are informational. If they conflict with text earlier + in this document, that text should be considered authoritative. + + Client Server IA_NA/ Elap. Relay Server + ID ID IA_TA IA_PD ORO Pref Time Msg. Auth. Unicast + Solicit * * * * * + Advert. * * * * * + Request * * * * * * + Confirm * * * + Renew * * * * * * + Rebind * * * * * + Decline * * * * * + Release * * * * * + Reply * * * * * * + Reconf. * * * + Inform. * (see note) * * + R-forw. * + R-repl. * + + NOTE: The Server Identifier option (see Section 21.3) is only + included in Information-request messages that are sent in response to + a Reconfigure (see Section 18.2.6). + + + + + + +Mrugalski, et al. Standards Track [Page 149] + +RFC 8415 DHCP for IPv6 November 2018 + + + Info + Status Rap. User Vendor Vendor Inter. Recon. Recon. Refresh + Code Comm. Class Class Spec. ID Msg. Accept Time + Solicit * * * * * + Advert. * * * * * + Request * * * * + Confirm * * * + Renew * * * * + Rebind * * * * + Decline * * * + Release * * * + Reply * * * * * * * + Reconf. * + Inform. * * * * + R-forw. * * + R-repl. * * + + SOL_MAX_RT INF_MAX_RT + Solicit + Advert. * + Request + Confirm + Renew + Rebind + Decline + Release + Reply * * + Reconf. + Inform. + R-forw. + R-repl. + + + + + + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 150] + +RFC 8415 DHCP for IPv6 November 2018 + + +Appendix C. Appearance of Options in the "options" Field of DHCP + Options + + The following table indicates with a "*" where options defined in + this document can appear as top-level options or can be encapsulated + in other options defined in this document. Other RFCs may define + additional situations where options defined in this document are + encapsulated in other options. + + This table is informational. If it conflicts with text earlier in + this document, that text should be considered authoritative. + + Top- IA_NA/ RELAY- RELAY- + Level IA_TA IAADDR IA_PD IAPREFIX FORW REPL + Client ID * + Server ID * + IA_NA/IA_TA * + IAADDR * + IA_PD * + IAPREFIX * + ORO * + Preference * + Elapsed Time * + Relay Message * * + Authentic. * + Server Uni. * + Status Code * * * + Rapid Comm. * + User Class * + Vendor Class * + Vendor Info. * * * + Interf. ID * * + Reconf. MSG. * + Reconf. Accept * + Info Refresh Time * + SOL_MAX_RT * + INF_MAX_RT * + + Notes: Options asterisked in the "Top-Level" column appear in the + "options" field of client messages (see Section 8). Options + asterisked in the "RELAY-FORW" and "RELAY-REPL" columns appear in the + "options" field of the Relay-forward and Relay-reply messages (see + Section 9). + + + + + + + + +Mrugalski, et al. Standards Track [Page 151] + +RFC 8415 DHCP for IPv6 November 2018 + + +Acknowledgments + + This document is merely a refinement of earlier work by the authors + of the following documents and would not be possible without their + original work: + + - RFC 3315 (Ralph Droms, Jim Bound, Bernie Volz, Ted Lemon, Charles + Perkins, and Mike Carney) + + - RFC 3633 (Ole Troan and Ralph Droms) + + - RFC 3736 (Ralph Droms) + + - RFC 4242 (Stig Venaas, Tim Chown, and Bernie Volz) + + - RFC 7083 (Ralph Droms) + + - RFC 7283 (Yong Cui, Qi Sun, and Ted Lemon) + + - RFC 7550 (Ole Troan, Bernie Volz, and Marcin Siodelski) + + A number of additional people have contributed to identifying issues + with RFC 3315 and RFC 3633 and proposed resolutions to these issues + as reflected in this document (listed here in no particular order): + Ole Troan, Robert Marks, Leaf Yeh, Michelle Cotton, Pablo Armando, + John Brzozowski, Suresh Krishnan, Hideshi Enokihara, Alexandru + Petrescu, Yukiyo Akisada, Tatuya Jinmei, Fred Templin, and Christian + Huitema. + + We also thank the following, not otherwise acknowledged and in no + particular order, for their review comments: Jeremy Reed, Francis + Dupont, Lorenzo Colitti, Tianxiang Li, Ian Farrer, Yogendra Pal, Kim + Kinnear, Shawn Routhier, Michayla Newcombe, Alissa Cooper, Allison + Mankin, Adam Roach, Kyle Rose, Elwyn Davies, Eric Rescorla, Ben + Campbell, Warren Kumari, and Kathleen Moriarty. + + Also, special thanks to Ralph Droms for answering many questions + related to the original RFC 3315 and RFC 3633 work and for + shepherding this document through the IETF process. + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 152] + +RFC 8415 DHCP for IPv6 November 2018 + + +Authors' Addresses + + Tomek Mrugalski + Internet Systems Consortium, Inc. + 950 Charter Street + Redwood City, CA 94063 + United States of America + + Email: tomasz.mrugalski@gmail.com + + + Marcin Siodelski + Internet Systems Consortium, Inc. + 950 Charter Street + Redwood City, CA 94063 + United States of America + + Email: msiodelski@gmail.com + + + Bernie Volz + Cisco Systems, Inc. + 1414 Massachusetts Ave. + Boxborough, MA 01719 + United States of America + + Email: volz@cisco.com + + + Andrew Yourtchenko + Cisco Systems, Inc. + De kleetlaan 6a + Diegem BRABANT 1831 + Belgium + + Email: ayourtch@cisco.com + + + Michael C. Richardson + Sandelman Software Works + 470 Dawson Avenue + Ottawa, ON K1Z 5V7 + Canada + + Email: mcr+ietf@sandelman.ca + URI: http://www.sandelman.ca/ + + + + + +Mrugalski, et al. Standards Track [Page 153] + +RFC 8415 DHCP for IPv6 November 2018 + + + Sheng Jiang + Huawei Technologies Co., Ltd + Q14, Huawei Campus, No. 156 Beiqing Road + Hai-Dian District, Beijing 100095 + China + + Email: jiangsheng@huawei.com + + + Ted Lemon + Nibbhaya Consulting + P.O. Box 958 + Brattleboro, VT 05301-0958 + United States of America + + Email: mellon@fugue.com + + + Timothy Winters + University of New Hampshire, Interoperability Lab (UNH-IOL) + Durham, NH + United States of America + + Email: twinters@iol.unh.edu + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mrugalski, et al. Standards Track [Page 154] + |