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.
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.
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
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
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
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 ...............................................1531. 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].
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.
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)")
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.