draft-ietf-dhc-dhcpv6-28.txt   rfc3315.txt 
Internet Engineering Task Force R. Droms (ed.), Cisco Network Working Group R. Droms, Ed.
INTERNET DRAFT J. Bound, Hewlett Packard Request for Comments: 3315 Cisco
DHC Working Group Bernie Volz, Ericsson Category: Standards Track J. Bound
Obsoletes: draft-ietf-dhc-dhcpv6-27.txt Ted Lemon, Nominum Hewlett Packard
C. Perkins, Nokia Research Center B. Volz
M. Carney, Sun Microsystems Ericsson
2 Nov 2002 T. Lemon
Nominum
C. Perkins
Nokia Research Center
M. Carney
Sun Microsystems
July 2003
Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
draft-ietf-dhc-dhcpv6-28.txt
Status of This Memo
This document is a submission by the Dynamic Host Configuration
Working Group of the Internet Engineering Task Force (IETF). Comments
should be submitted to the dhcwg@ietf.org mailing list.
Distribution of this memo is unlimited. Status of this Memo
This document is an Internet-Draft and is in full conformance with This document specifies an Internet standards track protocol for the
all provisions of Section 10 of RFC2026. Internet-Drafts are working Internet community, and requests discussion and suggestions for
documents of the Internet Engineering Task Force (IETF), its areas, improvements. Please refer to the current edition of the "Internet
and its working groups. Note that other groups may also distribute Official Protocol Standards" (STD 1) for the standardization state
working documents as Internet-Drafts. and status of this protocol. Distribution of this memo is unlimited.
Internet-Drafts are draft documents valid for a maximum of six months Copyright Notice
and may be updated, replaced, or obsoleted by other documents at
any time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at: Copyright (C) The Internet Society (2003). All Rights Reserved.
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at:
http://www.ietf.org/shadow.html.
Abstract Abstract
The Dynamic Host Configuration Protocol for IPv6 (DHCP) enables The Dynamic Host Configuration Protocol for IPv6 (DHCP) enables DHCP
DHCP servers to pass configuration parameters such as IPv6 network servers to pass configuration parameters such as IPv6 network
addresses to IPv6 nodes. It offers the capability of automatic addresses to IPv6 nodes. It offers the capability of automatic
allocation of reusable network addresses and additional configuration allocation of reusable network addresses and additional configuration
flexibility. This protocol is a stateful counterpart to "IPv6 flexibility. This protocol is a stateful counterpart to "IPv6
Stateless Address Autoconfiguration" (RFC2462), and can be used Stateless Address Autoconfiguration" (RFC 2462), and can be used
separately or concurrently with the latter to obtain configuration separately or concurrently with the latter to obtain configuration
parameters. parameters.
Contents Table of Contents
Status of This Memo i
Abstract i
1. Introduction and Overview 1
1.1. Protocols and Addressing . . . . . . . . . . . . . . . . 1
1.2. Client-server Exchanges Involving Two Messages . . . . . 2
1.3. Client-server Exchanges Involving Four Messages . . . . . 2
2. Requirements 3
3. Background 3
4. Terminology 4
4.1. IPv6 Terminology . . . . . . . . . . . . . . . . . . . . 4
4.2. DHCP Terminology . . . . . . . . . . . . . . . . . . . . 5
5. DHCP Constants 7
5.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 7
5.2. UDP Ports . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3. DHCP Message Types . . . . . . . . . . . . . . . . . . . 8
5.4. Status Codes . . . . . . . . . . . . . . . . . . . . . . 10
5.5. Transmission and Retransmission Parameters . . . . . . . 10
6. Client/Server Message Formats 11
7. Relay Agent/Server Message Formats 11
7.1. Relay-forward Message . . . . . . . . . . . . . . . . . . 12
7.2. Relay-reply Message . . . . . . . . . . . . . . . . . . . 13
8. Representation and Use of Domain Names 13
9. DHCP Unique Identifier (DUID) 13
9.1. DUID Contents . . . . . . . . . . . . . . . . . . . . . . 14
9.2. DUID Based on Link-layer Address Plus Time [DUID-LLT] . . 14
9.3. DUID Assigned by Vendor Based on Enterprise Number
[DUID-EN] . . . . . . . . . . . . . . . . . . . . . . 15
9.4. DUID Based on Link-layer Address [DUID-LL] . . . . . . . 16
10. Identity Association 17
11. Selecting Addresses for Assignment to an IA 17
12. Management of Temporary Addresses 18
13. Transmission of Messages by a Client 19
14. Reliability of Client Initiated Message Exchanges 19
15. Message Validation 21
15.1. Use of Transaction IDs . . . . . . . . . . . . . . . . . 21
15.2. Solicit Message . . . . . . . . . . . . . . . . . . . . . 21
15.3. Advertise Message . . . . . . . . . . . . . . . . . . . . 21
15.4. Request Message . . . . . . . . . . . . . . . . . . . . . 22
15.5. Confirm Message . . . . . . . . . . . . . . . . . . . . . 22
15.6. Renew Message . . . . . . . . . . . . . . . . . . . . . . 22
15.7. Rebind Message . . . . . . . . . . . . . . . . . . . . . 22
15.8. Decline Messages . . . . . . . . . . . . . . . . . . . . 23
15.9. Release Message . . . . . . . . . . . . . . . . . . . . . 23
15.10. Reply Message . . . . . . . . . . . . . . . . . . . . . . 23
15.11. Reconfigure Message . . . . . . . . . . . . . . . . . . . 24
15.12. Information-request Message . . . . . . . . . . . . . . . 24
15.13. Relay-forward Message . . . . . . . . . . . . . . . . . . 24
15.14. Relay-reply Message . . . . . . . . . . . . . . . . . . . 24
16. Client Source Address and Interface Selection 25
17. DHCP Server Solicitation 25
17.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 25
17.1.1. Creation of Solicit Messages . . . . . . . . . . 25
17.1.2. Transmission of Solicit Messages . . . . . . . . 26
17.1.3. Receipt of Advertise Messages . . . . . . . . . . 27
17.1.4. Receipt of Reply Message . . . . . . . . . . . . 28
17.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 28
17.2.1. Receipt of Solicit Messages . . . . . . . . . . . 28
17.2.2. Creation and Transmission of Advertise Messages . 29
17.2.3. Creation and Transmission of Reply Messages . . . 30
18. DHCP Client-Initiated Configuration Exchange 31
18.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 31
18.1.1. Creation and Transmission of Request Messages . . 31
18.1.2. Creation and Transmission of Confirm Messages . . 32
18.1.3. Creation and Transmission of Renew Messages . . . 33
18.1.4. Creation and Transmission of Rebind Messages . . 34
18.1.5. Creation and Transmission of Information-request
Messages . . . . . . . . . . . . . . . . . 35
18.1.6. Creation and Transmission of Release Messages . . 36
18.1.7. Creation and Transmission of Decline Messages . . 37
18.1.8. Receipt of Reply Messages . . . . . . . . . . . . 38
18.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 39
18.2.1. Receipt of Request Messages . . . . . . . . . . . 40
18.2.2. Receipt of Confirm Messages . . . . . . . . . . . 41
18.2.3. Receipt of Renew Messages . . . . . . . . . . . . 41
18.2.4. Receipt of Rebind Messages . . . . . . . . . . . 42
18.2.5. Receipt of Information-request Messages . . . . . 42
18.2.6. Receipt of Release Messages . . . . . . . . . . . 43
18.2.7. Receipt of Decline Messages . . . . . . . . . . . 44
18.2.8. Transmission of Reply Messages . . . . . . . . . 44
19. DHCP Server-Initiated Configuration Exchange 45
19.1. Server Behavior . . . . . . . . . . . . . . . . . . . . . 45
19.1.1. Creation and Transmission of Reconfigure Messages 45
19.1.2. Time Out and Retransmission of Reconfigure
Messages . . . . . . . . . . . . . . . . . 46
19.2. Receipt of Renew Messages . . . . . . . . . . . . . . . . 46
19.3. Receipt of Information-request Messages . . . . . . . . . 46
19.4. Client Behavior . . . . . . . . . . . . . . . . . . . . . 47
19.4.1. Receipt of Reconfigure Messages . . . . . . . . . 47
19.4.2. Creation and Transmission of Renew Messages . . . 48
19.4.3. Creation and Transmission of Information-request
Messages . . . . . . . . . . . . . . . . . 48
19.4.4. Time Out and Retransmission of Renew or
Information-request Messages . . . . . . . 48
19.4.5. Receipt of Reply Messages . . . . . . . . . . . . 48
20. Relay Agent Behavior 48
20.1. Relaying a Client Message or a Relay-forward Message . . 49
20.1.1. Relaying a Message from a Client . . . . . . . . 49
20.1.2. Relaying a Message from a Relay Agent . . . . . . 49
20.2. Relaying a Relay-reply Message . . . . . . . . . . . . . 50
20.3. Construction of Relay-reply Messages . . . . . . . . . . 50
21. Authentication of DHCP Messages 51
21.1. Security of Messages Sent Between Servers and Relay Agents 51
21.2. Summary of DHCP Authentication . . . . . . . . . . . . . 52
21.3. Replay Detection . . . . . . . . . . . . . . . . . . . . 53
21.4. Delayed Authentication Protocol . . . . . . . . . . . . . 53
21.4.1. Use of the Authentication Option in the Delayed
Authentication Protocol . . . . . . . . . 53
21.4.2. Message Validation . . . . . . . . . . . . . . . 54
21.4.3. Key Utilization . . . . . . . . . . . . . . . . . 55
21.4.4. Client Considerations for Delayed Authentication
Protocol . . . . . . . . . . . . . . . . . 55
21.4.5. Server Considerations for Delayed Authentication
Protocol . . . . . . . . . . . . . . . . . 57
21.5. Reconfigure Key Authentication Protocol . . . . . . . . . 57
21.5.1. Use of the Authentication Option in the Reconfigure
Key Authentication Protocol . . . . . . . 58
21.5.2. Server considerations for Reconfigure Key protocol 58
21.5.3. Client considerations for Reconfigure Key protocol 59
22. DHCP Options 59
22.1. Format of DHCP Options . . . . . . . . . . . . . . . . . 60
22.2. Client Identifier Option . . . . . . . . . . . . . . . . 60
22.3. Server Identifier Option . . . . . . . . . . . . . . . . 61
22.4. Identity Association for Non-temporary Addresses Option . 61
22.5. Identity Association for Temporary Addresses Option . . . 63
22.6. IA Address Option . . . . . . . . . . . . . . . . . . . . 65
22.7. Option Request Option . . . . . . . . . . . . . . . . . . 66
22.8. Preference Option . . . . . . . . . . . . . . . . . . . . 66
22.9. Elapsed Time Option . . . . . . . . . . . . . . . . . . . 67
22.10. Relay Message Option . . . . . . . . . . . . . . . . . . 68
22.11. Authentication Option . . . . . . . . . . . . . . . . . . 68
22.12. Server Unicast Option . . . . . . . . . . . . . . . . . . 69
22.13. Status Code Option . . . . . . . . . . . . . . . . . . . 70
22.14. Rapid Commit Option . . . . . . . . . . . . . . . . . . . 71
22.15. User Class Option . . . . . . . . . . . . . . . . . . . . 71
22.16. Vendor Class Option . . . . . . . . . . . . . . . . . . . 73
22.17. Vendor-specific Information Option . . . . . . . . . . . 73
22.18. Interface-Id Option . . . . . . . . . . . . . . . . . . . 75
22.19. Reconfigure Message Option . . . . . . . . . . . . . . . 76
22.20. Reconfigure Accept Option . . . . . . . . . . . . . . . . 76
23. Security Considerations 77
24. IANA Considerations 78
24.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 79
24.2. DHCP Message Types . . . . . . . . . . . . . . . . . . . 79
24.3. DHCP Options . . . . . . . . . . . . . . . . . . . . . . 80
24.4. Status Codes . . . . . . . . . . . . . . . . . . . . . . 81
24.5. DUID . . . . . . . . . . . . . . . . . . . . . . . . . . 81
25. Acknowledgments 82
26. Changes in draft-ietf-dhc-dhcpv6-27.txt 82
27. Changes in draft-ietf-dhc-dhcpv6-28.txt 83
References 84
Chair's Address 85
Authors' Addresses 86
A. Appearance of Options in Message Types 87
B. Appearance of Options in the Options Field of DHCP Options 87 1. Introduction and Overview . . . . . . . . . . . . . . . . . . 5
1.1. Protocols and Addressing . . . . . . . . . . . . . . . 6
1.2. Client-server Exchanges Involving Two Messages . . . . 6
1.3. Client-server Exchanges Involving Four Messages. . . . 7
2. Requirements. . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Background. . . . . . . . . . . . . . . . . . . . . . . . . . 8
4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1. IPv6 Terminology . . . . . . . . . . . . . . . . . . . 9
4.2. DHCP Terminology . . . . . . . . . . . . . . . . . . . 10
5. DHCP Constants. . . . . . . . . . . . . . . . . . . . . . . . 12
5.1. Multicast Addresses. . . . . . . . . . . . . . . . . . 13
5.2. UDP Ports. . . . . . . . . . . . . . . . . . . . . . . 13
5.3. DHCP Message Types . . . . . . . . . . . . . . . . . . 13
5.4. Status Codes . . . . . . . . . . . . . . . . . . . . . 15
5.5. Transmission and Retransmission Parameters . . . . . . 16
5.6 Representation of time values and "Infinity" as a time
value. . . . . . . . . . . . . . . . . . . . . . . . . 16
6. Client/Server Message Formats . . . . . . . . . . . . . . . . 16
7. Relay Agent/Server Message Formats. . . . . . . . . . . . . . 17
7.1. Relay-forward Message. . . . . . . . . . . . . . . . . 18
7.2. Relay-reply Message. . . . . . . . . . . . . . . . . . 19
8. Representation and Use of Domain Names. . . . . . . . . . . . 19
9. DHCP Unique Identifier (DUID) . . . . . . . . . . . . . . . . 19
9.1. DUID Contents. . . . . . . . . . . . . . . . . . . . . 20
9.2. DUID Based on Link-layer Address Plus Time [DUID-LLT]. 20
9.3. DUID Assigned by Vendor Based on Enterprise Number
[DUID-EN]. . . . . . . . . . . . . . . . . . . . . . . 22
9.4. DUID Based on Link-layer Address [DUID-LL] . . . . . . 22
10. Identity Association. . . . . . . . . . . . . . . . . . . . . 23
11. Selecting Addresses for Assignment to an IA . . . . . . . . . 24
12. Management of Temporary Addresses . . . . . . . . . . . . . . 25
13. Transmission of Messages by a Client. . . . . . . . . . . . . 25
14. Reliability of Client Initiated Message Exchanges . . . . . . 26
15. Message Validation. . . . . . . . . . . . . . . . . . . . . . 27
15.1. Use of Transaction IDs . . . . . . . . . . . . . . . . 28
15.2. Solicit Message. . . . . . . . . . . . . . . . . . . . 28
15.3. Advertise Message. . . . . . . . . . . . . . . . . . . 28
15.4. Request Message. . . . . . . . . . . . . . . . . . . . 29
15.5. Confirm Message. . . . . . . . . . . . . . . . . . . . 29
15.6. Renew Message. . . . . . . . . . . . . . . . . . . . . 29
15.7. Rebind Message . . . . . . . . . . . . . . . . . . . . 29
15.8. Decline Messages . . . . . . . . . . . . . . . . . . . 30
15.9. Release Message. . . . . . . . . . . . . . . . . . . . 30
15.10. Reply Message. . . . . . . . . . . . . . . . . . . . . 30
15.11. Reconfigure Message. . . . . . . . . . . . . . . . . . 31
15.12. Information-request Message. . . . . . . . . . . . . . 31
15.13. Relay-forward Message. . . . . . . . . . . . . . . . . 31
15.14. Relay-reply Message. . . . . . . . . . . . . . . . . . 31
16. Client Source Address and Interface Selection . . . . . . . . 32
17. DHCP Server Solicitation. . . . . . . . . . . . . . . . . . . 32
17.1. Client Behavior. . . . . . . . . . . . . . . . . . . . 32
17.1.1. Creation of Solicit Messages . . . . . . . . . 32
17.1.2. Transmission of Solicit Messages . . . . . . . 33
17.1.3. Receipt of Advertise Messages. . . . . . . . . 35
17.1.4. Receipt of Reply Message . . . . . . . . . . . 35
17.2. Server Behavior. . . . . . . . . . . . . . . . . . . . 36
17.2.1. Receipt of Solicit Messages . . . . . . . . . 36
17.2.2. Creation and Transmission of Advertise Messages 36
17.2.3. Creation and Transmission of Reply Messages. . 38
18. DHCP Client-Initiated Configuration Exchange. . . . . . . . . 38
18.1. Client Behavior. . . . . . . . . . . . . . . . . . . . 39
18.1.1. Creation and Transmission of Request Messages. 39
18.1.2. Creation and Transmission of Confirm Messages. 40
18.1.3. Creation and Transmission of Renew Messages. . 41
18.1.4. Creation and Transmission of Rebind Messages . 43
18.1.5. Creation and Transmission of Information-
request Messages . . .. . . . . . . . . . . . 44
18.1.6. Creation and Transmission of Release Messages. 44
18.1.7. Creation and Transmission of Decline Messages. 46
18.1.8. Receipt of Reply Messages. . . . . . . . . . . 46
18.2. Server Behavior. . . . . . . . . . . . . . . . . . . . 48
18.2.1. Receipt of Request Messages. . . . . . . . . . 49
18.2.2. Receipt of Confirm Messages. . . . . . . . . . 50
18.2.3. Receipt of Renew Messages. . . . . . . . . . . 51
18.2.4. Receipt of Rebind Messages . . . . . . . . . . 51
18.2.5. Receipt of Information-request Messages. . . . 52
18.2.6. Receipt of Release Messages. . . . . . . . . . 53
18.2.7. Receipt of Decline Messages. . . . . . . . . . 53
18.2.8. Transmission of Reply Messages . . . . . . . . 54
19. DHCP Server-Initiated Configuration Exchange. . . . . . . . . 54
19.1. Server Behavior. . . . . . . . . . . . . . . . . . . . 55
19.1.1. Creation and Transmission of Reconfigure
Messages . . . . . . . . . . . . . . . . . . . 55
19.1.2. Time Out and Retransmission of Reconfigure
Messages . . . . . . . . . . . . . . . . . . . 56
19.2. Receipt of Renew Messages. . . . . . . . . . . . . . . 56
19.3. Receipt of Information-request Messages. . . . . . . . 56
19.4. Client Behavior. . . . . . . . . . . . . . . . . . . . 57
19.4.1. Receipt of Reconfigure Messages. . . . . . . . 57
19.4.2. Creation and Transmission of Renew Messages. . 58
19.4.3. Creation and Transmission of Information-
request Messages . . . . . . . . . . . . . . . 58
19.4.4. Time Out and Retransmission of Renew or
Information-request Messages . . . . . . . . . 58
C. Full Copyright Statement 88 19.4.5. Receipt of Reply Messages. . . . . . . . . . . 58
20. Relay Agent Behavior. . . . . . . . . . . . . . . . . . . . . 58
20.1. Relaying a Client Message or a Relay-forward Message . 59
20.1.1. Relaying a Message from a Client . . . . . . . 59
20.1.2. Relaying a Message from a Relay Agent. . . . . 59
20.2. Relaying a Relay-reply Message . . . . . . . . . . . . 60
20.3. Construction of Relay-reply Messages . . . . . . . . . 60
21. Authentication of DHCP Messages . . . . . . . . . . . . . . . 61
21.1. Security of Messages Sent Between Servers and Relay
Agents . . . . . . . . . . . . . . . . . . . . . . . 61
21.2. Summary of DHCP Authentication . . . . . . . . . . . . 63
21.3. Replay Detection . . . . . . . . . . . . . . . . . . . 63
21.4. Delayed Authentication Protocol. . . . . . . . . . . . 63
21.4.1. Use of the Authentication Option in the Delayed
Authentication Protocol. . . . . . . . . . . . 64
21.4.2. Message Validation . . . . . . . . . . . . . . 65
21.4.3. Key Utilization . . . . . . . . . . . . . . . 65
21.4.4. Client Considerations for Delayed Authentication
Protocol . . . . . . . . . . . . . . . . . . . 66
21.4.5. Server Considerations for Delayed Authentication
Protocol . . . . . . . . . . . . . . . . . . . 67
21.5. Reconfigure Key Authentication Protocol. . . . . . . . 68
21.5.1. Use of the Authentication Option in the
Reconfigure Key Authentication Protocol. . . . 69
21.5.2. Server considerations for Reconfigure Key
protocol . . . . . . . . . . . . . . . . . . . 69
21.5.3. Client considerations for Reconfigure Key
protocol . . . . . . . . . . . . . . . . . . . 70
22. DHCP Options. . . . . . . . . . . . . . . . . . . . . . . . . 70
22.1. Format of DHCP Options . . . . . . . . . . . . . . . . 71
22.2. Client Identifier Option . . . . . . . . . . . . . . . 71
22.3. Server Identifier Option . . . . . . . . . . . . . . . 72
22.4. Identity Association for Non-temporary Addresses Option 72
22.5. Identity Association for Temporary Addresses Option. . 75
22.6. IA Address Option. . . . . . . . . . . . . . . . . . . 76
22.7. Option Request Option. . . . . . . . . . . . . . . . . 78
22.8. Preference Option. . . . . . . . . . . . . . . . . . . 79
22.9. Elapsed Time Option. . . . . . . . . . . . . . . . . . 79
22.10. Relay Message Option . . . . . . . . . . . . . . . . . 80
22.11. Authentication Option. . . . . . . . . . . . . . . . . 81
22.12. Server Unicast Option. . . . . . . . . . . . . . . . . 82
22.13. Status Code Option . . . . . . . . . . . . . . . . . . 82
22.14. Rapid Commit Option. . . . . . . . . . . . . . . . . . 83
22.15. User Class Option. . . . . . . . . . . . . . . . . . . 84
22.16. Vendor Class Option. . . . . . . . . . . . . . . . . . 85
22.17. Vendor-specific Information Option . . . . . . . . . . 86
22.18. Interface-Id Option. . . . . . . . . . . . . . . . . . 87
22.19. Reconfigure Message Option . . . . . . . . . . . . . . 88
22.20. Reconfigure Accept Option. . . . . . . . . . . . . . . 89
23. Security Considerations . . . . . . . . . . . . . . . . . . . 89
24. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 91
24.1. Multicast Addresses. . . . . . . . . . . . . . . . . . 92
24.2. DHCP Message Types . . . . . . . . . . . . . . . . . . 93
24.3. DHCP Options . . . . . . . . . . . . . . . . . . . . . 94
24.4. Status Codes . . . . . . . . . . . . . . . . . . . . . 95
24.5. DUID . . . . . . . . . . . . . . . . . . . . . . . . . 95
25. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 95
26. References. . . . . . . . . . . . . . . . . . . . . . . . . . 96
26.1. Normative References . . . . . . . . . . . . . . . . . 96
26.2. Informative References . . . . . . . . . . . . . . . . 97
A. Appearance of Options in Message Types . . . . . . . . . . . . 98
B. Appearance of Options in the Options Field of DHCP Options . . 99
Chair's Address . . . . . . . . . . . . . . . . . . . . . . . . . 99
Authors' Addresses. . . . . . . . . . . . . . . . . . . . . . . . 100
Full Copyright Statement. . . . . . . . . . . . . . . . . . . . . 101
1. Introduction and Overview 1. Introduction and Overview
This document describes DHCP for IPv6 (DHCP), a client/server This document describes DHCP for IPv6 (DHCP), a client/server
protocol that provides managed configuration of devices. protocol that provides managed configuration of devices.
DHCP can provide a device with addresses assigned by a DHCP server DHCP can provide a device with addresses assigned by a DHCP server
and other configuration information, which are carried in options. and other configuration information, which are carried in options.
DHCP can be extended through the definition of new options to carry DHCP can be extended through the definition of new options to carry
configuration information not specified in this document. configuration information not specified in this document.
DHCP is the "stateful address autoconfiguration protocol" and the DHCP is the "stateful address autoconfiguration protocol" and the
"stateful autoconfiguration protocol" referred to in "IPv6 Stateless "stateful autoconfiguration protocol" referred to in "IPv6 Stateless
Address Autoconfiguration" [21]. Address Autoconfiguration" [17].
The operational models and relevant configuration information for The operational models and relevant configuration information for
DHCPv4 [1][6] and DHCPv6 are sufficiently different that integration DHCPv4 [18][19] and DHCPv6 are sufficiently different that
between the two services is not included in this document. If there integration between the two services is not included in this
is sufficient interest and demand, integration can be specified document. If there is sufficient interest and demand, integration
in a document that extends DHCPv6 to carry IPv4 addresses and can be specified in a document that extends DHCPv6 to carry IPv4
configuration information. addresses and configuration information.
The remainder of this introduction summarizes DHCP, explaining The remainder of this introduction summarizes DHCP, explaining the
the message exchange mechanisms and example message flows. The message exchange mechanisms and example message flows. The message
message flows in sections 1.2 and 1.3 are intended as illustrations flows in sections 1.2 and 1.3 are intended as illustrations of DHCP
of DHCP operation rather than an exhaustive list of all possible operation rather than an exhaustive list of all possible
client-server interactions. Sections 17, 18 and 19 explain client client-server interactions. Sections 17, 18, and 19 explain client
and server operation in detail. and server operation in detail.
1.1. Protocols and Addressing 1.1. Protocols and Addressing
Clients and servers exchange DHCP messages using UDP [19]. The Clients and servers exchange DHCP messages using UDP [15]. The
client uses a link-local address or addresses determined through client uses a link-local address or addresses determined through
other mechanisms for transmitting and receiving DHCP messages. other mechanisms for transmitting and receiving DHCP messages.
DHCP servers receive messages from clients using a reserved, DHCP servers receive messages from clients using a reserved,
link-scoped multicast address. A DHCP client transmits most messages link-scoped multicast address. A DHCP client transmits most messages
to this reserved multicast address, so that the client need not be to this reserved multicast address, so that the client need not be
configured with the address or addresses of DHCP servers. 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 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 attached to the same link, a DHCP relay agent on the client's link
will relay messages between the client and server. The operation will relay messages between the client and server. The operation of
of the relay agent is transparent to the client and the discussion the relay agent is transparent to the client and the discussion of
of message exchanges in the remainder of this section will omit the message exchanges in the remainder of this section will omit the
description of message relaying by relay agents. description of message relaying by relay agents.
Once the client has determined the address of a server, it may Once the client has determined the address of a server, it may under
under some circumstances send messages directly to the server using some circumstances send messages directly to the server using
unicast. unicast.
1.2. Client-server Exchanges Involving Two Messages 1.2. Client-server Exchanges Involving Two Messages
When a DHCP client does not need to have a DHCP server assign When a DHCP client does not need to have a DHCP server assign it IP
it IP addresses, the client can obtain configuration information addresses, the client can obtain configuration information such as a
such as a list of available DNS servers [8] or NTP servers [22] list of available DNS servers [20] or NTP servers [21] through a
through a single message and reply exchanged with a DHCP server. single message and reply exchanged with a DHCP server. To obtain
To obtain configuration information the client first sends an configuration information the client first sends an
Information-Request message to the All_DHCP_Relay_Agents_and_Servers Information-Request message to the All_DHCP_Relay_Agents_and_Servers
multicast address. Servers respond with a Reply message containing multicast address. Servers respond with a Reply message containing
the configuration information for the client. the configuration information for the client.
This message exchange assumes that the client requires only This message exchange assumes that the client requires only
configuration information and does not require the assignment of any configuration information and does not require the assignment of any
IPv6 addresses. IPv6 addresses.
When a server has IPv6 addresses and other configuration information When a server has IPv6 addresses and other configuration information
committed to a client, the client and server may be able to complete committed to a client, the client and server may be able to complete
skipping to change at page 2, line 34 skipping to change at page 7, line 9
Solicit message to the All_DHCP_Relay_Agents_and_Servers requesting Solicit message to the All_DHCP_Relay_Agents_and_Servers requesting
the assignment of addresses and other configuration information. the assignment of addresses and other configuration information.
This message includes an indication that the client is willing to This message includes an indication that the client is willing to
accept an immediate Reply message from the server. The server that accept an immediate Reply message from the server. The server that
is willing to commit the assignment of addresses to the client is willing to commit the assignment of addresses to the client
immediately responds with a Reply message. The configuration immediately responds with a Reply message. The configuration
information and the addresses in the Reply message are then information and the addresses in the Reply message are then
immediately available for use by the client. immediately available for use by the client.
Each address assigned to the client has associated preferred and Each address assigned to the client has associated preferred and
valid lifetimes specified by the server. To request an extension valid lifetimes specified by the server. To request an extension of
of the lifetimes assigned to an address, the client sends a Renew the lifetimes assigned to an address, the client sends a Renew
message to the server. The server sends a Reply message to the message to the server. The server sends a Reply message to the
client with the new lifetimes, allowing the client to continue to use client with the new lifetimes, allowing the client to continue to use
the address without interruption. the address without interruption.
1.3. Client-server Exchanges Involving Four Messages 1.3. Client-server Exchanges Involving Four Messages
To request the assignment of one or more IPv6 addresses, a To request the assignment of one or more IPv6 addresses, a client
client first locates a DHCP server and then requests the first locates a DHCP server and then requests the assignment of
assignment of addresses and other configuration information addresses and other configuration information from the server. The
from the server. The client sends a Solicit message to the client sends a Solicit message to the
All_DHCP_Relay_Agents_and_Servers address to find available DHCP All_DHCP_Relay_Agents_and_Servers address to find available DHCP
servers. Any server that can meet the client's requirements servers. Any server that can meet the client's requirements responds
responds with an Advertise message. The client then chooses one with an Advertise message. The client then chooses one of the
of the servers and sends a Request message to the server asking servers and sends a Request message to the server asking for
for confirmed assignment of addresses and other configuration confirmed assignment of addresses and other configuration
information. The server responds with a Reply message that contains information. The server responds with a Reply message that contains
the confirmed addresses and configuration. the confirmed addresses and configuration.
As described in the previous section, the client sends a Renew As described in the previous section, the client sends a Renew
message to the server to extend the lifetimes associated with its message to the server to extend the lifetimes associated with its
addresses, allowing the client to continue to use those addresses addresses, allowing the client to continue to use those addresses
without interruption. without interruption.
2. Requirements 2. Requirements
The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this
document, are to be interpreted as described in [3]. document, are to be interpreted as described in [1].
This document also makes use of internal conceptual variables This document also makes use of internal conceptual variables to
to describe protocol behavior and external variables that an describe protocol behavior and external variables that an
implementation must allow system administrators to change. The implementation must allow system administrators to change. The
specific variable names, how their values change, and how their specific variable names, how their values change, and how their
settings influence protocol behavior are provided to demonstrate settings influence protocol behavior are provided to demonstrate
protocol behavior. An implementation is not required to have them in protocol behavior. An implementation is not required to have them in
the exact form described here, so long as its external behavior is the exact form described here, so long as its external behavior is
consistent with that described in this document. consistent with that described in this document.
3. Background 3. Background
The IPv6 Specification provides the base architecture and design of The IPv6 Specification provides the base architecture and design of
IPv6. Related work in IPv6 that would best serve an implementor IPv6. Related work in IPv6 that would best serve an implementor to
to study includes the IPv6 Specification [5], the IPv6 Addressing study includes the IPv6 Specification [3], the IPv6 Addressing
Architecture [9], IPv6 Stateless Address Autoconfiguration [21], IPv6 Architecture [5], IPv6 Stateless Address Autoconfiguration [17], IPv6
Neighbor Discovery Processing [17], and Dynamic Updates to DNS [23]. Neighbor Discovery Processing [13], and Dynamic Updates to DNS [22].
These specifications enable DHCP to build upon the IPv6 work to These specifications enable DHCP to build upon the IPv6 work to
provide both robust stateful autoconfiguration and autoregistration provide both robust stateful autoconfiguration and autoregistration
of DNS Host Names. of DNS Host Names.
The IPv6 Addressing Architecture specification [9] defines the The IPv6 Addressing Architecture specification [5] defines the
address scope that can be used in an IPv6 implementation, and the address scope that can be used in an IPv6 implementation, and the
various configuration architecture guidelines for network designers various configuration architecture guidelines for network designers
of the IPv6 address space. Two advantages of IPv6 are that support of the IPv6 address space. Two advantages of IPv6 are that support
for multicast is required and nodes can create link-local addresses for multicast is required and nodes can create link-local addresses
during initialization. The availability of these features means that during initialization. The availability of these features means that
a client can use its link-local address and a well-known multicast a client can use its link-local address and a well-known multicast
address to discover and communicate with DHCP servers or relay agents address to discover and communicate with DHCP servers or relay agents
on its link. on its link.
IPv6 Stateless Address Autoconfiguration [21] specifies procedures IPv6 Stateless Address Autoconfiguration [17] specifies procedures by
by which a node may autoconfigure addresses based on router which a node may autoconfigure addresses based on router
advertisements [17], and the use of a valid lifetime to support advertisements [13], and the use of a valid lifetime to support
renumbering of addresses on the Internet. In addition the renumbering of addresses on the Internet. In addition, the protocol
protocol interaction by which a node begins stateless or stateful interaction by which a node begins stateless or stateful
autoconfiguration is specified. DHCP is one vehicle to perform autoconfiguration is specified. DHCP is one vehicle to perform
stateful autoconfiguration. Compatibility with stateless address stateful autoconfiguration. Compatibility with stateless address
autoconfiguration is a design requirement of DHCP. autoconfiguration is a design requirement of DHCP.
IPv6 Neighbor Discovery [17] is the node discovery protocol in IPv6 IPv6 Neighbor Discovery [13] is the node discovery protocol in IPv6
which replaces and enhances functions of ARP [18]. To understand which replaces and enhances functions of ARP [14]. To understand
IPv6 and stateless address autoconfiguration it is strongly IPv6 and stateless address autoconfiguration, it is strongly
recommended that implementors understand IPv6 Neighbor Discovery. recommended that implementors understand IPv6 Neighbor Discovery.
Dynamic Updates to DNS [23] is a specification that supports the Dynamic Updates to DNS [22] is a specification that supports the
dynamic update of DNS records for both IPv4 and IPv6. DHCP can use dynamic update of DNS records for both IPv4 and IPv6. DHCP can use
the dynamic updates to DNS to integrate addresses and name space to the dynamic updates to DNS to integrate addresses and name space to
not only support autoconfiguration, but also autoregistration in not only support autoconfiguration, but also autoregistration in
IPv6. IPv6.
4. Terminology 4. Terminology
This sections defines terminology specific to IPv6 and DHCP used in This sections defines terminology specific to IPv6 and DHCP used in
this document. this document.
4.1. IPv6 Terminology 4.1. IPv6 Terminology
IPv6 terminology relevant to this specification from the IPv6 IPv6 terminology relevant to this specification from the IPv6
Protocol [5], IPv6 Addressing Architecture [9], and IPv6 Stateless Protocol [3], IPv6 Addressing Architecture [5], and IPv6 Stateless
Address Autoconfiguration [21] is included below. Address Autoconfiguration [17] is included below.
address An IP layer identifier for an interface address An IP layer identifier for an interface
or a set of interfaces. or a set of interfaces.
host Any node that is not a router. host Any node that is not a router.
IP Internet Protocol Version 6 (IPv6). The IP Internet Protocol Version 6 (IPv6). The
terms IPv4 and IPv6 are used only in terms IPv4 and IPv6 are used only in
contexts where it is necessary to avoid contexts where it is necessary to avoid
ambiguity. ambiguity.
interface A node's attachment to a link. interface A node's attachment to a link.
link A communication facility or medium over link A communication facility or medium over
which nodes can communicate at the link which nodes can communicate at the link
layer, i.e., the layer immediately layer, i.e., the layer immediately
below IP. Examples are Ethernet (simple below IP. Examples are Ethernet (simple
or bridged); Token Ring; PPP links, or bridged); Token Ring; PPP links,
X.25, Frame Relay, or ATM networks; and X.25, Frame Relay, or ATM networks; and
Internet (or higher) layer "tunnels", Internet (or higher) layer "tunnels",
such as tunnels over IPv4 or IPv6 such as tunnels over IPv4 or IPv6
itself. itself.
link-layer identifier A link-layer identifier for an link-layer identifier A link-layer identifier for an
interface. Examples include IEEE 802 interface. Examples include IEEE 802
addresses for Ethernet or Token Ring addresses for Ethernet or Token Ring
network interfaces, and E.164 addresses network interfaces, and E.164 addresses
for ISDN links. for ISDN links.
link-local address An IPv6 address having link-only link-local address An IPv6 address having a link-only
scope, indicated by having the prefix scope, indicated by having the prefix
(FE80::/10), that can be used to reach (FE80::/10), that can be used to reach
neighboring nodes attached to the same neighboring nodes attached to the same
link. Every interface has a link-local link. Every interface has a link-local
address. address.
multicast address An identifier for a set of interfaces multicast address An identifier for a set of interfaces
(typically belonging to different (typically belonging to different
nodes). A packet sent to a multicast nodes). A packet sent to a multicast
address is delivered to all interfaces address is delivered to all interfaces
skipping to change at page 6, line 48 skipping to change at page 11, line 42
intermediary to deliver DHCP messages intermediary to deliver DHCP messages
between clients and servers, and is on between clients and servers, and is on
the same link as the client. the same link as the client.
DHCP server (or server) A node that responds to requests from DHCP server (or server) A node that responds to requests from
clients, and may or may not be on the clients, and may or may not be on the
same link as the client(s). same link as the client(s).
DUID A DHCP Unique IDentifier for a DHCP DUID A DHCP Unique IDentifier for a DHCP
participant; each DHCP client and server participant; each DHCP client and server
has exactly one DUID. See section 9 for has exactly one DUID. See section 9 for
details of the ways in which a DUID may details of the ways in which a DUID may
be constructed. be constructed.
Identity association (IA) A collection of addresses assigned to Identity association (IA) A collection of addresses assigned to
a client. Each IA has an associated a client. Each IA has an associated
IAID. A client may have more than one IAID. A client may have more than one
IA assigned to it; for example, one for IA assigned to it; for example, one for
each of its interfaces. each of its interfaces.
Each IA holds one type of address; Each IA holds one type of address;
for example, an identity association for example, an identity association
for temporary addresses (IA_TA) holds for temporary addresses (IA_TA) holds
temporary addresses (see "identity temporary addresses (see "identity
association for temporary addresses"). association for temporary addresses").
Throughout this document, "IA" is used Throughout this document, "IA" is used
to refer to an identity association to refer to an identity association
skipping to change at page 7, line 28 skipping to change at page 12, line 28
all IAIDs for IAs belonging to that all IAIDs for IAs belonging to that
client. client.
Identity association for non-temporary addresses (IA_NA) An IA Identity association for non-temporary addresses (IA_NA) An IA
that carries assigned addresses that are that carries assigned addresses that are
not temporary addresses (see "identity not temporary addresses (see "identity
association for temporary addresses") association for temporary addresses")
Identity association for temporary addresses (IA_TA) An IA that Identity association for temporary addresses (IA_TA) An IA that
carries temporary addresses (see RFC carries temporary addresses (see RFC
3041 [16]). 3041 [12]).
message A unit of data carried as the payload message A unit of data carried as the payload
of a UDP datagram, exchanged among DHCP of a UDP datagram, exchanged among DHCP
servers, relay agents and clients. servers, relay agents and clients.
Reconfigure key An key supplied to a client by a server Reconfigure key A key supplied to a client by a server
used to provide security for Reconfigure used to provide security for Reconfigure
messages. messages.
relaying A DHCP relay agent relays DHCP messages relaying A DHCP relay agent relays DHCP messages
between DHCP participants. between DHCP participants.
transaction ID An opaque value used to match responses transaction ID An opaque value used to match responses
with replies initiated either by a with replies initiated either by a
client or server. client or server.
skipping to change at page 8, line 26 skipping to change at page 13, line 33
this multicast group. this multicast group.
5.2. UDP Ports 5.2. UDP Ports
Clients listen for DHCP messages on UDP port 546. Servers and relay Clients listen for DHCP messages on UDP port 546. Servers and relay
agents listen for DHCP messages on UDP port 547. agents listen for DHCP messages on UDP port 547.
5.3. DHCP Message Types 5.3. DHCP Message Types
DHCP defines the following message types. More detail on these DHCP defines the following message types. More detail on these
message types can be found in sections 6 and 7. Message types not message types can be found in sections 6 and 7. Message types not
listed here are reserved for future use. The numeric encoding for listed here are reserved for future use. The numeric encoding for
each message type is shown in parentheses. each message type is shown in parentheses.
SOLICIT (1) A client sends a Solicit message to locate SOLICIT (1) A client sends a Solicit message to locate
servers. servers.
ADVERTISE (2) A server sends an Advertise message to indicate ADVERTISE (2) A server sends an Advertise message to indicate
that it is available for DHCP service, in that it is available for DHCP service, in
response to a Solicit message received from a response to a Solicit message received from a
client. client.
skipping to change at page 10, line 27 skipping to change at page 16, line 10
operations requested in messages from clients and servers, and to operations requested in messages from clients and servers, and to
provide additional information about the specific cause of the provide additional information about the specific cause of the
failure of a message. The specific status codes are defined in failure of a message. The specific status codes are defined in
section 24.4. section 24.4.
5.5. Transmission and Retransmission Parameters 5.5. Transmission and Retransmission Parameters
This section presents a table of values used to describe the message This section presents a table of values used to describe the message
transmission behavior of clients and servers. transmission behavior of clients and servers.
Parameter Default Description Parameter Default Description
------------------------------------- -------------------------------------
SOL_MAX_DELAY 1 sec Max delay of first Solicit SOL_MAX_DELAY 1 sec Max delay of first Solicit
SOL_TIMEOUT 1 sec Initial Solicit timeout SOL_TIMEOUT 1 sec Initial Solicit timeout
SOL_MAX_RT 120 secs Max Solicit timeout value SOL_MAX_RT 120 secs Max Solicit timeout value
REQ_TIMEOUT 1 sec Initial Request timeout REQ_TIMEOUT 1 sec Initial Request timeout
REQ_MAX_RT 30 secs Max Request timeout value REQ_MAX_RT 30 secs Max Request timeout value
REQ_MAX_RC 10 Max Request retry attempts REQ_MAX_RC 10 Max Request retry attempts
CNF_MAX_DELAY 1 sec Max delay of first Confirm CNF_MAX_DELAY 1 sec Max delay of first Confirm
CNF_TIMEOUT 1 sec Initial Confirm timeout CNF_TIMEOUT 1 sec Initial Confirm timeout
CNF_MAX_RT 4 secs Max Confirm timeout CNF_MAX_RT 4 secs Max Confirm timeout
skipping to change at page 11, line 5 skipping to change at page 16, line 37
INF_TIMEOUT 1 sec Initial Information-request timeout INF_TIMEOUT 1 sec Initial Information-request timeout
INF_MAX_RT 120 secs Max Information-request timeout value INF_MAX_RT 120 secs Max Information-request timeout value
REL_TIMEOUT 1 sec Initial Release timeout REL_TIMEOUT 1 sec Initial Release timeout
REL_MAX_RC 5 MAX Release attempts REL_MAX_RC 5 MAX Release attempts
DEC_TIMEOUT 1 sec Initial Decline timeout DEC_TIMEOUT 1 sec Initial Decline timeout
DEC_MAX_RC 5 Max Decline attempts DEC_MAX_RC 5 Max Decline attempts
REC_TIMEOUT 2 secs Initial Reconfigure timeout REC_TIMEOUT 2 secs Initial Reconfigure timeout
REC_MAX_RC 8 Max Reconfigure attempts REC_MAX_RC 8 Max Reconfigure attempts
HOP_COUNT_LIMIT 32 Max hop count in a Relay-forward message HOP_COUNT_LIMIT 32 Max hop count in a Relay-forward message
5.6 Representation of time values and "Infinity" as a time value
All time values for lifetimes, T1 and T2 are unsigned integers. The
value 0xffffffff is taken to mean "infinity" when used as a lifetime
(as in RFC2461 [17]) or a value for T1 or T2.
6. Client/Server Message Formats 6. Client/Server Message Formats
All DHCP messages sent between clients and servers share an identical All DHCP messages sent between clients and servers share an identical
fixed format header and a variable format area for options. fixed format header and a variable format area for options.
All values in the message header and in options are in network byte All values in the message header and in options are in network byte
order. order.
Options are stored serially in the options field, with no padding Options are stored serially in the options field, with no padding
between the options. Options are byte-aligned but are not aligned in between the options. Options are byte-aligned but are not aligned in
any other way such as on 2 or 4 byte boundaries. any other way such as on 2 or 4 byte boundaries.
The following diagram illustrates the format of DHCP messages sent The following diagram illustrates the format of DHCP messages sent
between clients and servers: between clients and servers:
0 1 2 3 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 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 | | msg-type | transaction-id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. options . . options .
. (variable) . . (variable) .
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
msg-type Identifies the DHCP message type; the msg-type Identifies the DHCP message type; the
available message types are listed in available message types are listed in
section 5.3. section 5.3.
transaction-id The transaction ID for this message exchange. transaction-id The transaction ID for this message exchange.
options Options carried in this message; options are options Options carried in this message; options are
described in section 22. described in section 22.
skipping to change at page 12, line 7 skipping to change at page 18, line 7
All values in the message header and in options are in network byte All values in the message header and in options are in network byte
order. order.
Options are stored serially in the options field, with no padding Options are stored serially in the options field, with no padding
between the options. Options are byte-aligned but are not aligned in between the options. Options are byte-aligned but are not aligned in
any other way such as on 2 or 4 byte boundaries. any other way such as on 2 or 4 byte boundaries.
There are two relay agent messages, which share the following format: There are two relay agent messages, which share the following format:
0 1 2 3 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 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 | | | msg-type | hop-count | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
| link-address | | link-address |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
| peer-address | | peer-address |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. . . .
. options (variable number and length) .... . . options (variable number and length) .... .
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The following sections describe the use of the Relay Agent message The following sections describe the use of the Relay Agent message
header. header.
7.1. Relay-forward Message 7.1. Relay-forward Message
The following table defines the use of message fields in a The following table defines the use of message fields in a Relay-
Relay-forward message. forward message.
msg-type RELAY-FORW msg-type RELAY-FORW
hop-count Number of relay agents that have relayed this hop-count Number of relay agents that have relayed this
message message.
link-address A global or site-local address that will be used by link-address A global or site-local address that will be used by
the server to identify the link on which the client the server to identify the link on which the client
is located. is located.
peer-address The address of the client or relay agent from which peer-address The address of the client or relay agent from which
the message to be relayed was received the message to be relayed was received.
options MUST include a "Relay Message option" (see options MUST include a "Relay Message option" (see
section 22.10); MAY include other options added by section 22.10); MAY include other options added by
the relay agent the relay agent.
7.2. Relay-reply Message 7.2. Relay-reply Message
The following table defines the use of message fields in a The following table defines the use of message fields in a
Relay-reply message. Relay-reply message.
msg-type RELAY-REPL msg-type RELAY-REPL
hop-count Copied from the Relay-forward message hop-count Copied from the Relay-forward message
skipping to change at page 13, line 25 skipping to change at page 19, line 25
peer-address Copied from the Relay-forward message peer-address Copied from the Relay-forward message
options MUST include a "Relay Message option"; see options MUST include a "Relay Message option"; see
section 22.10; MAY include other options section 22.10; MAY include other options
8. Representation and Use of Domain Names 8. Representation and Use of Domain Names
So that domain names may be encoded uniformly, a domain name or a So that domain names may be encoded uniformly, a domain name or a
list of domain names is encoded using the technique described in list of domain names is encoded using the technique described in
section 3.1 of RFC1035 [14]. A domain name or list of domain names section 3.1 of RFC 1035 [10]. A domain name, or list of domain
in DHCP MUST NOT be stored in compressed form as described in section names, in DHCP MUST NOT be stored in compressed form, as described in
4.1.4 of RFC1035. section 4.1.4 of RFC 1035.
9. DHCP Unique Identifier (DUID) 9. DHCP Unique Identifier (DUID)
Each DHCP client and server has a DUID. DHCP servers use DUIDs to Each DHCP client and server has a DUID. DHCP servers use DUIDs to
identify clients for the selection of configuration parameters and identify clients for the selection of configuration parameters and in
in the association of IAs with clients. DHCP clients use DUIDs to the association of IAs with clients. DHCP clients use DUIDs to
identify a server in messages where a server needs to be identified. identify a server in messages where a server needs to be identified.
See sections 22.2 and 22.3 for the representation of a DUID in a DHCP See sections 22.2 and 22.3 for the representation of a DUID in a DHCP
message. message.
Clients and servers MUST treat DUIDs as opaque values and MUST only Clients and servers MUST treat DUIDs as opaque values and MUST only
compare DUIDs for equality. Clients and servers MUST NOT in any compare DUIDs for equality. Clients and servers MUST NOT in any
other way interpret DUIDs. Clients and servers MUST NOT restrict other way interpret DUIDs. Clients and servers MUST NOT restrict
DUIDs to the types defined in this document as additional DUID types DUIDs to the types defined in this document, as additional DUID types
may be defined in the future. may be defined in the future.
The DUID is carried in an option because it may be variable length The DUID is carried in an option because it may be variable length
and because it is not required in all DHCP messages. The DUID is 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 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 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 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 example, a device's DUID should not change as a result of a change in
the device's network hardware. the device's network hardware.
skipping to change at page 14, line 14 skipping to change at page 20, line 19
any persistent storage. Retaining a generated DUID in such a device any persistent storage. Retaining a generated DUID in such a device
is not possible, so the DUID scheme must accommodate such devices. is not possible, so the DUID scheme must accommodate such devices.
9.1. DUID Contents 9.1. DUID Contents
A DUID consists of a two-octet type code represented in network byte A DUID consists of a two-octet type code represented in network byte
order, followed by a variable number of octets that make up the order, followed by a variable number of octets that make up the
actual identifier. A DUID can be no more than 128 octets long (not actual identifier. A DUID can be no more than 128 octets long (not
including the type code). The following types are currently defined: including the type code). The following types are currently defined:
1 Link-layer address plus time 1 Link-layer address plus time
2 Vendor-assigned unique ID based on Enterprise Number 2 Vendor-assigned unique ID based on Enterprise Number
3 Link-layer address 3 Link-layer address
Formats for the variable field of the DUID for each of the above Formats for the variable field of the DUID for each of the above
types are shown below. types are shown below.
9.2. DUID Based on Link-layer Address Plus Time [DUID-LLT] 9.2. DUID Based on Link-layer Address Plus Time [DUID-LLT]
This type of DUID consists of a two octet type field containing the This type of DUID consists of a two octet type field containing the
value 1, a two octet hardware type code, four octets containing value 1, a two octet hardware type code, four octets containing a
a time value, followed by link-layer address of any one network time value, followed by link-layer address of any one network
interface that is connected to the DHCP device at the time that the 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 DUID is generated. The time value is the time that the DUID is
generated represented in seconds since midnight (UTC), January 1, generated represented in seconds since midnight (UTC), January 1,
2000, modulo 2^32. The hardware type MUST be a valid hardware type 2000, modulo 2^32. The hardware type MUST be a valid hardware type
assigned by the IANA as described in RFC826 [18]. Both the time and assigned by the IANA as described in RFC 826 [14]. Both the time and
the hardware type are stored in network byte order. The link-layer the hardware type are stored in network byte order. The link-layer
address is stored in canonical form, as described in RFC2464 [4]. address is stored in canonical form, as described in RFC 2464 [2].
The following diagram illustrates the format of a DUID-LLT: The following diagram illustrates the format of a DUID-LLT:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 | hardware type (16 bits) | | 1 | hardware type (16 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time (32 bits) | | time (32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. link-layer address (variable length) . . link-layer address (variable length) .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The choice of network interface can be completely arbitrary, as long The choice of network interface can be completely arbitrary, as long
as that interface provides a globally unique link-layer address for as that interface provides a globally unique link-layer address for
the link type, and the same DUID-LLT SHOULD be used in configuring the link type, and the same DUID-LLT SHOULD be used in configuring
all network interfaces connected to the device, regardless of which all network interfaces connected to the device, regardless of which
interface's link-layer address was used to generate the DUID-LLT. 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 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 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 network interface used to generate the DUID-LLT is removed. Clients
and servers that do not have any stable storage MUST NOT use this and servers that do not have any stable storage MUST NOT use this
type of DUID. type of DUID.
Clients and servers that use this DUID SHOULD attempt to configure Clients and servers that use this DUID SHOULD attempt to configure
the time prior to generating the DUID, if that is possible, and MUST 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 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 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 prior to generating the DUID. The use of a time source makes it
unlikely that two identical DUID-LLTs will be generated if the unlikely that two identical DUID-LLTs will be generated if the
network interface is removed from the client and another client then network interface is removed from the client and another client then
uses the same network interface to generate a DUID-LLT. A collision uses the same network interface to generate a DUID-LLT. A collision
between two DUID-LLTs is very unlikely even if the clocks haven't between two DUID-LLTs is very unlikely even if the clocks have not
been configured prior to generating the DUID. been configured prior to generating the DUID.
This method of DUID generation is recommended for all general purpose This method of DUID generation is recommended for all general purpose
computing devices such as desktop computers and laptop computers, and computing devices such as desktop computers and laptop computers, and
also for devices such as printers, routers, and so on, that contain also for devices such as printers, routers, and so on, that contain
some form of writable non-volatile storage. some form of writable non-volatile storage.
Despite our best efforts, it is possible that this algorithm for Despite our best efforts, it is possible that this algorithm for
generating a DUID could result in a client identifier collision. generating a DUID could result in a client identifier collision. A
A DHCP client that generates a DUID-LLT using this mechanism MUST DHCP client that generates a DUID-LLT using this mechanism MUST
provide an administrative interface that replaces the existing DUID provide an administrative interface that replaces the existing DUID
with a newly-generated DUID-LLT. with a newly-generated DUID-LLT.
9.3. DUID Assigned by Vendor Based on Enterprise Number [DUID-EN] 9.3. DUID Assigned by Vendor Based on Enterprise Number [DUID-EN]
This form of DUID is assigned by the vendor to the device. It This form of DUID is assigned by the vendor to the device. It
consists of the vendor's registered Private Enterprise Number as consists of the vendor's registered Private Enterprise Number as
maintained by IANA [10] followed by a unique identifier assigned by maintained by IANA [6] followed by a unique identifier assigned by
the vendor. The following diagram summarizes the structure of a the vendor. The following diagram summarizes the structure of a
DUID-EN: DUID-EN:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2 | enterprise-number | | 2 | enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number (contd) | | | enterprise-number (contd) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. identifier . . identifier .
. (variable length) . . (variable length) .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The source of the identifier is left up to the vendor defining it, 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 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 at the time of that is using it, and MUST be assigned to the device at the time it
manufacture and stored in some form of non-volatile storage. The is manufactured and stored in some form of non-volatile storage. The
generated DUID SHOULD be recorded in non-erasable storage. The generated DUID SHOULD be recorded in non-erasable storage. The
enterprise-number is the vendor's registered Private Enterprise enterprise-number is the vendor's registered Private Enterprise
Number as maintained by IANA [10]. The enterprise-number is stored Number as maintained by IANA [6]. The enterprise-number is stored as
as an unsigned 32 bit number. an unsigned 32 bit number.
An example DUID of this type might look like this: An example DUID of this type might look like this:
+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+
| 0 | 2 | 0 | 0 | 0 | 9| 12|192| | 0 | 2 | 0 | 0 | 0 | 9| 12|192|
+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+
|132|221| 3 | 0 | 9 | 18| |132|221| 3 | 0 | 9 | 18|
+---+---+---+---+---+---+ +---+---+---+---+---+---+
This example includes the two-octet type of 2, the Enterprise This example includes the two-octet type of 2, the Enterprise Number
Number (9), followed by eight octets of identifier data (9), followed by eight octets of identifier data
(0x0CC084D303000912). (0x0CC084D303000912).
9.4. DUID Based on Link-layer Address [DUID-LL] 9.4. DUID Based on Link-layer Address [DUID-LL]
This type of DUID consists of two octets containing the DUID type 3, This type of DUID consists of two octets containing the DUID type 3,
a two octet network hardware type code, followed by the link-layer a two octet network hardware type code, followed by the link-layer
address of any one network interface that is permanently connected to address of any one network interface that is permanently connected to
the client or server device. For example, a host that has a network the client or server device. For example, a host that has a network
interface implemented in a chip that is unlikely to be removed and 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 used elsewhere could use a DUID-LL. The hardware type MUST be a
hardware type assigned by the IANA as described in RFC826 [18]. valid hardware type assigned by the IANA, as described in RFC 826
The hardware type is stored in network byte order. The link-layer [14]. The hardware type is stored in network byte order. The
address is stored in canonical form, as described in RFC2464 [4]. link-layer address is stored in canonical form, as described in RFC
The following diagram illustrates the format of a DUID-LL: 2464 [2]. The following diagram illustrates the format of a DUID-LL:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 | hardware type (16 bits) | | 3 | hardware type (16 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. link-layer address (variable length) . . link-layer address (variable length) .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The choice of network interface can be completely arbitrary, as The choice of network interface can be completely arbitrary, as long
long as that interface provides a unique link-layer address and is as that interface provides a unique link-layer address and is
permanently attached to the device on which the DUID-LL is being permanently attached to the device on which the DUID-LL is being
generated. The same DUID-LL SHOULD be used in configuring all generated. The same DUID-LL SHOULD be used in configuring all
network interfaces connected to the device, regardless of which network interfaces connected to the device, regardless of which
interface's link-layer address was used to generate the DUID. interface's link-layer address was used to generate the DUID.
DUID-LL is recommended for devices that have a permanently-connected DUID-LL is recommended for devices that have a permanently-connected
network interface with a link-layer address and do not have network interface with a link-layer address, and do not have
nonvolatile, writable stable storage. DUID-LL MUST NOT be used by nonvolatile, writable stable storage. DUID-LL MUST NOT be used by
DHCP clients or servers that cannot tell whether or not a network DHCP clients or servers that cannot tell whether or not a network
interface is permanently attached to the device on which the DHCP interface is permanently attached to the device on which the DHCP
client is running. client is running.
10. Identity Association 10. Identity Association
An "identity-association" (IA) is a construct through which a server An "identity-association" (IA) is a construct through which a server
and a client can identify, group and manage a set of related IPv6 and a client can identify, group, and manage a set of related IPv6
addresses. Each IA consists of an IAID and associated configuration addresses. Each IA consists of an IAID and associated configuration
information. information.
A client must associate at least one distinct IA with each of its 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 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 addresses from a DHCP server. The client uses the IAs assigned to an
interface to obtain configuration information from a server for that interface to obtain configuration information from a server for that
interface. Each IA must be associated with exactly one interface. interface. Each IA must be associated with exactly one interface.
The IAID uniquely identifies the IA and must be chosen to be unique The IAID uniquely identifies the IA and must be chosen to be unique
skipping to change at page 17, line 34 skipping to change at page 24, line 11
For any given use of an IA by the client, the IAID for that IA MUST 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 be consistent across restarts of the DHCP client. The client may
maintain consistency either by storing the IAID in non-volatile maintain consistency either by storing the IAID in non-volatile
storage or by using an algorithm that will consistently produce the storage or by using an algorithm that will consistently produce the
same IAID as long as the configuration of the client has not changed. 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 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 if it does not have non-volatile storage and the client's hardware
configuration changes. configuration changes.
The configuration information in an IA consists of one or more IPv6 The configuration information in an IA consists of one or more IPv6
addresses along with the times T1 and T2 for the IA. See section 22.4 addresses along with the times T1 and T2 for the IA. See section
for the representation of an IA in a DHCP message. 22.4 for the representation of an IA in a DHCP message.
Each address in an IA has a preferred lifetime and a valid lifetime, Each address in an IA has a preferred lifetime and a valid lifetime,
as defined in RFC2462 [21]. The lifetimes are transmitted from the as defined in RFC 2462 [17]. The lifetimes are transmitted from the
DHCP server to the client in the IA option. The lifetimes apply to DHCP server to the client in the IA option. The lifetimes apply to
the use of IPv6 addresses as described in section 5.5.4 of RFC2462. the use of IPv6 addresses, as described in section 5.5.4 of RFC 2462.
11. Selecting Addresses for Assignment to an IA 11. Selecting Addresses for Assignment to an IA
A server selects addresses to be assigned to an IA according to the A server selects addresses to be assigned to an IA according to the
address assignment policies determined by the server administrator address assignment policies determined by the server administrator
and the specific information the server determines about the client and the specific information the server determines about the client
from some combination of the following sources: from some combination of the following sources:
- The link to which the client is attached. The server determines - The link to which the client is attached. The server determines
the link as follows: the link as follows:
* If the server receives the message directly from the client * If the server receives the message directly from the client and
and the source address in the IP datagram in which the the source address in the IP datagram in which the message was
message was received is a link-local address, then the client received is a link-local address, then the client is on the
is on the same link to which the interface over which the same link to which the interface over which the message was
message was received is attached received is attached.
* If the server receives the message from a forwarding relay * If the server receives the message from a forwarding relay
agent, then the client is on the same link as the one to agent, then the client is on the same link as the one to which
which the interface identified by the link-address field in the interface, identified by the link-address field in the
the message from the relay agent is attached message from the relay agent, is attached.
* If the server receives the message directly from the client * If the server receives the message directly from the client and
and the source address in the IP datagram in which the the source address in the IP datagram in which the message was
message was received is not a link-local address, then the received is not a link-local address, then the client is on the
client is on the link identified by the source address in the link identified by the source address in the IP datagram (note
IP datagram (note that this situation can occur only if the that this situation can occur only if the server has enabled
server has enabled the use of unicast message delivery by the the use of unicast message delivery by the client and the
client and the client has sent a message for which unicast client has sent a message for which unicast delivery is
delivery is allowed) allowed).
- The DUID supplied by the client - The DUID supplied by the client.
- Other information in options supplied by the client - Other information in options supplied by the client.
- Other information in options supplied by the relay agent - Other information in options supplied by the relay agent.
Any address assigned by a server that is based on an EUI-64 Any address assigned by a server that is based on an EUI-64
identifier MUST include an interface identifier with the "u" identifier MUST include an interface identifier with the "u"
(universal/local) and "g" (individual/group) bits of the interface (universal/local) and "g" (individual/group) bits of the interface
identifier set appropriately, as indicated in section 2.5.1 of RFC identifier set appropriately, as indicated in section 2.5.1 of RFC
2373 [9]. 2373 [5].
A server MUST NOT assign an address that is otherwise reserved for A server MUST NOT assign an address that is otherwise reserved for
some other purpose. For example, a server MUST NOT assign reserved some other purpose. For example, a server MUST NOT assign reserved
anycast addresses, as defined in RFC2526, from any subnet. anycast addresses, as defined in RFC 2526, from any subnet.
12. Management of Temporary Addresses 12. Management of Temporary Addresses
A client may request the assignment of temporary addresses (see A client may request the assignment of temporary addresses (see RFC
RFC 3041 [16] for the definition of temporary addresses). DHCPv6 3041 [12] for the definition of temporary addresses). DHCPv6
handling of address assignment is no different for temporary handling of address assignment is no different for temporary
addresses. DHCPv6 says nothing about details of temporary addresses addresses. DHCPv6 says nothing about details of temporary addresses
like lifetimes, how clients use temporary addresses, rules for like lifetimes, how clients use temporary addresses, rules for
generating successive temporary addresses, etc. generating successive temporary addresses, etc.
Clients ask for temporary addresses and servers assign them. Clients ask for temporary addresses and servers assign them.
Temporary addresses are carried in the Identity Association for Temporary addresses are carried in the Identity Association for
Temporary Addresses (IA_TA) option (see section 22.5). Each IA_TA Temporary Addresses (IA_TA) option (see section 22.5). Each IA_TA
option contains at most one temporary address for each of the option contains at most one temporary address for each of the
prefixes on the link to which the client is attached. prefixes on the link to which the client is attached.
The IAID number space for the IA_TA option IAID number space is The IAID number space for the IA_TA option IAID number space is
separate from the IA_NA option IAID number space. separate from the IA_NA option IAID number space.
The server MAY update the DNS for a temporary address as described in The server MAY update the DNS for a temporary address, as described
section 4 of RFC3041. in section 4 of RFC 3041.
13. Transmission of Messages by a Client 13. Transmission of Messages by a Client
Unless otherwise specified in this document or in a document that Unless otherwise specified in this document, or in a document that
describes how IPv6 is carried over a specific type of link (for link 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 types that do not support multicast), a client sends DHCP messages to
the All_DHCP_Relay_Agents_and_Servers. the All_DHCP_Relay_Agents_and_Servers.
A client uses multicast to reach all servers or an individual server. A client uses multicast to reach all servers or an individual server.
An individual server is indicated by specifying that server's DUID in An individual server is indicated by specifying that server's DUID in
a Server Identifier option (see section 22.3) in the client's message a Server Identifier option (see section 22.3) in the client's message
(all servers will receive this message but only the indicated server (all servers will receive this message but only the indicated server
will respond). All servers are indicated by not supplying this will respond). All servers are indicated by not supplying this
option. option.
skipping to change at page 20, line 29 skipping to change at page 27, line 19
RT for the first message transmission is based on IRT: RT for the first message transmission is based on IRT:
RT = IRT + RAND*IRT RT = IRT + RAND*IRT
RT for each subsequent message transmission is based on the previous RT for each subsequent message transmission is based on the previous
value of RT: value of RT:
RT = 2*RTprev + RAND*RTprev RT = 2*RTprev + RAND*RTprev
MRT specifies an upper bound on the value of RT (disregarding the 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, 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: there is no upper limit on the value of RT. Otherwise:
if (RT > MRT) if (RT > MRT)
RT = MRT + RAND*MRT RT = MRT + RAND*MRT
MRC specifies an upper bound on the number of times a client may MRC specifies an upper bound on the number of times a client may
retransmit a message. Unless MRC is zero, the message exchange fails retransmit a message. Unless MRC is zero, the message exchange fails
once the client has transmitted the message MRC times. once the client has transmitted the message MRC times.
MRD specifies an upper bound on the length of time a client may MRD specifies an upper bound on the length of time a client may
retransmit a message. Unless MRD is zero, the message exchange fails retransmit a message. Unless MRD is zero, the message exchange fails
once MRD seconds have elapsed since the client first transmitted the once MRD seconds have elapsed since the client first transmitted the
message. message.
skipping to change at page 21, line 10 skipping to change at page 27, line 46
met. met.
If both MRC and MRD are zero, the client continues to transmit the If both MRC and MRD are zero, the client continues to transmit the
message until it receives a response. message until it receives a response.
15. Message Validation 15. Message Validation
Clients and servers SHOULD discard any messages that contain options Clients and servers SHOULD discard any messages that contain options
that are not allowed to appear in the received message. For example, that are not allowed to appear in the received message. For example,
an IA option is not allowed to appear in an Information-request an IA option is not allowed to appear in an Information-request
message. Clients and server MAY choose to extract information from message. Clients and servers MAY choose to extract information from
such a message if the information is of use to the recipient. such a message if the information is of use to the recipient.
A server MUST discard any Solicit, Confirm, Rebind or A server MUST discard any Solicit, Confirm, Rebind or
Information-request messages it receives with a unicast Information-request messages it receives with a unicast destination
destination address. address.
Message validation based on DHCP authentication is discussed in Message validation based on DHCP authentication is discussed in
section 21.4.2. section 21.4.2.
If a server receives a message that contains options it should not If a server receives a message that contains options it should not
contain (such as an Information-request message with an IA option), contain (such as an Information-request message with an IA option),
is missing options that it should contain, or is otherwise not valid, is missing options that it should contain, or is otherwise not valid,
it MAY send a Reply (or Advertise as appropriate) with a Server it MAY send a Reply (or Advertise as appropriate) with a Server
Identifier option, a Client Identifier option if one was included in Identifier option, a Client Identifier option if one was included in
the message and a Status Code option with status UnSpecFail. the message and a Status Code option with status UnSpecFail.
15.1. Use of Transaction IDs 15.1. Use of Transaction IDs
The "transaction-id" field holds a value used by clients and servers The "transaction-id" field holds a value used by clients and servers
to synchronize server responses to client messages. A client to synchronize server responses to client messages. A client SHOULD
SHOULD generate a random number that cannot easily be guessed or generate a random number that cannot easily be guessed or predicted
predicted to use as the transaction ID for each new message it sends. to use as the transaction ID for each new message it sends. Note
Note that if a client generates easily predictable transaction that if a client generates easily predictable transaction
identifiers, it may become more vulnerable to certain kinds of identifiers, it may become more vulnerable to certain kinds of
attacks from off-path intruders. A client MUST leave the transaction attacks from off-path intruders. A client MUST leave the transaction
ID unchanged in retransmissions of a message. ID unchanged in retransmissions of a message.
15.2. Solicit Message 15.2. Solicit Message
Clients MUST discard any received Solicit messages. Clients MUST discard any received Solicit messages.
Servers MUST discard any Solicit messages that do not include a Servers MUST discard any Solicit messages that do not include a
Client Identifier option or that do include a Server Identifier Client Identifier option or that do include a Server Identifier
option. option.
15.3. Advertise Message 15.3. Advertise Message
Clients MUST discard any received Advertise messages that meet any of Clients MUST discard any received Advertise messages that meet any of
the following conditions: the following conditions:
- the message does not include a Server Identifier option - the message does not include a Server Identifier option.
- the message does not include a Client Identifier option - the message does not include a Client Identifier option.
- the contents of the Client Identifier option does not match the
client's DUID
- the "transaction-id" field value does not match the value the - the contents of the Client Identifier option does not match the
client used in its Solicit message 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 Servers and relay agents MUST discard any received Advertise
messages. messages.
15.4. Request Message 15.4. Request Message
Clients MUST discard any received Request messages. Clients MUST discard any received Request messages.
Servers MUST discard any received Request message that meet any of Servers MUST discard any received Request message that meet any of
the following conditions: the following conditions:
- the message does not include a Server Identifier option - the message does not include a Server Identifier option.
- the contents of the Server Identifier option do not match the - the contents of the Server Identifier option do not match the
server's DUID server's DUID.
- the message does not include a Client Identifier option - the message does not include a Client Identifier option.
15.5. Confirm Message 15.5. Confirm Message
Clients MUST discard any received Confirm messages. Clients MUST discard any received Confirm messages.
Servers MUST discard any received Confirm messages that do not Servers MUST discard any received Confirm messages that do not
include a Client Identifier option or that do include a Server include a Client Identifier option or that do include a Server
Identifier option. Identifier option.
15.6. Renew Message 15.6. Renew Message
Clients MUST discard any received Renew messages. Clients MUST discard any received Renew messages.
Servers MUST discard any received Renew message that meets any of the Servers MUST discard any received Renew message that meets any of the
following conditions: following conditions:
- the message MUST include a Server Identifier option - the message does not include a Server Identifier option.
- the contents of the Server Identifier option MUST match the - the contents of the Server Identifier option does not match the
server's identifier server's identifier.
- the message MUST include a Client Identifier option - the message does not include a Client Identifier option.
15.7. Rebind Message 15.7. Rebind Message
Clients MUST discard any received Rebind messages. Clients MUST discard any received Rebind messages.
Servers MUST discard any received Rebind messages that do not include Servers MUST discard any received Rebind messages that do not include
a Client Identifier option or that do include a Server Identifier a Client Identifier option or that do include a Server Identifier
option. option.
15.8. Decline Messages 15.8. Decline Messages
Clients MUST discard any received Decline messages. Clients MUST discard any received Decline messages.
Servers MUST discard any received Decline message that fails to meet Servers MUST discard any received Decline message that meets any of
any of the following conditions: the following conditions:
- the message MUST include a Server Identifier option - the message does not include a Server Identifier option.
- the contents of the Server Identifier option MUST match the - the contents of the Server Identifier option does not match the
server's identifier server's identifier.
- the message MUST include a Client Identifier option - the message does not include a Client Identifier option.
15.9. Release Message 15.9. Release Message
Clients MUST discard any received Release messages. Clients MUST discard any received Release messages.
Servers MUST discard any received Release message that fails to meet Servers MUST discard any received Release message that meets any of
any of the following conditions: the following conditions:
- the message MUST include a Server Identifier option - the message does not include a Server Identifier option.
- the contents of the Server Identifier option MUST match the - the contents of the Server Identifier option does not match the
server's identifier server's identifier.
- the message MUST include a Client Identifier option - the message does not include a Client Identifier option.
15.10. Reply Message 15.10. Reply Message
Clients MUST discard any received Reply message that fails to meet Clients MUST discard any received Reply message that meets any of the
any of the following conditions: following conditions:
- the message MUST include a Server Identifier option - the message does not include a Server Identifier option.
- the "transaction-id" field in the message MUST match the value - the "transaction-id" field in the message does not match the value
used in the original message used in the original message.
- if the client included a Client Identifier option in the original If the client included a Client Identifier option in the original
message, the message MUST include a Client Identifier option message, the Reply message MUST include a Client Identifier option
and the contents of the Client Identifier option MUST match the and the contents of the Client Identifier option MUST match the DUID
DUID of the client or, if the client did not include a Client of the client; OR, if the client did not include a Client Identifier
Identifier option in the original message, the Reply message MUST option in the original message, the Reply message MUST NOT include a
NOT include a Client Identifier option Client Identifier option.
Servers and relay agents MUST discard any received Reply messages. Servers and relay agents MUST discard any received Reply messages.
15.11. Reconfigure Message 15.11. Reconfigure Message
Servers and relay agents MUST discard any received Reconfigure Servers and relay agents MUST discard any received Reconfigure
messages. messages.
Clients MUST discard any Reconfigure messages that fails any of the Clients MUST discard any Reconfigure messages that meets any of the
following conditions: following conditions:
- the message MUST have been unicast to the client - the message was not unicast to the client.
- the message MUST include a Server Identifier option - the message does not include a Server Identifier option.
- the message MUST include a Client Identifier option that contains - the message does not include a Client Identifier option that
the client's DUID contains the client's DUID.
- the message MUST contain a Reconfigure Message option and the - the message does not contain a Reconfigure Message option and the
msg-type must be a valid value msg-type must be a valid value.
- the message MUST NOT include any IA options if the msg-type in - the message includes any IA options and the msg-type in the
the Reconfigure Message option is INFORMATION-REQUEST Reconfigure Message option is INFORMATION-REQUEST.
- the message MUST include DHCP authentication: - the message does not include DHCP authentication:
* the message MUST contain an authentication option * the message does not contain an authentication option.
* the message MUST pass the authentication validation performed * the message does not pass the authentication validation
by the client performed by the client.
15.12. Information-request Message 15.12. Information-request Message
Clients MUST discard any received Information-request messages. Clients MUST discard any received Information-request messages.
Servers MUST discard any received Information-request message that Servers MUST discard any received Information-request message that
fails to meet any of the following conditions: meets any of the following conditions:
- The message includes a Server Identifier option and the DUID in - The message includes a Server Identifier option and the DUID in
the option does not match the server's DUID the option does not match the server's DUID.
- The message includes an IA option - The message includes an IA option.
15.13. Relay-forward Message 15.13. Relay-forward Message
Clients MUST discard any received Relay-forward messages. Clients MUST discard any received Relay-forward messages.
15.14. Relay-reply Message 15.14. Relay-reply Message
Clients and servers MUST discard any received Relay-reply messages. Clients and servers MUST discard any received Relay-reply messages.
16. Client Source Address and Interface Selection 16. Client Source Address and Interface Selection
When a client sends a DHCP message to the When a client sends a DHCP message to the
All_DHCP_Relay_Agents_and_Servers address, it SHOULD send the All_DHCP_Relay_Agents_and_Servers address, it SHOULD send the message
message through the interface for which configuration information is through the interface for which configuration information is being
being requested. However, the client MAY send the message through requested. However, the client MAY send the message through another
another interface attached to the same link if and only if the interface attached to the same link, if and only if the client is
client is certain the two interfaces are attached to the same link. certain the two interfaces are attached to the same link. The client
The client MUST use a link-local address assigned to the interface MUST use a link-local address assigned to the interface for which it
for which is is requesting configuration information as the source is requesting configuration information as the source address in the
address in the header of the IP datagram. header of the IP datagram.
When a client sends a DHCP message directly to a server using unicast When a client sends a DHCP message directly to a server using unicast
(after receiving the Server Unicast option from that server), the (after receiving the Server Unicast option from that server), the
source address in the header of the IP datagram MUST be an address source address in the header of the IP datagram MUST be an address
assigned to the interface for which the client is interested in assigned to the interface for which the client is interested in
obtaining configuration and which is suitable for use by the server obtaining configuration and which is suitable for use by the server
in responding to the client. in responding to the client.
17. DHCP Server Solicitation 17. DHCP Server Solicitation
This section describes how a client locates servers that will assign This section describes how a client locates servers that will assign
addresses to IAs belonging to the client. addresses to IAs belonging to the client.
The client is responsible for creating IAs and requesting that a The client is responsible for creating IAs and requesting that a
server assign IPv6 addresses to the IA. The client first creates server assign IPv6 addresses to the IA. The client first creates an
an IA and assigns it an IAID. The client then transmits a Solicit IA and assigns it an IAID. The client then transmits a Solicit
message containing an IA option describing the IA. Servers that can message containing an IA option describing the IA. Servers that can
assign addresses to the IA respond to the client with an Advertise assign addresses to the IA respond to the client with an Advertise
message. The client then initiates a configuration exchange as message. The client then initiates a configuration exchange as
described in section 18. described in section 18.
If the client will accept a Reply message with committed address If the client will accept a Reply message with committed address
assignments and other resources in response to the Solicit message, assignments and other resources in response to the Solicit message,
the client includes a Rapid Commit option (see section 22.14) in the the client includes a Rapid Commit option (see section 22.14) in the
Solicit message. Solicit message.
17.1. Client Behavior 17.1. Client Behavior
A client uses the Solicit message to discover DHCP servers configured A client uses the Solicit message to discover DHCP servers configured
to assign addresses or return other configuration parameters on the to assign addresses or return other configuration parameters on the
link to which the client is attached. link to which the client is attached.
17.1.1. Creation of Solicit Messages 17.1.1. Creation of Solicit Messages
The client sets the "msg-type" field to SOLICIT. The client generates The client sets the "msg-type" field to SOLICIT. The client
a transaction ID and inserts this value in the "transaction-id" generates a transaction ID and inserts this value in the
field. "transaction-id" field.
The client MUST include a Client Identifier option to identify itself The client MUST include a Client Identifier option to identify itself
to the server. The client includes IA options for any IAs to which to the server. The client includes IA options for any IAs to which
it wants the server to assign addresses. The client MAY include it wants the server to assign addresses. The client MAY include
addresses in the IAs as a hint to the server about addresses for addresses in the IAs as a hint to the server about addresses for
which the client has a preference. The client MUST NOT include any which the client has a preference. The client MUST NOT include any
other options in the Solicit message except as specifically allowed other options in the Solicit message, except as specifically allowed
in the definition of individual options. in the definition of individual options.
The client uses IA_NA options to request the assignment of The client uses IA_NA options to request the assignment of non-
non-temporary addresses and uses IA_TA options to request the temporary addresses and uses IA_TA options to request the assignment
assignment of temporary addresses. Either IA_NA or IA_TA options, or of temporary addresses. Either IA_NA or IA_TA options, or a
a combination of both can be included in DHCP messages. combination of both, can be included in DHCP messages.
The client SHOULD include an Option Request option (see section 22.7) The client SHOULD include an Option Request option (see section 22.7)
to indicate the options the client is interested in receiving. The to indicate the options the client is interested in receiving. The
client MAY additionally include instances of those options that are client MAY additionally include instances of those options that are
identified in the Option Request option with data values as hints identified in the Option Request option, with data values as hints to
to the server about parameter values the client would like to have the server about parameter values the client would like to have
returned. returned.
The client includes a Reconfigure Accept option (see section 22.20) The client includes a Reconfigure Accept option (see section 22.20)
if the client is willing to accept Reconfigure messages from the if the client is willing to accept Reconfigure messages from the
server. server.
17.1.2. Transmission of Solicit Messages 17.1.2. Transmission of Solicit Messages
The first Solicit message from the client on the interface MUST be The first Solicit message from the client on the interface MUST be
delayed by a random amount of time between 0 and SOL_MAX_DELAY. In delayed by a random amount of time between 0 and SOL_MAX_DELAY. In
the case of a Solicit message transmitted when DHCP is initiated the case of a Solicit message transmitted when DHCP is initiated by
by IPv6 Neighbor Discovery, the delay gives the amount of time to IPv6 Neighbor Discovery, the delay gives the amount of time to wait
wait after IPv6 Neighbor Discovery causes the client to invoke the after IPv6 Neighbor Discovery causes the client to invoke the
stateful address autoconfiguration protocol (see section 5.5.3 of stateful address autoconfiguration protocol (see section 5.5.3 of RFC
RFC2462). This random delay desynchronizes clients which start at 2462). This random delay desynchronizes clients which start at the
the same time (for example, after a power outage). same time (for example, after a power outage).
The client transmits the message according to section 14, using the The client transmits the message according to section 14, using the
following parameters: following parameters:
IRT SOL_TIMEOUT IRT SOL_TIMEOUT
MRT SOL_MAX_RT MRT SOL_MAX_RT
MRC 0 MRC 0
skipping to change at page 27, line 11 skipping to change at page 34, line 18
If the client is waiting for an Advertise message, the mechanism in If the client is waiting for an Advertise message, the mechanism in
section 14 is modified as follows for use in the transmission of section 14 is modified as follows for use in the transmission of
Solicit messages. The message exchange is not terminated by the Solicit messages. The message exchange is not terminated by the
receipt of an Advertise before the first RT has elapsed. Rather, the receipt of an Advertise before the first RT has elapsed. Rather, the
client collects Advertise messages until the first RT has elapsed. client collects Advertise messages until the first RT has elapsed.
Also, the first RT MUST be selected to be strictly greater than IRT Also, the first RT MUST be selected to be strictly greater than IRT
by choosing RAND to be strictly greater than 0. by choosing RAND to be strictly greater than 0.
A client MUST collect Advertise messages for the first RT seconds, A client MUST collect Advertise messages for the first RT seconds,
unless it receives an Advertise message with a preference value unless it receives an Advertise message with a preference value of
of 255. The preference value is carried in the Preference option 255. The preference value is carried in the Preference option
(section 22.8). Any Advertise that does not include a Preference (section 22.8). Any Advertise that does not include a Preference
option is considered to have a preference value of 0. If the client option is considered to have a preference value of 0. If the client
receives an Advertise message that includes a Preference option receives an Advertise message that includes a Preference option with
with a preference value of 255, the client immediately begins a a preference value of 255, the client immediately begins a client-
client-initiated message exchange (as described in section 18) by initiated message exchange (as described in section 18) by sending a
sending a Request message to the server from which the Advertise Request message to the server from which the Advertise message was
message was received. If the client receives an Advertise message received. If the client receives an Advertise message that does not
that does not include a Preference option with a preference value of include a Preference option with a preference value of 255, the
255, the client continues to wait until the first RT elapses. If the client continues to wait until the first RT elapses. If the first RT
first RT elapses and the client has received an Advertise message, elapses and the client has received an Advertise message, the client
the client SHOULD continue with a client-initiated message exchange SHOULD continue with a client-initiated message exchange by sending a
by sending a Request message. Request message.
If the client does not receive any Advertise messages before If the client does not receive any Advertise messages before the
the first RT has elapsed, it begins the retransmission mechanism first RT has elapsed, it begins the retransmission mechanism
described in section 14. The client terminates the retransmission described in section 14. The client terminates the retransmission
process as soon as it receives any Advertise message, and the client process as soon as it receives any Advertise message, and the client
acts on the received Advertise message without waiting for any acts on the received Advertise message without waiting for any
additional Advertise messages. additional Advertise messages.
A DHCP client SHOULD choose MRC and MRD to be 0. If the DHCP client A DHCP client SHOULD choose MRC and MRD to be 0. If the DHCP client
is configured with either MRC or MRD set to a value other than is configured with either MRC or MRD set to a value other than 0, it
0, it MUST stop trying to configure the interface if the message MUST stop trying to configure the interface if the message exchange
exchange fails. After the DHCP client stops trying to configure fails. After the DHCP client stops trying to configure the
the interface, it SHOULD restart the reconfiguration process after interface, it SHOULD restart the reconfiguration process after some
some external event, such as user input, system restart, or when the external event, such as user input, system restart, or when the
client is attached to a new link. client is attached to a new link.
17.1.3. Receipt of Advertise Messages 17.1.3. Receipt of Advertise Messages
The client MUST ignore any Advertise message that includes a Status The client MUST ignore any Advertise message that includes a Status
Code option containing the value NoAddrsAvail, with the exception Code option containing the value NoAddrsAvail, with the exception
that the client MAY display the associated status message to the that the client MAY display the associated status message to the
user. user.
Upon receipt of one or more valid Advertise messages, the client Upon receipt of one or more valid Advertise messages, the client
selects one or more Advertise messages based upon the following selects one or more Advertise messages based upon the following
criteria. criteria.
- Those Advertise messages with the highest server preference value - Those Advertise messages with the highest server preference value
are preferred over all other Advertise messages. are preferred over all other Advertise messages.
- Within a group of Advertise messages with the same server - Within a group of Advertise messages with the same server
preference value, a client MAY select those servers whose preference value, a client MAY select those servers whose
Advertise messages advertise information of interest to the Advertise messages advertise information of interest to the
client. For example, the client may choose a server that client. For example, the client may choose a server that returned
returned an advertisement with configuration options of interest an advertisement with configuration options of interest to the
to the client. client.
- The client MAY choose a less-preferred server if that server has - The client MAY choose a less-preferred server if that server has a
a better set of advertised parameters, such as the available better set of advertised parameters, such as the available
addresses advertised in IAs. addresses advertised in IAs.
Once a client has selected Advertise message(s), the client will Once a client has selected Advertise message(s), the client will
typically store information about each server, such as server typically store information about each server, such as server
preference value, addresses advertised, when the advertisement was preference value, addresses advertised, when the advertisement was
received, and so on. received, and so on.
If the client needs to select an alternate server in the case that a 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 chosen server does not respond, the client chooses the next server
according to the criteria given above. according to the criteria given above.
17.1.4. Receipt of Reply Message 17.1.4. Receipt of Reply Message
If the client includes a Rapid Commit option in the Solicit message, If the client includes a Rapid Commit option in the Solicit message,
it will expect a Reply message that includes a Rapid Commit option it will expect a Reply message that includes a Rapid Commit option in
in response. The client discards any Reply messages it receives response. The client discards any Reply messages it receives that do
that do not include a Rapid Commit option. If the client receives not include a Rapid Commit option. If the client receives a valid
a valid Reply message that includes a Rapid Commit option, it Reply message that includes a Rapid Commit option, it processes the
processes the message as described in section 18.1.8. If it does message as described in section 18.1.8. If it does not receive such
not receive such a Reply message and does receive a valid Advertise a Reply message and does receive a valid Advertise message, the
message, the client processes the Advertise message as described in client processes the Advertise message as described in section
section 17.1.3. 17.1.3.
If the client subsequently receives a valid Reply message that
includes a Rapid Commit option, it either:
processes the Reply message as described in section 18.1.8, and
discards any Reply messages received in response to the Request
message, or
processes any Reply messages received in response to the Request
message and discards the Reply message that includes the Rapid
Commit option.
17.2. Server Behavior 17.2. Server Behavior
A server sends an Advertise message in response to valid Solicit A server sends an Advertise message in response to valid Solicit
messages it receives to announce the availability of the server to messages it receives to announce the availability of the server to
the client. the client.
17.2.1. Receipt of Solicit Messages 17.2.1. Receipt of Solicit Messages
The server determines the information about the client and its The server determines the information about the client and its
location as described in section 11 and checks its administrative location as described in section 11 and checks its administrative
policy about responding to the client. If the server is not policy about responding to the client. If the server is not
permitted to respond to the client, the server discards the Solicit permitted to respond to the client, the server discards the Solicit
message. For example, if the administrative policy for the server message. For example, if the administrative policy for the server is
is that it may only respond to a client that is willing to accept that it may only respond to a client that is willing to accept a
a Reconfigure message, if the client indicates with a Reconfigure Reconfigure message, if the client indicates with a Reconfigure
Accept option in the Solicit message that it will not accept a Accept option in the Solicit message that it will not accept a
Reconfigure message, the servers discards the Solicit message. Reconfigure message, the servers discard the Solicit message.
If the client has included a Rapid Commit option in the Solicit If the client has included a Rapid Commit option in the Solicit
message and the server has been configured to respond with committed message and the server has been configured to respond with committed
address assignments and other resources, the server responds to address assignments and other resources, the server responds to the
the Solicit with a Reply message as described in section 17.2.3. Solicit with a Reply message as described in section 17.2.3.
Otherwise, the server ignores the Rapid Commit option and processes Otherwise, the server ignores the Rapid Commit option and processes
the remainder of the message as if no Rapid Commit option were the remainder of the message as if no Rapid Commit option were
present. present.
17.2.2. Creation and Transmission of Advertise Messages 17.2.2. Creation and Transmission of Advertise Messages
The server sets the "msg-type" field to ADVERTISE and copies the The server sets the "msg-type" field to ADVERTISE and copies the
contents of the transaction-id field from the Solicit message contents of the transaction-id field from the Solicit message
received from the client to the Advertise message. The server received from the client to the Advertise message. The server
includes its server identifier in a Server Identifier option and includes its server identifier in a Server Identifier option and
copies the Client Identifier from the Solicit message into the copies the Client Identifier from the Solicit message into the
Advertise message. Advertise message.
The server MAY add a Preference option to carry the preference value The server MAY add a Preference option to carry the preference value
for the Advertise message. The server implementation SHOULD allow for the Advertise message. The server implementation SHOULD allow
the setting of a server preference value by the administrator. the setting of a server preference value by the administrator. The
The server preference value MUST default to zero unless otherwise server preference value MUST default to zero unless otherwise
configured by the server administrator. configured by the server administrator.
The server includes a Reconfigure Accept option if the server wants The server includes a Reconfigure Accept option if the server wants
to require that the client accept Reconfigure messages. to require that the client accept Reconfigure messages.
The server includes options the server will return to the client in The server includes options the server will return to the client in a
a subsequent Reply message. The information in these options may subsequent Reply message. The information in these options may be
be used by the client in the selection of a server if the client used by the client in the selection of a server if the client
receives more than one Advertise message. If the client has included receives more than one Advertise message. If the client has included
an Option Request option in the Solicit message, the server includes an Option Request option in the Solicit message, the server includes
options in the Advertise message containing configuration parameters options in the Advertise message containing configuration parameters
for all of the options identified in the Option Request option for all of the options identified in the Option Request option that
that the server has been configured to return to the client. The the server has been configured to return to the client. The server
server MAY return additional options to the client if it has been MAY return additional options to the client if it has been configured
configured to do so. The server SHOULD limit the options returned to to do so. The server must be aware of the recommendations on packet
the client so that the DHCP message header and options do not cause sizes and the use of fragmentation in section 5 of RFC 2460.
fragmentation.
If the Solicit message from the client included one or more IA If the Solicit message from the client included one or more IA
options, the server MUST include IA options in the Advertise message options, the server MUST include IA options in the Advertise message
containing any addresses that would be assigned to IAs contained in containing any addresses that would be assigned to IAs contained in
the Solicit message from the client. If the client has included the Solicit message from the client. If the client has included
addresses in the IAs in the Solicit message, the server uses those addresses in the IAs in the Solicit message, the server uses those
addresses as hints about the addresses the client would like to addresses as hints about the addresses the client would like to
receive. receive.
If the server will not assign any addresses to any IAs in a If the server will not assign any addresses to any IAs in a
subsequent Request from the client, the server MUST send an Advertise subsequent Request from the client, the server MUST send an Advertise
message to the client that includes only a Status Code option message to the client that includes only a Status Code option with
with code NoAddrsAvail and a status message for the user, a Server code NoAddrsAvail and a status message for the user, a Server
Identifier option with the server's DUID and a Client Identifier Identifier option with the server's DUID, and a Client Identifier
option with the client's DUID. option with the client's DUID.
If the Solicit message was received directly by the server, the If the Solicit message was received directly by the server, the
server unicasts the Advertise message directly to the client using server unicasts the Advertise message directly to the client using
the address in the source address field from the IP datagram in which the address in the source address field from the IP datagram in which
the Solicit message was received. The Advertise message MUST be the Solicit message was received. The Advertise message MUST be
unicast on the link from which the Solicit message was received. unicast on the link from which the Solicit message was received.
If the Solicit message was received in a Relay-forward message, the If the Solicit message was received in a Relay-forward message, the
server constructs a Relay-reply message with the Advertise message server constructs a Relay-reply message with the Advertise message in
in the payload of a "relay-message" option. If the Relay-forward the payload of a "relay-message" option. If the Relay-forward
messages included an Interface-id option, the server copies messages included an Interface-id option, the server copies that
that option to the Relay-reply message. The server unicasts the option to the Relay-reply message. The server unicasts the
Relay-reply message directly to the relay agent using the address Relay-reply message directly to the relay agent using the address in
in the source address field from the IP datagram in which the the source address field from the IP datagram in which the Relay-
Relay-forward message was received. forward message was received.
17.2.3. Creation and Transmission of Reply Messages 17.2.3. Creation and Transmission of Reply Messages
The server MUST commit the assignment of any addresses or other The server MUST commit the assignment of any addresses or other
configuration information message before sending a Reply message to a configuration information message before sending a Reply message to a
client in response to a Solicit message. client in response to a Solicit message.
DISCUSSION: DISCUSSION:
When using the Solicit-Reply message exchange, the server When using the Solicit-Reply message exchange, the server commits
commits the assignment of any addresses before sending the the assignment of any addresses before sending the Reply message.
Reply message. The client can assume it has been assigned The client can assume it has been assigned the addresses in the
the addresses in the Reply message and does not need to send Reply message and does not need to send a Request message for
a Request message for those addresses. those addresses.
Typically, servers that are configured to use the Typically, servers that are configured to use the Solicit-Reply
Solicit-Reply message exchange will be deployed so that only message exchange will be deployed so that only one server will
one server will respond to a Solicit message. If more than respond to a Solicit message. If more than one server responds,
one server responds, the client will only use the addresses the client will only use the addresses from one of the servers,
from one of the servers and the addresses from the other while the addresses from the other servers will be committed to
servers will be committed to the client but not used by the the client but not used by the client.
client.
The server includes a Rapid Commit option in the Reply message to The server includes a Rapid Commit option in the Reply message to
indicate that the Reply is in response to a Solicit message. indicate that the Reply is in response to a Solicit message.
The server includes a Reconfigure Accept option if the server wants The server includes a Reconfigure Accept option if the server wants
to require that the client accept Reconfigure messages. to require that the client accept Reconfigure messages.
The server produces the Reply message as though it had received The server produces the Reply message as though it had received a
a Request message, as described in section 18.2.1. The server Request message, as described in section 18.2.1. The server
transmits the Reply message as described in section 18.2.8. transmits the Reply message as described in section 18.2.8.
18. DHCP Client-Initiated Configuration Exchange 18. DHCP Client-Initiated Configuration Exchange
A client initiates a message exchange with a server or servers A client initiates a message exchange with a server or servers to
to acquire or update configuration information of interest. The acquire or update configuration information of interest. The client
client may initiate the configuration exchange as part of the may initiate the configuration exchange as part of the operating
operating system configuration process, when requested to do system configuration process, when requested to do so by the
so by the application layer, when required by Stateless Address application layer, when required by Stateless Address
Autoconfiguration or as required to extend the lifetime of an address Autoconfiguration or as required to extend the lifetime of an address
(Renew and Rebind messages). (Renew and Rebind messages).
18.1. Client Behavior 18.1. Client Behavior
A client uses Request, Renew, Rebind, Release and Decline messages A client uses Request, Renew, Rebind, Release and Decline messages
during the normal life cycle of addresses. It uses Confirm to during the normal life cycle of addresses. It uses Confirm to
validate addresses when it may have moved to a new link. It uses validate addresses when it may have moved to a new link. It uses
Information-Request messages when it needs configuration information Information-Request messages when it needs configuration information
but no addresses. but no addresses.
If the client has a source address of sufficient scope that can be 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 used by the server as a return address, and the client has received a
a Server Unicast option (section 22.12) from the server, the client Server Unicast option (section 22.12) from the server, the client
SHOULD unicast any Request, Renew, Release and Decline messages to SHOULD unicast any Request, Renew, Release and Decline messages to
the server. the server.
DISCUSSION: DISCUSSION:
Use of unicast may avoid delays due to relaying of messages Use of unicast may avoid delays due to the relaying of messages by
by relay agents as well as avoid overhead and duplicate relay agents, as well as avoid overhead and duplicate responses by
responses by servers due to delivery of client messages to servers due to the delivery of client messages to multiple
multiple servers. Requiring the client to relay all DHCP servers. Requiring the client to relay all DHCP messages through
messages through a relay agent enables the inclusion of a relay agent enables the inclusion of relay agent options in all
relay agent options in all messages sent by the client. The messages sent by the client. The server should enable the use of
server should enable the use of unicast only when relay unicast only when relay agent options will not be used.
agent options will not be used.
18.1.1. Creation and Transmission of Request Messages 18.1.1. Creation and Transmission of Request Messages
The client uses a Request message to populate IAs with addresses and The client uses a Request message to populate IAs with addresses and
obtain other configuration information. The client includes one or obtain other configuration information. The client includes one or
more IA options in the Request message. The server then returns more IA options in the Request message. The server then returns
addresses and other information about the IAs to the client in IA addresses and other information about the IAs to the client in IA
options in a Reply message. options in a Reply message.
The client generates a transaction ID and inserts this value in the The client generates a transaction ID and inserts this value in the
skipping to change at page 32, line 12 skipping to change at page 40, line 5
The client MUST include a Client Identifier option to identify itself The client MUST include a Client Identifier option to identify itself
to the server. The client adds any other appropriate options, to the server. The client adds any other appropriate options,
including one or more IA options (if the client is requesting that including one or more IA options (if the client is requesting that
the server assign it some network addresses). the server assign it some network addresses).
The client MUST include an Option Request option (see section 22.7) The client MUST include an Option Request option (see section 22.7)
to indicate the options the client is interested in receiving. The to indicate the options the client is interested in receiving. The
client MAY include options with data values as hints to the server client MAY include options with data values as hints to the server
about parameter values the client would like to have returned. about parameter values the client would like to have returned.
The client includes a Reconfigure Accept option (see section The client includes a Reconfigure Accept option (see section 22.20)
indicating whether or not the client is willing to accept Reconfigure indicating whether or not the client is willing to accept Reconfigure
messages from the server. messages from the server.
The client transmits the message according to section 14, using the The client transmits the message according to section 14, using the
following parameters: following parameters:
IRT REQ_TIMEOUT IRT REQ_TIMEOUT
MRT REQ_MAX_RT MRT REQ_MAX_RT
MRC REQ_MAX_RC MRC REQ_MAX_RC
MRD 0 MRD 0
If the message exchange fails, the client takes an action based on If the message exchange fails, the client takes an action based on
the client's local policy. Examples of actions the client might take the client's local policy. Examples of actions the client might take
include: include:
- Select another server from a list of servers known to the client; - Select another server from a list of servers known to the client;
for example, servers that responded with an Advertise message for example, servers that responded with an Advertise message.
- Initiate the server discovery process described in section 17 - Initiate the server discovery process described in section 17.
- Terminate the configuration process and report failure - Terminate the configuration process and report failure.
18.1.2. Creation and Transmission of Confirm Messages 18.1.2. Creation and Transmission of Confirm Messages
Whenever a client may have moved to a new link, the prefixes from the Whenever a client may have moved to a new link, the prefixes from the
addresses assigned to the interfaces on that link may no longer be addresses assigned to the interfaces on that link may no longer be
appropriate to the link to which the client is attached. Examples of appropriate for the link to which the client is attached. Examples
times when a client may have moved to a new link include: of times when a client may have moved to a new link include:
o The client reboots o The client reboots.
o The client is physically disconnected from a wired connection o The client is physically connected to a wired connection.
o The client returns from sleep mode o The client returns from sleep mode.
o The client using a wireless technology changes access points o The client using a wireless technology changes access points.
In any situation when a client may have moved to a new link, the In any situation when a client may have moved to a new link, the
client MUST initiate a Confirm/Reply message exchange. The client client MUST initiate a Confirm/Reply message exchange. The client
includes any IAs assigned to the interface that may have moved to a 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 new link, along with the addresses associated with those IAs, in its
Confirm message. Any responding servers will indicate whether those Confirm message. Any responding servers will indicate whether those
addresses are appropriate to the link to which the client is attached addresses are appropriate for the link to which the client is
with the status in the Reply message it returns to the client. attached with the status in the Reply message it returns to the
client.
The client sets the "msg-type" field to CONFIRM. The client generates The client sets the "msg-type" field to CONFIRM. The client
a transaction ID and inserts this value in the "transaction-id" generates a transaction ID and inserts this value in the
field. "transaction-id" field.
The client MUST include a Client Identifier option to identify The client MUST include a Client Identifier option to identify itself
itself to the server. The client includes IA options for all of to the server. The client includes IA options for all of the IAs
the IAs assigned to the interface for which the Confirm message is assigned to the interface for which the Confirm message is being
being sent. The IA options include all of the addresses the client sent. The IA options include all of the addresses the client
currently has associated with those IAs. The client SHOULD set the currently has associated with those IAs. The client SHOULD set the
T1 and T2 fields in any IA_NA options and the preferred-lifetime and T1 and T2 fields in any IA_NA options, and the preferred-lifetime and
valid-lifetime fields in the IA Address options to 0, as the server valid-lifetime fields in the IA Address options to 0, as the server
will ignore these fields. will ignore these fields.
The first Confirm message from the client on the interface MUST be 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 delayed by a random amount of time between 0 and CNF_MAX_DELAY. The
client transmits the message according to section 14, using the client transmits the message according to section 14, using the
following parameters: following parameters:
IRT CNF_TIMEOUT IRT CNF_TIMEOUT
MRT CNF_MAX_RT MRT CNF_MAX_RT
MRC 0 MRC 0
MRD CNF_MAX_RD MRD CNF_MAX_RD
If the client receives no responses before the message transmission If the client receives no responses before the message transmission
process as described in section 14 terminates, the client SHOULD process terminates, as described in section 14, the client SHOULD
continue to use any IP addresses, using the last known lifetimes for continue to use any IP addresses, using the last known lifetimes for
those addresses, and SHOULD continue to use any other previously those addresses, and SHOULD continue to use any other previously
obtained configuration parameters. obtained configuration parameters.
18.1.3. Creation and Transmission of Renew Messages 18.1.3. Creation and Transmission of Renew Messages
To extend the valid and preferred lifetimes for the addresses To extend the valid and preferred lifetimes for the addresses
associated with an IA, the client sends a Renew message to the server associated with an IA, the client sends a Renew message to the server
from which the client obtained the addresses in the IA containing from which the client obtained the addresses in the IA containing an
an IA option for the IA. The client includes IA Address options in IA option for the IA. The client includes IA Address options in the
the IA option for the addresses associated with the IA. The server IA option for the addresses associated with the IA. The server
determines new lifetimes for the addresses in the IA according to the determines new lifetimes for the addresses in the IA according to the
administrative configuration of the server. The server may also add administrative configuration of the server. The server may also add
new addresses to the IA. The server may remove addresses from the IA new addresses to the IA. The server may remove addresses from the IA
by setting the preferred and valid lifetimes of those addresses to by setting the preferred and valid lifetimes of those addresses to
zero. zero.
The server controls the time at which the client contacts the server The server controls the time at which the client contacts the server
to extend the lifetimes on assigned addresses through the T1 and T2 to extend the lifetimes on assigned addresses through the T1 and T2
parameters assigned to an IA. parameters assigned to an IA.
At time T1 for an IA, the client initiates a Renew/Reply message At time T1 for an IA, the client initiates a Renew/Reply message
exchange to extend the lifetimes on any addresses in the IA. The exchange to extend the lifetimes on any addresses in the IA. The
client includes an IA option with all addresses currently assigned to client includes an IA option with all addresses currently assigned to
the IA in its Renew message. the IA in its Renew message.
If T1 or T2 is set to 0 by the server (for an IA_NA) or there are no If T1 or T2 is set to 0 by the server (for an IA_NA) or there are no
T1 or T2 times (for an IA_TA), the client may send a Renew or Rebind T1 or T2 times (for an IA_TA), the client may send a Renew or Rebind
message, respectively, at the client's discretion. message, respectively, at the client's discretion.
The client sets the "msg-type" field to RENEW. The client generates a The client sets the "msg-type" field to RENEW. The client generates
transaction ID and inserts this value in the "transaction-id" field. a transaction ID and inserts this value in the "transaction-id"
field.
The client places the identifier of the destination server in a The client places the identifier of the destination server in a
Server Identifier option. Server Identifier option.
The client MUST include a Client Identifier option to identify The client MUST include a Client Identifier option to identify itself
itself to the server. The client adds any appropriate options, to the server. The client adds any appropriate options, including
including one or more IA options. The client MUST include the list one or more IA options. The client MUST include the list of
of addresses the client currently has associated with the IAs in the addresses the client currently has associated with the IAs in the
Renew message. Renew message.
The client MUST include an Option Request option (see section 22.7) The client MUST include an Option Request option (see section 22.7)
to indicate the options the client is interested in receiving. The to indicate the options the client is interested in receiving. The
client MAY include options with data values as hints to the server client MAY include options with data values as hints to the server
about parameter values the client would like to have returned. about parameter values the client would like to have returned.
The client transmits the message according to section 14, using the The client transmits the message according to section 14, using the
following parameters: following parameters:
skipping to change at page 35, line 5 skipping to change at page 43, line 17
exchange. exchange.
18.1.4. Creation and Transmission of Rebind Messages 18.1.4. Creation and Transmission of Rebind Messages
At time T2 for an IA (which will only be reached if the server to At time T2 for an IA (which will only be reached if the server to
which the Renew message was sent at time T1 has not responded), the which the Renew message was sent at time T1 has not responded), the
client initiates a Rebind/Reply message exchange with any available client initiates a Rebind/Reply message exchange with any available
server. The client includes an IA option with all addresses server. The client includes an IA option with all addresses
currently assigned to the IA in its Rebind message. currently assigned to the IA in its Rebind message.
The client sets the "msg-type" field to REBIND. The client generates The client sets the "msg-type" field to REBIND. The client generates
a transaction ID and inserts this value in the "transaction-id" a transaction ID and inserts this value in the "transaction-id"
field. field.
The client MUST include a Client Identifier option to identify The client MUST include a Client Identifier option to identify itself
itself to the server. The client adds any appropriate options, to the server. The client adds any appropriate options, including
including one or more IA options. The client MUST include the list one or more IA options. The client MUST include the list of
of addresses the client currently has associated with the IAs in the addresses the client currently has associated with the IAs in the
Rebind message. Rebind message.
The client MUST include an Option Request option (see section 22.7) The client MUST include an Option Request option (see section 22.7)
to indicate the options the client is interested in receiving. The to indicate the options the client is interested in receiving. The
client MAY include options with data values as hints to the server client MAY include options with data values as hints to the server
about parameter values the client would like to have returned. about parameter values the client would like to have returned.
The client transmits the message according to section 14, using the The client transmits the message according to section 14, using the
following parameters: following parameters:
IRT REB_TIMEOUT IRT REB_TIMEOUT
MRT REB_MAX_RT MRT REB_MAX_RT
MRC 0 MRC 0
MRD Remaining time until valid lifetimes of all addresses have MRD Remaining time until valid lifetimes of all addresses have
expired expired
The message exchange is terminated when the valid lifetimes of all of The message exchange is terminated when the valid lifetimes of all
the addresses assigned to the IA expire (see section 10), at which the addresses assigned to the IA expire (see section 10), at which
time the client has several alternative actions to choose from; for time the client has several alternative actions to choose from; for
example: example:
- The client may choose to use a Solicit message to locate a new - The client may choose to use a Solicit message to locate a new
DHCP server and send a Request for the expired IA to the new DHCP server and send a Request for the expired IA to the new
server server.
- The client may have other addresses in other IAs, so the client - The client may have other addresses in other IAs, so the client
may choose to discard the expired IA and use the addresses in the may choose to discard the expired IA and use the addresses in the
other IAs other IAs.
18.1.5. Creation and Transmission of Information-request Messages 18.1.5. Creation and Transmission of Information-request Messages
The client uses an Information-request message to obtain The client uses an Information-request message to obtain
configuration information without having addresses assigned to it. configuration information without having addresses assigned to it.
The client sets the "msg-type" field to INFORMATION-REQUEST. The The client sets the "msg-type" field to INFORMATION-REQUEST. The
client generates a transaction ID and inserts this value in the client generates a transaction ID and inserts this value in the
"transaction-id" field. "transaction-id" field.
The client SHOULD include a Client Identifier option to identify The client SHOULD include a Client Identifier option to identify
itself to the server. If the client does not include a Client itself to the server. If the client does not include a Client
Identifier option, the server will not be able to return any Identifier option, the server will not be able to return any client-
client-specific options to the client, or the server may choose specific options to the client, or the server may choose not to
not to respond to the message at all. The client MUST include a respond to the message at all. The client MUST include a Client
Client Identifier option if the Information-Request message will be Identifier option if the Information-Request message will be
authenticated. authenticated.
The client MUST include an Option Request option (see section 22.7) The client MUST include an Option Request option (see section 22.7)
to indicate the options the client is interested in receiving. The to indicate the options the client is interested in receiving. The
client MAY include options with data values as hints to the server client MAY include options with data values as hints to the server
about parameter values the client would like to have returned. about parameter values the client would like to have returned.
The first Information-request message from the client on the The first Information-request message from the client on the
interface MUST be delayed by a random amount of time between 0 and interface MUST be delayed by a random amount of time between 0 and
INF_MAX_DELAY. In the case of a Solicit message transmitted when DHCP INF_MAX_DELAY. The client transmits the message according to section
is initiated by IPv6 Neighbor Discovery, the delay gives the amount 14, using the following parameters:
of time to wait after IPv6 Neighbor Discovery causes the client to
invoke the stateful address autoconfiguration protocol (see section
5.5.3 of RFC2462). The client transmits the message according to
section 14, using the following parameters:
IRT INF_TIMEOUT IRT INF_TIMEOUT
MRT INF_MAX_RT MRT INF_MAX_RT
MRC 0 MRC 0
MRD 0 MRD 0
18.1.6. Creation and Transmission of Release Messages 18.1.6. Creation and Transmission of Release Messages
To release one or more addresses, a client sends a Release message to To release one or more addresses, a client sends a Release message to
the server. the server.
The client sets the "msg-type" field to RELEASE. The client generates The client sets the "msg-type" field to RELEASE. The client
a transaction ID and places this value in the "transaction-id" field. generates a transaction ID and places this value in the
"transaction-id" field.
The client places the identifier of the server that allocated the The client places the identifier of the server that allocated the
address(es) in a Server Identifier option. address(es) in a Server Identifier option.
The client MUST include a Client Identifier option to identify itself The client MUST include a Client Identifier option to identify itself
to the server. The client includes options containing the IAs for to the server. The client includes options containing the IAs for
the addresses it is releasing in the "options" field. The addresses the addresses it is releasing in the "options" field. The addresses
to be released MUST be included in the IAs. Any addresses for the to be released MUST be included in the IAs. Any addresses for the
IAs the client wishes to continue to use MUST NOT be in added to the IAs the client wishes to continue to use MUST NOT be added to the
IAs. IAs.
The client MUST NOT use any of the addresses it is releasing as The client MUST NOT use any of the addresses it is releasing as the
the source address in the Release message or in any subsequently source address in the Release message or in any subsequently
transmitted message. transmitted message.
Because Release messages may be lost, the client should retransmit Because Release messages may be lost, the client should retransmit
the Release if no Reply is received. However, there are scenarios the Release if no Reply is received. However, there are scenarios
where the client may not wish to wait for the normal retransmission where the client may not wish to wait for the normal retransmission
timeout before giving up (e.g., on power down). Implementations timeout before giving up (e.g., on power down). Implementations
SHOULD retransmit one or more times, but MAY choose to terminate the SHOULD retransmit one or more times, but MAY choose to terminate the
retransmission procedure early. retransmission procedure early.
The client transmits the message according to section 14, using the The client transmits the message according to section 14, using the
following parameters: following parameters:
IRT REL_TIMEOUT IRT REL_TIMEOUT
MRT 0 MRT 0
MRC REL_MAX_MRC MRC REL_MAX_RC
MRD 0 MRD 0
The client MUST stop using all of the addresses being released as The client MUST stop using all of the addresses being released as
soon as the client begins the Release message exchange process. If soon as the client begins the Release message exchange process. If
addresses are released but the Reply from a DHCP server is lost, addresses are released but the Reply from a DHCP server is lost, the
the client will retransmit the Release message, and the server may client will retransmit the Release message, and the server may
respond with a Reply indicating a status of NoBinding. Therefore, respond with a Reply indicating a status of NoBinding. Therefore,
the client does not treat a Reply message with a status of NoBinding the client does not treat a Reply message with a status of NoBinding
in a Release message exchange as if it indicates an error. in a Release message exchange as if it indicates an error.
Note that if the client fails to release the addresses, each address Note that if the client fails to release the addresses, each address
assigned to the IA will be reclaimed by the server when the valid assigned to the IA will be reclaimed by the server when the valid
lifetime of that address expires. lifetime of that address expires.
18.1.7. Creation and Transmission of Decline Messages 18.1.7. Creation and Transmission of Decline Messages
If a client detects that one or more addresses assigned to it by a 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 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. message to the server to inform it that the address is suspect.
The client sets the "msg-type" field to DECLINE. The client generates The client sets the "msg-type" field to DECLINE. The client
a transaction ID and places this value in the "transaction-id" field. generates a transaction ID and places this value in the
"transaction-id" field.
The client places the identifier of the server that allocated the The client places the identifier of the server that allocated the
address(es) in a Server Identifier option. address(es) in a Server Identifier option.
The client MUST include a Client Identifier option to identify itself The client MUST include a Client Identifier option to identify itself
to the server. The client includes options containing the IAs for to the server. The client includes options containing the IAs for
the addresses it is declining in the "options" field. The addresses the addresses it is declining in the "options" field. The addresses
to be declined MUST be included in the IAs. Any addresses for the to be declined MUST be included in the IAs. Any addresses for the
IAs the client wishes to continue to use should not be in added to IAs the client wishes to continue to use should not be in added to
the IAs. the IAs.
The client MUST NOT use any of the addresses it is declining as The client MUST NOT use any of the addresses it is declining as the
the source address in the Decline message or in any subsequently source address in the Decline message or in any subsequently
transmitted message. transmitted message.
The client transmits the message according to section 14, using the The client transmits the message according to section 14, using the
following parameters: following parameters:
IRT DEC_TIMEOUT IRT DEC_TIMEOUT
MRT 0 MRT 0
MRC DEC_MAX_RC MRC DEC_MAX_RC
skipping to change at page 38, line 28 skipping to change at page 47, line 8
18.1.8. Receipt of Reply Messages 18.1.8. Receipt of Reply Messages
Upon the receipt of a valid Reply message in response to a Solicit Upon the receipt of a valid Reply message in response to a Solicit
(with a Rapid Commit option), Request, Confirm, Renew, Rebind or (with a Rapid Commit option), Request, Confirm, Renew, Rebind or
Information-request message, the client extracts the configuration Information-request message, the client extracts the configuration
information contained in the Reply. The client MAY choose to report information contained in the Reply. The client MAY choose to report
any status code or message from the status code option in the Reply any status code or message from the status code option in the Reply
message. message.
The client SHOULD perform duplicate address detection [21] on each The client SHOULD perform duplicate address detection [17] on each of
of the addresses in any IAs it receives in the Reply message before the addresses in any IAs it receives in the Reply message before
using that address for traffic. If any of the addresses are found using that address for traffic. If any of the addresses are found to
to be in use on the link, the client sends a Decline message to the be in use on the link, the client sends a Decline message to the
server as described in section 18.1.7. server as described in section 18.1.7.
If the Reply was received in response to a Solicit (with a Rapid If the Reply was received in response to a Solicit (with a Rapid
Commit option), Request, Renew or Rebind message, the client updates Commit option), Request, Renew or Rebind message, the client updates
the information it has recorded about IAs from the IA options the information it has recorded about IAs from the IA options
contained in the Reply message: contained in the Reply message:
- Record T1 and T2 times - Record T1 and T2 times.
- Add any new addresses in the IA option to the IA as recorded by - Add any new addresses in the IA option to the IA as recorded by
the client the client.
- Update lifetimes for any addresses in the IA option that the - Update lifetimes for any addresses in the IA option that the
client already has recorded in the IA client already has recorded in the IA.
- Discard any addresses from the IA as recorded by the client that - Discard any addresses from the IA, as recorded by the client, that
have a valid lifetime of 0 in the IA Address option have a valid lifetime of 0 in the IA Address option.
- Leave unchanged any information about addresses the client has
recorded in the IA but that were not included in the IA from the
server.
Management of the specific configuration information is detailed in Management of the specific configuration information is detailed in
the definition of each option, in section 22. the definition of each option in section 22.
If the client receives a Reply message with a Status Code containing If the client receives a Reply message with a Status Code containing
UnspecFail, the server is indicating that it was unable to process UnspecFail, the server is indicating that it was unable to process
the message due to an unspecified failure condition. If the client the message due to an unspecified failure condition. If the client
retransmits the original message to the same server to retry the retransmits the original message to the same server to retry the
desired operation, the client MUST limit the rate at which it desired operation, the client MUST limit the rate at which it
retransmits the message and limit the duration of the time during retransmits the message and limit the duration of the time during
which it retransmits the message. which it retransmits the message.
When the client receives a Reply message with a Status Code option When the client receives a Reply message with a Status Code option
with value UseMulticast, the client records the receipt of the with the value UseMulticast, the client records the receipt of the
message and sends subsequent messages to the server through the message and sends subsequent messages to the server through the
interface on which the message was received using multicast. The interface on which the message was received using multicast. The
client resends the original message using multicast. client resends the original message using multicast.
When the client receives a NotOnLink status from the server in When the client receives a NotOnLink status from the server in
response to a Confirm message, the client performs DHCP server response to a Confirm message, the client performs DHCP server
solicitation as described in section 17 and client-initiated solicitation, as described in section 17, and client-initiated
configuration as described in section 18. If the client receives any configuration as described in section 18. If the client receives any
Reply messages that do not indicate a NotOnLink status, the client Reply messages that do not indicate a NotOnLink status, the client
can use the addresses in the IA and ignore any messages that do can use the addresses in the IA and ignore any messages that indicate
indicate a NotOnLink status. a NotOnLink status.
When the client receives a NotOnLink status from the server in When the client receives a NotOnLink status from the server in
response to a Request, the client can either re-issue the Request response to a Request, the client can either re-issue the Request
without specifying any addresses or restart the DHCP server discovery without specifying any addresses or restart the DHCP server discovery
process (see section 17). process (see section 17).
When the client receives a NoAddrsAvail status from the server in The client examines the status code in each IA individually. If the
response to a Request, the client can either try another server status code is NoAddrsAvail, the client has received no usable
(perhaps restarting the DHCP server discovery process) or use the addresses in the IA and may choose to try obtaining addresses for the
Information-Request to obtain configuration parameters only. IA from another server. The client uses addresses and other
information from any IAs that do not contain a Status Code option
with the NoAddrsAvail code. If the client receives no addresses in
any of the IAs, it 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 NoBinding status in an IA from the server When the client receives a Reply message in response to a Renew or
in response to a Renew message or a Rebind message, the client sends Rebind message, the client examines each IA independently. For each
a Request to reestablish an IA with the server. IA in the original Renew or Rebind message, the client:
- sends a Request message if the IA contained a Status Code option
with the NoBinding status (and does not send any additional
Renew/Rebind messages)
- sends a Renew/Rebind if the IA is not in the Reply message
- otherwise accepts the information in the IA
When the client receives a valid Reply message in response to a When the client receives a valid Reply message in response to a
Release message, the client considers the Release event completed, Release message, the client considers the Release event completed,
regardless of the Status Code option(s) returned by the server. regardless of the Status Code option(s) returned by the server.
When the client receives a valid Reply message in response to a When the client receives a valid Reply message in response to a
Decline message, the client considers the Decline event completed, Decline message, the client considers the Decline event completed,
regardless of the Status Code option(s) returned by the server. regardless of the Status Code option(s) returned by the server.
18.2. Server Behavior 18.2. Server Behavior
skipping to change at page 40, line 6 skipping to change at page 49, line 11
For this discussion, the Server is assumed to have been configured in For this discussion, the Server is assumed to have been configured in
an implementation specific manner with configuration of interest to an implementation specific manner with configuration of interest to
clients. clients.
In most instances, the server will send a Reply in response to a In most instances, the server will send a Reply in response to a
client message. This Reply message MUST always contain the Server client message. This Reply message MUST always contain the Server
Identifier option containing the server's DUID and the Client Identifier option containing the server's DUID and the Client
Identifier option from the client message if one was present. Identifier option from the client message if one was present.
In most Reply messages, the server includes options containing In most Reply messages, the server includes options containing
configuration information for the client. The server SHOULD limit configuration information for the client. The server must be aware
the options returned to the client so that the DHCP message header of the recommendations on packet sizes and the use of fragmentation
and options do not cause fragmentation. If the client included an in section 5 of RFC 2460. If the client included an Option Request
Option Request option in its message, the server includes options option in its message, the server includes options in the Reply
in the Reply message containing configuration parameters for all of message containing configuration parameters for all of the options
the options identified in the Option Request option that the server identified in the Option Request option that the server has been
has been configured to return to the client. The server MAY return configured to return to the client. The server MAY return additional
additional options to the client if it has been configured to do so. options to the client if it has been configured to do so.
18.2.1. Receipt of Request Messages 18.2.1. Receipt of Request Messages
When the server receives a Request message via unicast from a When the server receives a Request message via unicast from a client
client to which the server has not sent a unicast option, the server to which the server has not sent a unicast option, the server
discards the Request message and responds with a Reply message discards the Request message and responds with a Reply message
containing a Status Code option with value UseMulticast, a Server containing a Status Code option with the value UseMulticast, a Server
Identifier option containing the server's DUID, the Client Identifier Identifier option containing the server's DUID, the Client Identifier
option from the client message and no other options. option from the client message, and no other options.
When the server receives a valid Request message, the server creates When the server receives a valid Request message, the server creates
the bindings for that client according to the server's policy and the bindings for that client according to the server's policy and
configuration information and records the IAs and other information configuration information and records the IAs and other information
requested by the client. requested by the client.
The server constructs a Reply message by setting the "msg-type" field The server constructs a Reply message by setting the "msg-type" field
to REPLY, copying the transaction ID from the Request message into to REPLY, and copying the transaction ID from the Request message
the transaction-id field. into the transaction-id field.
The server MUST include a Server Identifier option containing the The server MUST include a Server Identifier option containing the
server's DUID and the Client Identifier option from the Request server's DUID and the Client Identifier option from the Request
message in the Reply message. message in the Reply message.
If the server finds that the prefix on one or more IP addresses in If the server finds that the prefix on one or more IP addresses in
any IA in the message from the client is not appropriate to the link any IA in the message from the client is not appropriate for the link
to which the client is connected, the server MUST return the IA to to which the client is connected, the server MUST return the IA to
the client with a Status Code option with value NotOnLink. the client with a Status Code option with the value NotOnLink.
If the server cannot assign any addresses to an IA in the message If the server cannot assign any addresses to an IA in the message
from the client, the server MUST include the IA in the Reply message from the client, the server MUST include the IA in the Reply message
with no addresses in the IA and a Status Code option in the IA with no addresses in the IA and a Status Code option in the IA
containing status code NoAddrsAvail. containing status code NoAddrsAvail.
For any IAs to which the server can assign addresses, the server For any IAs to which the server can assign addresses, the server
includes the IA with addresses and other configuration parameters and includes the IA with addresses and other configuration parameters,
records the IA as a new client binding. and records the IA as a new client binding.
The server includes a Reconfigure Accept option if the server wants The server includes a Reconfigure Accept option if the server wants
to require that the client accept Reconfigure messages. to require that the client accept Reconfigure messages.
The server includes other options containing configuration The server includes other options containing configuration
information to be returned to the client as described in information to be returned to the client as described in section
section 18.2. 18.2.
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 client has resent a Request message for
which it did not receive a Reply message. The server either resends
a previously cached Reply message or sends a new Reply message.
18.2.2. Receipt of Confirm Messages 18.2.2. Receipt of Confirm Messages
When the server receives a Confirm message, the server determines if When the server receives a Confirm message, the server determines
the addresses in the Confirm message are appropriate to the link to whether the addresses in the Confirm message are appropriate for the
which the client is attached. If all of the addresses in the Confirm link to which the client is attached. If all of the addresses in the
message pass this test, the server returns a status of Success. If Confirm message pass this test, the server returns a status of
any of the addresses do not pass this test, the server returns a Success. If any of the addresses do not pass this test, the server
status of NotOnLink. If the server is unable to perform this test returns a status of NotOnLink. If the server is unable to perform
(for example, the server does not have information about prefixes on this test (for example, the server does not have information about
the link to which the client is connected) or there were no addresses prefixes on the link to which the client is connected), or there were
in any of the IAs sent by the client, the server MUST NOT send a no addresses in any of the IAs sent by the client, the server MUST
reply to the client. NOT send a reply to the client.
The server ignores the T1 and T2 fields in the IA options and the The server ignores the T1 and T2 fields in the IA options and the
preferred-lifetime and valid-lifetime fields in the IA Address preferred-lifetime and valid-lifetime fields in the IA Address
options. options.
The server constructs a Reply message by setting the "msg-type" field The server constructs a Reply message by setting the "msg-type" field
to REPLY, copying the transaction ID from the Confirm message into to REPLY, and copying the transaction ID from the Confirm message
the transaction-id field. into the transaction-id field.
The server MUST include a Server Identifier option containing the The server MUST include a Server Identifier option containing the
server's DUID and the Client Identifier option from the Confirm server's DUID and the Client Identifier option from the Confirm
message in the Reply message. The server includes a Status Code message in the Reply message. The server includes a Status Code
option indicating the status of the Confirm message. option indicating the status of the Confirm message.
18.2.3. Receipt of Renew Messages 18.2.3. Receipt of Renew Messages
When the server receives a Renew message via unicast from a client to When the server receives a Renew message via unicast from a client to
which the server has not sent a unicast option, the server discards which the server has not sent a unicast option, the server discards
the Renew message and responds with a Reply message containing a the Renew message and responds with a Reply message containing a
Status Code option with value UseMulticast, a Server Identifier Status Code option with the value UseMulticast, a Server Identifier
option containing the server's DUID, the Client Identifier option option containing the server's DUID, the Client Identifier option
from the client message and no other options. from the client message, and no other options.
When the server receives a Renew message that contains an IA option When the server receives a Renew message that contains an IA option
from a client, it locates the client's binding and verifies that the from a client, it locates the client's binding and verifies that the
information in the IA from the client matches the information stored information in the IA from the client matches the information stored
for that client. for that client.
If the server cannot find a client entry for the IA the server If the server cannot find a client entry for the IA the server
returns the IA containing no addresses with a Status Code option set returns the IA containing no addresses with a Status Code option set
to NoBinding in the Reply message. to NoBinding in the Reply message.
If the server finds that any of the addresses are not appropriate If the server finds that any of the addresses are not appropriate for
to the link to which the client is attached, the server returns the the link to which the client is attached, the server returns the
address to the client with lifetimes of 0. address to the client with lifetimes of 0.
If the server finds the addresses in the IA for the client then the If the server finds the addresses in the IA for the client then the
server sends back the IA to the client with new lifetimes and T1/T2 server sends back the IA to the client with new lifetimes and T1/T2
times. The server may choose to change the list of addresses and the times. The server may choose to change the list of addresses and the
lifetimes of addresses in IAs that are returned to the client. lifetimes of addresses in IAs that are returned to the client.
The server constructs a Reply message by setting the "msg-type" field The server constructs a Reply message by setting the "msg-type" field
to REPLY, copying the transaction ID from the Renew message into the to REPLY, and copying the transaction ID from the Renew message into
transaction-id field. the transaction-id field.
The server MUST include a Server Identifier option containing the The server MUST include a Server Identifier option containing the
server's DUID and the Client Identifier option from the Renew message server's DUID and the Client Identifier option from the Renew message
in the Reply message. in the Reply message.
The server includes other options containing configuration The server includes other options containing configuration
information to be returned to the client as described in information to be returned to the client as described in section
section 18.2. 18.2.
18.2.4. Receipt of Rebind Messages 18.2.4. Receipt of Rebind Messages
When the server receives a Rebind message that contains an IA option 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 from a client, it locates the client's binding and verifies that the
information in the IA from the client matches the information stored information in the IA from the client matches the information stored
for that client. for that client.
If the server cannot find a client entry for the IA the server If the server cannot find a client entry for the IA and the server
returns the IA containing no addresses with a Status Code option set determines that the addresses in the IA are not appropriate for the
to NoBinding in the Reply message. link to which the client's interface is attached according to the
server's explicit configuration information, the server MAY send a
Reply message to the client containing the client's IA, with the
lifetimes for the addresses in the IA set to zero. This Reply
constitutes an explicit notification to the client that the addresses
in the IA are no longer valid. In this situation, if the server does
not send a Reply message it silently discards the Rebind message.
If the server finds that any of the addresses are no longer If the server finds that any of the addresses are no longer
appropriate to the link to which the client is attached, the server appropriate for the link to which the client is attached, the server
returns the address to the client with lifetimes of 0. returns the address to the client with lifetimes of 0.
If the server finds the addresses in the IA for the client then the If the server finds the addresses in the IA for the client then the
server SHOULD send back the IA to the client with new lifetimes and server SHOULD send back the IA to the client with new lifetimes and
T1/T2 times. T1/T2 times.
The server constructs a Reply message by setting the "msg-type" field The server constructs a Reply message by setting the "msg-type" field
to REPLY, copying the transaction ID from the Rebind message into the to REPLY, and copying the transaction ID from the Rebind message into
transaction-id field. the transaction-id field.
The server MUST include a Server Identifier option containing the The server MUST include a Server Identifier option containing the
server's DUID and the Client Identifier option from the Rebind server's DUID and the Client Identifier option from the Rebind
message in the Reply message. message in the Reply message.
The server includes other options containing configuration The server includes other options containing configuration
information to be returned to the client as described in information to be returned to the client as described in section
section 18.2. 18.2.
18.2.5. Receipt of Information-request Messages 18.2.5. Receipt of Information-request Messages
When the server receives an Information-request message, the When the server receives an Information-request message, the client
client is requesting configuration information that does not is requesting configuration information that does not include the
include the assignment of any addresses. The server determines all assignment of any addresses. The server determines all configuration
configuration parameters appropriate to the client, based on the parameters appropriate to the client, based on the server
server configuration policies known to the server. configuration policies known to the server.
The server constructs a Reply message by setting the "msg-type" field The server constructs a Reply message by setting the "msg-type" field
to REPLY, copying the transaction ID from the Information-request to REPLY, and copying the transaction ID from the Information-request
message into the transaction-id field. message into the transaction-id field.
The server MUST include a Server Identifier option containing the The server MUST include a Server Identifier option containing the
server's DUID in the Reply message. If the client included a Client server's DUID in the Reply message. If the client included a Client
Identification option in the Information-request message, the server Identification option in the Information-request message, the server
copies that option to the Reply message. copies that option to the Reply message.
The server includes options containing configuration information to The server includes options containing configuration information to
be returned to the client as described in section 18.2. be returned to the client as described in section 18.2.
If the Information-request message received from the client did If the Information-request message received from the client did not
not include a Client Identifier option, the server SHOULD respond include a Client Identifier option, the server SHOULD respond with a
with a Reply message containing any configuration parameters Reply message containing any configuration parameters that are not
that are not determined by the client's identity. If the server determined by the client's identity. If the server chooses not to
chooses not to respond, the client may continue to retransmit the respond, the client may continue to retransmit the
Information-request message indefinitely. Information-request message indefinitely.
18.2.6. Receipt of Release Messages 18.2.6. Receipt of Release Messages
When the server receives a Release message via unicast from a When the server receives a Release message via unicast from a client
client to which the server has not sent a unicast option, the server to which the server has not sent a unicast option, the server
discards the Release message and responds with a Reply message discards the Release message and responds with a Reply message
containing a Status Code option with value UseMulticast, a Server containing a Status Code option with value UseMulticast, a Server
Identifier option containing the server's DUID, the Client Identifier Identifier option containing the server's DUID, the Client Identifier
option from the client message and no other options. option from the client message, and no other options.
Upon the receipt of a valid Release message, the server examines Upon the receipt of a valid Release message, the server examines the
the IAs and the addresses in the IAs for validity. If the IAs in IAs and the addresses in the IAs for validity. If the IAs in the
the message are in a binding for the client and the addresses in message are in a binding for the client, and the addresses in the IAs
the IAs have been assigned by the server to those IAs, the server have been assigned by the server to those IAs, the server deletes the
deletes the addresses from the IAs and makes the addresses available addresses from the IAs and makes the addresses available for
for assignment to other clients. The server ignores addresses not assignment to other clients. The server ignores addresses not
assigned to the IA, although it may choose to log an error. assigned to the IA, although it may choose to log an error.
After all the addresses have been processed, the server generates a After all the addresses have been processed, the server generates a
Reply message and includes a Status Code option with value Success, Reply message and includes a Status Code option with value Success, a
a Server Identifier option with the server's DUID and a Client Server Identifier option with the server's DUID, and a Client
Identifier option with the client's DUID. For each IA in the Release Identifier option with the client's DUID. For each IA in the Release
message for which the server has no binding information, the server message for which the server has no binding information, the server
adds an IA option using the IAID from the Release message and adds an IA option using the IAID from the Release message, and
includes a Status Code option with the value NoBinding in the IA includes a Status Code option with the value NoBinding in the IA
option. No other options are included in the IA option. option. No other options are included in the IA option.
A server may choose to retain a record of assigned addresses and IAs A server may choose to retain a record of assigned addresses and IAs
after the lifetimes on the addresses have expired to allow the server after the lifetimes on the addresses have expired to allow the server
to reassign the previously assigned addresses to a client. to reassign the previously assigned addresses to a client.
18.2.7. Receipt of Decline Messages 18.2.7. Receipt of Decline Messages
When the server receives a Decline message via unicast from a When the server receives a Decline message via unicast from a client
client to which the server has not sent a unicast option, the server to which the server has not sent a unicast option, the server
discards the Decline message and responds with a Reply message discards the Decline message and responds with a Reply message
containing a Status Code option with value UseMulticast, a Server containing a Status Code option with the value UseMulticast, a Server
Identifier option containing the server's DUID, the Client Identifier Identifier option containing the server's DUID, the Client Identifier
option from the client message and no other options. option from the client message, and no other options.
Upon the receipt of a valid Decline message, the server examines the 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 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 message are in a binding for the client, and the addresses in the IAs
have been assigned by the server to those IA, the server deletes the have been assigned by the server to those IAs, the server deletes the
addresses from the IAs. The server ignores addresses not assigned addresses from the IAs. The server ignores addresses not assigned to
to the IA (though it may choose to log an error if it finds such an the IA (though it may choose to log an error if it finds such an
address). address).
The client has found any addresses in the Decline messages to be The client has found any addresses in the Decline messages to be
already in use on its link. Therefore, the server SHOULD mark the already in use on its link. Therefore, the server SHOULD mark the
addresses declined by the client so that those addresses are not addresses declined by the client so that those addresses are not
assigned to other clients, and MAY choose to make a notification that assigned to other clients, and MAY choose to make a notification that
addresses were declined. Local policy on the server determines when addresses were declined. Local policy on the server determines when
the addresses identified in a Decline message may be made available the addresses identified in a Decline message may be made available
for assignment. for assignment.
After all the address have been processed, the server generates a After all the addresses have been processed, the server generates a
Reply message and includes a Status Code option with value Success, Reply message and includes a Status Code option with the value
a Server Identifier option with the server's DUID and a Client Success, a Server Identifier option with the server's DUID, and a
Identifier option with the client's DUID. For each IA in the Decline Client Identifier option with the client's DUID. For each IA in the
message for which the server has no binding information, the server Decline message for which the server has no binding information, the
adds an IA option using the IAID from the Release message and 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 includes a Status Code option with the value NoBinding in the IA
option. No other options are included in the IA option. option. No other options are included in the IA option.
18.2.8. Transmission of Reply Messages 18.2.8. Transmission of Reply Messages
If the original message was received directly by the server, the If the original message was received directly by the server, the
server unicasts the Reply message directly to the client using the server unicasts the Reply message directly to the client using the
address in the source address field from the IP datagram in which the address in the source address field from the IP datagram in which the
original message was received. The Reply message MUST be unicast original message was received. The Reply message MUST be unicast
through the interface on which the original message was received. through the interface on which the original message was received.
If the original message was received in a Relay-forward message, If the original message was received in a Relay-forward message, the
the server constructs a Relay-reply message with the Reply message server constructs a Relay-reply message with the Reply message in the
in the payload of a Relay Message option (see section 22.10). If payload of a Relay Message option (see section 22.10). If the
the Relay-forward messages included an Interface-id option, the Relay-forward messages included an Interface-id option, the server
server copies that option to the Relay-reply message. The server copies that option to the Relay-reply message. The server unicasts
unicasts the Relay-reply message directly to the relay agent using the Relay-reply message directly to the relay agent using the address
the address in the source address field from the IP datagram in which in the source address field from the IP datagram in which the
the Relay-forward message was received. Relay-forward message was received.
19. DHCP Server-Initiated Configuration Exchange 19. DHCP Server-Initiated Configuration Exchange
A server initiates a configuration exchange to cause DHCP clients A server initiates a configuration exchange to cause DHCP clients to
to obtain new addresses and other configuration information. For obtain new addresses and other configuration information. For
example, an administrator may use a server-initiated configuration example, an administrator may use a server-initiated configuration
exchange when links in the DHCP domain are to be renumbered. Other exchange when links in the DHCP domain are to be renumbered. Other
examples include changes in the location of directory servers, examples include changes in the location of directory servers,
addition of new services such as printing, and availability of new addition of new services such as printing, and availability of new
software. software.
19.1. Server Behavior 19.1. Server Behavior
A server sends a Reconfigure message to cause a client to initiate A server sends a Reconfigure message to cause a client to initiate
immediately a Renew/Reply or Information-request/Reply message immediately a Renew/Reply or Information-request/Reply message
exchange with the server. exchange with the server.
19.1.1. Creation and Transmission of Reconfigure Messages 19.1.1. Creation and Transmission of Reconfigure Messages
The server sets the "msg-type" field to RECONFIGURE. The server The server sets the "msg-type" field to RECONFIGURE. The server sets
sets the transaction-id field to 0. The server includes a Server the transaction-id field to 0. The server includes a Server
Identifier option containing its DUID and a Client Identifier option Identifier option containing its DUID and a Client Identifier option
containing the client's DUID in the Reconfigure message. containing the client's DUID in the Reconfigure message.
The server MAY include an Option Request option to inform the client The server MAY include an Option Request option to inform the client
of what information has been changed or new information that has of what information has been changed or new information that has been
been added. In particular, the server specifies the IA option in added. In particular, the server specifies the IA option in the
the Option Request option if the server wants the client to obtain Option Request option if the server wants the client to obtain new
new address information. If the server identifies the IA option address information. If the server identifies the IA option in the
in the Option Request option, the server MUST include an IA option Option Request option, the server MUST include an IA option that
that contains no other sub-options to identify each IA that is to be contains no other sub-options to identify each IA that is to be
reconfigured on the client. reconfigured on the client.
Because of the risk of denial of service attacks against DHCP Because of the risk of denial of service attacks against DHCP
clients, the use of a security mechanism is mandated in Reconfigure clients, the use of a security mechanism is mandated in Reconfigure
messages. The server MUST use DHCP authentication in the Reconfigure messages. The server MUST use DHCP authentication in the Reconfigure
message. message.
The server MUST include a Reconfigure Message option (defined in The server MUST include a Reconfigure Message option (defined in
section 22.19) to select whether the client responds with a Renew section 22.19) to select whether the client responds with a Renew
message or an Information-Request message. message or an Information-Request message.
skipping to change at page 46, line 4 skipping to change at page 55, line 49
The server MUST NOT include any other options in the Reconfigure The server MUST NOT include any other options in the Reconfigure
except as specifically allowed in the definition of individual except as specifically allowed in the definition of individual
options. options.
A server sends each Reconfigure message to a single DHCP client, A server sends each Reconfigure message to a single DHCP client,
using an IPv6 unicast address of sufficient scope belonging to the 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 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 send the Reconfigure message directly to the client, the server uses
a Relay-reply message (as described in section 20.3) to send the a Relay-reply message (as described in section 20.3) to send the
Reconfigure message to a relay agent that will relay the message to 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 client. The server may obtain the address of the client (and the
the appropriate relay agent, if required) through the information appropriate relay agent, if required) through the information the
that the server has about clients that have been in contact with the server has about clients that have been in contact with the server,
server, or through some external agent. or through some external agent.
To reconfigure more than one client, the server unicasts a separate To reconfigure more than one client, the server unicasts a separate
message to each client. The server may initiate the reconfiguration message to each client. The server may initiate the reconfiguration
of multiple clients concurrently; for example, a server may of multiple clients concurrently; for example, a server may send a
send a Reconfigure message to additional clients while previous Reconfigure message to additional clients while previous
reconfiguration message exchanges are still in progress. reconfiguration message exchanges are still in progress.
The Reconfigure message causes the client to initiate a Renew/Reply The Reconfigure message causes the client to initiate a Renew/Reply
or Information-request/Reply message exchange with the server. The or Information-request/Reply message exchange with the server. The
server interprets the receipt of a Renew or Information-request server interprets the receipt of a Renew or Information-request
message (whichever was specified in the original Reconfigure message) message (whichever was specified in the original Reconfigure message)
from the client as satisfying the Reconfigure message request. from the client as satisfying the Reconfigure message request.
19.1.2. Time Out and Retransmission of Reconfigure Messages 19.1.2. Time Out and Retransmission of Reconfigure Messages
If the server does not receive a Renew or Information-request If the server does not receive a Renew or Information-request message
message from the client in REC_TIMEOUT milliseconds, the server from the client in REC_TIMEOUT milliseconds, the server retransmits
retransmits the Reconfigure message, doubles the REC_TIMEOUT value the Reconfigure message, doubles the REC_TIMEOUT value and waits
and waits again. The server continues this process until REC_MAX_RC again. The server continues this process until REC_MAX_RC
unsuccessful attempts have been made, at which point the server unsuccessful attempts have been made, at which point the server
SHOULD abort the reconfigure process for that client. SHOULD abort the reconfigure process for that client.
Default and initial values for REC_TIMEOUT and REC_MAX_RC are Default and initial values for REC_TIMEOUT and REC_MAX_RC are
documented in section 5.5. documented in section 5.5.
19.2. Receipt of Renew Messages 19.2. Receipt of Renew Messages
The server generates and sends a Reply message to the client as The server generates and sends a Reply message to the client as
described in sections 18.2.3 and 18.2.8, including options for described in sections 18.2.3 and 18.2.8, including options for
skipping to change at page 47, line 7 skipping to change at page 57, line 12
described in sections 18.2.5 and 18.2.8, including options for described in sections 18.2.5 and 18.2.8, including options for
configuration parameters. configuration parameters.
The server MAY include options containing new values for other The server MAY include options containing new values for other
configuration parameters in the Reply message, even if those configuration parameters in the Reply message, even if those
parameters were not requested in the Information-request message from parameters were not requested in the Information-request message from
the client. the client.
19.4. Client Behavior 19.4. Client Behavior
A client receives Reconfigure messages sent to UDP port 546 on A client receives Reconfigure messages sent to the UDP port 546 on
interfaces for which it has acquired configuration information interfaces for which it has acquired configuration information
through DHCP. These messages may be sent at any time. Since the through DHCP. These messages may be sent at any time. Since the
results of a reconfiguration event may affect application layer results of a reconfiguration event may affect application layer
programs, the client SHOULD log these events, and MAY notify these programs, the client SHOULD log these events, and MAY notify these
programs of the change through an implementation-specific interface. programs of the change through an implementation-specific interface.
19.4.1. Receipt of Reconfigure Messages 19.4.1. Receipt of Reconfigure Messages
Upon receipt of a valid Reconfigure message, the client responds with Upon receipt of a valid Reconfigure message, the client responds with
either a Renew message or an Information-request message as indicated either a Renew message or an Information-request message as indicated
by the Reconfigure Message option (as defined in section 22.19). The by the Reconfigure Message option (as defined in section 22.19). The
client ignores the transaction-id field in the received Reconfigure client ignores the transaction-id field in the received Reconfigure
message. While the transaction is in progress, the client silently message. While the transaction is in progress, the client silently
discards any Reconfigure messages it receives. discards any Reconfigure messages it receives.
DISCUSSION: DISCUSSION:
The Reconfigure message acts as a trigger that signals the The Reconfigure message acts as a trigger that signals the client
client to complete a successful message exchange. Once to complete a successful message exchange. Once the client has
the client has received a Reconfigure, the client proceeds received a Reconfigure, the client proceeds with the message
with the message exchange (retransmitting the Renew or exchange (retransmitting the Renew or Information-request message
Information-request message if necessary); the client if necessary); the client ignores any additional Reconfigure
ignores any additional Reconfigure messages until the messages until the exchange is complete. Subsequent Reconfigure
exchange is complete. Subsequent Reconfigure messages cause messages cause the client to initiate a new exchange.
the client to initiate a new exchange.
How does this mechanism work in the face of duplicated or How does this mechanism work in the face of duplicated or
retransmitted Reconfigure messages? Duplicate messages retransmitted Reconfigure messages? Duplicate messages will be
will be ignored because the client will begin the exchange ignored because the client will begin the exchange after the
after the receipt of the first Reconfigure. Retransmitted receipt of the first Reconfigure. Retransmitted messages will
messages will either trigger the exchange (if the first either trigger the exchange (if the first Reconfigure was not
Reconfigure was not received by the client) or will be received by the client) or will be ignored. The server can
ignored. The server can discontinue retransmission of discontinue retransmission of Reconfigure messages to the client
Reconfigure messages to the client once the server receives once the server receives the Renew or Information-request message
the Renew or Information-request message from the client. from the client.
It might be possible for a duplicate or retransmitted It might be possible for a duplicate or retransmitted Reconfigure
Reconfigure to be sufficiently delayed (and delivered out of to be sufficiently delayed (and delivered out of order) to arrive
order) to arrive at the client after the exchange (initiated at the client after the exchange (initiated by the original
by the original Reconfigure) has been completed. In this Reconfigure) has been completed. In this case, the client would
case, the client would initiate a redundant exchange. The initiate a redundant exchange. The likelihood of delayed and out
likelihood of delayed and out of order delivery is small of order delivery is small enough to be ignored. The consequence
enough to be ignored. The consequence of the redundant of the redundant exchange is inefficiency rather than incorrect
exchange is inefficiency rather than incorrect operation. operation.
19.4.2. Creation and Transmission of Renew Messages 19.4.2. Creation and Transmission of Renew Messages
When responding to a Reconfigure, the client creates and sends When responding to a Reconfigure, the client creates and sends the
the Renew message in exactly the same manner as outlined in Renew message in exactly the same manner as outlined in section
section 18.1.3, with the exception that the client copies the Option 18.1.3, with the exception that the client copies the Option Request
Request option and any IA options from the Reconfigure message into option and any IA options from the Reconfigure message into the Renew
the Renew message. message.
19.4.3. Creation and Transmission of Information-request Messages 19.4.3. Creation and Transmission of Information-request Messages
When responding to a Reconfigure, the client creates and sends the When responding to a Reconfigure, the client creates and sends the
Information-request message in exactly the same manner as outlined in Information-request message in exactly the same manner as outlined in
section 18.1.5, with the exception that the client includes a Server section 18.1.5, with the exception that the client includes a Server
Identifier option with the identifier from the Reconfigure message to Identifier option with the identifier from the Reconfigure message to
which the client is responding. which the client is responding.
19.4.4. Time Out and Retransmission of Renew or Information-request 19.4.4. Time Out and Retransmission of Renew or Information-request
Messages Messages
The client uses the same variables and retransmission algorithm as The client uses the same variables and retransmission algorithm as it
it does with Renew or Information-request messages generated as part does with Renew or Information-request messages generated as part of
of a client-initiated configuration exchange. See sections 18.1.3 a client-initiated configuration exchange. See sections 18.1.3 and
and 18.1.5 for details. If the client does not receive a response 18.1.5 for details. If the client does not receive a response from
from the server by the end of the retransmission process, the client the server by the end of the retransmission process, the client
ignores and discards the Reconfigure message. ignores and discards the Reconfigure message.
19.4.5. Receipt of Reply Messages 19.4.5. Receipt of Reply Messages
Upon the receipt of a valid Reply message, the client processes the Upon the receipt of a valid Reply message, the client processes the
options and sets (or resets) configuration parameters appropriately. options and sets (or resets) configuration parameters appropriately.
The client records and updates the lifetimes for any addresses The client records and updates the lifetimes for any addresses
specified in IAs in the Reply message. specified in IAs in the Reply message.
20. Relay Agent Behavior 20. Relay Agent Behavior
skipping to change at page 49, line 10 skipping to change at page 59, line 14
If the relay agent relays messages to the All_DHCP_Servers multicast If the relay agent relays messages to the All_DHCP_Servers multicast
address or other multicast addresses, it sets the Hop Limit field to address or other multicast addresses, it sets the Hop Limit field to
32. 32.
20.1. Relaying a Client Message or a Relay-forward Message 20.1. Relaying a Client Message or a Relay-forward Message
A relay agent relays both messages from clients and Relay-forward A relay agent relays both messages from clients and Relay-forward
messages from other relay agents. When a relay agent receives a messages from other relay agents. When a relay agent receives a
valid message to be relayed, it constructs a new Relay-forward valid message to be relayed, it constructs a new Relay-forward
message. The relay agent copies the source address from the message. The relay agent copies the source address from the header
header of the IP datagram in which the message was received to the of the IP datagram in which the message was received to the
peer-address field of the Relay-forward message. The relay agent peer-address field of the Relay-forward message. The relay agent
copies the received DHCP message (excluding any IP or UDP headers) copies the received DHCP message (excluding any IP or UDP headers)
into a Relay Message option in the new message. The relay agent adds into a Relay Message option in the new message. The relay agent adds
to the Relay-forward message any other options it is configured to to the Relay-forward message any other options it is configured to
include. include.
20.1.1. Relaying a Message from a Client 20.1.1. Relaying a Message from a Client
If the relay agent received the message to be relayed from a client, If the relay agent received the message to be relayed from a client,
the relay agent places a global or site-scoped address with a prefix the relay agent places a global or site-scoped address with a prefix
skipping to change at page 49, line 39 skipping to change at page 59, line 43
to identify the interface through which the response to the client to identify the interface through which the response to the client
will be relayed, the relay agent MUST include an Interface-id option will be relayed, the relay agent MUST include an Interface-id option
(see section 22.18) in the Relay-forward message. The server will (see section 22.18) in the Relay-forward message. The server will
include the Interface-id option in its Relay-reply message. The include the Interface-id option in its Relay-reply message. The
relay agent fills in the link-address field as described in the relay agent fills in the link-address field as described in the
previous paragraph regardless of whether the relay agent includes an previous paragraph regardless of whether the relay agent includes an
Interface-id option in the Relay-forward message. Interface-id option in the Relay-forward message.
20.1.2. Relaying a Message from a Relay Agent 20.1.2. Relaying a Message from a Relay Agent
If the message received by the relay agent is a Relay-forward If the message received by the relay agent is a Relay-forward message
message and the hop-count in the message is greater than or equal to and the hop-count in the message is greater than or equal to
HOP_COUNT_LIMIT, the relay agent discards the received message. HOP_COUNT_LIMIT, the relay agent discards the received message.
The relay agent copies the source address from the IP datagram in The relay agent copies the source address from the IP datagram in
which the message was received from the client into the peer-address which the message was received from the client into the peer-address
field in the Relay-forward message and sets the hop-count field to 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 the value of the hop-count field in the received message incremented
by 1. by 1.
If the source address from the IP datagram header of the received If the source address from the IP datagram header of the received
message is a global or site-local address (and the device on which message is a global or site-local address (and the device on which
the relay agent is running belongs to only one site), the relay agent the relay agent is running belongs to only one site), the relay agent
sets the link-address field to 0; otherwise the relay agent sets sets the link-address field to 0; otherwise the relay agent sets the
the link-address field to a global or site-local address assigned link-address field to a global or site-local address assigned to the
to the interface on which the message was received, or includes an interface on which the message was received, or includes an
Interface-ID option to identify the interface on which the message Interface-ID option to identify the interface on which the message
was received. was received.
20.2. Relaying a Relay-reply Message 20.2. Relaying a Relay-reply Message
The relay agent processes any options included in the Relay-reply The relay agent processes any options included in the Relay-reply
message in addition to the Relay Message option and then discards message in addition to the Relay Message option, and then discards
those options. those options.
The relay agent extracts the message from the Relay Message option The relay agent extracts the message from the Relay Message option
and relays it to the address contained in the peer-address field of and relays it to the address contained in the peer-address field of
the Relay-reply message. the Relay-reply message.
If the Relay-reply message includes an Interface-id option, the If the Relay-reply message includes an Interface-id option, the relay
relay agent relays the message from the server to the client on agent relays the message from the server to the client on the link
the link identified by the Interface-id option. Otherwise, if the identified by the Interface-id option. Otherwise, if the
link-address field is not set to zero, the relay agent relays the link-address field is not set to zero, the relay agent relays the
message on the link identified by the link-address field. message on the link identified by the link-address field.
20.3. Construction of Relay-reply Messages 20.3. Construction of Relay-reply Messages
A server uses a Relay-reply message to return a response to a client A server uses a Relay-reply message to return a response to a client
if the original message from the client was relayed to the server in if the original message from the client was relayed to the server in
a Relay-forward message or to send a Reconfigure message to a client a Relay-forward message or to send a Reconfigure message to a client
if the server does not have an address it can use to send the message if the server does not have an address it can use to send the message
directly to the client. directly to the client.
A response to the client MUST be relayed through the same relay A response to the client MUST be relayed through the same relay
agents as the original client message. The server causes this to agents as the original client message. The server causes this to
happen by creating a Relay-reply message that includes a Relay happen by creating a Relay-reply message that includes a Relay
Message option containing the message for the next relay agent in Message option containing the message for the next relay agent in the
the return path to the client. The contained Relay-reply message return path to the client. The contained Relay-reply message
contains another Relay Message option to be sent to the next relay contains another Relay Message option to be sent to the next relay
agent, and so on. The server must record the contents of the agent, and so on. The server must record the contents of the
peer-address fields in the received message so it can construct peer-address fields in the received message so it can construct the
the appropriate Relay-reply message carrying the response from the appropriate Relay-reply message carrying the response from the
server. server.
For example, if client C sent a message that was relayed by relay 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 agent A to relay agent B and then to the server, the server would
send the following Relay-Reply message to relay agent B: send the following Relay-Reply message to relay agent B:
msg-type: RELAY-REPLY msg-type: RELAY-REPLY
hop-count: 1 hop-count: 1
link-address: 0 link-address: 0
peer-address: A peer-address: A
Relay Message option, containing: Relay Message option, containing:
msg-type: RELAY-REPLY msg-type: RELAY-REPLY
hop-count: 0 hop-count: 0
link-address: address from link to which C is attached link-address: address from link to which C is attached
peer-address: C peer-address: C
Relay Message option: <response from server> Relay Message option: <response from server>
When sending a Reconfigure message to a client through a relay When sending a Reconfigure message to a client through a relay agent,
agent, the server creates a Relay-reply message that includes a the server creates a Relay-reply message that includes a Relay
Relay Message option containing the Reconfigure message for the Message option containing the Reconfigure message for the next relay
next relay agent in the return path to the client. The server sets agent in the return path to the client. The server sets the
the peer-address field in the Relay-reply message header to the peer-address field in the Relay-reply message header to the address
address of the client, and sets the link-address field as required of the client, and sets the link-address field as required by the
by the relay agent to relay the Reconfigure message to the client. relay agent to relay the Reconfigure message to the client. The
The server obtains the addresses of the client and the relay agent server obtains the addresses of the client and the relay agent
through prior interaction with the client or through some external through prior interaction with the client or through some external
mechanism. mechanism.
21. Authentication of DHCP Messages 21. Authentication of DHCP Messages
Some network administrators may wish to provide authentication of Some network administrators may wish to provide authentication of the
the source and contents of DHCP messages. For example, clients may source and contents of DHCP messages. For example, clients may be
be subject to denial of service attacks through the use of bogus subject to denial of service attacks through the use of bogus DHCP
DHCP servers, or may simply be misconfigured due to unintentionally servers, or may simply be misconfigured due to unintentionally
instantiated DHCP servers. Network administrators may wish to instantiated DHCP servers. Network administrators may wish to
constrain the allocation of addresses to authorized hosts to avoid constrain the allocation of addresses to authorized hosts to avoid
denial of service attacks in "hostile" environments where the network denial of service attacks in "hostile" environments where the network
medium is not physically secured, such as wireless networks or medium is not physically secured, such as wireless networks or
college residence halls. college residence halls.
The DHCP authentication mechanism is based on the design of The DHCP authentication mechanism is based on the design of
authentication for DHCPv4 [7]. authentication for DHCPv4 [4].
21.1. Security of Messages Sent Between Servers and Relay Agents 21.1. Security of Messages Sent Between Servers and Relay Agents
Relay agents and servers that exchange messages securely use the Relay agents and servers that exchange messages securely use the
IPsec mechanisms for IPv6 [11]. Relay agents and servers MUST IPsec mechanisms for IPv6 [7]. If a client message is relayed
support manual configuration and installation of static keys. If through multiple relay agents, each of the relay agents must have
a client message is relayed through multiple relay agents, each of established independent, pairwise trust relationships. That is, if
the relay agents must have established independent, pairwise trust messages from client C will be relayed by relay agent A to relay
relationships. That is, if messages from client C will be relayed by agent B and then to the server, relay agents A and B must be
relay agent A to relay agent B and then to the server, relay agents A configured to use IPSec for the messages they exchange, and relay
and B must be configured to use IPSec for the messages they exchange, agent B and the server must be configured to use IPSec for the
and relay agent B and the server must be configured to use IPSec for messages they exchange.
the messages they exchange.
Relay agents and servers that support secure relay agent to server Relay agents and servers that support secure relay agent to server or
or relay agent to relay agent communication use IPsec under the relay agent to relay agent communication use IPsec under the
following conditions: following conditions:
Selectors Relay agents are manually configured with the Selectors Relay agents are manually configured with the
addresses of the relay agent or server to which addresses of the relay agent or server to which
DHCP messages are to be forwarded. Each relay DHCP messages are to be forwarded. Each relay
agent and server that will be using IPsec for agent and server that will be using IPsec for
securing DHCP messages must also be configured securing DHCP messages must also be configured
with a list of the relay agents to which messages with a list of the relay agents to which messages
will be returned. The selectors for the relay will be returned. The selectors for the relay
agents and servers will be the pairs of addresses agents and servers will be the pairs of addresses
defining relay agents and servers that exchange defining relay agents and servers that exchange
DHCP messages on the DHCPv6 UDP ports 546 and DHCP messages on the DHCPv6 UDP ports 546 and
547. 547.
Mode Relay agents and servers use transport mode and Mode Relay agents and servers use transport mode and
ESP. The information in DHCP messages is not ESP. The information in DHCP messages is not
generally considered confidential, so encryption generally considered confidential, so encryption
need not be used (i.e., NULL encryption can be need not be used (i.e., NULL encryption can be
used). used).
Key management Because the relay agents and servers must be Key management Because the relay agents and servers are used
manually configured, no automated key management within an organization, public key schemes are
is required. not necessary. Because the relay agents and
servers must be manually configured, manually
configured key management may suffice, but does
not provide defense against replayed messages.
Accordingly, IKE with preshared secrets SHOULD be
supported. IKE with public keys MAY be
supported.
Security policy DHCP messages between relay agents and servers Security policy DHCP messages between relay agents and servers
should only be accepted from DHCP peers as should only be accepted from DHCP peers as
identified in the local configuration. identified in the local configuration.
Authentication Shared keys, indexed to the source IP address of Authentication Shared keys, indexed to the source IP address of
the received DHCP message, are adequate in this the received DHCP message, are adequate in this
application. application.
Availability Appropriate IPsec implementations are likely to Availability Appropriate IPsec implementations are likely to
skipping to change at page 53, line 15 skipping to change at page 63, line 39
algorithm field specifies the hash algorithm used to generate the algorithm field specifies the hash algorithm used to generate the
message authentication code (MAC) in the authentication option. The message authentication code (MAC) in the authentication option. The
replay detection method (RDM) field specifies the type of replay replay detection method (RDM) field specifies the type of replay
detection used in the replay detection field. detection used in the replay detection field.
21.3. Replay Detection 21.3. Replay Detection
The Replay Detection Method (RDM) field determines the type of replay The Replay Detection Method (RDM) field determines the type of replay
detection used in the Replay Detection field. detection used in the Replay Detection field.
If the RDM field contains 0x00, the replay detection field MUST If the RDM field contains 0x00, the replay detection field MUST be
be set to the value of a monotonically increasing counter. Using set to the value of a monotonically increasing counter. Using a
a counter value such as the current time of day (for example, an counter value, such as the current time of day (for example, an NTP-
NTP-format timestamp [13]) can reduce the danger of replay attacks. format timestamp [9]), can reduce the danger of replay attacks. This
This method MUST be supported by all protocols. method MUST be supported by all protocols.
21.4. Delayed Authentication Protocol 21.4. Delayed Authentication Protocol
If the protocol field is 2, the message is using the "delayed If the protocol field is 2, the message is using the "delayed
authentication" mechanism. In delayed authentication, the client authentication" mechanism. In delayed authentication, the client
requests authentication in its Solicit message and the server replies requests authentication in its Solicit message, and the server
with an Advertise message that includes authentication information. replies with an Advertise message that includes authentication
This authentication information contains a nonce value generated by information. This authentication information contains a nonce value
the source as a message authentication code (MAC) to provide message generated by the source as a message authentication code (MAC) to
authentication and entity authentication. provide message authentication and entity authentication.
The use of a particular technique based on the HMAC protocol [12] The use of a particular technique based on the HMAC protocol [8]
using the MD5 hash [20] is defined here. using the MD5 hash [16] is defined here.
21.4.1. Use of the Authentication Option in the Delayed Authentication 21.4.1. Use of the Authentication Option in the Delayed Authentication
Protocol Protocol
In a Solicit message, the client fills in the protocol, algorithm In a Solicit message, the client fills in the protocol, algorithm and
and RDM fields in the Authentication option with the client's RDM fields in the Authentication option with the client's
preferences. The client sets the replay detection field to zero and preferences. The client sets the replay detection field to zero and
omits the authentication information field. The client sets the omits the authentication information field. The client sets the
option-len field to 11. option-len field to 11.
In all other messages, the protocol and algorithm fields identifies In all other messages, the protocol and algorithm fields identify the
the method used to construct the contents of the authentication method used to construct the contents of the authentication
information field. The RDM field identifies the method used to information field. The RDM field identifies the method used to
construct the contents of the replay detection field. construct the contents of the replay detection field.
The format of the Authentication information is: The format of the Authentication information is:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DHCP realm | | DHCP realm |
| (variable length) | | (variable length) |
. . . .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| key ID | | key ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| HMAC-MD5 | | HMAC-MD5 |
| (128 bits) | | (128 bits) |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
DHCP realm The DHCP realm that identifies the key used to DHCP realm The DHCP realm that identifies the key used to
generate the HMAC-MD5 value generate the HMAC-MD5 value.
key ID The key identifier that identified the key used to key ID The key identifier that identified the key used to
generate the HMAC-MD5 value generate the HMAC-MD5 value.
HMAC-MD5 The message authentication code generated by applying HMAC-MD5 The message authentication code generated by applying
MD5 to the DHCP message using the key identified by MD5 to the DHCP message using the key identified by
the DHCP realm, client DUID and key ID the DHCP realm, client DUID, and key ID.
The sender computes the MAC using the HMAC generation algorithm [12] The sender computes the MAC using the HMAC generation algorithm [8]
and the MD5 hash function [20]. The entire DHCP message (setting and the MD5 hash function [16]. The entire DHCP message (setting the
the MAC field of the authentication option to zero), including the MAC field of the authentication option to zero), including the DHCP
DHCP message header and the options field, is used as input to the message header and the options field, is used as input to the HMAC-
HMAC-MD5 computation function. MD5 computation function.
DISCUSSION: DISCUSSION:
Algorithm 1 specifies the use of HMAC-MD5. Use of a Algorithm 1 specifies the use of HMAC-MD5. Use of a different
different technique, such as HMAC-SHA, will be specified as technique, such as HMAC-SHA, will be specified as a separate
a separate protocol. protocol.
The DHCP realm used to identify authentication keys is The DHCP realm used to identify authentication keys is chosen to
chosen to be unique among administrative domains. Use of be unique among administrative domains. Use of the DHCP realm
the DHCP realm allows DHCP administrators to avoid conflict allows DHCP administrators to avoid conflict in the use of key
in the use of key identifiers, and allows a host using identifiers, and allows a host using DHCP to use authenticated
DHCP to use authenticated DHCP while roaming among DHCP DHCP while roaming among DHCP administrative domains.
administrative domains.
21.4.2. Message Validation 21.4.2. Message Validation
Any DHCP message that includes more than one authentication option Any DHCP message that includes more than one authentication option
MUST be discarded. MUST be discarded.
To validate an incoming message, the receiver first checks that To validate an incoming message, the receiver first checks that the
the value in the replay detection field is acceptable according to value in the replay detection field is acceptable according to the
the replay detection method specified by the RDM field. Next, the replay detection method specified by the RDM field. Next, the
receiver computes the MAC as described in [12]. The entire DHCP receiver computes the MAC as described in [8]. The entire DHCP
message (setting the MAC field of the authentication option to 0), message (setting the MAC field of the authentication option to 0) is
is used as input to the HMAC-MD5 computation function. If the MAC used as input to the HMAC-MD5 computation function. If the MAC
computed by the receiver does not match the MAC contained in the computed by the receiver does not match the MAC contained in the
authentication option, the receiver MUST discard the DHCP message. authentication option, the receiver MUST discard the DHCP message.
21.4.3. Key Utilization 21.4.3. Key Utilization
Each DHCP client has a set of keys. Each key is identifier by <DHCP Each DHCP client has a set of keys. Each key is identified by <DHCP
realm, client DUID, key id>. Each key also has a lifetime. The key realm, client DUID, key id>. Each key also has a lifetime. The key
may not be used past the end of its lifetime. The client's keys may not be used past the end of its lifetime. The client's keys are
are initially distributed to the client through some out-of-band initially distributed to the client through some out-of-band
mechanism. The lifetime for each key is distributed with the key. mechanism. The lifetime for each key is distributed with the key.
Mechanisms for key distribution and lifetime specification are beyond Mechanisms for key distribution and lifetime specification are beyond
the scope of this document. the scope of this document.
The client and server use one of the client's keys to authenticate The client and server use one of the client's keys to authenticate
DHCP messages during a session (until the next Solicit message DHCP messages during a session (until the next Solicit message sent
broadcast by the client). by the client).
21.4.4. Client Considerations for Delayed Authentication Protocol 21.4.4. Client Considerations for Delayed Authentication Protocol
The client announces its intention to use DHCP authentication by The client announces its intention to use DHCP authentication by
including an Authentication option in its Solicit message. The including an Authentication option in its Solicit message. The
server selects a key for the client based on the client's DUID. The server selects a key for the client based on the client's DUID. The
client and server use that key to authenticate all DHCP messages client and server use that key to authenticate all DHCP messages
exchanged during the session. exchanged during the session.
21.4.4.1. Sending Solicit Messages 21.4.4.1. Sending Solicit Messages
When the client sends a Solicit message and wishes to use When the client sends a Solicit message and wishes to use
authentication, it includes an Authentication option with the desired authentication, it includes an Authentication option with the desired
protocol, algorithm and RDM as described in section 21.4. The client protocol, algorithm and RDM as described in section 21.4. The client
does not include any replay detection or authentication information does not include any replay detection or authentication information
in the Authentication option. in the Authentication option.
21.4.4.2. Receiving Advertise Messages 21.4.4.2. Receiving Advertise Messages
The client validates any Advertise messages containing an The client validates any Advertise messages containing an
Authentication option specifying the delayed authentication protocol Authentication option specifying the delayed authentication protocol
using the validation test described in section 21.4.2. using the validation test described in section 21.4.2.
Client behavior if no Advertise messages include authentication Client behavior, if no Advertise messages include authentication
information or pass the validation test is controlled by local policy information or pass the validation test, is controlled by local
on the client. According to client policy, the client MAY choose to policy on the client. According to client policy, the client MAY
respond to a Advertise message that has not been authenticated. choose to respond to an Advertise message that has not been
authenticated.
The decision to set local policy to accept unauthenticated messages The decision to set local policy to accept unauthenticated messages
should be made with care. Accepting an unauthenticated Advertise should be made with care. Accepting an unauthenticated Advertise
message can make the client vulnerable to spoofing and other message can make the client vulnerable to spoofing and other attacks.
attacks. If local users are not explicitly informed that the client If local users are not explicitly informed that the client has
has accepted an unauthenticated Advertise message, the users may accepted an unauthenticated Advertise message, the users may
incorrectly assume that the client has received an authenticated incorrectly assume that the client has received an authenticated
address and is not subject to DHCP attacks through unauthenticated address and is not subject to DHCP attacks through unauthenticated
messages. messages.
A client MUST be configurable to discard unauthenticated messages, A client MUST be configurable to discard unauthenticated messages,
and SHOULD be configured by default to discard unauthenticated and SHOULD be configured by default to discard unauthenticated
messages if the client has been configured with an authentication messages if the client has been configured with an authentication key
key or other authentication information. A client MAY choose to or other authentication information. A client MAY choose to
differentiate between Advertise messages with no authentication differentiate between Advertise messages with no authentication
information and Advertise messages that do not pass the validation information and Advertise messages that do not pass the validation
test; for example, a client might accept the former and discard the test; for example, a client might accept the former and discard the
latter. If a client does accept an unauthenticated message, the latter. If a client does accept an unauthenticated message, the
client SHOULD inform any local users and SHOULD log the event. client SHOULD inform any local users and SHOULD log the event.
21.4.4.3. Sending Request, Confirm, Renew, Rebind, Decline or Release 21.4.4.3. Sending Request, Confirm, Renew, Rebind, Decline or Release
Messages Messages
If the client authenticated the Advertise message through which the If the client authenticated the Advertise message through which the
client selected the server, the client MUST generate authentication client selected the server, the client MUST generate authentication
information for subsequent Request, Confirm, Renew, Rebind or Release information for subsequent Request, Confirm, Renew, Rebind or Release
messages sent to the server as described in section 21.4. When the messages sent to the server, as described in section 21.4. When the
client sends a subsequent message, it MUST use the same key used by client sends a subsequent message, it MUST use the same key used by
the server to generate the authentication information. the server to generate the authentication information.
21.4.4.4. Sending Information-request Messages 21.4.4.4. Sending Information-request Messages
If the server has selected a key for the client in a previous message If the server has selected a key for the client in a previous message
exchange (see section 21.4.5.1), the client MUST use the same key to exchange (see section 21.4.5.1), the client MUST use the same key to
generate the authentication information throughout the session. generate the authentication information throughout the session.
21.4.4.5. Receiving Reply Messages 21.4.4.5. Receiving Reply Messages
skipping to change at page 57, line 13 skipping to change at page 67, line 42
client MAY accept an unauthenticated Reply message from the server. client MAY accept an unauthenticated Reply message from the server.
21.4.4.6. Receiving Reconfigure Messages 21.4.4.6. Receiving Reconfigure Messages
The client MUST discard the Reconfigure if the message fails to pass The client MUST discard the Reconfigure if the message fails to pass
the validation test and MAY log the validation failure. the validation test and MAY log the validation failure.
21.4.5. Server Considerations for Delayed Authentication Protocol 21.4.5. Server Considerations for Delayed Authentication Protocol
After receiving a Solicit message that contains an Authentication After receiving a Solicit message that contains an Authentication
option, the server selects a key for the client based on the client's option, the server selects a key for the client, based on the
DUID and key selection policies with which the server has been client's DUID and key selection policies with which the server has
configured. The server identifies the selected key in the Advertise been configured. The server identifies the selected key in the
message and uses the key to validate subsequent messages between the Advertise message and uses the key to validate subsequent messages
client and the server. between the client and the server.
21.4.5.1. Receiving Solicit Messages and Sending Advertise Messages 21.4.5.1. Receiving Solicit Messages and Sending Advertise Messages
The server selects a key for the client and includes authentication The server selects a key for the client and includes authentication
information in the Advertise message returned to the client as information in the Advertise message returned to the client as
specified in section 21.4. The server MUST record the identifier of specified in section 21.4. The server MUST record the identifier of
the key selected for the client and use that same key for validating the key selected for the client and use that same key for validating
subsequent messages with the client. subsequent messages with the client.
21.4.5.2. Receiving Request, Confirm, Renew, Rebind or Release Messages 21.4.5.2. Receiving Request, Confirm, Renew, Rebind or Release Messages
and Sending Reply Messages and Sending Reply Messages
The server uses the key identified in the message and validates the The server uses the key identified in the message and validates the
message as specified in section 21.4.2. If the message fails to pass message as specified in section 21.4.2. If the message fails to pass
the validation test or the server does not know the key identified the validation test or the server does not know the key identified by
by the 'key ID' field, the server MUST discard the message and MAY the 'key ID' field, the server MUST discard the message and MAY
choose to log the validation failure. choose to log the validation failure.
If the message passes the validation test, the server responds to If the message passes the validation test, the server responds to the
the specific message as described in section 18.2. The server MUST specific message as described in section 18.2. The server MUST
include authentication information generated using the key identified include authentication information generated using the key identified
in the received message as specified in section 21.4. in the received message, as specified in section 21.4.
21.5. Reconfigure Key Authentication Protocol 21.5. Reconfigure Key Authentication Protocol
The Reconfigure key authentication protocol provides protection The Reconfigure key authentication protocol provides protection
against misconfiguration of a client caused by a Reconfigure message against misconfiguration of a client caused by a Reconfigure message
sent by a malicious DHCP server. In this protocol, a DHCP server sent by a malicious DHCP server. In this protocol, a DHCP server
sends a Reconfigure Key to the client in the initial exchange of sends a Reconfigure Key to the client in the initial exchange of DHCP
DHCP messages. The client records the Reconfigure Key for use in messages. The client records the Reconfigure Key for use in
authenticating subsequent Reconfigure messages from that server. The authenticating subsequent Reconfigure messages from that server. The
server then includes an HMAC computed from the Reconfigure Key in server then includes an HMAC computed from the Reconfigure Key in
subsequent Reconfigure messages. subsequent Reconfigure messages.
Both the Reconfigure Key sent from the server to the client and Both the Reconfigure Key sent from the server to the client and the
the HMAC in subsequent Reconfigure messages are carried as the HMAC in subsequent Reconfigure messages are carried as the
Authentication information in an Authentication option. The format Authentication information in an Authentication option. The format
of the Authentication information is defined in the following of the Authentication information is defined in the following
section. section.
The Reconfigure Key protocol is used (initiated by the server) only The Reconfigure Key protocol is used (initiated by the server) only
if the client and server are not using any other authentication if the client and server are not using any other authentication
protocol and the client and server have negotiated to use Reconfigure protocol and the client and server have negotiated to use Reconfigure
messages. messages.
21.5.1. Use of the Authentication Option in the Reconfigure Key 21.5.1. Use of the Authentication Option in the Reconfigure Key
Authentication Protocol Authentication Protocol
The following fields are set in an Authentication option for the The following fields are set in an Authentication option for the
Reconfigure Key Authentication Protocol: Reconfigure Key Authentication Protocol:
protocol 3 protocol 3
algorithm 1 algorithm 1
RDM 0 RDM 0
The format of the Authentication information for the Reconfigure Key The format of the Authentication information for the Reconfigure Key
Authentication Protocol is: Authentication Protocol is:
0 1 2 3 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 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) | | Type | Value (128 bits) |
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ |
. . . .
. . . .
. +-+-+-+-+-+-+-+-+ . +-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type of data in Value field carried in this option: Type Type of data in Value field carried in this option:
1 Reconfigure Key value (used in Reply message) 1 Reconfigure Key value (used in Reply message).
2 HMAC-MD5 digest of the message (used in Reconfigure 2 HMAC-MD5 digest of the message (used in Reconfigure
message) message).
Value Data as defined by field Value Data as defined by field.
21.5.2. Server considerations for Reconfigure Key protocol 21.5.2. Server considerations for Reconfigure Key protocol
The server selects a Reconfigure Key for a client during the The server selects a Reconfigure Key for a client during the
Request/Reply, Solicit/Reply or Information-request/Reply message Request/Reply, Solicit/Reply or Information-request/Reply message
exchange. The server records the Reconfigure Key and transmits that exchange. The server records the Reconfigure Key and transmits that
key to the client in an Authentication option in the Reply message. key to the client in an Authentication option in the Reply message.
The Reconfigure Key is 128 bits long, and MUST be a cryptographically The Reconfigure Key is 128 bits long, and MUST be a cryptographically
strong random or pseudo-random number that cannot easily be strong random or pseudo-random number that cannot easily be
predicted. predicted.
To provide authentication for a Reconfigure message, the server To provide authentication for a Reconfigure message, the server
selects a replay detection value according to the RDM selected by selects a replay detection value according to the RDM selected by the
the server, and computes an HMAC-MD5 of the Reconfigure message server, and computes an HMAC-MD5 of the Reconfigure message using the
using the Reconfigure Key for the client. The server computes the Reconfigure Key for the client. The server computes the HMAC-MD5
HMAC-MD5 over then entire DHCP Reconfigure message, including the over the entire DHCP Reconfigure message, including the
Authentication option; the HMAC-MD5 field in the Authentication Authentication option; the HMAC-MD5 field in the Authentication
option is set to zero for the HMAC-MD5 computation. The server option is set to zero for the HMAC-MD5 computation. The server
includes the HMAC-MD5 in the authentication information field in an includes the HMAC-MD5 in the authentication information field in an
Authentication option included in the Reconfigure message sent to the Authentication option included in the Reconfigure message sent to the
client. client.
21.5.3. Client considerations for Reconfigure Key protocol 21.5.3. Client considerations for Reconfigure Key protocol
The client will receive a Reconfigure Key from the server in the The client will receive a Reconfigure Key from the server in the
initial Reply message from the server. The client records the initial Reply message from the server. The client records the
Reconfigure Key for use in authenticating subsequent Reconfigure Reconfigure Key for use in authenticating subsequent Reconfigure
messages. messages.
To authenticate a Reconfigure message, the client computes an To authenticate a Reconfigure message, the client computes an
HMAC-MD5 over the DHCP Reconfigure message, using the Reconfigure HMAC-MD5 over the DHCP Reconfigure message, using the Reconfigure Key
Key received from the server. If this computed HMAC-MD5 matches received from the server. If this computed HMAC-MD5 matches the
the value in the Authentication option, the client accepts the value in the Authentication option, the client accepts the
Reconfigure message. Reconfigure message.
22. DHCP Options 22. DHCP Options
Options are used to carry additional information and parameters Options are used to carry additional information and parameters in
in DHCP messages. Every option shares a common base format, as DHCP messages. Every option shares a common base format, as
described in section 22.1. All values in options are represented in described in section 22.1. All values in options are represented in
network byte order. network byte order.
This document describes the DHCP options defined as part of the base This document describes the DHCP options defined as part of the base
DHCP specification. Other options may be defined in the future in DHCP specification. Other options may be defined in the future in
separate documents. separate documents.
Unless otherwise noted, each option may appear only in the options 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 area of a DHCP message and may appear only once. If an option does
appear multiple times, each instance is considered separate and the appear multiple times, each instance is considered separate and the
data areas of the options MUST NOT be concatenated or otherwise data areas of the options MUST NOT be concatenated or otherwise
combined. combined.
22.1. Format of DHCP Options 22.1. Format of DHCP Options
The format of DHCP options is: The format of DHCP options is:
0 1 2 3 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 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-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-data | | option-data |
| (option-len octets) | | (option-len octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code An unsigned integer identifying the specific option option-code An unsigned integer identifying the specific option
type carried in this option. type carried in this option.
option-len An unsigned integer giving the length of the option-len An unsigned integer giving the length of the
option-data field in this option in octets. option-data field in this option in octets.
option-data The data for the option; the format of this data option-data The data for the option; the format of this data
depends on the definition of the option. depends on the definition of the option.
DHCPv6 options are scoped by using encapsulation. Some options apply DHCPv6 options are scoped by using encapsulation. Some options apply
generally to the client, some are specific to an IA, and some are 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 specific to the addresses within an IA. These latter two cases are
discussed in sections 22.4 and 22.6. discussed in sections 22.4 and 22.6.
22.2. Client Identifier Option 22.2. Client Identifier Option
The Client Identifier option is used to carry a DUID (see section 9) The Client Identifier option is used to carry a DUID (see section 9)
identifying a client between a client and a server. The format of identifying a client between a client and a server. The format of
the Client Identifier option is: the Client Identifier option is:
0 1 2 3 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 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 | | OPTION_CLIENTID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. DUID . . DUID .
. (variable length) . . (variable length) .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_CLIENTID (1) option-code OPTION_CLIENTID (1).
option-len Length of DUID in octets option-len Length of DUID in octets.
DUID The DUID for the client
DUID The DUID for the client.
22.3. Server Identifier Option 22.3. Server Identifier Option
The Server Identifier option is used to carry a DUID (see section 9) The Server Identifier option is used to carry a DUID (see section 9)
identifying a server between a client and a server. The format of identifying a server between a client and a server. The format of
the Server Identifier option is: the Server Identifier option is:
0 1 2 3 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 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 | | OPTION_SERVERID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. DUID . . DUID .
. (variable length) . . (variable length) .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_SERVERID (2) option-code OPTION_SERVERID (2).
option-len Length of DUID in octets option-len Length of DUID in octets.
DUID The DUID for the server DUID The DUID for the server.
22.4. Identity Association for Non-temporary Addresses Option 22.4. Identity Association for Non-temporary Addresses Option
The Identity Association for Non-temporary Addresses option (IA_NA The Identity Association for Non-temporary Addresses option (IA_NA
option) is used to carry an identity association, the parameters option) is used to carry an IA_NA, the parameters associated with the
associated with the IA and the non-temporary addresses associated IA_NA, and the non-temporary addresses associated with the IA_NA.
with the IA_NA.
Addresses appearing in an IA_NA option are not temporary addresses Addresses appearing in an IA_NA option are not temporary addresses
(see section 22.5). (see section 22.5).
The format of the IA_NA option is: The format of the IA_NA option is:
0 1 2 3 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 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 | | OPTION_IA_NA | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) | | IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T1 | | T1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T2 | | T2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. IA_NA-options . . IA_NA-options .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_IA_NA (3) option-code OPTION_IA_NA (3).
option-len 12 + length of IA_NA-options field option-len 12 + length of IA_NA-options field.
IAID The unique identifier for this IA; the IAID IAID The unique identifier for this IA_NA; the
must be unique among the identifiers for all IAID must be unique among the identifiers for
of this client's IAs. The number space for all of this client's IA_NAs. The number
IA_NA IAIDs is separate from the number space space for IA_NA IAIDs is separate from the
for IA_TA IAIDs. number space for IA_TA IAIDs.
T1 The time at which the client contacts the T1 The time at which the client contacts the
server from which the addresses in the IA_NA server from which the addresses in the IA_NA
were obtained to extend the lifetimes of the were obtained to extend the lifetimes of the
addresses assigned to the IA_NA; T1 is a addresses assigned to the IA_NA; T1 is a
time duration relative to the current time time duration relative to the current time
expressed in units of seconds expressed in units of seconds.
T2 The time at which the client contacts any T2 The time at which the client contacts any
available server to extend the lifetimes of available server to extend the lifetimes of
the addresses assigned to the IA_NA; T2 is a the addresses assigned to the IA_NA; T2 is a
time duration relative to the current time time duration relative to the current time
expressed in units of seconds expressed in units of seconds.
IA_NA-options Options associated with this IA_NA. IA_NA-options Options associated with this IA_NA.
The IA_NA-options field encapsulates those options that are specific The IA_NA-options field encapsulates those options that are specific
to this IA_NA. For example, all of the IA Address Options carrying to this IA_NA. For example, all of the IA Address Options carrying
the addresses associated with this IA are in the IA_NA-options field. the addresses associated with this IA_NA are in the IA_NA-options
field.
An IA_NA option may only appear in the options area of a DHCP An IA_NA option may only appear in the options area of a DHCP
message. A DHCP message may contain multiple IA_NA options. message. A DHCP message may contain multiple IA_NA options.
The status of any operations involving this IA_NA is indicated in a The status of any operations involving this IA_NA is indicated in a
Status Code option in the IA_NA-options field. Status Code option in the IA_NA-options field.
Note that an IA_NA has no explicit "lifetime" or "lease length" of 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 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. IA_NA have expired, the IA_NA can be considered as having expired.
skipping to change at page 63, line 26 skipping to change at page 74, line 29
client sets T1 and T2 to 0 if it has no preference for those values. client sets T1 and T2 to 0 if it has no preference for those values.
In a message sent by a server to a client, the client MUST use the 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 parameters, unless values in the T1 and T2 fields for the T1 and T2 parameters, unless
those values in those fields are 0. The values in the T1 and T2 those values in those fields are 0. The values in the T1 and T2
fields are the number of seconds until 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 server selects the T1 and T2 times to allow the client to extend
the lifetimes of any addresses in the IA_NA before the lifetimes the lifetimes of any addresses in the IA_NA before the lifetimes
expire, even if the server is unavailable for some short period of expire, even if the server is unavailable for some short period of
time. Recommended values for T1 and T2 are .5 and .8 times the time. Recommended values for T1 and T2 are .5 and .8 times the
shortest preferred lifetime of the addresses in the IA, respectively. shortest preferred lifetime of the addresses in the IA that the
If the time at which the addresses in an IA_NA are to be renewed is server is willing to extend, respectively. If the "shortest"
to be left to the discretion of the client, the server sets T1 and T2 preferred lifetime is 0xffffffff ("infinity"), the recommended T1 and
to 0. 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 T1 and T2 to 0.
If a server receives an IA_NA with T1 greater than T2, and both T1
and T2 are greater than 0, the server ignores the invalid values of
T1 and T2 and processes the IA_NA as though the client had set T1 and
T2 to 0.
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.
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.
22.5. Identity Association for Temporary Addresses Option 22.5. Identity Association for Temporary Addresses Option
The Identity Association for Temporary Addresses (IA_TA) option is The Identity Association for the Temporary Addresses (IA_TA) option
used to carry an IA_TA, the parameters associated with the IA_TA and is used to carry an IA_TA, the parameters associated with the IA_TA
the addresses associated with the IA_TA. All of the addresses in this and the addresses associated with the IA_TA. All of the addresses in
option are used by the client as temporary addresses, as defined in this option are used by the client as temporary addresses, as defined
RFC 3041 [16]. The format of the IA_TA option is: in RFC 3041 [12]. The format of the IA_TA option is:
0 1 2 3 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 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 | | OPTION_IA_TA | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) | | IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. IA_TA-options . . IA_TA-options .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_IA_TA (4) option-code OPTION_IA_TA (4).
option-len 4 + length of IA_TA-options field.
option-len 4 + length of IA_TA-options field
IAID The unique identifier for this IA_TA; the IAID The unique identifier for this IA_TA; the
IAID must be unique among the identifiers IAID must be unique among the identifiers
for all of this client's IA_TAs. The number for all of this client's IA_TAs. The number
space for IA_TA IAIDs is separate from the space for IA_TA IAIDs is separate from the
number space for IA_NA IAIDs. number space for IA_NA IAIDs.
IA_TA-options Options associated with this IA_TA. IA_TA-options Options associated with this IA_TA.
The IA_TA-Options field encapsulates those options that are specific The IA_TA-Options field encapsulates those options that are specific
to this IA_TA. For example, all of the IA Address Options carrying to this IA_TA. For example, all of the IA Address Options carrying
the addresses associated with this IA_TA are in the IA_TA-options the addresses associated with this IA_TA are in the IA_TA-options
field. field.
Each IA_TA carries one "set" of temporary addresses; that is, at most Each IA_TA carries one "set" of temporary addresses; that is, at most
one address from each prefix assigned to the link to which the client one address from each prefix assigned to the link to which the client
is attached. is attached.
An IA_TA option may only appear in the options area of a DHCP An IA_TA option may only appear in the options area of a DHCP
message. A DHCP message may contain multiple IA_TA options. message. A DHCP message may contain multiple IA_TA options.
The status of any operations involving this IA_TA is indicated in a The status of any operations involving this IA_TA is indicated in a
Status Code option in the IA_TA-options field. Status Code option in the IA_TA-options field.
Note that an IA has no explicit "lifetime" or "lease length" of its 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 own. When the valid lifetimes of all of the addresses in an IA_TA
have expired, the IA can be considered as having expired. have expired, the IA can be considered as having expired.
An IA_TA option does not include values for T1 and T2. A client An IA_TA option does not include values for T1 and T2. A client MAY
MAY request that the lifetimes on temporary addresses be extended request that the lifetimes on temporary addresses be extended by
by including the addresses in a IA_TA option sent in a Renew or including the addresses in a IA_TA option sent in a Renew or Rebind
Rebind message to a server. For example, a client would request message to a server. For example, a client would request an
an extension on the lifetime of a temporary address to allow an extension on the lifetime of a temporary address to allow an
application to continue to use an established TCP connection. application to continue to use an established TCP connection.
The client obtains new temporary addresses by sending an IA_TA option The client obtains new temporary addresses by sending an IA_TA option
with a new IAID to a server. Requesting new temporary addresses from with a new IAID to a server. Requesting new temporary addresses from
the server is the equivalent of generating new temporary addresses the server is the equivalent of generating new temporary addresses as
as described in RFC 3041. The server will generate new temporary described in RFC 3041. The server will generate new temporary
addresses and return them to the client. The client should request addresses and return them to the client. The client should request
new temporary addresses before the lifetimes on the previously new temporary addresses before the lifetimes on the previously
assigned addresses expire. assigned addresses expire.
A server MUST return the same set of temporary address for the same A server MUST return the same set of temporary address for the same
IA_TA (as identified by the IAID) as long as those addresses are 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 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 expired, the IAID may be reused to identify a new IA_TA with new
temporary addresses. temporary addresses.
This option MAY appear in a Confirm message if the lifetimes on the This option MAY appear in a Confirm message if the lifetimes on the
temporary addresses in the associated IA have not expired. temporary addresses in the associated IA have not expired.
22.6. IA Address Option 22.6. IA Address Option
The IA Address option is used to specify IPv6 addresses associated The IA Address option is used to specify IPv6 addresses associated
with an IA. The IA Address option must be encapsulated in the with an IA_NA or an IA_TA. The IA Address option must be
Options field of an Identity Association option. The Options field encapsulated in the Options field of an IA_NA or IA_TA option. The
encapsulates those options that are specific to this address. Options field encapsulates those options that are specific to this
address.
The format of the IA Address option is: The format of the IA Address option is:
0 1 2 3 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 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 | | OPTION_IAADDR | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 address | | IPv6 address |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| preferred-lifetime | | preferred-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| valid-lifetime | | valid-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. IAaddr-options . . IAaddr-options .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_IAADDR (5) option-code OPTION_IAADDR (5).
option-len 24 + length of IAaddr-options field option-len 24 + length of IAaddr-options field.
IPv6 address An IPv6 address IPv6 address An IPv6 address.
preferred-lifetime The preferred lifetime for the IPv6 address in preferred-lifetime The preferred lifetime for the IPv6 address in
the option, expressed in units of seconds the option, expressed in units of seconds.
valid-lifetime The valid lifetime for the IPv6 address in the valid-lifetime The valid lifetime for the IPv6 address in the
option, expressed in units of seconds option, expressed in units of seconds.
IAaddr-options Options associated with this address IAaddr-options Options associated with this address.
In a message sent by a client to a server, values in the preferred In a message sent by a client to a server, values in the preferred
and valid lifetime fields indicate the client's preference for those and valid lifetime fields indicate the client's preference for those
parameters. The client may send 0 if it has no preference for the parameters. The client may send 0 if it has no preference for the
preferred and valid lifetimes. In a message sent by a server to a preferred and valid lifetimes. In a message sent by a server to a
client, the client MUST use the values in the preferred and valid client, the client MUST use the values in the preferred and valid
lifetime fields for the preferred and valid lifetimes. The values in lifetime fields for the preferred and valid lifetimes. The values in
the preferred and valid lifetimes are the number of seconds remaining the preferred and valid lifetimes are the number of seconds remaining
in each lifetime. in each lifetime.
An IA Address option may appear only in an IA option or an IA_TA A client discards any addresses for which the preferred lifetime is
option. More than one IA Address Option can appear in an IA option greater than the valid lifetime. A server ignores the lifetimes set
or an IA_TA option. by the client if the preferred lifetime is greater than the valid
lifetime and ignores the values for T1 and T2 set by the client if
those values are greater than the preferred lifetime.
Care should be taken in setting the valid lifetime of an address to
0xffffffff ("infinity"), which amounts to a permanent assignment of
an address to a client.
An IA Address option may appear only in an IA_NA option or an IA_TA
option. 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 The status of any operations involving this IA Address is indicated
in a Status Code option in the IAaddr-options field. in a Status Code option in the IAaddr-options field.
22.7. Option Request Option 22.7. Option Request Option
The Option Request option is used to identify a list of options in The Option Request option is used to identify a list of options in a
a message between a client and a server. The format of the Option message between a client and a server. The format of the Option
Request option is: Request option is:
0 1 2 3 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 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 | | OPTION_ORO | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| requested-option-code-1 | requested-option-code-2 | | requested-option-code-1 | requested-option-code-2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... | | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_ORO (6) option-code OPTION_ORO (6).
option-len 2 * number of requested options option-len 2 * number of requested options.
requested-option-code-n The option code for an option requested by requested-option-code-n The option code for an option requested by
the client. the client.
A client MAY include an Option Request option in a Solicit, Request, A client MAY include an Option Request option in a Solicit, Request,
Renew, Rebind, Confirm or Information-request message to inform Renew, Rebind, Confirm or Information-request message to inform the
the server about options the client wants the server to send to server about options the client wants the server to send to the
the client. A server MAY include an Option Request option in a client. A server MAY include an Option Request option in a
Reconfigure option to indicate which options the client should Reconfigure option to indicate which options the client should
request from the server. request from the server.
22.8. Preference Option 22.8. Preference Option
The Preference option is sent by a server to a client to affect the The Preference option is sent by a server to a client to affect the
selection of a server by the client. selection of a server by the client.
The format of the Preference option is: The format of the Preference option is:
0 1 2 3 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 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 | | OPTION_PREFERENCE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| pref-value | | pref-value |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
option-code OPTION_PREFERENCE (7) option-code OPTION_PREFERENCE (7).
option-len 1 option-len 1.
pref-value The preference value for the server in this message. pref-value The preference value for the server in this message.
A server MAY include a Preference option in an Advertise message to A server MAY include a Preference option in an Advertise message to
control the selection of a server by the client. See section 17.1.3 control the selection of a server by the client. See section 17.1.3
for the use of the Preference option by the client and the for the use of the Preference option by the client and the
interpretation of Preference option data value. interpretation of Preference option data value.
22.9. Elapsed Time Option 22.9. Elapsed Time Option
0 1 2 3 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 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 | | OPTION_ELAPSED_TIME | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| elapsed-time | | elapsed-time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_ELAPSED_TIME (8) option-code OPTION_ELAPSED_TIME (8).
option-len 2. option-len 2.
elapsed-time The amount of time since the client began its elapsed-time The amount of time since the client began its
current DHCP transaction. This time is expressed in current DHCP transaction. This time is expressed in
hundredths of a second (10^-2 seconds). hundredths of a second (10^-2 seconds).
A client MUST include an Elapsed Time option in messages to indicate A client MUST include an Elapsed Time option in messages to indicate
how long the client has been trying to complete a DHCP message how long the client has been trying to complete a DHCP message
exchange. The elapsed time is measured from the time at which the exchange. The elapsed time is measured from the time at which the
client sent the first message in the message exchange, and 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 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 exchange. Servers and Relay Agents use the data value in this option
as input to policy controlling how a server responds to a client as input to policy controlling how a server responds to a client
message. For example, the elapsed time option allows a secondary message. For example, the elapsed time option allows a secondary
DHCP server to respond to a request when a primary server hasn't DHCP server to respond to a request when a primary server has not
answered in a reasonable time. answered in a reasonable time. The elapsed time value is an
unsigned, 16 bit 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.
22.10. Relay Message Option 22.10. Relay Message Option
The Relay Message option carries a DHCP message in a Relay-forward or The Relay Message option carries a DHCP message in a Relay-forward or
Relay-reply message. Relay-reply message.
The format of the Relay Message option is: The format of the Relay Message option is:
0 1 2 3 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 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 | | OPTION_RELAY_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. DHCP-relay-message . . DHCP-relay-message .
. . . .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_RELAY_MSG (9) option-code OPTION_RELAY_MSG (9)
option-len Length of DHCP-relay-message option-len Length of DHCP-relay-message
DHCP-relay-message In a Relay-forward message, the received DHCP-relay-message In a Relay-forward message, the received
message, relayed verbatim to the next relay agent message, relayed verbatim to the next relay agent
or server; in a Relay-reply message, the message to or server; in a Relay-reply message, the message to
be copied and relayed to the relay agent or client be copied and relayed to the relay agent or client
whose address is in the peer-address field of the whose address is in the peer-address field of the
Relay-reply message Relay-reply message
22.11. Authentication Option 22.11. Authentication Option
The Authentication option carries authentication information to The Authentication option carries authentication information to
authenticate the identity and contents of DHCP messages. The use of authenticate the identity and contents of DHCP messages. The use of
the Authentication option is described in section 21. The format of the Authentication option is described in section 21. The format of
the Authentication option is: the Authentication option is:
0 1 2 3 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 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 | | OPTION_AUTH | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| protocol | algorithm | RDM | | | protocol | algorithm | RDM | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
| replay detection (64 bits) +-+-+-+-+-+-+-+-+ | replay detection (64 bits) +-+-+-+-+-+-+-+-+
| | auth-info | | | auth-info |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. authentication information . . authentication information .
. (variable length) . . (variable length) .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_AUTH (11) option-code OPTION_AUTH (11)
option-len 15 + length of authentication option-len 11 + length of authentication
information field information field
protocol The authentication protocol used in protocol The authentication protocol used in
this authentication option this authentication option
algorithm The algorithm used in the algorithm The algorithm used in the
authentication protocol authentication protocol
RDM The replay detection method used in RDM The replay detection method used in
this authentication option this authentication option
skipping to change at page 69, line 32 skipping to change at page 82, line 11
as specified by the protocol and as specified by the protocol and
algorithm used in this authentication algorithm used in this authentication
option option
22.12. Server Unicast Option 22.12. Server Unicast Option
The server sends this option to a client to indicate to the client 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 that it is allowed to unicast messages to the server. The format of
the Server Unicast option is: the Server Unicast option is:
0 1 2 3 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 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 | | OPTION_UNICAST | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| server-address | | server-address |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_UNICAST (12) option-code OPTION_UNICAST (12).
option-len 16 option-len 16.
server-address The IP address to which the client should send server-address The IP address to which the client should send
messages delivered using unicast messages delivered using unicast.
The server specifies the IPv6 address to which the client is to send The server specifies the IPv6 address to which the client is to send
unicast messages in the server-address field. When a client receives unicast messages in the server-address field. When a client receives
this option, where permissible and appropriate, the client sends this option, where permissible and appropriate, the client sends
messages directly to the server using the IPv6 address specified in messages directly to the server using the IPv6 address specified in
the server-address field of the option. the server-address field of the option.
When the server sends a Unicast option to the client, some messages When the server sends a Unicast option to the client, some messages
from the client will not be relayed by Relay Agents, and will not from the client will not be relayed by Relay Agents, and will not
include Relay Agent options from the Relay Agents. Therefore, a include Relay Agent options from the Relay Agents. Therefore, a
server should only send a Unicast option to a client when Relay server should only send a Unicast option to a client when Relay
Agents are not sending Relay Agent options. A DHCP server rejects Agents are not sending Relay Agent options. A DHCP server rejects
any messages sent inappropriately using unicast to ensure that any messages sent inappropriately using unicast to ensure that
messages are relayed by Relay Agents when Relay Agent optinos are in messages are relayed by Relay Agents when Relay Agent options are in
use. use.
Details about when the client may send messages to the server using Details about when the client may send messages to the server using
unicast are in section 18. unicast are in section 18.
22.13. Status Code Option 22.13. Status Code Option
This option returns a status indication related to the DHCP message This option returns a status indication related to the DHCP message
or option in which it appears. The format of the Status Code option or option in which it appears. The format of the Status Code option
is: is:
0 1 2 3 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 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 | | OPTION_STATUS_CODE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| status-code | | | status-code | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. . . .
. status-message . . status-message .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_STATUS_CODE (13) option-code OPTION_STATUS_CODE (13).
option-len 2 + length of status-message option-len 2 + length of status-message.
status-code The numeric code for the status encoded in status-code The numeric code for the status encoded in
this option. The status codes are defined in this option. The status codes are defined in
section 24.4. section 24.4.
status-message A UTF-8 encoded text string suitable for status-message A UTF-8 encoded text string suitable for
display to an end user, which MUST NOT be display to an end user, which MUST NOT be
null-terminated. null-terminated.
A Status Code option may appear in the options field of a DHCP 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 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 Code option does not appear in a message in which the option could
appear, the status of the message is assumed to be Success. appear, the status of the message is assumed to be Success.
22.14. Rapid Commit Option 22.14. Rapid Commit Option
The Rapid Commit option is used to signal the use of the two message The Rapid Commit option is used to signal the use of the two message
exchange for address assignment. The format of the Rapid Commit exchange for address assignment. The format of the Rapid Commit
option is: option is:
0 1 2 3 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 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 | 0 | | OPTION_RAPID_COMMIT | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_RAPID_COMMIT (14) option-code OPTION_RAPID_COMMIT (14).
option-len 0 option-len 0.
A client MAY include this option in a Solicit message if the client A client MAY include this option in a Solicit message if the client
is prepared to perform the Solicit-Reply message exchange described is prepared to perform the Solicit-Reply message exchange described
in section 17.1.1. in section 17.1.1.
A server MUST include this option in a Reply message sent in response A server MUST include this option in a Reply message sent in response
to a Solicit message when completing the Solicit-Reply message to a Solicit message when completing the Solicit-Reply message
exchange. exchange.
DISCUSSION: DISCUSSION:
Each server that responds with a Reply to a Solicit that Each server that responds with a Reply to a Solicit that includes
includes a Rapid Commit option will commit the assigned a Rapid Commit option will commit the assigned addresses in the
addresses in the Reply message to the client, and will not Reply message to the client, and will not receive any confirmation
receive any confirmation that the client has received the that the client has received the Reply message. Therefore, if
Reply message. Therefore, if more than one server responds more than one server responds to a Solicit that includes a Rapid
to a Solicit that includes a Rapid Commit option, some Commit option, some servers will commit addresses that are not
servers will commit addresses that are not actually used by actually used by the client.
the client.
The problem of unused addresses can be minimized, for The problem of unused addresses can be minimized, for example, by
example, by designing the DHCP service so that only one designing the DHCP service so that only one server responds to the
server responds to the Solicit or by using relatively short Solicit or by using relatively short lifetimes for assigned
lifetimes for assigned addresses. addresses.
22.15. User Class Option 22.15. User Class Option
The User Class option is used by a client to identify the type or The User Class option is used by a client to identify the type or
category of user or applications it represents. category of user or applications it represents.
The format of the User Class option is: The format of the User Class option is:
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 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 | | OPTION_USER_CLASS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. user-class-data . . user-class-data .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_USER_CLASS (15) option-code OPTION_USER_CLASS (15).
option-len Length of user class data field option-len Length of user class data field.
user-class-data The user classes carried by the client. user-class-data The user classes carried by the client.
The information contained in the data area of this option is The information contained in the data area of this option is
contained in one or more opaque fields that represent the user contained in one or more opaque fields that represent the user class
class or classes of which the client is a member. A server selects or classes of which the client is a member. A server selects
configuration information for the client based on the classes configuration information for the client based on the classes
identified in this option. For example, the User Class option can be identified in this option. For example, the User Class option can be
used to configure all clients of people in the accounting department used to configure all clients of people in the accounting department
with a different printer than clients of people in the marketing with a different printer than clients of people in the marketing
department. The user class information carried in this option MUST department. The user class information carried in this option MUST
be configurable on the client. be configurable on the client.
The data area of the user class option MUST contain one or more The data area of the user class option MUST contain one or more
instances of user class data. Each instance of the user class data instances of user class data. Each instance of the user class data
is formatted as follows: is formatted as follows:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
| user-class-len | opaque-data | | user-class-len | opaque-data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
The user-class-len is two octets long and specifies the length of the The user-class-len is two octets long and specifies the length of the
opaque user class data in network byte order. opaque user class data in network byte order.
A server interprets the classes identified in this option according A server interprets the classes identified in this option according
to its configuration to select the appropriate configuration to its configuration to select the appropriate configuration
information for the client. A server may use only those user information for the client. A server may use only those user classes
classes that it is configured to interpret in selecting configuration that it is configured to interpret in selecting configuration
information for a client and ignore any other user classes. In information for a client and ignore any other user classes. In
response to a message containing a User Class option, a server response to a message containing a User Class option, a server
includes a User Class option containing those classes that were includes a User Class option containing those classes that were
successfully interpreted by the server, so that the client can be successfully interpreted by the server, so that the client can be
informed of the classes interpreted by the server. informed of the classes interpreted by the server.
22.16. Vendor Class Option 22.16. Vendor Class Option
This option is used by a client to identify the vendor that This option is used by a client to identify the vendor that
manufactured the hardware on which the client is running. The manufactured the hardware on which the client is running. The
information contained in the data area of this option is contained information contained in the data area of this option is contained in
in one or more opaque fields that identify details of the hardware one or more opaque fields that identify details of the hardware
configuration. The format of the Vendor Class option is: configuration. The format of the Vendor Class option is:
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 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 | | OPTION_VENDOR_CLASS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number | | enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. vendor-class-data . . vendor-class-data .
. . . . . . . . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_VENDOR_CLASS (16) option-code OPTION_VENDOR_CLASS (16).
option-len 4 + length of vendor class data field option-len 4 + length of vendor class data field.
enterprise-number The vendor's registered Enterprise Number as enterprise-number The vendor's registered Enterprise Number as
registered with IANA [10]. registered with IANA [6].
vendor-class-data The hardware configuration of the host on vendor-class-data The hardware configuration of the host on
which the client is running. which the client is running.
The vendor-class-data is composed of a series of separate items, The vendor-class-data is composed of a series of separate items, each
each of which describes some characteristic of the client's hardware of which describes some characteristic of the client's hardware
configuration. Examples of vendor-class-data instances might include configuration. Examples of vendor-class-data instances might include
the version of the operating system the client is running or the the version of the operating system the client is running or the
amount of memory installed on the client. amount of memory installed on the client.
Each instance of the vendor-class-data is formatted as follows: Each instance of the vendor-class-data is formatted as follows:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
| vendor-class-len | opaque-data | | vendor-class-len | opaque-data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
The vendor-class-len is two octets long and specifies the length of The vendor-class-len is two octets long and specifies the length of
the opaque vendor class data in network byte order. the opaque vendor class data in network byte order.
22.17. Vendor-specific Information Option 22.17. Vendor-specific Information Option
This option is used by clients and servers to exchange This option is used by clients and servers to exchange
vendor-specific information. vendor-specific information.
The format of the Vendor-specific Information option is: The format of the Vendor-specific Information option is:
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 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 | | OPTION_VENDOR_OPTS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number | | enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. option-data . . option-data .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_VENDOR_OPTS (17) option-code OPTION_VENDOR_OPTS (17)
option-len 4 + length of option-data field option-len 4 + length of option-data field
enterprise-number The vendor's registered Enterprise Number as enterprise-number The vendor's registered Enterprise Number as
registered with IANA [10]. registered with IANA [6].
option-data An opaque object of option-len octets, option-data An opaque object of option-len octets,
interpreted by vendor-specific code on the interpreted by vendor-specific code on the
clients and servers clients and servers
The definition of the information carried in this option is vendor The definition of the information carried in this option is vendor
specific. The vendor is indicated in the enterprise-number field. specific. The vendor is indicated in the enterprise-number field.
Use of vendor-specific information allows enhanced operation, Use of vendor-specific information allows enhanced operation,
utilizing additional features in a vendor's DHCP implementation. utilizing additional features in a vendor's DHCP implementation. A
A DHCP client that does not receive requested vendor-specific DHCP client that does not receive requested vendor-specific
information will still configure the host device's IPv6 stack to be information will still configure the host device's IPv6 stack to be
functional. functional.
The encapsulated vendor-specific options field MUST be encoded as a The encapsulated vendor-specific options field MUST be encoded as a
sequence of code/length/value fields of identical format to the DHCP sequence of code/length/value fields of identical format to the DHCP
options field. The option codes are defined by the vendor identified options field. The option codes are defined by the vendor identified
in the enterprise-number field and are not managed by IANA. Each of in the enterprise-number field and are not managed by IANA. Each of
the encapsulated options is formatted as follows: the encapsulated options is formatted as follows:
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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| opt-code | option-len | | opt-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. option-data . . option-data .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
opt-code The code for the encapsulated option.
opt-code The code for the encapsulated option
option-len An unsigned integer giving the length of the option-len An unsigned integer giving the length of the
option-data field in this encapsulated option option-data field in this encapsulated option
in octets. in octets.
option-data The data area for the encapsulated option option-data The data area for the encapsulated option.
Multiple instances of the Vendor-specific Information option may Multiple instances of the Vendor-specific Information option may
appear in a DHCP message. Each instance of the option is interpreted appear in a DHCP message. Each instance of the option is interpreted
according to the option codes defined by the vendor identified by the according to the option codes defined by the vendor identified by the
Enterprise Number in that option. Enterprise Number in that option.
22.18. Interface-Id Option 22.18. Interface-Id Option
The relay agent MAY send the Interface-id option to identify the The relay agent MAY send the Interface-id option to identify the
interface on which the client message was received. If a relay agent interface on which the client message was received. If a relay agent
receives a Relay-reply message with an Interface-id option, the receives a Relay-reply message with an Interface-id option, the relay
relay agent relays the message to the client through the interface agent relays the message to the client through the interface
identified by the option. identified by the option.
The format of the Interface ID option is: The format of the Interface ID option is:
0 1 2 3 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 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 | | OPTION_INTERFACE_ID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
. interface-id . . interface-id .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_INTERFACE_ID (18) option-code OPTION_INTERFACE_ID (18).
option-len Length of interface-id field option-len Length of interface-id field.
interface-id An opaque value of arbitrary length generated interface-id An opaque value of arbitrary length generated
by the relay agent to identify one of the by the relay agent to identify one of the
relay agent's interfaces relay agent's interfaces.
The server MUST copy the Interface-Id option from the Relay-Forward The server MUST copy the Interface-Id option from the Relay-Forward
message into the Relay-Reply message the server sends to the relay message into the Relay-Reply message the server sends to the relay
agent in response to the Relay-Forward message. This option MUST NOT agent in response to the Relay-Forward message. This option MUST NOT
appear in any message except a Relay-Forward or Relay-Reply message. appear in any message except a Relay-Forward or Relay-Reply message.
Servers MAY use the Interface-ID for parameter assignment policies. Servers MAY use the Interface-ID for parameter assignment policies.
The Interface-ID SHOULD be considered an opaque value, with policies The Interface-ID SHOULD be considered an opaque value, with policies
based on exact match only; that is, the Interface-ID SHOULD NOT be based on exact match only; that is, the Interface-ID SHOULD NOT be
internally parsed by the server. The Interface-ID value for an internally parsed by the server. The Interface-ID value for an
skipping to change at page 76, line 14 skipping to change at page 88, line 45
the relay agent is restarted; if the Interface-ID changes, a server the relay agent is restarted; if the Interface-ID changes, a server
will not be able to use it reliably in parameter assignment policies. will not be able to use it reliably in parameter assignment policies.
22.19. Reconfigure Message Option 22.19. Reconfigure Message Option
A server includes a Reconfigure Message option in a Reconfigure A server includes a Reconfigure Message option in a Reconfigure
message to indicate to the client whether the client responds with a message to indicate to the client whether the client responds with a
Renew message or an Information-request message. The format of this Renew message or an Information-request message. The format of this
option is: option is:
0 1 2 3 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 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 | | OPTION_RECONF_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-type | | msg-type |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
option-code OPTION_RECONF_MSG (19).
option-code OPTION_RECONF_MSG (19)
option-len 1 option-len 1.
msg-type 5 for Renew message, 11 for msg-type 5 for Renew message, 11 for
Information-request message Information-request message.
The Reconfigure Message option can only appear in a Reconfigure The Reconfigure Message option can only appear in a Reconfigure
message. message.
22.20. Reconfigure Accept Option 22.20. Reconfigure Accept Option
A client uses the Reconfigure Accept option to announce to the server A client uses the Reconfigure Accept option to announce to the server
whether the client is willing to accept Reconfigure messages, and a whether the client is willing to accept Reconfigure messages, and a
server uses this option to tell the client whether or not to accept server uses this option to tell the client whether or not to accept
Reconfigure messages. The default behavior, in the absence of this Reconfigure messages. The default behavior, in the absence of this
option, means unwillingness to accept Reconfigure messages, or option, means unwillingness to accept Reconfigure messages, or
instruction not to accept Reconfigure messages, for the client and instruction not to accept Reconfigure messages, for the client and
server messages, respectively. The following figure gives the format server messages, respectively. The following figure gives the format
of the Reconfigure Accept option: of the Reconfigure Accept option:
0 1 2 3 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 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 | 0 | | OPTION_RECONF_ACCEPT | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_RECONF_ACCEPT (20) option-code OPTION_RECONF_ACCEPT (20).
option-len 0
option-len 0.
23. Security Considerations 23. Security Considerations
The threat to DHCP is inherently an insider threat (assuming a The threat to DHCP is inherently an insider threat (assuming a
properly configured network where DHCPv6 ports are blocked on the properly configured network where DHCPv6 ports are blocked on the
perimeter gateways of the enterprise). Regardless of the gateway perimeter gateways of the enterprise). Regardless of the gateway
configuration, however, the potential attacks by insiders and configuration, however, the potential attacks by insiders and
outsiders are the same. outsiders are the same.
Use of manually configured preshared 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 mis-configuration or exhaustion
of other resources such as assignable addresses.
One attack specific to a DHCP client is the establishment of a One attack specific to a DHCP client is the establishment of a
malicious server with the intent of providing incorrect configuration malicious server with the intent of providing incorrect configuration
information to the client. The motivation for doing so may be information to the client. The motivation for doing so may be to
to mount a "man in the middle" attack that causes the client to mount a "man in the middle" attack that causes the client to
communicate with a malicious server instead of a valid server for communicate with a malicious server instead of a valid server for
some service such as DNS or NTP. The malicious server may also mount some service such as DNS or NTP. The malicious server may also mount
a denial of service attack through misconfiguration of the client a denial of service attack through misconfiguration of the client
that causes all network communication from the client to fail. that causes all network communication from the client to fail.
There is another threat to DHCP clients from mistakenly or There is another threat to DHCP clients from mistakenly or
accidentally configured DHCP servers that answer DHCP client requests accidentally configured DHCP servers that answer DHCP client requests
with unintentionally incorrect configuration parameters. with unintentionally incorrect configuration parameters.
A DHCP client may also be subject to attack through the receipt A DHCP client may also be subject to attack through the receipt of a
of a Reconfigure message from a malicious server that causes the Reconfigure message from a malicious server that causes the client to
client to obtain incorrect configuration information from that obtain incorrect configuration information from that server. Note
server. Note that although a client sends its response (Renew or that although a client sends its response (Renew or
Information-request message) through a relay agent and, therefore, Information-request message) through a relay agent and, therefore,
that response will only be received by servers to which DHCP messages that response will only be received by servers to which DHCP messages
are relayed, a malicious server could send a Reconfigure message to are relayed, a malicious server could send a Reconfigure message to a
a client, followed (after an appropriate delay) by a Reply message client, followed (after an appropriate delay) by a Reply message that
that would be accepted by the client. Thus, a malicious server that would be accepted by the client. Thus, a malicious server that is
is not on the network path between the client and the server may not on the network path between the client and the server may still
still be able to mount a Reconfigure attack on a client. The use of be able to mount a Reconfigure attack on a client. The use of
transaction IDs that are cryptographically sound and cannot easily be transaction IDs that are cryptographically sound and cannot easily be
predicted will also reduce the probability that such an attack will predicted will also reduce the probability that such an attack will
be successful. be successful.
The threat specific to a DHCP server is an invalid client The threat specific to a DHCP server is an invalid client
masquerading as a valid client. The motivation for this may be masquerading as a valid client. The motivation for this may be for
for theft of service, or to circumvent auditing for any number of theft of service, or to circumvent auditing for any number of
nefarious purposes. nefarious purposes.
The threat common to both the client and the server is the resource The threat common to both the client and the server is the resource
"denial of service" (DoS) attack. These attacks typically involve "denial of service" (DoS) attack. These attacks typically involve
the exhaustion of available addresses, or the exhaustion of CPU the exhaustion of available addresses, or the exhaustion of CPU or
or network bandwidth, and are present anytime there is a shared network bandwidth, and are present anytime there is a shared
resource. resource.
In the case where relay agents add additional options to Relay In the case where relay agents add additional options to Relay
Forward messages, the messages exchanged between relay agents and Forward messages, the messages exchanged between relay agents and
servers may be used to mount a "man in the middle" or denial of servers may be used to mount a "man in the middle" or denial of
service attack. service attack.
This threat model does not consider the privacy of the contents This threat model does not consider the privacy of the contents of
of DHCP messages to be important. DHCP is not used to exchange DHCP messages to be important. DHCP is not used to exchange
authentication or configuration information that must be kept secret authentication or configuration information that must be kept secret
from other networks nodes. from other networks nodes.
DHCP authentication provides for authentication of the identity of DHCP authentication provides for authentication of the identity of
DHCP clients and servers, and for the integrity of messages delivered DHCP clients and servers, and for the integrity of messages delivered
between DHCP clients and servers. DHCP authentication does not between DHCP clients and servers. DHCP authentication does not
provide any privacy for the contents of DHCP messages. provide any privacy for the contents of DHCP messages.
The Delayed Authentication protocol described in section 21.4 uses The Delayed Authentication protocol described in section 21.4 uses a
a secret key that is shared between a client and a server. The secret key that is shared between a client and a server. The use of
use of a "DHCP realm" in the shared key allows identification of a "DHCP realm" in the shared key allows identification of
administrative domains so that a client can select the appropriate administrative domains so that a client can select the appropriate
key or keys when roaming between administrative domains. However, key or keys when roaming between administrative domains. However,
the Delayed Authentication protocol does not define any mechanism the Delayed Authentication protocol does not define any mechanism for
for sharing of keys, so a client may require separate keys for each sharing of keys, so a client may require separate keys for each
administrative domain it encounters. The use of shared keys may not administrative domain it encounters. The use of shared keys may not
scale well and does not provide for repudiation of compromised keys. scale well and does not provide for repudiation of compromised keys.
This protocol is focused on solving the intradomain problem where the This protocol is focused on solving the intradomain problem where the
out-of-band exchange of a shared key is feasible. out-of-band exchange of a shared key is feasible.
Because of the opportunity for attack through the Reconfigure Because of the opportunity for attack through the Reconfigure
message, a DHCP client MUST discard any Reconfigure message that message, a DHCP client MUST discard any Reconfigure message that does
does not include authentication or that does not pass the validation not include authentication or that does not pass the validation
process for the authentication protocol. process for the authentication protocol.
The Reconfigure Key protocol described in section 21.5 provides The Reconfigure Key protocol described in section 21.5 provides
protection against use of a Reconfigure message by a malicious DHCP protection against the use of a Reconfigure message by a malicious
server to mount a denial of service or man-in-the-middle attack on DHCP server to mount a denial of service or man-in-the-middle attack
a client. This protocol can be compromised by an attacker that can on a client. This protocol can be compromised by an attacker that
intercept the initial message in which the DHCP server sends the key can intercept the initial message in which the DHCP server sends the
to the client. key to the client.
Communication between a server and a relay agent and communication Communication between a server and a relay agent, and communication
between relay agents can be secured through the use of IPSec, as between relay agents, can be secured through the use of IPSec, as
described in section 21.1. The use of manual configuration and described in section 21.1. The use of manual configuration and
installation of static keys are acceptable in this instance because installation of static keys are acceptable in this instance because
relay agents and the server will belong to the same administrative relay agents and the server will belong to the same administrative
domain and the relay agents will require other specific configuration domain and the relay agents will require other specific configuration
(for example, configuration of the DHCP server address) as well as (for example, configuration of the DHCP server address) as well as
the IPSec configuration. the IPSec configuration.
24. IANA Considerations 24. IANA Considerations
This document defines several new name spaces associated with DHCPv6 This document defines several new name spaces associated with DHCPv6
and DHCPv6 options: and DHCPv6 options:
- Message types - Message types
- Status codes
- DUID - Status codes
- Option codes - DUID
- Option codes
IANA is requested to manage a registry of values for each of these IANA has established a registry of values for each of these name
name spaces, which are described in the remainder of this section. spaces, which are described in the remainder of this section. These
These name spaces are all to be managed separately from the name name spaces will be managed by the IANA and all will be managed
spaces defined for DHCPv4. separately from the name spaces defined for DHCPv4.
New multicast addresses, message types, status codes and DUID types New multicast addresses, message types, status codes, and DUID types
are assigned via Standards Action [15]. are assigned via Standards Action [11].
New DHCP option codes are tentatively assigned after the New DHCP option codes are tentatively assigned after the
specification for the associated option, published as an Internet specification for the associated option, published as an Internet
Draft, has received expert review by a designated expert [15]. The Draft, has received expert review by a designated expert [11]. The
final assignment of DHCP option codes is through Standards Action, as final assignment of DHCP option codes is through Standards Action, as
defined in RFC2434 [15]. defined in RFC 2434 [11].
This document also references three name spaces in section 21 that This document also references three name spaces in section 21 that
are associated with the Authentication Option (section 22.11). These are associated with the Authentication Option (section 22.11). These
name spaces are defined by the authentication mechanism for DHCPv4 in name spaces are defined by the authentication mechanism for DHCPv4 in
RFC3118 [7]. RFC 3118 [4].
The authentication name spaces currently registered by IANA will The authentication name spaces currently registered by IANA will
apply to both DHCPv6 and DHCPv4. In the future, specifications that apply to both DHCPv6 and DHCPv4. In the future, specifications that
define new Protocol, Algorithm and RDM mechanisms will explicitly define new Protocol, Algorithm and RDM mechanisms will explicitly
define whether the new mechanisms are used with DHCPv4, DHCPv6 or define whether the new mechanisms are used with DHCPv4, DHCPv6 or
both. both.
24.1. Multicast Addresses 24.1. Multicast Addresses
Section 5.1 defines the following multicast addresses, which have Section 5.1 defines the following multicast addresses, which have
been assigned by IANA for use by DHCPv6: been assigned by IANA for use by DHCPv6:
All_DHCP_Relay_Agents_and_Servers address: FF02::1:2 All_DHCP_Relay_Agents_and_Servers address: FF02::1:2
All_DHCP_Servers address: FF05::1:3 All_DHCP_Servers address: FF05::1:3
24.2. DHCP Message Types 24.2. DHCP Message Types
IANA is requested to record the following message types (defined IANA has recorded the following message types (defined in section
in section 5.3). IANA is requested to maintain a registry of DHCP 5.3). IANA will maintain the registry of DHCP message types.
message types.
SOLICIT 1 SOLICIT 1
ADVERTISE 2 ADVERTISE 2
REQUEST 3 REQUEST 3
CONFIRM 4 CONFIRM 4
RENEW 5 RENEW 5
REBIND 6 REBIND 6
REPLY 7 REPLY 7
RELEASE 8 RELEASE 8
skipping to change at page 80, line 26 skipping to change at page 94, line 7
RECONFIGURE 10 RECONFIGURE 10
INFORMATION-REQUEST 11 INFORMATION-REQUEST 11
RELAY-FORW 12 RELAY-FORW 12
RELAY-REPL 13 RELAY-REPL 13
24.3. DHCP Options 24.3. DHCP Options
IANA is requested to record the following option-codes (as defined in IANA has recorded the following option-codes (as defined in section
section 22). IANA is requested to maintain a registry of DHCP option 22). IANA will maintain the registry of DHCP option codes.
codes.
OPTION_CLIENTID 1 OPTION_CLIENTID 1
OPTION_SERVERID 2 OPTION_SERVERID 2
OPTION_IA_NA 3 OPTION_IA_NA 3
OPTION_IA_TA 4 OPTION_IA_TA 4
OPTION_IAADDR 5 OPTION_IAADDR 5
skipping to change at page 81, line 18 skipping to change at page 95, line 7
OPTION_VENDOR_OPTS 17 OPTION_VENDOR_OPTS 17
OPTION_INTERFACE_ID 18 OPTION_INTERFACE_ID 18
OPTION_RECONF_MSG 19 OPTION_RECONF_MSG 19
OPTION_RECONF_ACCEPT 20 OPTION_RECONF_ACCEPT 20
24.4. Status Codes 24.4. Status Codes
IANA is requested to record the status codes defined in the following IANA has recorded the status codes defined in the following table.
table. IANA is requested to manage the definition of additional IANA will manage the definition of additional status codes in the
status codes in the future. future.
Name Code Description Name Code Description
---------- ---- ----------- ---------- ---- -----------
Success 0 Success Success 0 Success.
UnspecFail 1 Failure, reason unspecified; this UnspecFail 1 Failure, reason unspecified; this
status code is sent by either a client status code is sent by either a client
or a server to indicate a failure or a server to indicate a failure
not explicitly specified in this not explicitly specified in this
document document.
NoAddrsAvail 2 Server has no addresses available to assign to NoAddrsAvail 2 Server has no addresses available to assign to
the IA(s) the IA(s).
NoBinding 3 Client record (binding) unavailable NoBinding 3 Client record (binding) unavailable.
NotOnLink 4 The prefix for the address is not appropriate to NotOnLink 4 The prefix for the address is not appropriate for
the link to which the client is attached the link to which the client is attached.
UseMulticast 5 Sent by a server to a client to force the UseMulticast 5 Sent by a server to a client to force the
client to send messages to the server client to send messages to the server.
using the All_DHCP_Relay_Agents_and_Servers using the All_DHCP_Relay_Agents_and_Servers
address address.
24.5. DUID 24.5. DUID
IANA is requested to record the following DUID types (as defined in IANA has recorded the following DUID types (as defined in section
section 9.1). IANA is requested to manage definition of additional 9.1). IANA will manage the definition of additional DUID types in
DUID types in the future. the future.
DUID-LLT 1 DUID-LLT 1
DUID-EN 2 DUID-EN 2
DUID-LL 3 DUID-LL 3
25. Acknowledgments 25. Acknowledgments
Thanks to the DHC Working Group and the members of the IETF for Thanks to the DHC Working Group and the members of the IETF for their
their time and input into the specification. In particular, thanks time and input into the specification. In particular, thanks also
also for the consistent input, ideas, and review by (in alphabetical for the consistent input, ideas, and review by (in alphabetical
order) Bernard Aboba, Bill Arbaugh, Thirumalesh Bhat, Steve Bellovin, order) Bernard Aboba, Bill Arbaugh, Thirumalesh Bhat, Steve Bellovin,
A. K. Vijayabhaskar, Brian Carpenter, Matt Crawford, Francis Dupont, A. K. Vijayabhaskar, Brian Carpenter, Matt Crawford, Francis Dupont,
Richard Hussong, Kim Kinnear, Fredrik Lindholm, Tony Lindstrom, Josh Richard Hussong, Kim Kinnear, Fredrik Lindholm, Tony Lindstrom, Josh
Littlefield, Gerald Maguire, Jack McCann, Shin Miyakawa, Thomas Littlefield, Gerald Maguire, Jack McCann, Shin Miyakawa, Thomas
Narten, Erik Nordmark, Jarno Rajahalme, Yakov Rekhter, Mark Stapp, Narten, Erik Nordmark, Jarno Rajahalme, Yakov Rekhter, Mark Stapp,
Matt Thomas, Sue Thomson, Tatuya Jinmei and Phil Wells. Matt Thomas, Sue Thomson, Tatuya Jinmei and Phil Wells.
Thanks to Steve Deering and Bob Hinden, who have consistently Thanks to Steve Deering and Bob Hinden, who have consistently taken
taken the time to discuss the more complex parts of the IPv6 the time to discuss the more complex parts of the IPv6
specifications. specifications.
And, thanks to Steve Deering for pointing out at IETF 51 in London And, thanks to Steve Deering for pointing out at IETF 51 in London
that the DHCPv6 specification has the highest revision number of any that the DHCPv6 specification has the highest revision number of any
Internet Draft. Internet Draft.
26. Changes in draft-ietf-dhc-dhcpv6-27.txt 26. References
- Wordsmithed 2nd paragraph in section to delete "immediately" from
"a client can immediately use its link-local address"
- Server sets hop limit when using multicast from IANA number
- Server must transmit to client on a specific interface
- Change "forwarding" to "relaying" throughout
- Add desynchronizing randomization for Confirm and
Information-request messages
- Wordsmithed section 15 to clarify actions when message breaks
rules about option inclusion
- Added text to 15.12 to include test for IA option in validation
of Information-Request
- Added requirement for Client Identifier option if
Information-request message is to be authenticated
- Deleted restriction against more than one Vendor-specific
Information option with same enterprise number
- Replaced "forward" with "relay" to describe service provided by
relay agents
- Added text in section 15 requiring that a server discards
messages received via unicast such as Solicit that must be sent
via multicast