draft-ietf-dhc-dhcpv6-26.txt   draft-ietf-dhc-dhcpv6-27.txt 
Internet Engineering Task Force R. Droms (ed.), Cisco Internet Engineering Task Force R. Droms (ed.), Cisco
INTERNET DRAFT J. Bound, Hewlett Packard INTERNET DRAFT J. Bound, Hewlett Packard
DHC Working Group Bernie Volz, Ericsson DHC Working Group Bernie Volz, Ericsson
Obsoletes: draft-ietf-dhc-dhcpv6-25.txt Ted Lemon, Nominum Obsoletes: draft-ietf-dhc-dhcpv6-26.txt Ted Lemon, Nominum
C. Perkins, Nokia Research Center C. Perkins, Nokia Research Center
M. Carney, Sun Microsystems M. Carney, Sun Microsystems
June 9, 2002 22 Oct 2003
Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
draft-ietf-dhc-dhcpv6-26.txt draft-ietf-dhc-dhcpv6-27.txt
Status of This Memo Status of This Memo
This document is a submission by the Dynamic Host Configuration This document is a submission by the Dynamic Host Configuration
Working Group of the Internet Engineering Task Force (IETF). Comments Working Group of the Internet Engineering Task Force (IETF). Comments
should be submitted to the dhcwg@ietf.org mailing list. should be submitted to the dhcwg@ietf.org mailing list.
Distribution of this memo is unlimited. Distribution of this memo is unlimited.
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
skipping to change at page 1, line 55 skipping to change at page 1, line 55
Stateless Address Autoconfiguration" (RFC2462), and can be used Stateless Address Autoconfiguration" (RFC2462), 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 Contents
Status of This Memo i Status of This Memo i
Abstract i Abstract i
1. Introduction and Overview 2 1. Introduction and Overview 1
1.1. Protocols and addressing . . . . . . . . . . . . . . . . 2 1.1. Protocols and Addressing . . . . . . . . . . . . . . . . 1
1.2. Client-server exchanges involving two messages . . . . . 3 1.2. Client-server Exchanges Involving Two Messages . . . . . 2
1.3. Client-server exchanges involving four messages . . . . . 3 1.3. Client-server Exchanges Involving Four Messages . . . . . 2
2. Requirements 4 2. Requirements 3
3. Background 4 3. Background 3
4. Terminology 5 4. Terminology 4
4.1. IPv6 Terminology . . . . . . . . . . . . . . . . . . . . 5 4.1. IPv6 Terminology . . . . . . . . . . . . . . . . . . . . 4
4.2. DHCP Terminology . . . . . . . . . . . . . . . . . . . . 6 4.2. DHCP Terminology . . . . . . . . . . . . . . . . . . . . 5
5. DHCP Constants 8 5. DHCP Constants 7
5.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 8 5.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 7
5.2. UDP ports . . . . . . . . . . . . . . . . . . . . . . . . 8 5.2. UDP Ports . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3. DHCP message types . . . . . . . . . . . . . . . . . . . 8 5.3. DHCP Message Types . . . . . . . . . . . . . . . . . . . 8
5.4. Status Codes . . . . . . . . . . . . . . . . . . . . . . 10 5.4. Status Codes . . . . . . . . . . . . . . . . . . . . . . 10
5.5. Transmission and Retransmission Parameters . . . . . . . 11 5.5. Transmission and Retransmission Parameters . . . . . . . 10
6. Message Formats 11 6. Client/Server Message Formats 11
7. Relay agent messages 12 7. Relay Agent/Server Message Formats 11
7.1. Relay-forward message . . . . . . . . . . . . . . . . . . 13 7.1. Relay-forward Message . . . . . . . . . . . . . . . . . . 12
7.2. Relay-reply message . . . . . . . . . . . . . . . . . . . 13 7.2. Relay-reply Message . . . . . . . . . . . . . . . . . . . 13
8. Representation and use of domain names 13 8. Representation and Use of Domain Names 13
9. DHCP unique identifier (DUID) 14 9. DHCP Unique Identifier (DUID) 13
9.1. DUID contents . . . . . . . . . . . . . . . . . . . . . . 14 9.1. DUID Contents . . . . . . . . . . . . . . . . . . . . . . 14
9.2. DUID based on link-layer address plus time [DUID-LLT] . . 14 9.2. DUID Based on Link-layer Address Plus Time [DUID-LLT] . . 14
9.3. DUID assigned by vendor based on Enterprise number 9.3. DUID Assigned by Vendor Based on Enterprise Number
[DUID-EN] . . . . . . . . . . . . . . . . . . . . . . 16 [DUID-EN] . . . . . . . . . . . . . . . . . . . . . . 15
9.4. DUID based on link-layer address [DUID-LL] . . . . . . . 17 9.4. DUID Based on Link-layer Address [DUID-LL] . . . . . . . 16
10. Identity association 17 10. Identity Association 17
11. Selecting addresses for assignment to an IA 18 11. Selecting Addresses for Assignment to an IA 17
12. Management of temporary addresses 19 12. Management of Temporary Addresses 18
13. Transmission of messages by a client 19 13. Transmission of Messages by a Client 19
14. Reliability of Client Initiated Message Exchanges 20 14. Reliability of Client Initiated Message Exchanges 19
15. Message validation 21 15. Message Validation 21
15.1. Use of Transaction IDs . . . . . . . . . . . . . . . . . 21 15.1. Use of Transaction IDs . . . . . . . . . . . . . . . . . 21
15.2. Solicit message . . . . . . . . . . . . . . . . . . . . . 22 15.2. Solicit Message . . . . . . . . . . . . . . . . . . . . . 21
15.3. Advertise message . . . . . . . . . . . . . . . . . . . . 22 15.3. Advertise Message . . . . . . . . . . . . . . . . . . . . 21
15.4. Request message . . . . . . . . . . . . . . . . . . . . . 22 15.4. Request Message . . . . . . . . . . . . . . . . . . . . . 22
15.5. Confirm message . . . . . . . . . . . . . . . . . . . . . 22 15.5. Confirm Message . . . . . . . . . . . . . . . . . . . . . 22
15.6. Renew message . . . . . . . . . . . . . . . . . . . . . . 23 15.6. Renew Message . . . . . . . . . . . . . . . . . . . . . . 22
15.7. Rebind message . . . . . . . . . . . . . . . . . . . . . 23 15.7. Rebind Message . . . . . . . . . . . . . . . . . . . . . 22
15.8. Decline messages . . . . . . . . . . . . . . . . . . . . 23 15.8. Decline Messages . . . . . . . . . . . . . . . . . . . . 23
15.9. Release message . . . . . . . . . . . . . . . . . . . . . 23 15.9. Release Message . . . . . . . . . . . . . . . . . . . . . 23
15.10. Reply message . . . . . . . . . . . . . . . . . . . . . . 24 15.10. Reply Message . . . . . . . . . . . . . . . . . . . . . . 23
15.11. Reconfigure message . . . . . . . . . . . . . . . . . . . 24 15.11. Reconfigure Message . . . . . . . . . . . . . . . . . . . 24
15.12. Information-request message . . . . . . . . . . . . . . . 25 15.12. Information-request Message . . . . . . . . . . . . . . . 24
15.13. Relay-forward message . . . . . . . . . . . . . . . . . . 25 15.13. Relay-forward Message . . . . . . . . . . . . . . . . . . 24
15.14. Relay-reply message . . . . . . . . . . . . . . . . . . . 25 15.14. Relay-reply Message . . . . . . . . . . . . . . . . . . . 24
16. Client Source Address and Interface Selection 25 16. Client Source Address and Interface Selection 25
17. DHCP Server Solicitation 25 17. DHCP Server Solicitation 25
17.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 26 17.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 25
17.1.1. Creation of Solicit messages . . . . . . . . . . 26 17.1.1. Creation of Solicit Messages . . . . . . . . . . 25
17.1.2. Transmission of Solicit Messages . . . . . . . . 27 17.1.2. Transmission of Solicit Messages . . . . . . . . 26
17.1.3. Receipt of Advertise messages . . . . . . . . . . 28 17.1.3. Receipt of Advertise Messages . . . . . . . . . . 27
17.1.4. Receipt of Reply message . . . . . . . . . . . . 29 17.1.4. Receipt of Reply Message . . . . . . . . . . . . 28
17.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 29 17.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 28
17.2.1. Receipt of Solicit messages . . . . . . . . . . . 29 17.2.1. Receipt of Solicit Messages . . . . . . . . . . . 28
17.2.2. Creation and transmission of Advertise messages . 29 17.2.2. Creation and Transmission of Advertise Messages . 29
17.2.3. Creation and Transmission of Reply messages . . . 30 17.2.3. Creation and Transmission of Reply Messages . . . 30
18. DHCP Client-Initiated Configuration Exchange 31 18. DHCP Client-Initiated Configuration Exchange 31
18.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 31 18.1. Client Behavior . . . . . . . . . . . . . . . . . . . . . 31
18.1.1. Creation and transmission of Request messages . . 32 18.1.1. Creation and Transmission of Request Messages . . 31
18.1.2. Creation and transmission of Confirm messages . . 33 18.1.2. Creation and Transmission of Confirm Messages . . 32
18.1.3. Creation and transmission of Renew messages . . . 34 18.1.3. Creation and Transmission of Renew Messages . . . 33
18.1.4. Creation and transmission of Rebind messages . . 35 18.1.4. Creation and Transmission of Rebind Messages . . 34
18.1.5. Creation and Transmission of Information-request 18.1.5. Creation and Transmission of Information-request
messages . . . . . . . . . . . . . . . . . 36 Messages . . . . . . . . . . . . . . . . . 35
18.1.6. Creation and transmission of Release messages . . 37 18.1.6. Creation and Transmission of Release Messages . . 36
18.1.7. Creation and transmission of Decline messages . . 38 18.1.7. Creation and Transmission of Decline Messages . . 37
18.1.8. Receipt of Reply messages . . . . . . . . . . . . 38 18.1.8. Receipt of Reply Messages . . . . . . . . . . . . 38
18.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 40 18.2. Server Behavior . . . . . . . . . . . . . . . . . . . . . 39
18.2.1. Receipt of Request messages . . . . . . . . . . . 40 18.2.1. Receipt of Request Messages . . . . . . . . . . . 40
18.2.2. Receipt of Confirm messages . . . . . . . . . . . 41 18.2.2. Receipt of Confirm Messages . . . . . . . . . . . 41
18.2.3. Receipt of Renew messages . . . . . . . . . . . . 41 18.2.3. Receipt of Renew Messages . . . . . . . . . . . . 41
18.2.4. Receipt of Rebind messages . . . . . . . . . . . 42 18.2.4. Receipt of Rebind Messages . . . . . . . . . . . 42
18.2.5. Receipt of Information-request messages . . . . . 43 18.2.5. Receipt of Information-request Messages . . . . . 42
18.2.6. Receipt of Release messages . . . . . . . . . . . 44 18.2.6. Receipt of Release Messages . . . . . . . . . . . 43
18.2.7. Receipt of Decline messages . . . . . . . . . . . 44 18.2.7. Receipt of Decline Messages . . . . . . . . . . . 44
18.2.8. Transmission of Reply messages . . . . . . . . . 45 18.2.8. Transmission of Reply Messages . . . . . . . . . 44
19. DHCP Server-Initiated Configuration Exchange 45 19. DHCP Server-Initiated Configuration Exchange 44
19.1. Server Behavior . . . . . . . . . . . . . . . . . . . . . 45 19.1. Server Behavior . . . . . . . . . . . . . . . . . . . . . 45
19.1.1. Creation and transmission of Reconfigure messages 45 19.1.1. Creation and Transmission of Reconfigure Messages 45
19.1.2. Time out and retransmission of Reconfigure 19.1.2. Time Out and Retransmission of Reconfigure
messages . . . . . . . . . . . . . . . . . 46 Messages . . . . . . . . . . . . . . . . . 46
19.2. Receipt of Renew messages . . . . . . . . . . . . . . . . 47 19.2. Receipt of Renew Messages . . . . . . . . . . . . . . . . 46
19.3. Receipt of Information-request messages . . . . . . . . . 47 19.3. Receipt of Information-request Messages . . . . . . . . . 46
19.4. Client Behavior . . . . . . . . . . . . . . . . . . . . . 47 19.4. Client Behavior . . . . . . . . . . . . . . . . . . . . . 47
19.4.1. Receipt of Reconfigure messages . . . . . . . . . 47 19.4.1. Receipt of Reconfigure Messages . . . . . . . . . 47
19.4.2. Creation and transmission of Renew messages . . . 48 19.4.2. Creation and Transmission of Renew Messages . . . 48
19.4.3. Creation and transmission of Information-request 19.4.3. Creation and Transmission of Information-request
messages . . . . . . . . . . . . . . . . . 48 Messages . . . . . . . . . . . . . . . . . 48
19.4.4. Time out and retransmission of Renew or 19.4.4. Time Out and Retransmission of Renew or
Information-request messages . . . . . . . 49 Information-request Messages . . . . . . . 48
19.4.5. Receipt of Reply messages . . . . . . . . . . . . 49 19.4.5. Receipt of Reply Messages . . . . . . . . . . . . 48
20. Relay Agent Behavior 49 20. Relay Agent Behavior 48
20.1. Forwarding a client message or a Relay-forward message . 49 20.1. Relaying a Client Message or a Relay-forward Message . . 49
20.1.1. Forwarding a message from a client . . . . . . . 49 20.1.1. Relaying a Message from a Client . . . . . . . . 49
20.1.2. Forwarding a message from a relay agent . . . . . 50 20.1.2. Relaying a Message from a Relay Agent . . . . . . 49
20.2. Forwarding a Relay-reply message . . . . . . . . . . . . 50 20.2. Relaying a Relay-reply Message . . . . . . . . . . . . . 50
20.3. Construction of Relay-reply messages . . . . . . . . . . 51 20.3. Construction of Relay-reply Messages . . . . . . . . . . 50
21. Authentication of DHCP messages 51 21. Authentication of DHCP Messages 51
21.1. DHCP threat model . . . . . . . . . . . . . . . . . . . . 51 21.1. Security of Messages Sent Between Servers and Relay Agents 51
21.2. Security of messages sent between servers and relay agents 52 21.2. Summary of DHCP Authentication . . . . . . . . . . . . . 52
21.3. Summary of DHCP authentication . . . . . . . . . . . . . 52 21.3. Replay Detection . . . . . . . . . . . . . . . . . . . . 52
21.4. Replay detection . . . . . . . . . . . . . . . . . . . . 53 21.4. Delayed Authentication Protocol . . . . . . . . . . . . . 52
21.5. Delayed authentication protocol . . . . . . . . . . . . . 53 21.4.1. Use of the Authentication Option in the Delayed
21.5.1. Use of the Authentication option in the delayed Authentication Protocol . . . . . . . . . 53
authentication protocol . . . . . . . . . 53 21.4.2. Message Validation . . . . . . . . . . . . . . . 54
21.5.2. Message validation . . . . . . . . . . . . . . . 55 21.4.3. Key Utilization . . . . . . . . . . . . . . . . . 54
21.5.3. Key utilization . . . . . . . . . . . . . . . . . 55 21.4.4. Client Considerations for Delayed Authentication
21.5.4. Client considerations for delayed authentication Protocol . . . . . . . . . . . . . . . . . 54
protocol . . . . . . . . . . . . . . . . . 55 21.4.5. Server Considerations for Delayed Authentication
21.5.5. Server considerations for delayed authentication Protocol . . . . . . . . . . . . . . . . . 56
protocol . . . . . . . . . . . . . . . . . 57 21.5. Reconfigure Key Authentication Protocol . . . . . . . . . 57
21.5.1. Use of the Authentication Option in the Reconfigure
Key Authentication Protocol . . . . . . . 57
21.5.2. Server considerations for Reconfigure Key protocol 58
21.5.3. Client considerations for Reconfigure Key protocol 58
22. DHCP options 57 22. DHCP Options 58
22.1. Format of DHCP options . . . . . . . . . . . . . . . . . 58 22.1. Format of DHCP Options . . . . . . . . . . . . . . . . . 59
22.2. Client Identifier option . . . . . . . . . . . . . . . . 58 22.2. Client Identifier Option . . . . . . . . . . . . . . . . 59
22.3. Server Identifier option . . . . . . . . . . . . . . . . 59 22.3. Server Identifier Option . . . . . . . . . . . . . . . . 60
22.4. Identity Association option . . . . . . . . . . . . . . . 60 22.4. Identity Association for Non-temporary Addresses Option . 60
22.5. Identity Association for Temporary Addresses option . . . 61 22.5. Identity Association for Temporary Addresses Option . . . 62
22.6. IA Address option . . . . . . . . . . . . . . . . . . . . 63 22.6. IA Address Option . . . . . . . . . . . . . . . . . . . . 64
22.7. Option Request option . . . . . . . . . . . . . . . . . . 64 22.7. Option Request Option . . . . . . . . . . . . . . . . . . 65
22.8. Preference option . . . . . . . . . . . . . . . . . . . . 65 22.8. Preference Option . . . . . . . . . . . . . . . . . . . . 65
22.9. Elapsed Time option . . . . . . . . . . . . . . . . . . . 65 22.9. Elapsed Time Option . . . . . . . . . . . . . . . . . . . 66
22.10. Relay Message option . . . . . . . . . . . . . . . . . . 66 22.10. Relay Message Option . . . . . . . . . . . . . . . . . . 67
22.11. Authentication option . . . . . . . . . . . . . . . . . . 66 22.11. Authentication Option . . . . . . . . . . . . . . . . . . 67
22.12. Server unicast option . . . . . . . . . . . . . . . . . . 67 22.12. Server Unicast Option . . . . . . . . . . . . . . . . . . 68
22.13. Status Code Option . . . . . . . . . . . . . . . . . . . 68 22.13. Status Code Option . . . . . . . . . . . . . . . . . . . 69
22.14. Rapid Commit option . . . . . . . . . . . . . . . . . . . 69 22.14. Rapid Commit Option . . . . . . . . . . . . . . . . . . . 69
22.15. User Class option . . . . . . . . . . . . . . . . . . . . 70 22.15. User Class Option . . . . . . . . . . . . . . . . . . . . 70
22.16. Vendor Class Option . . . . . . . . . . . . . . . . . . . 71 22.16. Vendor Class Option . . . . . . . . . . . . . . . . . . . 71
22.17. Vendor-specific Information option . . . . . . . . . . . 72 22.17. Vendor-specific Information Option . . . . . . . . . . . 72
22.18. Interface-Id Option . . . . . . . . . . . . . . . . . . . 73 22.18. Interface-Id Option . . . . . . . . . . . . . . . . . . . 74
22.19. Reconfigure Message option . . . . . . . . . . . . . . . 74 22.19. Reconfigure Message Option . . . . . . . . . . . . . . . 75
22.20. Reconfigure Nonce option . . . . . . . . . . . . . . . . 74 22.20. Reconfigure Accept Option . . . . . . . . . . . . . . . . 75
23. Security Considerations 75
24. IANA Considerations 76 23. Security Considerations 76
24.1. Multicast addresses . . . . . . . . . . . . . . . . . . . 77
24.2. DHCP message types . . . . . . . . . . . . . . . . . . . 77
24.3. DHCP options . . . . . . . . . . . . . . . . . . . . . . 78
24.4. Status codes . . . . . . . . . . . . . . . . . . . . . . 79
24.5. DUID . . . . . . . . . . . . . . . . . . . . . . . . . . 79
25. Acknowledgments 79 24. IANA Considerations 77
24.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 78
24.2. DHCP Message Types . . . . . . . . . . . . . . . . . . . 78
24.3. DHCP Options . . . . . . . . . . . . . . . . . . . . . . 79
24.4. Status Codes . . . . . . . . . . . . . . . . . . . . . . 80
24.5. DUID . . . . . . . . . . . . . . . . . . . . . . . . . . 80
26. Changes in draft-ietf-dhc-dhcpv6-25.txt 80 25. Acknowledgments 80
27. Changes in draft-ietf-dhc-dhcpv6-26.txt 82 26. Changes in draft-ietf-dhc-dhcpv6-27.txt 81
References 83 References 82
Chair's Address 84 Chair's Address 83
Authors' Addresses 85 Authors' Addresses 84
A. Appearance of Options in Message Types 86 A. Appearance of Options in Message Types 85
B. Appearance of Options in the Options Field of DHCP Options 86 B. Appearance of Options in the Options Field of DHCP Options 85
C. Full Copyright Statement 87 C. Full Copyright Statement 86
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" [20]. Address Autoconfiguration" [20].
The operational models and relevant configuration information The operational models and relevant configuration information for
for DHCPv4 and DHCPv6 are sufficiently different that integration DHCPv4 [1][5] and DHCPv6 are sufficiently different that integration
between the two services is not included in this document. If there between the two services is not included in this document. If there
is sufficient interest and demand, integration can be specified is sufficient interest and demand, integration can be specified
in a document that extends DHCPv6 to carry IPv4 addresses and in a document that extends DHCPv6 to carry IPv4 addresses and
configuration information. configuration information.
The remainder of this introduction summarizes DHCP, explaining The remainder of this introduction summarizes DHCP, explaining
the message exchange mechanisms and example message flows. The the message exchange mechanisms and example message flows. The
message flows in sections 1.2 and 1.3 are intended as illustrations message flows in sections 1.2 and 1.3 are intended as illustrations
of DHCP operation rather than an exhaustive list of all possible of DHCP 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 [18]. The Clients and servers exchange DHCP messages using UDP [18]. 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 forward messages between the client and server. The operation will relay messages between the client and server. The operation
of the relay agent is transparent to the client and the discussion of the relay agent is transparent to the client and the discussion
of message exchanges in the remainder of this section will omit the of message exchanges in the remainder of this section will omit the
description of message forwarding 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 some circumstances send messages directly to the server using under 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 addresses, the client can obtain configuration information it IP addresses, the client can obtain configuration information
such as a list of available DNS servers [7] or NTP servers [21] such as a list of available DNS servers [7] or NTP servers [21]
through a single message and reply exchanged with a DHCP server. through a single message and reply exchanged with a DHCP server.
To obtain configuration information the client first sends an To obtain 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. The server responds with a Reply message multicast address. Servers respond with a Reply message containing
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
the exchange using only two messages, instead of four messages as the exchange using only two messages, instead of four messages as
described in the next section. In this case, the client sends a described in the next section. In this case, the client sends a
Solicit message to the All_DHCP_Relay_Agents_and_Servers requesting Solicit message to the All_DHCP_Relay_Agents_and_Servers requesting
skipping to change at page 3, line 40 skipping to change at page 2, line 40
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 the lifetimes assigned to an address, the client sends a Renew of 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 first locates a DHCP server and then requests the client first locates a DHCP server and then requests the
assignment of addresses and other configuration information assignment of addresses and other configuration information
from the server. The client sends a Solicit message to the from the server. 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 with an Advertise message. The client then chooses one responds with an Advertise message. The client then chooses one
of the servers and sends a Request message to the server asking of the servers and sends a Request message to the server asking
for confirmed assignment of addresses and other configuration for confirmed assignment of addresses and other configuration
skipping to change at page 4, line 37 skipping to change at page 3, line 37
Architecture [8], IPv6 Stateless Address Autoconfiguration [20], IPv6 Architecture [8], IPv6 Stateless Address Autoconfiguration [20], IPv6
Neighbor Discovery Processing [16], and Dynamic Updates to DNS [22]. Neighbor Discovery Processing [16], 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 [8] defines the The IPv6 Addressing Architecture specification [8] 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. This means that a client can immediately use during initialization. The availability of these features means that
its link-local address and a well-known multicast address to begin a client can use its link-local address and a well-known multicast
communications to discover neighbors on the link. For instance, a address to discover and communicate with DHCP servers or relay agents
client can send a Solicit message and locate a server or relay agent. on its link.
IPv6 Stateless Address Autoconfiguration [20] specifies procedures IPv6 Stateless Address Autoconfiguration [20] specifies procedures
by which a node may autoconfigure addresses based on router by which a node may autoconfigure addresses based on router
advertisements [16], and the use of a valid lifetime to support advertisements [16], 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 interaction by which a node begins stateless or stateful protocol 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.
skipping to change at page 5, line 54 skipping to change at page 4, line 54
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 link-only
scope, indicated by having the prefix scope, indicated by having the prefix
(FE80::0000/10), that can be used to (FE80::/10), that can be used to reach
reach neighboring nodes attached to neighboring nodes attached to the same
the same link. Every interface has a link. Every interface has a link-local
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
identified by that address. identified by that address.
neighbor A node attached to the same link. neighbor A node attached to the same link.
node A device that implements IP. node A device that implements IP.
skipping to change at page 6, line 42 skipping to change at page 5, line 42
that address. that address.
4.2. DHCP Terminology 4.2. DHCP Terminology
Terminology specific to DHCP can be found below. Terminology specific to DHCP can be found below.
appropriate to the link an address is "appropriate to the link" appropriate to the link an address is "appropriate to the link"
when the address is consistent with the when the address is consistent with the
DHCP server's knowledge of the network DHCP server's knowledge of the network
topology, prefix assignment and address topology, prefix assignment and address
assignment policies assignment policies.
binding A binding (or, client binding) is a binding A binding (or, client binding) is a
group of server data records containing group of server data records containing
the information the server has about the information the server has about
the addresses in an IA or configuration the addresses in an IA or configuration
information explicitly assigned to the information explicitly assigned to the
client. Configuration information that client. Configuration information that
has been returned to a client through a has been returned to a client through a
policy - for example, the information policy - for example, the information
returned to all clients on the same returned to all clients on the same
skipping to change at page 7, line 33 skipping to change at page 6, line 33
necessary to avoid ambiguity. necessary to avoid ambiguity.
DHCP client (or client) A node that initiates requests on a link DHCP client (or client) A node that initiates requests on a link
to obtain configuration parameters from to obtain configuration parameters from
one or more DHCP servers. one or more DHCP servers.
DHCP domain A set of links managed by DHCP and DHCP domain A set of links managed by DHCP and
operated by a single administrative operated by a single administrative
entity. entity.
DHCP realm A names used to identify the DHCP
administrative domain from which a DHCP
authentication key was selected.
DHCP relay agent (or relay agent) A node that acts as an DHCP relay agent (or relay agent) A node that acts as an
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
skipping to change at page 7, line 54 skipping to change at page 7, line 5
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;
for example, an identity association
for temporary addresses (IA_TA) holds
temporary addresses (see "identity
association for temporary addresses").
Throughout this document, "IA" is used
to refer to an identity association
without identifying the type of
addresses in the IA.
Identity association identifier (IAID) An identifier for an IA, Identity association identifier (IAID) An identifier for an IA,
chosen by the client. Each IA has an chosen by the client. Each IA has an
IAID, which is chosen to be unique among IAID, which is chosen to be unique among
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
that carries assigned addresses that are
not temporary addresses (see "identity
association for temporary addresses")
Identity association for temporary addresses (IA_TA) An IA that
carries temporary addresses (see RFC
3041 [15]).
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.
reconfiguration nonce An opaque value used to provide security Reconfigure key An key supplied to a client by a server
for Reconfigure messages. used to provide security for Reconfigure
messages.
relaying A DHCP relay agent relays DHCP messages
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.
5. DHCP Constants 5. DHCP Constants
This section describes various program and networking constants used This section describes various program and networking constants used
by DHCP. by DHCP.
skipping to change at page 8, line 43 skipping to change at page 8, line 18
All_DHCP_Servers (FF05::1:3) A site-scoped multicast address used All_DHCP_Servers (FF05::1:3) A site-scoped multicast address used
by a relay agent to communicate with servers, either by a relay agent to communicate with servers, either
because the relay agent wants to send messages to because the relay agent wants to send messages to
all servers or because it does not know the unicast all servers or because it does not know the unicast
addresses of the servers. Note that in order for addresses of the servers. Note that in order for
a relay agent to use this address, it must have an a relay agent to use this address, it must have an
address of sufficient scope to be reachable by the address of sufficient scope to be reachable by the
servers. All servers within the site are members of servers. All servers within the site are members of
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 Section 6. Message types not listed message types can be found in sections 6 and 7. Message types not
here are reserved for future use. The message code for each message listed here are reserved for future use. The numeric encoding for
type is shown with the message name. 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.
REQUEST (3) A client sends a Request message to request REQUEST (3) A client sends a Request message to request
skipping to change at page 9, line 27 skipping to change at page 8, line 50
addresses, from a specific server. addresses, from a specific server.
CONFIRM (4) A client sends a Confirm message to any CONFIRM (4) A client sends a Confirm message to any
available server to determine whether the available server to determine whether the
addresses it was assigned are still appropriate addresses it was assigned are still appropriate
to the link to which the client is connected. to the link to which the client is connected.
RENEW (5) A client sends a Renew message to the server RENEW (5) A client sends a Renew message to the server
that originally provided the client's addresses that originally provided the client's addresses
and configuration parameters to extend the and configuration parameters to extend the
leases on the addresses assigned to the client lifetimes on the addresses assigned to the
and to update other configuration parameters. client and to update other configuration
parameters.
REBIND (6) A client sends a Rebind message to any REBIND (6) A client sends a Rebind message to any
available server to extend the leases on the available server to extend the lifetimes on the
addresses assigned to the client and to update addresses assigned to the client and to update
other configuration parameters; this message is other configuration parameters; this message is
sent after a client receives no response to a sent after a client receives no response to a
Renew message. Renew message.
REPLY (7) A server sends a Reply message containing REPLY (7) A server sends a Reply message containing
assigned addresses and configuration parameters assigned addresses and configuration parameters
in response to a Solicit, Request, Renew, in response to a Solicit, Request, Renew,
Rebind message received from a client. A Rebind message received from a client. A
server sends a Reply message containing server sends a Reply message containing
configuration parameters in response to an configuration parameters in response to an
Information-request message. A server sends a Information-request message. A server sends a
Reply message confirming or denying the that
the client's addresses are appropriate to
the link to which the client is connected in
response to a Confirm message. A server sends
a Reply message to acknowledge receipt of a
Release or Decline message.
A server sends a Reply message containing
assigned addresses and configuration parameters
in response to a Solicit, Request, Renew,
Rebind message received from a client. A
server sends a Reply message containing
configuration parameters in response to an
Information-request message. A server sends a
Reply message in response to a Confirm message Reply message in response to a Confirm message
confirming or denying that the addresses confirming or denying that the addresses
assigned to the client are appropriate to the assigned to the client are appropriate to the
link to which the client is connected. A link to which the client is connected. A
server sends a Reply message to acknowledge server sends a Reply message to acknowledge
receipt of a Release or Decline message. receipt of a Release or Decline message.
RELEASE (8) A client sends a Release message to the server RELEASE (8) A client sends a Release message to the server
that assigned addresses to the client to that assigned addresses to the client to
indicate that the client will no longer use one indicate that the client will no longer use one
skipping to change at page 10, line 37 skipping to change at page 9, line 51
or Information-request/Reply transaction with or Information-request/Reply transaction with
the server in order to receive the updated the server in order to receive the updated
information. information.
INFORMATION-REQUEST (11) A client sends an Information-request INFORMATION-REQUEST (11) A client sends an Information-request
message to a server to request configuration message to a server to request configuration
parameters without the assignment of any IP parameters without the assignment of any IP
addresses to the client. addresses to the client.
RELAY-FORW (12) A relay agent sends a Relay-forward message RELAY-FORW (12) A relay agent sends a Relay-forward message
to forward client messages to servers, either to relay messages to servers, either directly
directly or through another relay agent. The or through another relay agent. The received
client message is encapsulated in an option in message, either a client message or a
the Relay-forward message. Relay-forward message from another relay
agent, is encapsulated in an option in the
Relay-forward message.
RELAY-REPL (13) A server sends a Relay-reply message to a relay RELAY-REPL (13) A server sends a Relay-reply message to a relay
agent, either directly or through another relay agent containing a message that the relay
agent, to send messages to clients through agent delivers to a client. The Relay-reply
the relay agent. The server encapsulates the message may be relayed by other relay agents
client message as an option in the Relay-reply for delivery to the destination relay agent.
message, which the relay agent extracts and The server encapsulates the client message as
forwards to the client. an option in the Relay-reply message, which the
relay agent extracts and relays to the client.
5.4. Status Codes 5.4. Status Codes
DHCPv6 uses status codes to communicate the success or failure of DHCPv6 uses status codes to communicate the success or failure of
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
------------------------------------- -------------------------------------
MAX_SOL_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_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
CNF_MAX_RD 10 secs Max Confirm duration CNF_MAX_RD 10 secs Max Confirm duration
REN_TIMEOUT 10 sec Initial Renew timeout REN_TIMEOUT 10 secs Initial Renew timeout
REN_MAX_RT 600 secs Max Renew timeout value REN_MAX_RT 600 secs Max Renew timeout value
REB_TIMEOUT 10 secs Initial Rebind timeout REB_TIMEOUT 10 secs Initial Rebind timeout
REB_MAX_RT 600 secs Max Rebind timeout value REB_MAX_RT 600 secs Max Rebind timeout value
INF_MAX_DELAY 1 sec Max delay of first Information-request
INF_TIMEOUT 1 sec Initial Information-request timeout INF_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_RT 0 Max 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_RT 0 Max Decline timeout
DEC_MAX_RC 5 Max Decline attempts DEC_MAX_RC 5 Max Decline attempts
REC_TIMEOUT 2 sec 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 4 Max hop count in a Relay-forward message HOP_COUNT_LIMIT 32 Max hop count in a Relay-forward message
6. 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.
skipping to change at page 12, line 25 skipping to change at page 11, line 40
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.
7. Relay agent messages 7. Relay Agent/Server Message Formats
Relay agents exchange messages with servers to forward messages Relay agents exchange messages with servers to relay messages between
between clients and servers that are not connected to the same link. clients and servers that are not connected to the same link.
All values in the message header and in options are in network byte
order.
Options are stored serially in the options field, with no padding
between the options. Options are byte-aligned but are not aligned in
any other way such as on 2 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 |
skipping to change at page 13, line 4 skipping to change at page 12, line 28
| | | |
| 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-forward message. Relay-forward message.
msg-type RELAY-FORW msg-type RELAY-FORW
hop-count Number of relay agents that have forwarded 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 forwarded 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 Number of relay agents that have forwarded this hop-count Copied from the Relay-forward message
message
link-address Copied from the Relay-forward message link-address Copied from the Relay-forward message
peer-address The client or relay agent address to which the peer-address Copied from the Relay-forward message
message contained in the Relay Message option in
this Relay-reply message is to be forwarded
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 [13]. A domain name or list of domain names section 3.1 of RFC1035 [13]. A domain name or list of domain names
in DHCP MUST NOT be stored in compressed form as described in section in DHCP MUST NOT be stored in compressed form as described in section
4.1.4 of RFC1035. 4.1.4 of RFC1035.
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 the association of IAs with clients. DHCP clients use DUIDs to in 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
skipping to change at page 14, line 35 skipping to change at page 14, line 7
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.
The motivation for having more than one type of DUID is that the DUID The motivation for having more than one type of DUID is that the DUID
must be globally unique, and must also be easy to generate. The sort must be globally unique, and must also be easy to generate. The sort
of globally-unique identifier that is easy to generate for any given of globally-unique identifier that is easy to generate for any given
device can differ quite widely. Also, some devices may not contain device can differ quite widely. Also, some devices may not contain
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 256 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 time value, followed by link-layer address of any one network a 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 the section on ARP in RFC 826. assigned by the IANA as described in RFC826 [17]. Both the time and
Both the time and the hardware type are stored in network byte order. the hardware type are stored in network byte order. The link-layer
The link-layer address is stored in canonical form, as described in address is stored in canonical form, as described in RFC2464 [3].
RFC2464 [3].
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
skipping to change at page 16, line 4 skipping to change at page 15, line 29
between two DUID-LLTs is very unlikely even if the clocks haven't between two DUID-LLTs is very unlikely even if the clocks haven't
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 DHCP client that generates a DUID-LLT using this mechanism MUST A 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 [9] followed by a unique identifier assigned by maintained by IANA [9] followed by a unique identifier assigned by
the vendor. the vendor. The following diagram summarizes the structure of a
DUID-EN:
The following diagram summarizes the structure of a 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) .
skipping to change at page 17, line 5 skipping to change at page 16, line 22
+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+
| 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 (9), followed by eight octets of identifier data Number (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 valid
hardware type assigned by the IANA as described in the section on hardware type assigned by the IANA as described in RFC826 [17].
ARP in RFC 826. The hardware type is stored in network byte order. The hardware type is stored in network byte order. The link-layer
The link-layer address is stored in canonical form, as described in address is stored in canonical form, as described in RFC2464 [3].
RFC2464 [3].
The following diagram illustrates the format of a DUID-LL: 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 as that interface provides a unique link-layer address and is long 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 should be used in configuring all network generated. The same DUID-LL SHOULD be used in configuring all
interfaces connected to the device, regardless of which interface's network interfaces connected to the device, regardless of which
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 A client must associate at least one distinct IA with each of its
its network interfaces and uses that IA to obtain configuration network interfaces for which it is to request the assignment of IPv6
information from a server for that interface. Each IA must be addresses from a DHCP server. The client uses the IAs assigned to an
associated with exactly one interface. interface to obtain configuration information from a server for that
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
among the IAIDs on the client. The IAID is chosen by the client. among the IAIDs on the client. The IAID is chosen by the client.
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
skipping to change at page 18, line 25 skipping to change at page 17, line 42
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 22.4
for the representation of an IA in a DHCP message. 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 [20]. The lifetimes are transmitted from the as defined in RFC2462 [20]. 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 RFC2462.
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
skipping to change at page 19, line 4 skipping to change at page 18, line 22
* If the server receives the message directly from the client * If the server receives the message directly from the client
and the source address in the IP datagram in which the and the source address in the IP datagram in which the
message was received is not a link-local address, then the message was received is not a link-local address, then the
client is on the link identified by the source address in the client is on the link identified by the source address in the
IP datagram (note that this situation can occur only if the IP datagram (note that this situation can occur only if the
server has enabled the use of unicast message delivery by the server has enabled the use of unicast message delivery by the
client and the client has sent a message for which unicast client and the client has sent a message for which unicast
delivery is allowed) delivery is 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 unicast address assigned by a server that is based on an Any address assigned by a server that is based on an EUI-64
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 [8]. 2373 [8].
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 RFC2526, from any subnet.
12. Management of temporary addresses 12. Management of Temporary Addresses
A client may be assigned temporary addresses (temporary addresses are A client may request the assignment of temporary addresses (see
defined in RFC 3041 [15]). DHCPv6 handling of address assignment RFC 3041 [15] for the definition of temporary addresses). DHCPv6
is no different for temporary addresses. DHCPv6 says nothing about handling of address assignment is no different for temporary
details of temporary addresses like lifetimes, how clients use addresses. DHCPv6 says nothing about details of temporary addresses
temporary addresses, rules for generating successive temporary like lifetimes, how clients use temporary addresses, rules for
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.
Unless otherwise stated, an IA_TA option is used in the same way
as an IA option. In the protocol specification, unless otherwise
stated, a reference to an IA should be read as either an IA or an
IA_TA.
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 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 in
section 4 of RFC3041. section 4 of RFC3041.
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
skipping to change at page 21, line 14 skipping to change at page 20, line 28
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. If MRT has a value MRT specifies an upper bound on the value of RT (disregarding the
of 0, there is no upper limit on the value of RT. Otherwise: randomization added by the use of RAND). If MRT has a value of 0,
there is no upper limit on the value of RT. Otherwise:
if (RT > MRT) 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.
If both MRC and MRD are non-zero, the message exchange fails whenever If both MRC and MRD are non-zero, the message exchange fails whenever
either of the conditions specified in the previous two paragraphs are either of the conditions specified in the previous two paragraphs are
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 Information-request message must not include an IA option. an IA option is not allowed to appear in an Information-request
Clients and server MAY choose to extract information from such a message. Clients and server MAY choose to extract information from
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
Information-request messages it receives with a unicast
destination address.
Message validation based on DHCP authentication is discussed in Message validation based on DHCP authentication is discussed in
section 21.5.2. section 21.4.2.
If a server receives a message that contains options it should not
contain (such as an Information-request message with an IA option),
is missing options that it should contain, or is otherwise not valid,
it MAY send a Reply (or Advertise as appropriate) with a Server
Identifier option, a Client Identifier option if one was included in
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 generate a random number that cannot easily be guessed or SHOULD generate a random number that cannot easily be guessed or
predicted to use as the transaction ID for each new message it sends. predicted to use as the transaction ID for each new message it sends.
Note that if a client generates easily predictable transaction Note 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 - the contents of the Client Identifier option does not match the
client's DUID client's DUID
- the "transaction-id" field value does not match the value the - the "transaction-id" field value does not match the value the
client used in its Solicit message 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 fails to meet Servers MUST discard any received Renew message that meets any of the
any of the following conditions: following conditions:
- the message MUST include a Server Identifier option - the message MUST include a Server Identifier option
- the contents of the Server Identifier option MUST match the - the contents of the Server Identifier option MUST match the
server's identifier server's identifier
- the message MUST include a Client Identifier option - the message MUST 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 fails to meet
any of the following conditions: any of the following conditions:
- the message MUST include a Server Identifier option - the message MUST include a Server Identifier option
- the contents of the Server Identifier option MUST match the - the contents of the Server Identifier option MUST match the
server's identifier server's identifier
- the message MUST include a Client Identifier option - the message MUST 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 fails to meet
any of the following conditions: any of the following conditions:
- the message MUST include a Server Identifier option - the message MUST include a Server Identifier option
- the contents of the Server Identifier option MUST match the - the contents of the Server Identifier option MUST match the
server's identifier server's identifier
- the message MUST include a Client Identifier option - the message MUST 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 fails to meet
any of the following conditions: any of the following conditions:
- the message MUST include a Server Identifier option - the message MUST include a Server Identifier option
- the "transaction-id" field in the message MUST match the value - the "transaction-id" field in the message MUST match the value
used in the original message used in the original message
- the message MUST include a Client Identifier option and the
original message from the client contained a Client Identifier
option
- 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 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 of the client or, if the client did not include a Client DUID of the client or, if the client did not include a Client
Identifier option in the original message, the Reply message MUST Identifier option in the original message, the Reply message MUST
NOT include a Client Identifier option NOT include a 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 fails any of the
following conditions: following conditions:
- the message MUST have been unicast to the client
- the message MUST include a Server Identifier option - the message MUST include a Server Identifier option
- the message MUST include a Client Identifier option that contains - the message MUST include a Client Identifier option that contains
the client's DUID the client's DUID
- the message MUST include one of the available security - the message MUST contain a Reconfigure Message option and the
mechanisms: msg-type must be a valid value
* the server sends a Reconfigure Nonce option whose value - the message MUST NOT include any IA options if the msg-type in
matches the current server nonce value known to the client the Reconfigure Message option is INFORMATION-REQUEST
* the server uses DHCP authentication: - the message MUST include DHCP authentication:
+ the message MUST contain an authentication option * the message MUST contain an authentication option
+ the message MUST pass the authentication validation
performed by the client
15.12. Information-request message * the message MUST pass the authentication validation performed
by the client
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
includes a Server Identifier option and the DUID in the option does fails to meet any of the following conditions:
not match the server's DUID.
15.13. Relay-forward message - The message includes a Server Identifier option and the DUID in
the option does not match the server's DUID
- The message includes an IA option
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 through the interface for which configuration information is message through the interface for which configuration information is
being requested. However, the client MAY send the message through being requested. However, the client MAY send the message through
another interface attached to the same link if and only if the another interface attached to the same link if and only if the
client is certain the two interface are attached to the same link. client is certain the two interface are attached to the same link.
In addition, the client SHOULD use an IP address assigned to the The client MUST use a link-local address assigned to the interface
interface for which it is requesting configuration information as for which is is requesting configuration information as the source
the source address in the header of the IP datagram. If the client address in the header of the IP datagram.
uses a different address as the source address, the address MUST
be assigned to an interface that will be attached to the same link
as the interface for which the client is requesting configuration
information when the response is received from the server.
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 configuration information, including IPv6 addresses, server assign IPv6 addresses to the IA. The client first creates
to the IA. The client first creates an IA and assigns it an IAID. an IA and assigns it an IAID. The client then transmits a Solicit
The client then transmits a Solicit message containing an IA option message containing an IA option describing the IA. Servers that can
describing the IA. Servers that can assign configuration information assign addresses to the IA respond to the client with an Advertise
to the IA respond to the client with an Advertise message. The message. The client then initiates a configuration exchange as
client then initiates a configuration exchange as described in described in section 18.
section 18.
Whenever a client initiates server solicitation with a Solicit If the client will accept a Reply message with committed address
message, it discards any reconfigure nonce values it may have assignments and other resources in response to the Solicit message,
previously recorded. the client includes a Rapid Commit option (see section 22.14) in the
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 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 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 options to request the assignment of non-temporary The client uses IA_NA options to request the assignment of
addresses and uses IA_TA options to request the assignment of non-temporary addresses and uses IA_TA options to request the
temporary addresses. Either IA or IA_TA options, or a combination of assignment of temporary addresses. Either IA_NA or IA_TA options, or
both can be included in DHCP messages. a combination of both can be included in DHCP messages.
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 additionally include instances of those options that are
about parameter values the client would like to have returned. identified in the Option Request option with data values as hints
to the server about parameter values the client would like to have
returned.
If the client will accept a Reply message with committed address The client MUST include a Reconfigure Accept option (see
assignments and other resources in response to the Solicit message, section 22.20) indicating whether or not the client is willing to
the client includes a Rapid Commit option (see section 22.14) in the accept Reconfigure messages from the server.
Solicit message.
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 MAX_SOL_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 IPv6 Neighbor Discovery, the delay gives the amount of time to by IPv6 Neighbor Discovery, the delay gives the amount of time to
wait after IPv6 Neighbor Discovery causes the client to invoke the wait 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
RFC2462). This random delay desynchronizes clients which start at RFC2462). This random delay desynchronizes clients which start at
the same time (for example, after a power outage). the 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
MRD 0 MRD 0
If the client has included a Rapid Commit option in its Solicit If the client has included a Rapid Commit option in its Solicit
message, the client terminates the waiting process as soon as a message, the client terminates the waiting process as soon as a Reply
Reply message with a Rapid Commit option is received. If the client message with a Rapid Commit option is received.
receives an Advertise message that includes a Preference option
with a preference value of 255, the client immediately begins a
client-initiated message exchange (as described in section 18) by
sending a Request message to the server from which the Advertise
message was received. If the client receives an Advertise message
that does not include a Preference option with a preference value of
255, the client continues to wait until the first RT elapses. If the
first RT elapses and the client has received an Advertise message,
the client SHOULD continue with a client-initiated message exchange
by sending a Request message.
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 255. The preference value is carried in the Preference option of 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 with a preference value of 255, then receives an Advertise message that includes a Preference option
the client SHOULD act immediately on that Advertise message without with a preference value of 255, the client immediately begins a
waiting for any additional Advertise messages. client-initiated message exchange (as described in section 18) by
sending a Request message to the server from which the Advertise
message was received. If the client receives an Advertise message
that does not include a Preference option with a preference value of
255, the client continues to wait until the first RT elapses. If the
first RT elapses and the client has received an Advertise message,
the client SHOULD continue with a client-initiated message exchange
by sending a Request message.
If the client does not receive any Advertise messages before If the client does not receive any Advertise messages before
the first RT has elapsed, it begins the retransmission mechanism the 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 MUST stop trying to configure the interface if the message 0, it MUST stop trying to configure the interface if the message
exchange fails. After the DHCP client stops trying to configure exchange fails. After the DHCP client stops trying to configure
the interface, it SHOULD restart the reconfiguration process after the interface, it SHOULD restart the reconfiguration process after
some external event, such as user input, system restart, or when the some 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.
skipping to change at page 29, line 5 skipping to change at page 28, line 25
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 response. The client discards any Reply messages it receives in response. The client discards any Reply messages it receives
that do not include a Rapid Commit option. If the client receives that do not include a Rapid Commit option. If the client receives
a valid Reply message that includes a Rapid Commit option, it a valid Reply message that includes a Rapid Commit option, it
processes the message as described in section 18.1.8. If it does processes the message as described in section 18.1.8. If it does
not receive such a Reply message and does receive a valid Advertise not receive such a Reply message and does receive a valid Advertise
message, the client processes the Advertise message as described in message, the client processes the Advertise message as described in
section 17.1.3. section 17.1.3.
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. message. For example, if the administrative policy for the server
is that it may only respond to a client that is willing to accept
a Reconfigure message, if the client indicates with a Reconfigure
Accept option in the Solicit message that it will not accept a
Reconfigure message, the servers discards 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 Solicit with a Reply message as described in section 17.2.3. the 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 server preference value MUST default to zero unless otherwise The server preference value MUST default to zero unless otherwise
configured by the server administrator. configured by the server administrator.
The server MUST add a Reconfigure Accept option to indicate whether
the client is required to accept or discard any Reconfigure messages
it receives.
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 subsequent Reply message. The information in these options may a subsequent Reply message. The information in these options may
be used by the client in the selection of a server if the client be 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 the server has been configured to return to the client. The that the server has been configured to return to the client. The
server MAY return additional options to the client if it has been server MAY return additional options to the client if it has been
configured to do so. The server SHOULD limit the options returned to configured to do so. The server SHOULD limit the options returned to
the client so that the DHCP message header and options do not cause the client so that the DHCP message header and options do not cause
fragmentation. 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 or IAID options in the Advertise options, the server MUST include IA options in the Advertise message
message containing any addresses that would be assigned to IAs containing any addresses that would be assigned to IAs contained in
contained in the Solicit message from the client. the Solicit message from the client. If the client has included
addresses in the IAs in the Solicit message, the server uses those
addresses as hints about the addresses the client would like to
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 with message to the client that includes only a Status Code option
code NoAddrsAvail, a status message for the user, a Server Identifier with code NoAddrsAvail and a status message for the user, a Server
option with the server's DUID and a Client Identifier option with the Identifier option with the server's DUID and a Client Identifier
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, If the Solicit message was received in a Relay-forward message, the
the server constructs a Relay-reply message with the Advertise server constructs a Relay-reply message with the Advertise message
message in the payload of a "server-message" option. If the in the payload of a "relay-message" option. If the Relay-forward
Relay-forward messages included an Interface-id option, the server messages included an Interface-id option, the server copies
copies that option to the Relay-reply message. The server unicasts that option to the Relay-reply message. The server unicasts the
the Relay-reply message directly to the relay agent using the Relay-reply message directly to the relay agent using the address
address in the source address field from the IP datagram in which the in the source address field from the IP datagram in which the
Relay-forward message was received. Relay-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 the assignment of any addresses before sending the commits the assignment of any addresses before sending the
Reply message. The client can assume it has been assigned Reply message. The client can assume it has been assigned
skipping to change at page 31, line 15 skipping to change at page 30, line 44
a Request message for those addresses. a Request message for those addresses.
Typically, servers that are configured to use the Typically, servers that are configured to use the
Solicit-Reply message exchange will be deployed so that only Solicit-Reply message exchange will be deployed so that only
one server will respond to a Solicit message. If more than one server will respond to a Solicit message. If more than
one server responds, the client will only use the addresses one server responds, the client will only use the addresses
from one of the servers and the addresses from the other from one of the servers and the addresses from the other
servers will be committed to the client but not used by the servers will be committed to the client but not used by the
client. client.
The problem of unused addresses can be minimized, for
example, by designing the DHCP service so that only one
server responds to the Solicit or by using relatively short
lifetimes for assigned addresses.
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 MUST add a Reconfigure Accept option to indicate whether
the client is required to accept or discard any Reconfigure messages
the client receives.
The server produces the Reply message as though it had received The server produces the Reply message as though it had received
a Request message, as described in section 18.2.1. The server a 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 acquire or update configuration information of interest. The to acquire or update configuration information of interest. The
client may initiate the configuration exchange as part of the client may initiate the configuration exchange as part of the
operating system configuration process, when requested to do operating system configuration process, when requested to do
so by the application layer, when required by Stateless Address so by the 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, Confirm, Renew, Rebind and Information-request A client uses Request, Renew, Rebind, Release and Decline messages
messages to acquire and confirm the validity of configuration during the normal life cycle of addresses. It uses Confirm to
information. validate addresses when it may have moved to a new link. It uses
Information-Request messages when it needs configuration information
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 Server Unicast option (section 22.12) from the server, the client a 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 forwarding of Use of unicast may avoid delays due to relaying of messages
messages by relay agents as well as avoid overhead and by relay agents as well as avoid overhead and duplicate
duplicate responses by servers due to delivery of client responses by servers due to delivery of client messages to
messages to multiple servers. Requiring the client to multiple servers. Requiring the client to relay all DHCP
relay all DHCP messages through a relay agent enables the messages through a relay agent enables the inclusion of
inclusion of relay agent options in all messages sent by the relay agent options in all messages sent by the client. The
client. The server should enable the use of unicast only server should enable the use of unicast only when relay
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
"transaction-id" field. "transaction-id" field.
skipping to change at page 32, line 33 skipping to change at page 32, line 12
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 MUST include a Reconfigure Accept option (see section
indicating whether or not the client is willing to accept Reconfigure
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
skipping to change at page 33, line 5 skipping to change at page 32, line 38
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
addresses assigned to the interfaces on that link may no longer be
appropriate to the link. Examples of times when a client may have
moved to a new link include:
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 to the link to which the client is attached. Examples of
times when a client may have moved to a new link include: 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 disconnected from 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, along with the addresses associated with those IAs, includes any IAs assigned to the interface that may have moved to a
in its Confirm message. Any responding servers will indicate whether new link, along with the addresses associated with those IAs, in its
those addresses are appropriate to the link to which the client is Confirm message. Any responding servers will indicate whether those
attached with the status in the Reply message it returns to the addresses are appropriate to the link to which the client is attached
client. with the status in the Reply message it returns to the client.
In any situation when a client may have moved to a new link, the
client MUST initiate a Confirm/Reply message exchange. The client
includes any IAs, along with the addresses associated with those IAs,
in its Confirm message. Any responding servers will indicate whether
those addresses are appropriate to the link to which the client is
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 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 itself The client MUST include a Client Identifier option to identify
to the server. The client includes IA options for all of the IAs itself to the server. The client includes IA options for all of
currently in use by the client. The IA options include all of the the IAs assigned to the interface for which the Confirm message is
addresses the client currently has associated with those IAs. The being sent. The IA options include all of the addresses the client
client SHOULD set the T1 and T2 fields in the IA options and the currently has associated with those IAs. The client SHOULD set the
preferred-lifetime and valid-lifetime fields in the IA Address T1 and T2 fields in any IA_NA options and the preferred-lifetime and
options to 0, and the server will ignore these fields. valid-lifetime fields in the IA Address options to 0, as the server
will ignore these fields.
The client transmits the message according to section 14, using the The first Confirm message from the client on the interface MUST be
delayed by a random amount of time between 0 and CNF_MAX_DELAY. The
client transmits the message according to section 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 as described in section 14 terminates, 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
skipping to change at page 34, line 16 skipping to change at page 33, line 41
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 as described in section 14 terminates, 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 IA option for the IA. The client includes IA Address options in an IA option for the IA. The client includes IA Address options in
the IA option for the addresses associated with the IA. The server the 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.
If T1 or T2 is set to 0 by the server, the client does not send a
Renew or Rebind message, respectively, for the 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
T1 or T2 times (for an IA_TA), the client may send a Renew or Rebind
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 a
transaction ID and inserts this value in the "transaction-id" field. 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 to the server. The client adds any appropriate options, itself to the server. The client adds any appropriate options,
including one or more IA options. The client MUST include the list including one or more IA options. The client MUST include the list
of addresses the client currently has associated with the IAs in the of addresses the client currently has associated with the IAs in the
skipping to change at page 35, line 22 skipping to change at page 34, line 50
MRT REN_MAX_RT MRT REN_MAX_RT
MRC 0 MRC 0
MRD Remaining time until T2 MRD Remaining time until T2
The message exchange is terminated when time T2 is reached (see The message exchange is terminated when time T2 is reached (see
section 18.1.4), at which time the client begins a Rebind message section 18.1.4), at which time the client begins a Rebind message
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), which the Renew message was sent at time T1 has not responded), the
the client initiates a Rebind/Reply message exchange with any client initiates a Rebind/Reply message exchange with any available
available server. The client sends the Rebind message to the server. The client includes an IA option with all addresses
All_DHCP_Relay_Agents_and_Servers multicast address. The client currently assigned to the IA in its Rebind message.
includes an IA option with all addresses 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 to the server. The client adds any appropriate options, itself to the server. The client adds any appropriate options,
including one or more IA options. The client MUST include the list including one or more IA options. The client MUST include the list
of addresses the client currently has associated with the IAs in the of addresses the client currently has associated with the IAs in the
Rebind message. Rebind message.
skipping to change at page 36, line 4 skipping to change at page 35, line 28
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 mechanism in section 14 is modified as follows for use in the The message exchange is terminated when the valid lifetimes of all of
transmission of Rebind messages. The message exchange is terminated the addresses assigned to the IA expire (see section 10), at which
when the valid lifetimes of all of the addresses assigned to the time the client has several alternative actions to choose from; for
IA expire (see section 10), at which time the client has several example:
alternative actions to choose from:
- 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-specific options to the client, or the server may choose not client-specific options to the client, or the server may choose
to respond to the message at all. not to respond to the message at all. The client MUST include a
Client Identifier option if the Information-Request message will be
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 client transmits the message according to section 14, using the The first Information-request message from the client on the
following parameters: interface MUST be delayed by a random amount of time between 0
and INF_MAX_DELAY.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 generates
a transaction ID and places this value in the "transaction-id" field. 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.
skipping to change at page 37, line 53 skipping to change at page 37, line 24
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 client will retransmit the Release message, and the server may the 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, the addresses 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 the 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 generates
a transaction ID and places this value in the "transaction-id" field. 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.
skipping to change at page 38, line 33 skipping to change at page 37, line 56
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 source address in the Decline message or in any subsequently the 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 DEC_MAX_RT MRT 0
MRC DEC_MAX_RC MRC DEC_MAX_RC
MRD 0 MRD 0
If addresses are released but the Reply from a DHCP server is lost, If addresses are declined but the Reply from a DHCP server is lost,
the client will retransmit the Decline message, and the server may the client will retransmit the Decline 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 Decline message exchange as if it indicates an error. in a Decline message exchange as if it indicates an error.
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 Request, Upon the receipt of a valid Reply message in response to a Solicit
Confirm, Renew, Rebind or Information-request message, the client (with a Rapid Commit option), Request, Confirm, Renew, Rebind or
extracts the configuration information contained in the Reply. The Information-request message, the client extracts the configuration
client MAY choose to report any status code or message from the information contained in the Reply. The client MAY choose to report
status code option in the Reply message. any status code or message from the status code option in the Reply
message.
The client SHOULD perform duplicate address detection [20] on each The client SHOULD perform duplicate address detection [20] on each
of the addresses in any IAs it receives in the Reply message before of 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 be in use on the link, the client sends a Decline message to the to 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.
The client records the T1 and T2 times for each IA in the Reply If the Reply was received in response to a Solicit (with a Rapid
message. The client records any addresses included with IAs in the Commit option), Request, Renew or Rebind message, the client updates
Reply message. The client updates the preferred and valid lifetimes the information it has recorded about IAs from the IA options
for the addresses in the IA from the lifetime information in the contained in the Reply message:
IA option, and discards any addresses with valid lifetime set to 0
in the IA option. The client leaves any addresses that the client
has associated with the IA that are not included in the IA option
unchanged.
If the Reply was received in response to a Request, Renew or Rebind - Record T1 and T2 times
message, the client must update the information it has recorded about
IAs from the IA options contained in the Reply message:
- 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 lifetime of 0 in the IA Address option have a lifetime of 0 in the IA Address option
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
UnspecFail, the server is indicating that it was unable to process
the message due to an unspecified failure condition. If the client
retransmits the original message to the same server to retry the
desired operation, the client MUST limit the rate at which it
retransmits the message and limit the duration of the time during
which it retransmits the message.
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 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 do
indicate a NotOnLink status. indicate a NotOnLink status.
When the client receives a status code with value NoBinding in an IA When the client receives a NotOnLink status from the server in
from the server in response to a Renew message or a Rebind message, response to a Request, the client can either re-issue the Request
the client sends a Request to reestablish an IA with the server. without specifying any addresses or restart the DHCP server discovery
process (see section 17).
When the client receives a NoAddrsAvail status from the server in
response to a Request, the client can either try another server
(perhaps restarting the DHCP server discovery process) or use the
Information-Request to obtain configuration parameters only.
When the client receives a NoBinding status in an IA from the server
in response to a Renew message or a Rebind message, the client sends
a Request to reestablish an IA with 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
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
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.
18.2.1. Receipt of Request messages In most Reply messages, the server includes options containing
configuration information for the client. The server SHOULD limit
the options returned to the client so that the DHCP message header
and options do not cause fragmentation. If the client included an
Option Request option in its message, the server includes options
in the Reply message containing configuration parameters for all of
the options identified in the Option Request option that the server
has been configured to return to the client. The server MAY return
additional options to the client if it has been configured to do so.
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 to which the server has not sent a unicast option, the server client 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 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
skipping to change at page 40, line 43 skipping to change at page 40, line 36
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 to 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 value NotOnLink.
If the server cannot assign any addresses to any of the IAs in the If the server cannot assign any addresses to an IA in the message
message from the client, the server MUST include the IAs in the Reply from the client, the server MUST include the IA in the Reply message
message with Status Code option set to NoAddrsAvail and no addresses with no addresses in the IA and a Status Code option in the IA
in the IA. 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 and
records the IA as a new client binding. records the IA as a new client binding.
If the server will use a reconfigure nonce value for security of The server MUST add a Reconfigure Accept option to indicate whether
Reconfigure messages, the server generates a new nonce value for the the client should accept any Reconfigure messages.
client, records the value and includes it in a Reconfigure Nonce
option (see section 22.20) 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. The server SHOULD limit information to be returned to the client as described in
the options returned to the client so that the DHCP message header section 18.2.
and options do not cause fragmentation. If the client has included
an Option Request option in the Solicit message, the server includes
options in the Advertise message containing configuration parameters
for all of the options identified in the Option Request option that
the server has been configured to return to the client. The server
MAY return additional options to the client if it has been configured
to do so.
18.2.2. Receipt of Confirm messages
When the server receives a Confirm message, the server determines 18.2.2. Receipt of Confirm Messages
if the addresses in the Confirm message are appropriate to the
link to which the client is attached. The server ignores the T1
and T2 fields in the IA options and the preferred-lifetime and
valid-lifetime fields in the IA Address options.
If all of the addresses in the Confirm message pass this test, the When the server receives a Confirm message, the server determines if
server returns a status of Success. If any of the addresses do not the addresses in the Confirm message are appropriate to the link to
pass this test, the server returns a status of NotOnLink. which the client is attached. If all of the addresses in the Confirm
message pass this test, the server returns a status of Success. If
any of the addresses do not pass this test, the server returns a
status of NotOnLink. If the server is unable to perform this test
(for example, the server does not have information about prefixes on
the link to which the client is connected) or there were no addresses
in any of the IAs sent by the client, the server MUST NOT send a
reply to the client.
If the server does not find any addresses that are not appropriate to The server ignores the T1 and T2 fields in the IA options and the
the link to which the client is connected, but cannot determine if preferred-lifetime and valid-lifetime fields in the IA Address
some of the addresses are appropriate to the link or not appropriate options.
to the link, the server MUST NOT send a reply to the client. For
example, if the server does not have information about prefixes on
the link to which the client is connected, the server does not reply.
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, copying the transaction ID from the Confirm message into
the 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 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 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
skipping to change at page 42, line 17 skipping to change at page 41, line 55
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
to the link to which the client is attached, the server returns the to 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, and includes a Status Code option with value Success. The times. The server may choose to change the list of addresses and the
server may choose to change the list of addresses and the lifetimes lifetimes of addresses in IAs that are returned to the client.
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, copying the transaction ID from the Renew message into the
transaction-id field. 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.
18.2.4. Receipt of Rebind messages The server includes other options containing configuration
information to be returned to the client as described in
section 18.2.
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 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 the 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 attache, the server appropriate to 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, copying the transaction ID from the Rebind message into the
transaction-id field. 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. The server SHOULD limit information to be returned to the client as described in
the options returned to the client so that the DHCP message header section 18.2.
and options do not cause fragmentation. If the client has included
an Option Request option in the Solicit message, the server includes
options in the Advertise message containing configuration parameters
for all of the options identified in the Option Request option that
the server has been configured to return to the client . The server
MAY return additional options to the client if it has been configured
to do so.
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 is requesting configuration information that does not client is requesting configuration information that does not
include the assignment of any addresses. The server determines all include the assignment of any addresses. The server determines all
configuration parameters appropriate to the client, based on the configuration parameters appropriate to the client, based on the
server configuration policies known to the server. server configuration policies known to the server.
If the Information-request message specifies an IA option or an IA_TA
option, the server responds by sending a Reply message containing
a Server Identifier option, a Client Identifier option if one was
included in the Information-request message and a Status Code option
with status UnSpecFail.
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, 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 The server includes options containing configuration information to
to be returned to the client. The server SHOULD limit the options be returned to the client as described in section 18.2.
returned to the client so that the DHCP message header and options
do not cause fragmentation. If the client has included an Option
Request option in the Solicit message, the server includes options in
the Advertise message containing configuration parameters for all of
the options identified in the Option Request option that the server
has been configured to return to the client . The server MAY return
additional options to the client if it has been configured to do so.
If the Information-request message received from the client did If the Information-request message received from the client did
not include a Client Identifier option, the server SHOULD respond not include a Client Identifier option, the server SHOULD respond
with a Reply message containing any configuration parameters with a Reply message containing any configuration parameters
that are not determined by the client's identity. If the server that are not determined by the client's identity. If the server
chooses not to respond, the client may continue to retransmit the chooses not to 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 to which the server has not sent a unicast option, the server client 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 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 message are in a binding for the client and the addresses in
the IAs have been assigned by the server to those IAs, the server the IAs have been assigned by the server to those IAs, the server
deletes the addresses from the IAs and makes the addresses available deletes the addresses from the IAs and makes the addresses available
for assignment to other clients. The server ignores addresses not for assignment to other clients. The server ignores addresses not
assigned to the IA, and it may make a notification if it finds such assigned to the IA, although it may choose to log an error.
an address.
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 Server Identifier option with the server's DUID and a Client a 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 to which the server has not sent a unicast option, the server client 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 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
skipping to change at page 45, line 11 skipping to change at page 44, line 33
After all the address have been processed, the server generates a After all the address 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 Server Identifier option with the server's DUID and a Client a Server Identifier option with the server's DUID and a Client
Identifier option with the client's DUID. For each IA in the Decline Identifier option with the client's DUID. For each IA in the Decline
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.
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, the If the original message was received in a Relay-forward message,
server constructs a Relay-reply message with the Reply message in the the server constructs a Relay-reply message with the Reply message
payload of a "server-message" option. If the Relay-forward messages in the payload of a Relay Message option (see section!22.10). If
included an Interface-id option, the server copies that option to the the Relay-forward messages included an Interface-id option, the
Relay-reply message. The server unicasts the Relay-reply message server copies that option to the Relay-reply message. The server
directly to the relay agent using the address in the source address unicasts the Relay-reply message directly to the relay agent using
field from the IP datagram in which the Relay-forward message was the address in the source address field from the IP datagram in which
received. the 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 obtain new addresses and other configuration information. For to 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 the transaction-id field to 0. The server includes a Server sets 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 been of what information has been changed or new information that has
added. In particular, the server specifies the IA option in the been added. In particular, the server specifies the IA option in
Option Request option if the server wants the client to obtain new the Option Request option if the server wants the client to obtain
address information. new address information. If the server identifies the IA option
in the Option Request option, the server MUST include an IA option
that contains no other sub-options to identify each IA that is to be
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 one of the following two security messages. The server MUST use DHCP authentication in the Reconfigure
mechanisms: message.
- The server includes a Reconfigure Nonce option containing the
reconfigure nonce value currently assigned to the client
- The server includes an authentication option in the Reconfigure
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.
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. The server may obtain the address of the client through DHCP client. If the server does not have an address to which it can
the information that the server has about clients that have been in send the Reconfigure message directly to the client, the server uses
contact with the server, or the server may be configured with the a Relay-reply message (as described in section 20.3) to send the
address of the client through some external agent. Reconfigure message to a relay agent that will relay the message to
the client. The server may obtain the address of the client (and
the appropriate relay agent, if required) through the information
that the server has about clients that have been in contact with the
server, 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 Reconfigure message to additional clients while previous send a 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 from the client in REC_TIMEOUT milliseconds, the server message from the client in REC_TIMEOUT milliseconds, the server
retransmits the Reconfigure message, doubles the REC_TIMEOUT value retransmits the Reconfigure message, doubles the REC_TIMEOUT value
and waits again. The server continues this process until REC_MAX_RC and waits 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
configuration parameters. configuration parameters.
The server MAY include options containing the IAs and new values for The server MAY include options containing the IAs and new values for
other configuration parameters in the Reply message, even if those other configuration parameters in the Reply message, even if those
IAs and parameters were not requested in the Renew message from the IAs and parameters were not requested in the Renew message from the
client. client.
19.3. Receipt of Information-request messages 19.3. Receipt of Information-request 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.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 MUST accept Reconfigure messages sent to UDP port 546 on A client receives Reconfigure messages sent to 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 initiates a
transaction with the server by sending a Renew or Information-request
message. The client ignores the transaction-id field in the received
Reconfigure message. While the transaction is in progress, the
client silently discards any Reconfigure messages it receives.
The client responds with either a Renew message or an Upon receipt of a valid Reconfigure message, the client responds with
Information-request message as indicated by the Reconfigure either a Renew message or an Information-request message as indicated
Message option (as defined in section 22.19). by the Reconfigure Message option (as defined in section 22.19). The
client ignores the transaction-id field in the received Reconfigure
message. While the transaction is in progress, the client silently
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 to complete a successful message exchange. Once client to complete a successful message exchange. Once
the client has received a Reconfigure, the client proceeds the client has received a Reconfigure, the client proceeds
with the message exchange (retransmitting the Renew or with the message exchange (retransmitting the Renew or
Information-request message if necessary); the client Information-request message if necessary); the client
ignores any additional Reconfigure messages until the ignores any additional Reconfigure messages until the
exchange is complete. Subsequent Reconfigure messages cause exchange is complete. Subsequent Reconfigure messages cause
skipping to change at page 48, line 35 skipping to change at page 48, line 5
It might be possible for a duplicate or retransmitted It might be possible for a duplicate or retransmitted
Reconfigure to be sufficiently delayed (and delivered out of Reconfigure to be sufficiently delayed (and delivered out of
order) to arrive at the client after the exchange (initiated order) to arrive at the client after the exchange (initiated
by the original Reconfigure) has been completed. In this by the original Reconfigure) has been completed. In this
case, the client would initiate a redundant exchange. The case, the client would initiate a redundant exchange. The
likelihood of delayed and out of order delivery is small likelihood of delayed and out of order delivery is small
enough to be ignored. The consequence of the redundant enough to be ignored. The consequence of the redundant
exchange is inefficiency rather than incorrect operation. exchange is inefficiency rather than incorrect 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 Renew message in exactly the same manner as outlined in the Renew message in exactly the same manner as outlined in
section 18.1.3, with the exception: if the Reconfigure message section 18.1.3, with the exception that the client copies the Option
contains an Option Request option that includes the IA option code, Request option and any IA options from the Reconfigure message into
the client MUST include IA options containing the addresses the the Renew message.
client currently has assigned to ALL IAs for the interface through
which the Reconfigure message was received.
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 does with Renew or Information-request messages generated as part it does with Renew or Information-request messages generated as part
of a client-initiated configuration exchange. See sections 18.1.3 of a client-initiated configuration exchange. See sections 18.1.3
and 18.1.5 for details. If the client does not receive a response and 18.1.5 for details. If the client does not receive a response
from the server by the end of the retransmission process, the client from 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
The relay agent MAY be configured to use a list of destination The relay agent MAY be configured to use a list of destination
addresses, which MAY include unicast addresses, the All_DHCP_Servers addresses, which MAY include unicast addresses, the All_DHCP_Servers
multicast address, or other addresses selected by the network multicast address, or other addresses selected by the network
administrator. If the relay agent has not been explicitly administrator. If the relay agent has not been explicitly
configured, it MUST use the All_DHCP_Servers multicast address as the configured, it MUST use the All_DHCP_Servers multicast address as the
default. default.
20.1. Forwarding a client message or a Relay-forward message If the relay agent relays messages to the All_DHCP_Servers multicast
address or other multicast addresses, it sets the Hop Limit field to
32.
A relay agent forwards both messages from clients and Relay-forward 20.1. Relaying a Client Message or a Relay-forward Message
A relay agent relays both messages from clients and Relay-forward
messages from other relay agents. When a relay agent receives a messages from other relay agents. When a relay agent receives a
valid message to be forwarded, 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 of the IP datagram in which the message was received to the header 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. Forwarding a message from a client 20.1.1. Relaying a Message from a Client
If the relay agent received the message to be forwarded from a If the relay agent received the message to be relayed from a client,
client, the relay agent places a global or site-scoped address with a the relay agent places a global or site-scoped address with a prefix
prefix assigned to the link on which the client should be assigned an assigned to the link on which the client should be assigned an
address in the link-address field. This address will be used by the address in the link-address field. This address will be used by the
server to determine the link from which the client should be assigned server to determine the link from which the client should be assigned
an address and other configuration information. The hop-count in the an address and other configuration information. The hop-count in the
Relay-forward message is set to 0. Relay-forward message is set to 0.
If the relay agent cannot use the address in the link-address field If the relay agent cannot use the address in the link-address field
to identify the interface through which the response to the client to identify the interface through which the response to the client
will be forwarded, the relay agent MUST include an Interface-id will be relayed, the relay agent MUST include an Interface-id option
option (see section 22.18) in the Relay-forward message. The server (see section 22.18) in the Relay-forward message. The server will
will include the Interface-id option in its Relay-reply message. include the Interface-id option in its Relay-reply message. The
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. Forwarding 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 and the hop-count in the message is greater than or equal to message 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 sets the link-address field to 0 and sets the
hop-count field to the value of the hop-count field in the received
message incremented by 1.
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. field in the Relay-forward message and sets the hop-count field to
the value of the hop-count field in the received message incremented
by 1.
20.2. Forwarding a Relay-reply message 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
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
the link-address field to a global or site-local address assigned
to the interface on which the message was received, or includes an
Interface-ID option to identify the interface on which the message
was received.
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 forwards 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 agent forwards the message from the server to the client on relay agent relays the message from the server to the client on
the link identified by the Interface-id option. Otherwise, if the the link identified by the Interface-id option. Otherwise, if the
link-address field is not set to zero, the relay agent forwards 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.
If the Relay-reply message does not include an Interface-id option 20.3. Construction of Relay-reply Messages
and the link-address field is zero, the address in the peer-address
field must be a global address or a site-local address (and the
device on which the relay agent is running belongs to only one
site). If the address in the peer-address field does not meet this
condition, the relay agent discards the Relay-reply message and
SHOULD communicate an error condition.
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 forwarded to the server if the original message from the client was relayed to the server in
in a Relay-forward message. The response to the client MUST be a Relay-forward message or to send a Reconfigure message to a client
forwarded through the same relay agents as the original client if the server does not have an address it can use to send the message
message. The server causes this to happen by creating a Relay-reply directly to the client.
message that includes a Relay Message option containing the message
for the next relay agent in the return path to the client. The
contained Relay-reply message contains another Relay Message option
to be sent to the next relay agent, and so on. The server must
record the contents of the peer-address fields in the received
message so it can construct the appropriate Relay-reply message
carrying the response from the server.
For example, if client C sent a message that was forwarded by relay A response to the client MUST be relayed through the same relay
agent A to relay agent B and then to the server, the server would the agents as the original client message. The server causes this to
following Relay-Reply message to relay agent B: happen by creating a Relay-reply message that includes a Relay
Message option containing the message for the next relay agent in
the return path to the client. The contained Relay-reply message
contains another Relay Message option to be sent to the next relay
agent, and so on. The server must record the contents of the
peer-address fields in the received message so it can construct
the appropriate Relay-reply message carrying the response from the
server.
For example, if client C sent a message that was relayed by relay
agent A to relay agent B and then to the server, the server would
send the following Relay-Reply message to relay agent B:
msg-type: RELAY-REPLY msg-type: RELAY-REPLY
hop-count: 0 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>
21. Authentication of DHCP messages When sending a Reconfigure message to a client through a relay
agent, the server creates a Relay-reply message that includes a
Relay Message option containing the Reconfigure message for the
next relay agent in the return path to the client. The server sets
the peer-address field in the Relay-reply message header to the
address of the client, and sets the link-address field as required
by the relay agent to relay the Reconfigure message to the client.
The server obtains the addresses of the client and the relay agent
through prior interaction with the client or through some external
mechanism.
21. Authentication of DHCP Messages
Some network administrators may wish to provide authentication of Some network administrators may wish to provide authentication of
the source and contents of DHCP messages. For example, clients may the source and contents of DHCP messages. For example, clients may
be subject to denial of service attacks through the use of bogus be subject to denial of service attacks through the use of bogus
DHCP servers, or may simply be misconfigured due to unintentionally DHCP 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 [6]. authentication for DHCPv4 [6].
21.1. DHCP threat model 21.1. Security of Messages Sent Between Servers and Relay Agents
The threat to DHCP is inherently an insider threat (assuming a
properly configured network where DHCPv6 ports are blocked on the
perimeter gateways of the enterprise). Regardless of the gateway
configuration, however, the potential attacks by insiders and
outsiders are the same.
The attack specific to a DHCP client is the possibility of the
establishment of a "rogue" server with the intent of providing
incorrect configuration information to the client. The motivation
for doing so may be to establish a "man in the middle" attack or it
may be for a "denial of service" attack.
There is another threat to DHCP clients from mistakenly or
accidentally configured DHCP servers that answer DHCP client requests
with unintentionally incorrect configuration parameters.
The threat specific to a DHCP server is an invalid client Relay agents and servers that exchange messages securely use the
masquerading as a valid client. The motivation for this may be for IPsec mechanisms for IPv6 [10]. Relay agents and servers MUST
"theft of service", or to circumvent auditing for any number of support manual configuration and installation of static keys. If
nefarious purposes. a client message is relayed through multiple relay agents, each of
the relay agents must have established independent, pairwise trust
relationships. That is, if messages from client C will be relayed by
relay agent A to relay agent B and then to the server, relay agents A
and B must be configured to use IPSec for the messages they exchange,
and relay agent B and the server must be configured to use IPSec for
the messages they exchange.
The threat common to both the client and the server is the resource Relay agents and servers that support secure relay agent to server
"denial of service" (DoS) attack. These attacks typically involve or relay agent to relay agent communication, MUST include an IPsec
the exhaustion of available addresses, or the exhaustion of CPU implementation with the following restrictions:
or network bandwidth, and are present anytime there is a shared
resource.
This threat model does not consider the privacy of the contents - The IPsec implementation MUST use ESP
of DHCP messages to be important. DHCP is not used to exchange
authentication or configuration information that must be kept secret
from other networks nodes.
21.2. Security of messages sent between servers and relay agents - Packet authentication MUST be applied
Relay agents and servers that choose to exchange messages securely - Encryption MAY be applied (i.e., NULL encryption can be used)
use the IPsec mechanisms for IPv6 [10]. Relay agents and servers
MUST support manual configuration and installation of static keys.
If a client message is forwarded through multiple relay agents, each
of the relay agents must have established independent, pairwise trust
relationships. That is, if messages from client C will be forwarded
by relay agent A to relay agent B and then to the server, relay
agents A and B must be configured to use IPSec for the messages they
exchange, and relay agent B and the server must be configured to use
IPSec for the messages they exchange.
21.3. Summary of DHCP authentication 21.2. Summary of DHCP Authentication
Authentication of DHCP messages is accomplished through the use of Authentication of DHCP messages is accomplished through the use of
the Authentication option (see section 22.11). The authentication the Authentication option (see section 22.11). The authentication
information carried in the Authentication option can be used to information carried in the Authentication option can be used to
reliably identify the source of a DHCP message and to confirm that reliably identify the source of a DHCP message and to confirm that
the contents of the DHCP message have not been tampered with. the contents of the DHCP message have not been tampered with.
The Authentication option provides a framework for multiple The Authentication option provides a framework for multiple
authentication protocols. One such protocol is defined here. authentication protocols. Two such protocols are defined here.
Other protocols defined in the future will be specified in separate Other protocols defined in the future will be specified in separate
documents. documents.
Any DHCP message MUST NOT include more than one Authentication
option.
The protocol field in the Authentication option identifies the The protocol field in the Authentication option identifies the
specific protocol used to generate the authentication information specific protocol used to generate the authentication information
carried in the option. The algorithm field identifies a specific carried in the option. The algorithm field identifies a specific
algorithm within the authentication protocol; for example, the algorithm within the authentication protocol; for example, the
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.4. 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 set to the value of a monotonically increasing counter. Using be set to the value of a monotonically increasing counter. Using
a counter value such as the current time of day (for example, an a counter value such as the current time of day (for example, an
NTP-format timestamp [12]) can reduce the danger of replay attacks. NTP-format timestamp [12]) can reduce the danger of replay attacks.
This method MUST be supported by all protocols. This method MUST be supported by all protocols.
21.5. Delayed authentication protocol 21.4. Delayed Authentication Protocol
If the protocol field is 1, 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 replies
with an Advertise message that includes authentication information. with an Advertise message that includes authentication information.
This authentication information contains a nonce value generated by This authentication information contains a nonce value generated by
the source as a message authentication code (MAC) to provide message the source as a message authentication code (MAC) to provide message
authentication and entity authentication. authentication and entity authentication.
The use of a particular technique based on the HMAC protocol [11] The use of a particular technique based on the HMAC protocol [11]
using the MD5 hash [19] is defined here. using the MD5 hash [19] is defined here.
21.5.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 Authentication option carries the Protocol,
Algorithm and fields, but no Replay detection or Authentication
information.
In an Advertise, Request, Renew, Rebind, Confirm, Decline, Release
or Information-request message, the Authentication option carries
the Protocol, Algorithm, RDM and Replay detection fields and
Authentication information.
A DHCP message MUST NOT contain more than one Authentication option In a Solicit message, the client fills in the protocol, algorithm
when using the delayed authentication protocol. and RDM fields in the Authentication option with the client's
preferences. The client sets the replay detection field to zero and
omits the authentication information field. The client sets the
option-len field to 11.
The format of the Authentication information is: In all other messages, the protocol and algorithm fields identifies
the method used to construct the contents of the authentication
information field. The RDM field identifies the method used to
construct the contents of the replay detection field. 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key ID | | DHCP realm |
| (variable length) |
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| key ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| HMAC-MD5 | | HMAC-MD5 |
| (128 bits) | | (128 bits) |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The following definitions will be used in the description of the DHCP realm The DHCP realm that identifies the key used to
authentication information for delayed authentication, algorithm 1: generate the HMAC-MD5 value
Replay Detection - as defined by the RDM field key ID The key identifier that identified the key used to
K - a key (secret value) shared generate the HMAC-MD5 value
between the source and
destination of the message; HMAC-MD5 The message signature generated by applying MD5 to
each key has a unique the DHCP message using the key identified by the DHCP
identifier (key ID) realm, client DUID and key ID
key ID - the unique identifier for the key value
used to generate the MAC for this message
HMAC-MD5 - the MAC generating function.
The sender computes the MAC using the HMAC generation algorithm [11] The sender computes the MAC using the HMAC generation algorithm [11]
and the MD5 hash function [19]. The entire DHCP message (setting and the MD5 hash function [19]. The entire DHCP message (setting
the MAC field of the authentication option to zero), including the the MAC field of the authentication option to zero), including the
DHCP message header and the options field, is used as input to the DHCP message header and the options field, is used as input to the
HMAC-MD5 computation function. The 'key ID' field MUST be set to the HMAC-MD5 computation function.
identifier of the key used to generate the MAC.
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 technique, such as HMAC-SHA, will be specified as different technique, such as HMAC-SHA, will be specified as
a separate protocol. a separate protocol.
Delayed authentication requires a shared secret key for each The DHCP realm used to identify authentication keys is
client on each DHCP server with which that client may wish chosen to be unique among administrative domains. Use of
to use the DHCP protocol. Each key has a unique identifier the DHCP realm allows DHCP administrators to avoid conflict
that can be used by a receiver to determine which key was in the use of key identifiers, and allows a host using
used to generate the MAC in the DHCP message. Therefore, DHCP to use authenticated DHCP while roaming among DHCP
delayed authentication may not scale well in an architecture administrative domains.
in which a DHCP client connects to multiple administrative
domains.
21.5.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 value in the replay detection field is acceptable according to the value in the replay detection field is acceptable according to
the replay detection method specified by the RDM field. Next, the the replay detection method specified by the RDM field. Next, the
receiver computes the MAC as described in [11]. The entire DHCP receiver computes the MAC as described in [11]. 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 used as input to the HMAC-MD5 computation function. If the MAC is 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.5.3. Key utilization 21.4.3. Key Utilization
Each DHCP client has a key, K. The server uses the client's DUID to Each DHCP client has a set of keys. Each key is identifier by <DHCP
identify the client's key. The client uses its key to encode any realm, client DUID, key id>. Each key also has a lifetime. The key
messages it sends to the server and to authenticate and verify any may not be used past the end of its lifetime. The client's keys
messages it receives from the server. The client's key is initially are initially distributed to the client through some out-of-band
distributed to the client through some out-of-band mechanism, and mechanism. The lifetime for each key is distributed with the key.
is stored locally on the client for use in all authenticated DHCP Mechanisms for key distribution and lifetime specification are beyond
messages. Once the client has been given its key, it uses that key the scope of this document.
for all transactions even if the client's configuration changes; for
example, if the client is assigned a new network address.
Each DHCP server stores or is able to obtain in a secure manner the The client and server use one of the client's keys to authenticate
keys for all authorized clients. To authenticate the identity of DHCP messages during a session (until the next Solicit message
individual clients, each client must be configured with a unique key broadcast by the client).
and a key ID for that key.
21.5.4. Client considerations for delayed authentication protocol 21.4.4. Client Considerations for Delayed Authentication Protocol
21.5.4.1. Sending Solicit messages The client announces its intention to use DHCP authentication by
including an Authentication option in its Solicit message. 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
exchanged during the session.
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.5. 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.5.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.5.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 policy
on the client. According to client policy, the client MAY choose to on the client. According to client policy, the client MAY choose to
respond to a Advertise message that has not been authenticated. respond to a 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. If local users are not explicitly informed that the client attacks. If local users are not explicitly informed that the client
skipping to change at page 56, line 26 skipping to change at page 55, line 37
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 or other authentication information. A client MAY choose to key 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.5.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.5. 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.5.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.5.5.1), the client MUST use the same key exchange (see section 21.4.5.1), the client MUST use the same key to
to generate the authentication information. If the client has not generate the authentication information throughout the session.
previously been given a key with the server, the client MUST use
a key that has been selected for the client through some external
mechanism.
21.5.4.5. Receiving Reply messages 21.4.4.5. Receiving Reply Messages
If the client authenticated the Advertise it accepted, the client If the client authenticated the Advertise it accepted, the client
MUST validate the associated Reply message from the server. The MUST validate the associated Reply message from the server. The
client MUST discard the Reply if the message fails to pass validation client MUST discard the Reply if the message fails to pass the
and MAY log the validation failure. If the Reply fails to pass validation test and MAY log the validation failure. If the Reply
validation, the client MUST restart the DHCP configuration process by fails to pass the validation test, the client MUST restart the DHCP
sending a Solicit message. configuration process by sending a Solicit message.
If the client accepted an Advertise message that did not include If the client accepted an Advertise message that did not include
authentication information or did not pass the validation test, the authentication information or did not pass the validation test, the
client MAY accept an unauthenticated Reply message from the server. client MAY accept an unauthenticated Reply message from the server.
21.5.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
validation and MAY log the validation failure. the validation test and MAY log the validation failure.
21.5.5. Server considerations for delayed authentication protocol 21.4.5. Server Considerations for Delayed Authentication Protocol
21.5.5.1. Receiving Solicit messages and Sending Advertise messages After receiving a Solicit message that contains an Authentication
option, the server selects a key for the client based on the client's
DUID and key selection policies with which the server has been
configured. The server identifies the selected key in the Advertise
message and uses the key to validate subsequent messages between the
client and the server.
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.5. 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.5.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.5.2. If the message fails to pass message as specified in section 21.4.2. If the message fails to pass
validation or the server does not know the key identified by the 'key the validation test or the server does not know the key identified
ID' field, the server MUST discard the message and MAY choose to log by the 'key ID' field, the server MUST discard the message and MAY
the validation failure. choose to log the validation failure.
If the message passes the validation procedure, the server responds If the message passes the validation test, the server responds to
to the specific message as described in section 18.2. The server the specific message as described in section 18.2. The server MUST
MUST include authentication information generated using the key include authentication information generated using the key identified
identified in the received message as specified in section 21.5. in the received message as specified in section 21.4.
21.5.5.3. Sending Reconfigure messages 21.5. Reconfigure Key Authentication Protocol
The server MUST include an Authentication option in a Reconfigure The Reconfigure key authentication protocol provides protection
message, generated as specified in section 21.5 using the key the against misconfiguration of a client caused by a Reconfigure message
server initially selected for the client to which the Reconfigure sent by a malicious DHCP server. In this protocol, a DHCP server
message is to be sent. sends a Reconfigure Key to the client in the initial exchange of
DHCP messages. The client records the Reconfigure Key for use in
authenticating subsequent Reconfigure messages from that server. The
server then includes an HMAC computed from the Reconfigure Key in
subsequent Reconfigure messages.
If the server has not previously selected a key for the client, the Both the Reconfigure Key sent from the server to the client and
server MUST use a key that has been selected for the client through the HMAC in subsequent Reconfigure messages are carried as the
some external mechanism. Authentication information in an Authentication option. The format
of the Authentication information is defined in the following
section.
22. DHCP options The Reconfigure Key protocol is used (initiated by the server) only
if the client and server are not using any other authentication
protocol and the client and server have negotiated to use Reconfigure
messages.
21.5.1. Use of the Authentication Option in the Reconfigure Key
Authentication Protocol
The following fields are set in an Authentication option for the
Reconfigure Key Authentication Protocol:
protocol 3
algorithm 1
RDM 0
The format of the Authentication information for the Reconfigure Key
Authentication Protocol is:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Value (128 bits) |
+-+-+-+-+-+-+-+-+ |
. .
. .
. +-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Type of data in Value field carried in this option:
1 Reconfigure Key value (used in Reply message)
2 HMAC-MD5 digest of the message (used in Reconfigure
message)
Value Data as defined by field
21.5.2. Server considerations for Reconfigure Key protocol
The server selects a Reconfigure Key for a client during the
Request/Reply, Solicit/Reply or Information-request/Reply message
exchange. The server records the Reconfigure Key and transmits that
key to the client in an Authentication option in the Reply message.
The Reconfigure Key is 128 bits long, and MUST be a cryptographically
strong random or pseudo-random number that cannot easily be
predicted.
To provide authentication for a Reconfigure message, the server
selects a replay detection value according to the RDM selected by
the server, and computes an HMAC-MD5 of the Reconfigure message
using the Reconfigure Key for the client. The server computes the
HMAC-MD5 over then entire DHCP Reconfigure message, including the
Authentication option; the HMAC-MD5 field in the Authentication
option is set to zero for the HMAC-MD5 computation. The server
includes the HMAC-MD5 in the authentication information field in an
Authentication option included in the Reconfigure message sent to the
client.
21.5.3. Client considerations for Reconfigure Key protocol
The client will receive a Reconfigure Key from the server in the
initial Reply message from the server. The client records the
Reconfigure Key for use in authenticating subsequent Reconfigure
messages.
To authenticate a Reconfigure message, the client computes an
HMAC-MD5 over the DHCP Reconfigure message, using the Reconfigure
Key received from the server. If this computed HMAC-MD5 matches
the value in the Authentication option, the client accepts the
Reconfigure message.
22. DHCP Options
Options are used to carry additional information and parameters Options are used to carry additional information and parameters
in DHCP messages. Every option shares a common base format, as in 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) |
skipping to change at page 58, line 44 skipping to change at page 59, line 38
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 identifying a
client between a client and a server.
The format of the Client Identifier option is: 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
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) .
. . . .
skipping to change at page 59, line 17 skipping to change at page 60, line 4
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 identifying a
server between a client and a server.
The format of the Server Identifier option is: 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
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
A server MUST process any message it receives that contains a Server 22.4. Identity Association for Non-temporary Addresses Option
Identifier option with a DUID that matches the server's DUID.
22.4. Identity Association option The Identity Association for Non-temporary Addresses option (IA_NA
option) is used to carry an identity association, the parameters
associated with the IA and the non-temporary addresses associated
with the IA_NA.
The Identity Association option (IA option) is used to carry an Addresses appearing in an IA_NA option are not temporary addresses
identity association, the parameters associated with the IA and the (see section 22.5).
addresses associated with the IA.
Addresses appearing in an IA option are not temporary addresses (see The format of the IA_NA option is:
section 22.5). The format of the IA 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 | option-len | | OPTION_IA_NA | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) | | IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T1 | | T1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T2 | | T2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. IA-options . . IA_NA-options .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_IA (3) option-code OPTION_IA_NA (3)
option-len 12 + length of IA-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; the IAID
must be unique among the identifiers for all must be unique among the identifiers for all
of this client's IAs. The number space for of this client's IAs. The number space for
IA IAIDs is separate from the number space IA_NA IAIDs is separate from the number space
for IA_TA IAIDs. 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 server from which the addresses in the IA_NA
were obtained to extend the lifetimes of were obtained to extend the lifetimes of the
the addresses assigned to the IA; 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; 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-options Options associated with this IA. IA_NA-options Options associated with this IA_NA.
The IA-options field encapsulates those options that are specific The IA_NA-options field encapsulates those options that are specific
to this IA. For example, all of the IA Address Options carrying the to this IA_NA. For example, all of the IA Address Options carrying
addresses associated with this IA are in the IA-options field. the addresses associated with this IA are in the IA_NA-options field.
An IA option may only appear in the options area of a DHCP message. An IA_NA option may only appear in the options area of a DHCP
A DHCP message may contain multiple IA options. message. A DHCP message may contain multiple IA_NA options.
The status of any operations involving this IA is indicated in a The status of any operations involving this IA_NA is indicated in a
Status Code option in the IA-options field. Status Code option in the IA_NA-options field.
Note that an IA has no explicit "lifetime" or "lease length" of its Note that an IA_NA has no explicit "lifetime" or "lease length" of
own. When the valid lifetimes of all of the addresses in an IA its own. When the valid lifetimes of all of the addresses in an
have expired, the IA can be considered as having expired. T1 and IA_NA have expired, the IA_NA can be considered as having expired.
T2 are included to give servers explicit control over when a client T1 and T2 are included to give servers explicit control over when a
recontacts the server about a specific IA. client recontacts the server about a specific IA_NA.
In a message sent by a client to a server, values in the T1 and In a message sent by a client to a server, values in the T1 and T2
T2 fields indicate the client's preference for those parameters. fields indicate the client's preference for those parameters. The
The client may send 0 if it has no preference for T1 and T2. In a client sets T1 and T2 to 0 if it has no preference for those values.
message sent by a server to a client, the client MUST use the values In a message sent by a server to a client, the client MUST use the
in the T1 and T2 fields for the T1 and T2 parameters. The values in values in the T1 and T2 fields for the T1 and T2 parameters. The
the T1 and T2 fields are the number of seconds until T1 and T2. values in the T1 and T2 fields are the number of seconds until T1 and
T2.
The server selects the T1 and T2 times to allow the client to extend The server selects the T1 and T2 times to allow the client to extend
the lifetimes of any addresses in the IA before the lifetimes expire, the lifetimes of any addresses in the IA_NA before the lifetimes
even if the server is unavailable for some short period of time. expire, even if the server is unavailable for some short period of
Recommended values for T1 and T2 are .5 and .8 times the shortest time. Recommended values for T1 and T2 are .5 and .8 times the
preferred lifetime of the addresses in the IA, respectively. If the shortest preferred lifetime of the addresses in the IA, respectively.
server does not intend for a client to extend the lifetimes of the If the time at which the addresses in an IA_NA are to be renewed is
addresses in an IA, the server sets T1 and T2 to 0. to be left to the discretion of the client, the server sets T1 and T2
to 0.
T1 is the time at which the client begins the lifetime extension
process by sending a Renew message to the server that originally
assigned the addresses to the IA. T2 is the time at which the client
starts sending a Rebind message to any server.
T1 and T2 are specified as unsigned integers that specify the time
in seconds relative to the time at which the messages containing the
option is received.
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 Temporary Addresses (IA_TA) option is
used to carry an IA, the parameters associated with the IA and the used to carry an IA_TA, the parameters associated with the IA_TA and
addresses associated with the IA. All of the addresses in this option the addresses associated with the IA_TA. All of the addresses in this
are used by the client as temporary addresses, as defined in RFC option are used by the client as temporary addresses, as defined in
3041. RFC 3041 [15]. The format of the IA_TA option is:
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-options . . IA_TA-options .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_IA_TA (4) option-code OPTION_IA_TA (4)
option-len 4 + length of IA-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; the IAID IAID must be unique among the identifiers
must be unique among the identifiers for all for all of this client's IA_TAs. The number
of this client's IAs. The number space for space for IA_TA IAIDs is separate from the
IA_TA IAIDs is separate from the number space number space for IA_NA IAIDs.
for IA IAIDs.
IA-options Options associated with this IA. IA_TA-options Options associated with this IA_TA.
The IA-Options field encapsulates those options that are specific The IA_TA-Options field encapsulates those options that are specific
to this IA. For example, all of the IA Address Options carrying the to this IA_TA. For example, all of the IA Address Options carrying
addresses associated with this IA are in the IA-options field. the addresses associated with this IA_TA are in the IA_TA-options
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 is indicated in a The status of any operations involving this IA_TA is indicated in a
Status Code option in the IA-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 have own. When the valid lifetimes of all of the addresses in an IA_TA
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 request that the lifetimes on temporary addresses be extended MAY request that the lifetimes on temporary addresses be extended
by including the addresses in a IA_TA option sent in a Renew or by including the addresses in a IA_TA option sent in a Renew or
Rebind message to a server. For example, a client would request Rebind message to a server. For example, a client would request
an extension on the lifetime of a temporary address to allow an 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
skipping to change at page 63, line 22 skipping to change at page 64, line 5
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. The IA Address option must be encapsulated in the
Options field of an Identity Association option. The Options field Options field of an Identity Association option. The Options field
encapsulates those options that are specific to this address. 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
skipping to change at page 64, line 30 skipping to change at page 65, line 12
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 An IA Address option may appear only in an IA option or an IA_TA
option. More than one IA Address Options can appear in an IA option option. More than one IA Address Options can appear in an IA option
or an IA_TA 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 message between a client and a server. The format of the Option a 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 65, line 12 skipping to change at page 65, line 42
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 server about options the client wants the server to send to the server about options the client wants the server to send to
the client. A server MAY include an Option Request option in a the 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. The format of the Preference selection of a server by the client.
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)
skipping to change at page 66, line 20 skipping to change at page 67, line 5
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 hasn't
answered in a reasonable time. answered in a reasonable time.
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 |
skipping to change at page 66, line 43 skipping to change at page 67, line 28
. 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, forwarded 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 forwarded 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 Authentication option is described in section 21. The format of
the Authentication option is:
The format of 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 15 + 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
Replay detection The replay detection information for Replay detection The replay detection information for
the RDM the RDM
Authentication information The authentication information, authentication information The authentication information,
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. that it is allowed to unicast messages to the server. The format of
the Server Unicast option is:
The format of 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 |
| | | |
| | | |
skipping to change at page 69, line 19 skipping to change at page 69, line 46
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.
option is:
The format of the Rapid Commit 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
skipping to change at page 70, line 10 skipping to change at page 70, line 41
Reply message. Therefore, if more than one server responds Reply message. Therefore, if more than one server responds
to a Solicit that includes a Rapid Commit option, some to a Solicit that includes a Rapid Commit option, some
servers will commit addresses that are not actually used by servers will commit addresses that are not 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 designing the DHCP service so that only one example, by designing the DHCP service so that only one
server responds to the Solicit or by using relatively short server responds to the Solicit or by using relatively short
lifetimes for assigned addresses. lifetimes for assigned 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 or classes of which the client is a member. A server selects class 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
skipping to change at page 71, line 18 skipping to change at page 71, line 47
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 one or more opaque fields that identify details of the hardware in 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. registered with IANA [9].
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 of which describes some characteristic of the client's hardware each 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.
skipping to change at page 72, line 4 skipping to change at page 72, line 39
each of which describes some characteristic of the client's hardware each 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. The format of this option vendor-specific information.
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. registered with IANA [9].
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 DHCP client that does not receive requested vendor-specific A 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. in the enterprise-number field and are not managed by IANA. Each of
the encapsulated options is formatted as follows:
Each of 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 .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 73, line 17 skipping to change at page 74, line 4
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. A DHCP message MUST NOT contain Enterprise Number in that option.
more than one Vendor-specific Information option with the same
Enterprise Number.
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 agent forwards the message to the client through the interface relay 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . . .
skipping to change at page 74, line 21 skipping to change at page 75, line 7
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
interface SHOULD be stable and remain unchanged, for example, after interface SHOULD be stable and remain unchanged, for example, after
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 |
skipping to change at page 74, line 46 skipping to change at page 75, line 32
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 Nonce option 22.20. Reconfigure Accept Option
If a server uses a reconfigure nonce to provide security for
Reconfigure messages, the server maintains a nonce value for each
client. It initially informs the client of the nonce value and then
includes the nonce value in any Reconfigure message sent to the
client.
The following figure gives the format of the Reconfigure Nonce A client uses the Reconfigure Accept option to announce to the server
option: whether the client is willing to accept Reconfigure messages, and a
server uses this option to tell the client whether or not to accept
Reconfigure messages. The default behavior, in the absence of this
option, means unwillingness to accept Reconfigure messages, or
instruction not to accept Reconfigure messages, for the client and
server messages, respectively. The following figure gives the format
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_NONCE | option-len | | OPTION_RECONF_ACCEPT | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| reconfigure-nonce |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code OPTION_RECONF_NONCE (20) option-code OPTION_RECONF_ACCEPT (20)
option-len 0
option-len 8
reconfigure-nonce reconfigure nonce value sent to the client;
the nonce MUST be a cryptographically strong
random number that cannot easily be guessed
or predicted.
The Reconfigure Nonce option MUST NOT appear in any DHCP message
other than Reply or Reconfigure.
23. Security Considerations 23. Security Considerations
Section 21 describes the DHCP threat model. The primary threat The threat to DHCP is inherently an insider threat (assuming a
to a DHCP client is the incorrect configuration of the client properly configured network where DHCPv6 ports are blocked on the
through a DHCP exchange with a malicious DHCP server. The incorrect perimeter gateways of the enterprise). Regardless of the gateway
configuration may present a denial of service attack by causing configuration, however, the potential attacks by insiders and
communication with a service to fail, or a masquerade attack by outsiders are the same.
causing the client to communicate with a malicious server instead of
a valid server for some service such as DNS or NTP.
A DHCP server may be subject to a theft of service attack by a One attack specific to a DHCP client is the establishment of a
malicious client representing itself as a valid client, or a denial malicious server with the intent of providing incorrect configuration
of service attack in which a malicious client exhausts the supply of information to the client. The motivation for doing so may be
available addresses or consumes all of the computation resources or to mount a "man in the middle" attack that causes the client to
network bandwidth available to the DHCP server. communicate with a malicious server instead of a valid server for
some service such as DNS or NTP. The malicious server may also mount
a denial of service attack through misconfiguration of the client
that causes all network communication from the client to fail.
There is another threat to DHCP clients from mistakenly or
accidentally configured DHCP servers that answer DHCP client requests
with unintentionally incorrect configuration parameters.
A DHCP client may also be subject to attack through the receipt A DHCP client may also be subject to attack through the receipt
of a Reconfigure message from a malicious server that causes the of a Reconfigure message from a malicious server that causes the
client to obtain incorrect configuration information from that client to obtain incorrect configuration information from that
server. Note that although a client sends its response (Renew or server. Note 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 forwarded, a malicious server could send a Reconfigure message to are relayed, a malicious server could send a Reconfigure message to
a client, followed (after an appropriate delay) by a Reply message a client, followed (after an appropriate delay) by a Reply message
that would be accepted by the client. Thus, a malicious server that that would be accepted by the client. Thus, a malicious server that
is not on the network path between the client and the server may is not on the network path between the client and the server may
still be able to mount a Reconfigure attack on a client. The use of still 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
masquerading as a valid client. The motivation for this may be
for theft of service, or to circumvent auditing for any number of
nefarious purposes.
The threat common to both the client and the server is the resource
"denial of service" (DoS) attack. These attacks typically involve
the exhaustion of available addresses, or the exhaustion of CPU
or network bandwidth, and are present anytime there is a shared
resource.
In the case where relay agents add additional options to Relay
Forward messages, the messages exchanged between relay agents and
servers may be used to mount a "man in the middle" or denial of
service attack.
This threat model does not consider the privacy of the contents
of DHCP messages to be important. DHCP is not used to exchange
authentication or configuration information that must be kept secret
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.5 The Delayed Authentication protocol described in section 21.4 uses
uses a secret key that is shared between a client and a server and a secret key that is shared between a client and a server. The
does not attempt to address situations where a client may roam from use of a "DHCP realm" in the shared key allows identification of
one administrative domain to another, i.e. interdomain roaming. administrative domains so that a client can select the appropriate
The use of shared keys may not scale well and does not provide for key or keys when roaming between administrative domains. However,
repudiation of compromised keys. This protocol is focused on solving the Delayed Authentication protocol does not define any mechanism
the intradomain problem where the out-of-band exchange of a shared for sharing of keys, so a client may require separate keys for each
key is feasible. administrative domain it encounters. The use of shared keys may not
scale well and does not provide for repudiation of compromised keys.
This protocol is focused on solving the intradomain problem where the
out-of-band exchange of a shared key is feasible.
The Reconfigure Nonce option (see section 22.20) provides a way The Reconfigure Key protocol described in section 21.5 provides
for a client to confirm the identity of the server from which it protection against use of a Reconfigure message by a malicious DHCP
has received a Reconfigure message. The Reconfigure Nonce option server to mount a denial of service or man-in-the-middle attack on a
protects the client from attack by a malicious server that is not on client.
the network path from the server to the client; a malicious server
between the server and the client can read the nonce value sent
from the server to the client and spoof the server's identity in a
Reconfigure message.
Communication between a server and a relay agent can be secured Communication between a server and a relay agent and communication
through the use of IPSec. The use of manual configuration and between relay agents can be secured through the use of IPSec, as
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
the relay agent and server will belong to the same administrative relay agents and the server will belong to the same administrative
domain and the relay agent 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
skipping to change at page 76, line 52 skipping to change at page 78, line 4
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 - Status codes
- DUID - DUID
- Option codes - Option codes
IANA is requested to manage a registry of values for each of these IANA is requested to manage a registry of values for each of these
name spaces, which are described in the remainder of this section. name spaces, which are described in the remainder of this section.
These name spaces are all to be managed separately from the name These name spaces are all to be managed separately from the name
spaces defined for DHCPv4 [5, 1]. 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 [14]. are assigned via Standards Action [14].
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 [14]. Draft, has received expert review by a designated expert [14]. The
The final assignment of DHCP option codes is through Standards final assignment of DHCP option codes is through Standards Action, as
Action [14]. defined in RFC2434 [14].
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 [6]. RFC3118 [6].
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 is requested to record the following message types (defined
in section 5.3). IANA is requested to maintain a registry of DHCP in section 5.3). IANA is requested to maintain a registry of DHCP
message types. message types.
SOLICIT 1 SOLICIT 1
ADVERTISE 2 ADVERTISE 2
REQUEST 3 REQUEST 3
skipping to change at page 78, line 16 skipping to change at page 79, line 18
DECLINE 9 DECLINE 9
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 is requested to record the following option-codes (as defined in
section 22). IANA is requested to maintain a registry of DHCP option section 22). IANA is requested to maintain a registry of DHCP option
codes. codes.
OPTION_CLIENTID 1 OPTION_CLIENTID 1
OPTION_SERVERID 2 OPTION_SERVERID 2
OPTION_IA 3 OPTION_IA_NA 3
OPTION_IA_TMP 4 OPTION_IA_TA 4
OPTION_IAADDR 5 OPTION_IAADDR 5
OPTION_ORO 6 OPTION_ORO 6
OPTION_PREFERENCE 7 OPTION_PREFERENCE 7
OPTION_ELAPSED_TIME 8 OPTION_ELAPSED_TIME 8
OPTION_CLIENT_MSG 9 OPTION_RELAY_MSG 9
OPTION_SERVER_MSG 10
OPTION_AUTH 11 OPTION_AUTH 11
OPTION_UNICAST 12 OPTION_UNICAST 12
OPTION_STATUS_CODE 13 OPTION_STATUS_CODE 13
OPTION_RAPID_COMMIT 14 OPTION_RAPID_COMMIT 14
OPTION_USER_CLASS 15 OPTION_USER_CLASS 15
OPTION_VENDOR_CLASS 16 OPTION_VENDOR_CLASS 16
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_NONCE 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 is requested to record the status codes defined in the following
table. IANA is requested to manage the definition of additional table. IANA is requested to manage the definition of additional
status codes in the future. status codes in the 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
AuthFailed 2 Authentication failed or nonexistent NoAddrsAvail 2 Server has no addresses available to assign to
AddrUnavail 3 Address unavailable
NoAddrsAvail 4 Server has no addresses available to assign to
the IA(s) the IA(s)
NoBinding 5 Client record (binding) unavailable NoBinding 3 Client record (binding) unavailable
ConfNoMatch 6 Client record Confirm doesn't match IA NotOnLink 4 The prefix for the address is not appropriate to
NotOnLink 7 The prefix for the address is not appropriate to
the link to which the client is attached the link to which the client is attached
UseMulticast 8 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 is requested to record the following DUID types (as defined in
section 9.1). IANA is requested to manage definition of additional section 9.1). IANA is requested to manage definition of additional
DUID types in the future. DUID types in the future.
skipping to change at page 80, line 5 skipping to change at page 80, line 51
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 time and input into the specification. In particular, thanks their time and input into the specification. In particular, thanks
also for the consistent input, ideas, and review by (in alphabetical also for the consistent input, ideas, and review by (in alphabetical
order) Bill Arbaugh, Thirumalesh Bhat, Steve Bellovin, A. K. order) Bernard Aboba, Bill Arbaugh, Thirumalesh Bhat, Steve Bellovin,
Vijayabhaskar, Brian Carpenter, Matt Crawford, Francis Dupont, Tony A. K. Vijayabhaskar, Brian Carpenter, Matt Crawford, Francis Dupont,
Lindstrom, Josh Littlefield, Gerald Maguire, Jack McCann, Thomas Kim Kinnear, Fredrik Lindholm, Tony Lindstrom, Josh Littlefield,
Narten, Erik Nordmark, Yakov Rekhter, Mark Stapp, Matt Thomas, Sue Gerald Maguire, Jack McCann, Shin Miyakawa, Thomas Narten, Erik
Thomson, Tatuya Jinmei and Phil Wells. Nordmark, Jarno Rajahalme, Yakov Rekhter, Mark Stapp, 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 the time to discuss the more complex parts of the IPv6 taken 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-25.txt 26. Changes in draft-ietf-dhc-dhcpv6-27.txt
- Eliminated definition of VUID-DN.
- Changed the second sentence in section 17.1.2 to:
In the case of a Solicit message transmitted when DHCP is
initiated by IPv6 Neighbor Discovery, the delay gives the amount
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).
- Changed Rapid Commit to allow client to use Advertise messages
received while waiting for Reply, rather than restarting with
Solicit; if client receives Advertise with preference 255, client
immediately sends Request to that server.
- Removed the use of All_DHCP_Servers multicast address as
destination address in section 18.1.5.
- Added text improving summary description of Confirm, Renew,
Rebind.
- Removed restriction on extension of lifetimes for temporary
addresses; added text pointing to RFC 3041 for guidance on
extending lifetimes for temporary addresses and when to request
additional temporary addresses.
- Clarified text in section 20 to emphasize that the relay agent
puts an address in the link-address field regardless of whether
it includes an Interface-ID option; added text explaining why the
interface-identifier for an interface should remain stable.
- Changed use of T1/T2 and lifetimes in Confirm message from
client: client uses those fields for preferred values or sets
to 0; server checks only addresses for correctness and returns
values chosen by server for T1/T2 and lifetimes. Clarified
that server checks addresses and returns current configuration
information for the client.
- Description of User Class option extended with an example
and clarified to indicate that use of User Class options is
determined by configuration/policies on server.
- Clarified description of the use of Vendor-specific information
to indicate that client need not receive all requested
vendor-specific information before proceeding with normal
operation.
- Clarified use of Status Code option in Release message.
- Edited section 14 to make clear that a client transmits until it
receives a response only if both MRC and MRD are zero.
- Removed suggestions about ordering options (for example, for
improved performance).
- Edited section 16 to clarify interface selection.
- Removed use of anycast; use of anycast over individual link
technologies will be specified in separate documents.
- Removed replay detection information field from Solicit message
to avoid potential DOS attack.
- Clarified capabilities and constraints on relay agent forwarding.
- Edited definition of vendor class data to clarify that instances
of vendor-class-data are individual characteristics of the
client.
- Added text in section 21.5.3 to specify that client key is
identified by client DUID.
- Removed "Year 2000 Considerations" section; hope we don't need a
"Year 3000 Consideration" section.
- Authentication mechanism now shares Protocol, Algorithm and RDM
name spaces with DHCPv4.
- Added text to specify return of NoBinding if server cannot
find binding for IA in Decline; added text allowing client to
disregard NoBinding in Reply to Decline.
- Clarified that Solicit, Confirm and Rebind are invalid if Server - Wordsmithed 2nd paragraph in section to delete "immediately" from
Identifier option is included. "a client can immediately use its link-local address"
- Edited text about Option Request option to clarify that the - Server sets hop limit when using multicast from IANA number
option is a hint from the client to the server about options the
client has a preference to receive; includes recommendation that
client send Option Request option if it has options it requires.
- Added nonce value for security of Reconfigure messages. - Server must transmit to client on a specific interface
27. Changes in draft-ietf-dhc-dhcpv6-26.txt - Change "forwarding" to "relaying" throughout
- Clarified section 18.1.1 to allow Request message to be sent at - Add desynchronizing randomization for Confirm and
any time. Information-request messages
- Fixed Reconfigure Message option so that msg-type field is one - Wordsmithed section 15 to clarify actions when message breaks
octet and uses the DHCP message code to indicate which message rules about option inclusion
the client sends back to the server.
- Added text anticipating description of how to emulate multicast - Added text to 15.12 to include test for IA option in validation
in specific "IPv6 over X" documents. of Information-Request
- Reconfigure message now requires Client Identifier option with - Added requirement for Client Identifier option if
receiving client's DUID. Information-request message is to be authenticated
- Added text to allow a relay agent to forward a message from a