8628 lines
362 KiB
Text
8628 lines
362 KiB
Text
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
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]
|
|||
|
|