| rfc9915.original | rfc9915.txt | |||
|---|---|---|---|---|
| Network Working Group T. Mrugalski | Internet Engineering Task Force (IETF) T. Mrugalski | |||
| Internet-Draft ISC | Request for Comments: 9915 ISC | |||
| Obsoletes: 8415 (if approved) B. Volz | Obsoletes: 8415 B. Volz | |||
| Intended status: Standards Track Individual Contributor | Category: Standards Track Individual Contributor | |||
| Expires: 6 December 2025 M. Richardson | ISSN: 2070-1721 M. Richardson | |||
| SSW | SSW | |||
| S. Jiang | S. Jiang | |||
| BUPT | BUPT | |||
| T. Winters | T. Winters | |||
| QA Cafe | QA Cafe | |||
| 4 June 2025 | November 2025 | |||
| Dynamic Host Configuration Protocol for IPv6 (DHCPv6) | Dynamic Host Configuration Protocol for IPv6 (DHCPv6) | |||
| draft-ietf-dhc-rfc8415bis-12 | ||||
| Abstract | Abstract | |||
| This document specifies the Dynamic Host Configuration Protocol for | This document specifies the Dynamic Host Configuration Protocol for | |||
| IPv6 (DHCPv6): an extensible mechanism for configuring nodes with | IPv6 (DHCPv6), an extensible mechanism for configuring nodes with | |||
| network configuration parameters, IP addresses, and prefixes. | network configuration parameters, IP addresses, and prefixes. | |||
| Parameters can be provided statelessly, or in combination with | Parameters can be provided statelessly or in combination with | |||
| stateful assignment of one or more IPv6 addresses and/or IPv6 | stateful assignment of one or more IPv6 addresses and/or IPv6 | |||
| prefixes. DHCPv6 can operate either in place of or in addition to | prefixes. DHCPv6 can operate either in place of or in addition to | |||
| stateless address autoconfiguration (SLAAC). | stateless address autoconfiguration (SLAAC). | |||
| This document obsoletes RFC8415 to incorporate reported errata and to | This document obsoletes RFC 8415 to incorporate reported errata and | |||
| obsolete the assignment of temporary addresses (the IA_TA option) and | to obsolete the assignment of temporary addresses (the IA_TA option) | |||
| the server unicast capability (the Server Unicast option and | and the server unicast capability (the Server Unicast option and | |||
| UseMulticast status code). | UseMulticast status code). | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 6 December 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9915. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
| modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
| Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1. Introduction | |||
| 1.1. Relationship to Previous DHCPv6 Standards . . . . . . . . 6 | 1.1. Relationship to Previous DHCPv6 Standards | |||
| 1.2. Topics Out of Scope . . . . . . . . . . . . . . . . . . . 7 | 1.2. Topics Out of Scope | |||
| 2. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2. Requirements | |||
| 3. Background . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Background | |||
| 4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Terminology | |||
| 4.1. IPv6 Terminology . . . . . . . . . . . . . . . . . . . . 8 | 4.1. IPv6 Terminology | |||
| 4.2. DHCP Terminology . . . . . . . . . . . . . . . . . . . . 9 | 4.2. DHCP Terminology | |||
| 5. Client/Server Exchanges . . . . . . . . . . . . . . . . . . . 13 | 5. Client/Server Exchanges | |||
| 5.1. Client/Server Exchanges Involving Two Messages . . . . . 14 | 5.1. Client/Server Exchanges Involving Two Messages | |||
| 5.2. Client/Server Exchanges Involving Four Messages . . . . . 15 | 5.2. Client/Server Exchanges Involving Four Messages | |||
| 5.3. Server/Client Exchanges . . . . . . . . . . . . . . . . . 15 | 5.3. Server/Client Exchanges | |||
| 6. Operational Models . . . . . . . . . . . . . . . . . . . . . 15 | 6. Operational Models | |||
| 6.1. Stateless DHCP . . . . . . . . . . . . . . . . . . . . . 16 | 6.1. Stateless DHCP | |||
| 6.2. DHCP for Non-temporary Address Assignment . . . . . . . . 16 | 6.2. DHCP for Non-Temporary Address Assignment | |||
| 6.3. DHCP for Prefix Delegation . . . . . . . . . . . . . . . 17 | 6.3. DHCP for Prefix Delegation | |||
| 6.4. DHCP for Customer Edge Routers . . . . . . . . . . . . . 20 | 6.4. DHCP for Customer Edge Routers | |||
| 6.5. Multiple Addresses and Prefixes . . . . . . . . . . . . . 20 | 6.5. Multiple Addresses and Prefixes | |||
| 6.6. Registering Self-generated Addresses . . . . . . . . . . 21 | 6.6. Registering Self-Generated Addresses | |||
| 7. DHCP Constants . . . . . . . . . . . . . . . . . . . . . . . 21 | 7. DHCP Constants | |||
| 7.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 21 | 7.1. Multicast Addresses | |||
| 7.2. UDP Ports . . . . . . . . . . . . . . . . . . . . . . . . 21 | 7.2. UDP Ports | |||
| 7.3. DHCP Message Types . . . . . . . . . . . . . . . . . . . 22 | 7.3. DHCP Message Types | |||
| 7.4. DHCP Option Codes . . . . . . . . . . . . . . . . . . . . 24 | 7.4. DHCP Option Codes | |||
| 7.5. Status Codes . . . . . . . . . . . . . . . . . . . . . . 24 | 7.5. Status Codes | |||
| 7.6. Transmission and Retransmission Parameters . . . . . . . 24 | 7.6. Transmission and Retransmission Parameters | |||
| 7.7. Representation of Time Values and "Infinity" as a Time | 7.7. Representation of Time Values and "Infinity" as a Time | |||
| Value . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | Value | |||
| 8. Client/Server Message Formats . . . . . . . . . . . . . . . . 26 | 8. Client/Server Message Formats | |||
| 9. Relay Agent/Server Message Formats . . . . . . . . . . . . . 27 | 9. Relay Agent/Server Message Formats | |||
| 9.1. Relay-forward Message . . . . . . . . . . . . . . . . . . 28 | 9.1. Relay-forward Message | |||
| 9.2. Relay-reply Message . . . . . . . . . . . . . . . . . . . 29 | 9.2. Relay-reply Message | |||
| 10. Representation and Use of Domain Names . . . . . . . . . . . 29 | 10. Representation and Use of Domain Names | |||
| 11. DHCP Unique Identifier (DUID) . . . . . . . . . . . . . . . . 29 | 11. DHCP Unique Identifier (DUID) | |||
| 11.1. DUID Contents . . . . . . . . . . . . . . . . . . . . . 30 | 11.1. DUID Contents | |||
| 11.2. DUID Based on Link-Layer Address Plus Time (DUID-LLT) . 31 | 11.2. DUID Based on Link-Layer Address Plus Time (DUID-LLT) | |||
| 11.3. DUID Assigned by Vendor Based on Enterprise Number | 11.3. DUID Assigned by Vendor Based on Enterprise Number | |||
| (DUID-EN) . . . . . . . . . . . . . . . . . . . . . . . 32 | (DUID-EN) | |||
| 11.4. DUID Based on Link-Layer Address (DUID-LL) . . . . . . . 33 | 11.4. DUID Based on Link-Layer Address (DUID-LL) | |||
| 11.5. DUID Based on Universally Unique Identifier | 11.5. DUID Based on Universally Unique Identifier (DUID-UUID) | |||
| (DUID-UUID) . . . . . . . . . . . . . . . . . . . . . . 34 | 12. Identity Association | |||
| 12. Identity Association . . . . . . . . . . . . . . . . . . . . 35 | 12.1. Identity Associations for Address Assignment | |||
| 12.1. Identity Associations for Address Assignment . . . . . . 35 | 12.2. Identity Associations for Prefix Delegation | |||
| 12.2. Identity Associations for Prefix Delegation . . . . . . 36 | 13. Assignment to an IA | |||
| 13. Assignment to an IA . . . . . . . . . . . . . . . . . . . . . 36 | 13.1. Selecting Addresses for Assignment to an IA_NA | |||
| 13.1. Selecting Addresses for Assignment to an IA_NA . . . . . 36 | 13.2. Assignment of Prefixes for IA_PD | |||
| 13.2. Assignment of Prefixes for IA_PD . . . . . . . . . . . . 37 | 14. Transmission of Messages by a Client | |||
| 14. Transmission of Messages by a Client . . . . . . . . . . . . 37 | 14.1. Rate Limiting | |||
| 14.1. Rate Limiting . . . . . . . . . . . . . . . . . . . . . 38 | 14.2. Client Behavior when T1 and/or T2 Are 0 | |||
| 14.2. Client Behavior when T1 and/or T2 Are 0 . . . . . . . . 38 | 15. Reliability of Client-Initiated Message Exchanges | |||
| 15. Reliability of Client-Initiated Message Exchanges . . . . . . 39 | 16. Message Validation | |||
| 16. Message Validation . . . . . . . . . . . . . . . . . . . . . 41 | 16.1. Use of Transaction IDs | |||
| 16.1. Use of Transaction IDs . . . . . . . . . . . . . . . . . 42 | 16.2. Solicit Message | |||
| 16.2. Solicit Message . . . . . . . . . . . . . . . . . . . . 42 | 16.3. Advertise Message | |||
| 16.3. Advertise Message . . . . . . . . . . . . . . . . . . . 42 | 16.4. Request Message | |||
| 16.4. Request Message . . . . . . . . . . . . . . . . . . . . 43 | 16.5. Confirm Message | |||
| 16.5. Confirm Message . . . . . . . . . . . . . . . . . . . . 43 | 16.6. Renew Message | |||
| 16.6. Renew Message . . . . . . . . . . . . . . . . . . . . . 43 | 16.7. Rebind Message | |||
| 16.7. Rebind Message . . . . . . . . . . . . . . . . . . . . . 43 | 16.8. Decline Message | |||
| 16.8. Decline Message . . . . . . . . . . . . . . . . . . . . 44 | 16.9. Release Message | |||
| 16.9. Release Message . . . . . . . . . . . . . . . . . . . . 44 | 16.10. Reply Message | |||
| 16.10. Reply Message . . . . . . . . . . . . . . . . . . . . . 44 | 16.11. Reconfigure Message | |||
| 16.11. Reconfigure Message . . . . . . . . . . . . . . . . . . 45 | 16.12. Information-request Message | |||
| 16.12. Information-request Message . . . . . . . . . . . . . . 45 | 16.13. Relay-forward Message | |||
| 16.13. Relay-forward Message . . . . . . . . . . . . . . . . . 46 | 16.14. Relay-reply Message | |||
| 16.14. Relay-reply Message . . . . . . . . . . . . . . . . . . 46 | 17. Client Source Address and Interface Selection | |||
| 17. Client Source Address and Interface Selection . . . . . . . . 46 | ||||
| 17.1. Source Address and Interface Selection for Address | 17.1. Source Address and Interface Selection for Address | |||
| Assignment . . . . . . . . . . . . . . . . . . . . . . . 46 | Assignment | |||
| 17.2. Source Address and Interface Selection for Prefix | 17.2. Source Address and Interface Selection for Prefix | |||
| Delegation . . . . . . . . . . . . . . . . . . . . . . . 46 | Delegation | |||
| 18. DHCP Configuration Exchanges . . . . . . . . . . . . . . . . 46 | 18. DHCP Configuration Exchanges | |||
| 18.1. A Single Exchange for Multiple IA Options . . . . . . . 49 | 18.1. A Single Exchange for Multiple IA Options | |||
| 18.2. Client Behavior . . . . . . . . . . . . . . . . . . . . 50 | 18.2. Client Behavior | |||
| 18.2.1. Creation and Transmission of Solicit Messages . . . 50 | 18.2.1. Creation and Transmission of Solicit Messages | |||
| 18.2.2. Creation and Transmission of Request Messages . . . 53 | 18.2.2. Creation and Transmission of Request Messages | |||
| 18.2.3. Creation and Transmission of Confirm Messages . . . 54 | 18.2.3. Creation and Transmission of Confirm Messages | |||
| 18.2.4. Creation and Transmission of Renew Messages . . . . 55 | 18.2.4. Creation and Transmission of Renew Messages | |||
| 18.2.5. Creation and Transmission of Rebind Messages . . . . 57 | 18.2.5. Creation and Transmission of Rebind Messages | |||
| 18.2.6. Creation and Transmission of Information-request | 18.2.6. Creation and Transmission of Information-request | |||
| Messages . . . . . . . . . . . . . . . . . . . . . . 58 | Messages | |||
| 18.2.7. Creation and Transmission of Release Messages . . . 59 | 18.2.7. Creation and Transmission of Release Messages | |||
| 18.2.8. Creation and Transmission of Decline Messages . . . 60 | 18.2.8. Creation and Transmission of Decline Messages | |||
| 18.2.9. Receipt of Advertise Messages . . . . . . . . . . . 62 | 18.2.9. Receipt of Advertise Messages | |||
| 18.2.10. Receipt of Reply Messages . . . . . . . . . . . . . 63 | 18.2.10. Receipt of Reply Messages | |||
| 18.2.10.1. Reply for Solicit (with Rapid Commit), Request, | 18.2.10.1. Reply for Solicit (with Rapid Commit), Request, | |||
| Renew, or Rebind . . . . . . . . . . . . . . . . . 64 | Renew, or Rebind | |||
| 18.2.10.2. Reply for Release and Decline . . . . . . . . . 66 | 18.2.10.2. Reply for Release and Decline | |||
| 18.2.10.3. Reply for Confirm . . . . . . . . . . . . . . . 66 | 18.2.10.3. Reply for Confirm | |||
| 18.2.10.4. Reply for Information-request . . . . . . . . . 66 | 18.2.10.4. Reply for Information-request | |||
| 18.2.10.5. Revoking Previously Provided Options . . . . . 67 | 18.2.10.5. Revoking Previously Provided Options | |||
| 18.2.11. Receipt of Reconfigure Messages . . . . . . . . . . 67 | 18.2.11. Receipt of Reconfigure Messages | |||
| 18.2.12. Refreshing Configuration Information . . . . . . . . 68 | 18.2.12. Refreshing Configuration Information | |||
| 18.2.13. Restarting Server Discovery Process . . . . . . . . 70 | 18.2.13. Restarting Server Discovery Process | |||
| 18.3. Server Behavior . . . . . . . . . . . . . . . . . . . . 70 | 18.3. Server Behavior | |||
| 18.3.1. Receipt of Solicit Messages . . . . . . . . . . . . 71 | 18.3.1. Receipt of Solicit Messages | |||
| 18.3.2. Receipt of Request Messages . . . . . . . . . . . . 72 | 18.3.2. Receipt of Request Messages | |||
| 18.3.3. Receipt of Confirm Messages . . . . . . . . . . . . 74 | 18.3.3. Receipt of Confirm Messages | |||
| 18.3.4. Receipt of Renew Messages . . . . . . . . . . . . . 75 | 18.3.4. Receipt of Renew Messages | |||
| 18.3.5. Receipt of Rebind Messages . . . . . . . . . . . . . 76 | 18.3.5. Receipt of Rebind Messages | |||
| 18.3.6. Receipt of Information-request Messages . . . . . . 78 | 18.3.6. Receipt of Information-request Messages | |||
| 18.3.7. Receipt of Release Messages . . . . . . . . . . . . 79 | 18.3.7. Receipt of Release Messages | |||
| 18.3.8. Receipt of Decline Messages . . . . . . . . . . . . 80 | 18.3.8. Receipt of Decline Messages | |||
| 18.3.9. Creation of Advertise Messages . . . . . . . . . . . 80 | 18.3.9. Creation of Advertise Messages | |||
| 18.3.10. Transmission of Advertise and Reply Messages . . . . 82 | 18.3.10. Transmission of Advertise and Reply Messages | |||
| 18.3.11. Creation and Transmission of Reconfigure Messages . 82 | 18.3.11. Creation and Transmission of Reconfigure Messages | |||
| 19. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 83 | 19. Relay Agent Behavior | |||
| 19.1. Relaying a Client Message or a Relay-forward Message . . 84 | 19.1. Relaying a Client Message or a Relay-forward Message | |||
| 19.1.1. Relaying a Message from a Client . . . . . . . . . . 84 | 19.1.1. Relaying a Message from a Client | |||
| 19.1.2. Relaying a Message from a Relay Agent . . . . . . . 85 | 19.1.2. Relaying a Message from a Relay Agent | |||
| 19.1.3. Relay Agent Behavior with Prefix Delegation . . . . 85 | 19.1.3. Relay Agent Behavior with Prefix Delegation | |||
| 19.2. Relaying a Relay-reply Message . . . . . . . . . . . . . 85 | 19.2. Relaying a Relay-reply Message | |||
| 19.3. Construction of Relay-reply Messages . . . . . . . . . . 86 | 19.3. Construction of Relay-reply Messages | |||
| 19.4. Interaction between Relay Agents and Servers . . . . . . 87 | 19.4. Interaction Between Relay Agents and Servers | |||
| 20. Authentication of DHCP Messages . . . . . . . . . . . . . . . 88 | 20. Authentication of DHCP Messages | |||
| 20.1. Security of Messages Sent between Servers and Relay | 20.1. Security of Messages Sent Between Servers and Relay Agents | |||
| Agents . . . . . . . . . . . . . . . . . . . . . . . . . 88 | 20.2. Summary of DHCP Authentication | |||
| 20.2. Summary of DHCP Authentication . . . . . . . . . . . . . 88 | 20.3. Replay Detection | |||
| 20.3. Replay Detection . . . . . . . . . . . . . . . . . . . . 89 | 20.4. Reconfiguration Key Authentication Protocol (RKAP) | |||
| 20.4. Reconfiguration Key Authentication Protocol (RKAP) . . . 89 | 20.4.1. Use of the Authentication Option in RKAP | |||
| 20.4.1. Use of the Authentication Option in RKAP . . . . . . 90 | 20.4.2. Server Considerations for RKAP | |||
| 20.4.2. Server Considerations for RKAP . . . . . . . . . . . 91 | 20.4.3. Client Considerations for RKAP | |||
| 20.4.3. Client Considerations for RKAP . . . . . . . . . . . 91 | 21. DHCP Options | |||
| 21. DHCP Options . . . . . . . . . . . . . . . . . . . . . . . . 91 | 21.1. Format of DHCP Options | |||
| 21.1. Format of DHCP Options . . . . . . . . . . . . . . . . . 92 | 21.2. Client Identifier Option | |||
| 21.2. Client Identifier Option . . . . . . . . . . . . . . . . 93 | 21.3. Server Identifier Option | |||
| 21.3. Server Identifier Option . . . . . . . . . . . . . . . . 93 | 21.4. Identity Association for Non-Temporary Addresses Option | |||
| 21.4. Identity Association for Non-temporary Addresses | 21.5. Identity Association for Temporary Addresses Option | |||
| Option . . . . . . . . . . . . . . . . . . . . . . . . 94 | 21.6. IA Address Option | |||
| 21.5. Identity Association for Temporary Addresses Option . . 96 | 21.7. Option Request Option | |||
| 21.6. IA Address Option . . . . . . . . . . . . . . . . . . . 96 | 21.8. Preference Option | |||
| 21.7. Option Request Option . . . . . . . . . . . . . . . . . 98 | 21.9. Elapsed Time Option | |||
| 21.8. Preference Option . . . . . . . . . . . . . . . . . . . 100 | 21.10. Relay Message Option | |||
| 21.9. Elapsed Time Option . . . . . . . . . . . . . . . . . . 100 | 21.11. Authentication Option | |||
| 21.10. Relay Message Option . . . . . . . . . . . . . . . . . . 101 | 21.12. Server Unicast Option | |||
| 21.11. Authentication Option . . . . . . . . . . . . . . . . . 102 | 21.13. Status Code Option | |||
| 21.12. Server Unicast Option . . . . . . . . . . . . . . . . . 103 | 21.14. Rapid Commit Option | |||
| 21.13. Status Code Option . . . . . . . . . . . . . . . . . . . 104 | 21.15. User Class Option | |||
| 21.14. Rapid Commit Option . . . . . . . . . . . . . . . . . . 105 | 21.16. Vendor Class Option | |||
| 21.15. User Class Option . . . . . . . . . . . . . . . . . . . 106 | 21.17. Vendor-Specific Information Option | |||
| 21.16. Vendor Class Option . . . . . . . . . . . . . . . . . . 108 | 21.18. Interface-Id Option | |||
| 21.17. Vendor-specific Information Option . . . . . . . . . . . 109 | 21.19. Reconfigure Message Option | |||
| 21.18. Interface-Id Option . . . . . . . . . . . . . . . . . . 111 | 21.20. Reconfigure Accept Option | |||
| 21.19. Reconfigure Message Option . . . . . . . . . . . . . . . 112 | 21.21. Identity Association for Prefix Delegation Option | |||
| 21.20. Reconfigure Accept Option . . . . . . . . . . . . . . . 113 | 21.22. IA Prefix Option | |||
| 21.21. Identity Association for Prefix Delegation Option . . . 113 | 21.23. Information Refresh Time Option | |||
| 21.22. IA Prefix Option . . . . . . . . . . . . . . . . . . . . 115 | 21.24. SOL_MAX_RT Option | |||
| 21.23. Information Refresh Time Option . . . . . . . . . . . . 117 | 21.25. INF_MAX_RT Option | |||
| 21.24. SOL_MAX_RT Option . . . . . . . . . . . . . . . . . . . 119 | 22. Security Considerations | |||
| 21.25. INF_MAX_RT Option . . . . . . . . . . . . . . . . . . . 120 | 22.1. Client Security Considerations | |||
| 22. Implementation status . . . . . . . . . . . . . . . . . . . . 121 | 22.2. Server Security Considerations | |||
| 23. Security Considerations . . . . . . . . . . . . . . . . . . . 125 | 22.3. Reconfigure Security Considerations | |||
| 23.1. Client Security Considerations . . . . . . . . . . . . . 125 | 22.4. Mitigation Considerations | |||
| 23.2. Server Security Considerations . . . . . . . . . . . . . 126 | 23. Privacy Considerations | |||
| 23.3. Reconfigure Security Considerations . . . . . . . . . . 126 | 24. IANA Considerations | |||
| 23.4. Mitigation Considerations . . . . . . . . . . . . . . . 127 | 25. References | |||
| 24. Privacy Considerations . . . . . . . . . . . . . . . . . . . 128 | 25.1. Normative References | |||
| 25. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 128 | 25.2. Informative References | |||
| 26. References . . . . . . . . . . . . . . . . . . . . . . . . . 129 | Appendix A. Summary of Changes from RFC 8415 | |||
| 26.1. Normative References . . . . . . . . . . . . . . . . . . 129 | Appendix B. Appearance of Options in Message Types | |||
| 26.2. Informative References . . . . . . . . . . . . . . . . . 131 | ||||
| Appendix A. Summary of Changes . . . . . . . . . . . . . . . . . 136 | ||||
| Appendix B. Appearance of Options in Message Types . . . . . . . 137 | ||||
| Appendix C. Appearance of Options in the "options" Field of DHCP | Appendix C. Appearance of Options in the "options" Field of DHCP | |||
| Options . . . . . . . . . . . . . . . . . . . . . . . . . 138 | Options | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 139 | Acknowledgments | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 140 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| This document specifies DHCP for IPv6 (DHCPv6), a client/server | This document specifies DHCP for IPv6 (DHCPv6), a client/server | |||
| protocol that provides managed configuration of devices. The basic | protocol that provides managed configuration of devices. The basic | |||
| operation of DHCPv6 provides configuration for clients connected to | operation of DHCPv6 provides configuration for clients connected to | |||
| the same link as the server. Relay agent functionality is also | the same link as the server. Relay agent functionality is also | |||
| defined for enabling communication between clients and servers that | defined for enabling communication between clients and servers that | |||
| are not on the same link. | are not on the same link. | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at line 269 ¶ | |||
| DHCP can also be used just to provide other configuration options | DHCP can also be used just to provide other configuration options | |||
| (i.e., no addresses or prefixes). That implies that the server does | (i.e., no addresses or prefixes). That implies that the server does | |||
| not have to track any state; thus, this mode is called "stateless | not have to track any state; thus, this mode is called "stateless | |||
| DHCPv6". Mechanisms necessary to support stateless DHCPv6 are much | DHCPv6". Mechanisms necessary to support stateless DHCPv6 are much | |||
| simpler than mechanisms needed to support stateful DHCPv6. | simpler than mechanisms needed to support stateful DHCPv6. | |||
| 1.1. Relationship to Previous DHCPv6 Standards | 1.1. Relationship to Previous DHCPv6 Standards | |||
| [RFC8415] provided a unified, corrected, and cleaned-up definition of | [RFC8415] provided a unified, corrected, and cleaned-up definition of | |||
| DHCPv6 that also covered all applicable errata filed against older | DHCPv6 that also covered all applicable errata filed against older | |||
| RFCs. It also obsoleted a small number of mechanisms: delayed | RFCs at the time of its writing. It also obsoleted a small number of | |||
| authentication, lifetime and timer hints sent by a client. | mechanisms: delayed authentication, lifetime and timer hints sent by | |||
| a client. | ||||
| This document obsoletes [RFC8415] by applying all applicable errata | This document obsoletes [RFC8415] by applying all applicable errata | |||
| and obsoleting two features that have not been widely implemented - | and obsoleting two features that have not been widely implemented: | |||
| the assignment of temporary addresses using the IA_TA option and | the assignment of temporary addresses using the IA_TA option and | |||
| allowing clients to unicast some messages directly to the server if | allowing clients to unicast some messages directly to the server if | |||
| the server sent the Server Unicast option to a client in an early | the server sent the Server Unicast option to a client in an early | |||
| exchange. It also clarifies the UDP ports used by clients, servers, | exchange. It also clarifies the UDP ports used by clients, servers, | |||
| and relay agents (Section 7.2). See Appendix A for a list of | and relay agents (Section 7.2). See Appendix A for a list of | |||
| differences from [RFC8415]. | differences from [RFC8415]. | |||
| 1.2. Topics Out of Scope | 1.2. Topics Out of Scope | |||
| This document specifies the DHCPv6 protocol behavior. The server | This document specifies DHCPv6 behavior. The server policy, such as | |||
| policy, such as what options to assign to which clients, which | what options to assign to which clients, which subnets or pools of | |||
| subnets or pools of resources to use, which clients' requests should | resources to use, which clients' requests should be denied, etc. are | |||
| be denied etc. are out of scope for this document. | out of scope for this document. | |||
| Server configuration, operation and management are also out of scope. | Server configuration, operation, and management are also out of | |||
| An approach to manage DHCPv6 relays and servers is specified in | scope. An approach to manage DHCPv6 relays and servers is specified | |||
| [RFC9243]. | in [RFC9243]. | |||
| Merging DHCPv4 [RFC2131] and DHCPv6 configuration is out of scope for | Merging DHCPv4 [RFC2131] and DHCPv6 configuration is out of scope for | |||
| this document. [RFC4477] discusses some issues and possible | this document. [RFC4477] discusses some issues and possible | |||
| strategies for running DHCPv4 and DHCPv6 services together. While | strategies for running DHCPv4 and DHCPv6 services together. While | |||
| [RFC4477] is a bit dated, it provides a good overview of the issues | [RFC4477] is a bit dated, it provides a good overview of the issues | |||
| at hand. The current consensus of the IETF is that DHCPv4 should be | at hand. The consensus of the IETF at the time of writing is that | |||
| used rather than DHCPv6 when conveying IPv4 configuration information | DHCPv4 should be used rather than DHCPv6 when conveying IPv4 | |||
| to nodes. For IPv6-only networks, [RFC7341] describes a transport | configuration information to nodes. For IPv6-only networks, | |||
| mechanism to carry DHCPv4 messages using the DHCPv6 protocol for the | [RFC7341] describes a transport mechanism to carry DHCPv4 messages | |||
| dynamic provisioning of IPv4 address and configuration information. | using DHCPv6 for the dynamic provisioning of IPv4 address and | |||
| configuration information. | ||||
| 2. Requirements | 2. Requirements | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| This document also makes use of internal conceptual variables to | This document also makes use of internal conceptual variables to | |||
| describe protocol behavior and external variables that an | describe protocol behavior and external variables that an | |||
| implementation must allow system administrators to change. The | implementation must allow system administrators to change. The | |||
| specific variable names, how their values change, and how their | specific variable names, how their values change, and how their | |||
| settings influence protocol behavior are provided to demonstrate | settings influence protocol behavior are provided to demonstrate | |||
| protocol behavior. An implementation is not required to have them in | protocol behavior. An implementation is not required to have them in | |||
| the exact form described here, as long as its external behavior is | the exact form described here, as long as its external behavior is | |||
| consistent with that described in this document. | consistent with that described in this document. | |||
| 3. Background | 3. Background | |||
| This section, which contained background on IPv6 specifications of | In [RFC8415], the "Background" section contained background on IPv6 | |||
| relevance to DHCPv6, has been removed; those interested should refer | specifications of relevance to DHCPv6. That text has been removed | |||
| to [RFC8415]. However, this section is retained to keep the major | from the current document; however, this section has been retained to | |||
| section numbering consistent with [RFC8415]. | keep the major section numbering consistent with [RFC8415]. Those | |||
| interested can refer to [RFC8415] itself for more information on the | ||||
| topic. | ||||
| 4. Terminology | 4. Terminology | |||
| This section defines terminology specific to IPv6 and DHCP used in | This section defines terminology specific to IPv6 and DHCP used in | |||
| this document. | this document. | |||
| 4.1. IPv6 Terminology | 4.1. IPv6 Terminology | |||
| IPv6 terminology from [RFC8200], [RFC4291], and [RFC4862] relevant to | IPv6 terminology from [RFC8200], [RFC4291], and [RFC4862] relevant to | |||
| this specification is included below. | this specification is included below. | |||
| address An IP-layer identifier for an interface or | address | |||
| a set of interfaces. | An IP-layer identifier for an interface or a set of interfaces. | |||
| GUA Global unicast address (see [RFC4291]). | GUA | |||
| Global unicast address (see [RFC4291]). | ||||
| host Any node that is not a router. | host | |||
| Any node that is not a router. | ||||
| IP Internet Protocol Version 6 (IPv6). The | IP | |||
| terms "IPv4" and "IPv6" are used only in | Internet Protocol Version 6 (IPv6). The terms "IPv4" and "IPv6" | |||
| contexts where it is necessary to avoid | are used only in contexts where it is necessary to avoid | |||
| ambiguity. | ambiguity. | |||
| interface A node's attachment to a link. | interface | |||
| A node's attachment to a link. | ||||
| link A communication facility or medium over | link | |||
| which nodes can communicate at the link | A communication facility or medium over which nodes can | |||
| layer, i.e., the layer immediately below | communicate at the link layer, i.e., the layer immediately below | |||
| IP. Examples are Ethernet (simple or | IP. Examples are Ethernet (simple or bridged); Point-to-Point | |||
| bridged); Point-to-Point Protocol (PPP) and | Protocol (PPP) and PPP over Ethernet (PPPoE) links; and Internet- | |||
| PPP over Ethernet (PPPoE) links; and | layer (or higher) "tunnels", such as tunnels over IPv4 or IPv6 | |||
| Internet-layer (or higher) "tunnels", such | itself. | |||
| as tunnels over IPv4 or IPv6 itself. | ||||
| link-layer identifier A link-layer identifier for an interface -- | link-layer identifier | |||
| for example, IEEE 802 addresses for | A link-layer identifier for an interface -- for example, IEEE 802 | |||
| Ethernet or Token Ring network interfaces. | addresses for Ethernet or Token Ring network interfaces. | |||
| link-local address An IPv6 address having a link-only scope, | link-local address | |||
| indicated by having the prefix (fe80::/10), | An IPv6 address having a link-only scope, indicated by having the | |||
| that can be used to reach neighboring nodes | prefix (fe80::/10), that can be used to reach neighboring nodes | |||
| attached to the same link. Every IPv6 | attached to the same link. Every IPv6 interface on which DHCPv6 | |||
| interface on which DHCPv6 can reasonably be | can reasonably be useful has a link-local address. | |||
| useful has a link-local address. | ||||
| multicast address An identifier for a set of interfaces | multicast address | |||
| (typically belonging to different nodes). | An identifier for a set of interfaces (typically belonging to | |||
| A packet sent to a multicast address is | different nodes). A packet sent to a multicast address is | |||
| delivered to all interfaces identified by | delivered to all interfaces identified by that address. | |||
| 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. | ||||
| packet An IP header plus payload. | packet | |||
| An IP header plus payload. | ||||
| prefix The initial bits of an address, or a set | prefix | |||
| of IP addresses that share the same | The initial bits of an address, or a set of IP addresses that | |||
| initial bits. | share the same initial bits. | |||
| prefix length The number of bits in a prefix. | prefix length | |||
| The number of bits in a prefix. | ||||
| router A node that forwards IP packets not | router | |||
| explicitly addressed to itself. | A node that forwards IP packets not explicitly addressed to | |||
| itself. | ||||
| ULA Unique local address (see [RFC4193]). | ULA | |||
| Unique local address (see [RFC4193]). | ||||
| unicast address An identifier for a single interface. A | unicast address | |||
| packet sent to a unicast address is | An identifier for a single interface. A packet sent to a unicast | |||
| delivered to the interface identified by | address is delivered to the interface identified by 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 | |||
| when the address is consistent with the | An address is "appropriate to the link" when the address is | |||
| DHCP server's knowledge of the network | consistent with the 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 group of | ||||
| server data records containing the | ||||
| information the server has about the | ||||
| addresses or delegated prefixes in an | ||||
| Identity Association (IA) or configuration | ||||
| information explicitly assigned to the | ||||
| client. Configuration information that has | ||||
| been returned to a client through a policy, | ||||
| such as the information returned to all | ||||
| clients on the same link, does not require | ||||
| a binding. A binding containing | ||||
| information about an IA is indexed by the | ||||
| tuple <DUID, IA-type, IAID> (where IA-type | ||||
| is the type of lease in the IA -- for | ||||
| example, address or delegated prefix). A | ||||
| binding containing configuration | ||||
| information for a client is indexed by | ||||
| <DUID>. See below for definitions of DUID, | ||||
| IA, and IAID. | ||||
| configuration parameter An element of the configuration information | binding | |||
| set on the server and delivered to the | A binding (or client binding) is a group of server data records | |||
| client using DHCP. Such parameters may be | containing the information the server has about the addresses or | |||
| used to carry information to be used by a | delegated prefixes in an Identity Association (IA) or | |||
| node to configure its network subsystem and | configuration information explicitly assigned to the client. | |||
| enable communication on a link or | Configuration information that has been returned to a client | |||
| internetwork, for example. | through a policy, such as the information returned to all clients | |||
| on the same link, does not require a binding. A binding | ||||
| containing information about an IA is indexed by the tuple <DUID, | ||||
| IA-type, IAID> (where IA-type is the type of lease in the IA -- | ||||
| for example, address or delegated prefix). A binding containing | ||||
| configuration information for a client is indexed by <DUID>. See | ||||
| below for definitions of DUID, IA, and IAID. | ||||
| container option An option that encapsulates other options | configuration parameter | |||
| (for example, the IA_NA option (see | An element of the configuration information set on the server and | |||
| Section 21.4) may contain IA Address | delivered to the client using DHCP. Such parameters may be used | |||
| options (see Section 21.6)). | to carry information to be used by a node to configure its network | |||
| subsystem and enable communication on a link or internetwork, for | ||||
| example. | ||||
| DHCP Dynamic Host Configuration Protocol for | container option | |||
| IPv6. The terms "DHCPv4" and "DHCPv6" are | An option that encapsulates other options (for example, the IA_NA | |||
| used only in contexts where it is necessary | option (see Section 21.4) may contain IA Address options (see | |||
| to avoid ambiguity. | Section 21.6)). | |||
| DHCP client Also referred to as "client". A node that | DHCP | |||
| initiates requests on a link to obtain | Dynamic Host Configuration Protocol for IPv6. The terms "DHCPv4" | |||
| configuration parameters from one or more | and "DHCPv6" are used only in contexts where it is necessary to | |||
| DHCP servers. | avoid ambiguity. | |||
| DHCP domain A set of links managed by DHCP and operated | DHCP client | |||
| by a single administrative entity. | Also referred to as "client". A node that initiates requests on a | |||
| link to obtain configuration parameters from one or more DHCP | ||||
| servers. | ||||
| DHCP relay agent Also referred to as "relay agent". A node | DHCP domain | |||
| that acts as an intermediary to deliver | A set of links managed by DHCP and operated by a single | |||
| DHCP messages between clients and servers. | administrative entity. | |||
| In certain configurations, there may be | ||||
| more than one relay agent between clients | ||||
| and servers, so a relay agent may send DHCP | ||||
| messages to another relay agent. | ||||
| DHCP server This document condenses this term to | DHCP relay agent | |||
| "server". A node that responds to requests | Also referred to as "relay agent". A node that acts as an | |||
| from clients. It may or may not be on the | intermediary to deliver DHCP messages between clients and servers. | |||
| same link as the client(s). | In certain configurations, there may be more than one relay agent | |||
| between clients and servers, so a relay agent may send DHCP | ||||
| messages to another relay agent. | ||||
| DUID A DHCP Unique Identifier for a DHCP | DHCP server | |||
| participant. Each DHCP client and server | This document condenses this term to "server". A node that | |||
| has exactly one DUID. See Section 11 for | responds to requests from clients. It may or may not be on the | |||
| details of the ways in which a DUID may be | same link as the client(s). | |||
| constructed. | ||||
| encapsulated option A DHCP option that is usually only | DUID | |||
| contained in another option. For example, | A DHCP Unique Identifier for a DHCP participant. Each DHCP client | |||
| the IA Address option is contained in IA_NA | and server has exactly one DUID. See Section 11 for details of | |||
| options (see Section 21.5). See Section 9 | the ways in which a DUID may be constructed. | |||
| of [RFC7227] for a more complete | ||||
| definition. | ||||
| IA Identity Association: a collection of | encapsulated option | |||
| leases assigned to a client. Each IA has | A DHCP option that is usually only contained in another option. | |||
| an associated IAID (see below). A client | For example, the IA Address option is contained in IA_NA options | |||
| may have more than one IA assigned to it -- | (see Section 21.5). See Section 9 of [RFC7227] for a more | |||
| for example, one for each of its | complete definition. | |||
| interfaces. Each IA holds one type of | ||||
| lease; for example, an identity association | ||||
| for non-temporary addresses (IA_NA) holds | ||||
| addresses, and an identity association for | ||||
| prefix delegation (IA_PD) holds delegated | ||||
| prefixes. Throughout this document, "IA" | ||||
| is used to refer to an identity association | ||||
| without identifying the type of a lease in | ||||
| the IA. This document defines three IA | ||||
| types: IA_NA, IA_TA (obsoleted), and IA_PD. | ||||
| Another IA type (IA_LL) was defined in | ||||
| [RFC8947] and more may be defined. | ||||
| IA option(s) In this document, one or more IA_NA, IA_TA | IA | |||
| (obsoleted), and/or IA_PD. Another IA type | Identity Association: a collection of leases assigned to a client. | |||
| (IA_LL) was defined in [RFC8947] and more | Each IA has an associated IAID (see below). A client may have | |||
| may be defined. | more than one IA assigned to it -- for example, one for each of | |||
| its interfaces. Each IA holds one type of lease; for example, an | ||||
| identity association for non-temporary addresses (IA_NA) holds | ||||
| addresses, and an identity association for prefix delegation | ||||
| (IA_PD) holds delegated prefixes. Throughout this document, "IA" | ||||
| is used to refer to an identity association without identifying | ||||
| the type of a lease in the IA. This document defines three IA | ||||
| types: IA_NA, IA_TA (obsoleted), and IA_PD. Another IA type | ||||
| (IA_LL) was defined in [RFC8947] and more may be defined. | ||||
| IAID Identity Association Identifier: an | IA option(s) | |||
| identifier for an IA, chosen by the client. | In this document, one or more IA_NA, IA_TA (obsoleted), and/or | |||
| Each IA has an IAID, which is chosen to be | IA_PD. Another IA type (IA_LL) was defined in [RFC8947] and more | |||
| unique among IAIDs for IAs of a specific | may be defined. | |||
| type that belong to that client. | ||||
| IA_NA Identity Association for Non-temporary | IAID | |||
| Addresses: an IA that carries assigned | Identity Association Identifier: an identifier for an IA, chosen | |||
| addresses. See Section 21.4 for details on | by the client. Each IA has an IAID, which is chosen to be unique | |||
| the IA_NA option. | among IAIDs for IAs of a specific type that belong to that client. | |||
| IA_PD Identity Association for Prefix Delegation: | IA_NA | |||
| Identity Association for Non-temporary Addresses: an IA that | ||||
| carries assigned addresses. See Section 21.4 for details on the | ||||
| IA_NA option. | ||||
| an IA that carries delegated prefixes. See | IA_PD | |||
| Section 21.21 for details on the IA_PD | Identity Association for Prefix Delegation: an IA that carries | |||
| option. | delegated prefixes. See Section 21.21 for details on the IA_PD | |||
| option. | ||||
| IA_TA Identity Association for Temporary | IA_TA | |||
| Addresses: an IA that carries temporary | Identity Association for Temporary Addresses: an IA that carries | |||
| addresses (see [RFC8981]). This option is | temporary addresses (see [RFC8981]). This option is obsoleted by | |||
| obsoleted by this document. See [RFC8415] | this document. See [RFC8415] for details. | |||
| for details. | ||||
| lease A contract by which the server grants the | lease | |||
| use of an address or delegated prefix to | A contract by which the server grants the use of an address or | |||
| the client for a specified period of time. | delegated prefix to the client for a specified period of time. | |||
| message A unit of data carried as the payload of a | message | |||
| UDP datagram, exchanged among DHCP servers, | A unit of data carried as the payload of a UDP datagram, exchanged | |||
| relay agents, and clients. | among DHCP servers, relay agents, and clients. | |||
| Reconfigure key A key supplied to a client by a server. | Reconfigure key | |||
| Used to provide security for Reconfigure | A key supplied to a client by a server. Used to provide security | |||
| messages (see Section 7.3 for the list of | for Reconfigure messages (see Section 7.3 for the list of | |||
| available message types). | available message types). | |||
| relaying A DHCP relay agent relays DHCP messages | relaying | |||
| between DHCP participants. | A DHCP relay agent relays DHCP messages between DHCP participants. | |||
| retransmission Another attempt to send the same DHCP | retransmission | |||
| message by a client or server, as a result | Another attempt to send the same DHCP message by a client or | |||
| of not receiving a valid response to the | server, as a result of not receiving a valid response to the | |||
| previously sent messages. The | previously sent messages. The retransmitted message is typically | |||
| retransmitted message is typically modified | modified prior to sending, as required by the DHCP specifications. | |||
| prior to sending, as required by the DHCP | In particular, the client updates the value of the Elapsed Time | |||
| specifications. In particular, the client | option in the retransmitted message. | |||
| updates the value of the Elapsed Time | ||||
| option in the retransmitted message. | ||||
| RKAP The Reconfiguration Key Authentication | RKAP | |||
| Protocol (see Section 20.4). | The Reconfiguration Key Authentication Protocol (see | |||
| Section 20.4). | ||||
| singleton option An option that is allowed to appear only | singleton option | |||
| once as a top-level option or at any | An option that is allowed to appear only once as a top-level | |||
| encapsulation level. Most options are | option or at any encapsulation level. Most options are | |||
| singletons. | singletons. | |||
| T1 The time interval after which the client is | T1 | |||
| expected to contact the server that did the | The time interval after which the client is expected to contact | |||
| assignment to extend (renew) the lifetimes | the server that did the assignment to extend (renew) the lifetimes | |||
| of the addresses assigned (via IA_NA | of the addresses assigned (via IA_NA option(s)) and/or prefixes | |||
| option(s)) and/or prefixes delegated (via | delegated (via IA_PD option(s)) to the client. T1 is expressed as | |||
| IA_PD option(s)) to the client. T1 is | an absolute value in messages (in seconds), is conveyed within IA | |||
| expressed as an absolute value in messages | containers (currently the IA_NA and IA_PD options), and is | |||
| (in seconds), is conveyed within IA | interpreted as a time interval since the message's reception. The | |||
| containers (currently the IA_NA and IA_PD | value stored in the T1 field in IA options is referred to as the | |||
| options), and is interpreted as a time | T1 value. The actual time when the timer expires is referred to | |||
| interval since the message's reception. | as the T1 time. | |||
| The value stored in the T1 field in IA | ||||
| options is referred to as the T1 value. | ||||
| The actual time when the timer expires is | ||||
| referred to as the T1 time. | ||||
| T2 The time interval after which the client is | T2 | |||
| expected to contact any available server to | The time interval after which the client is expected to contact | |||
| extend (rebind) the lifetimes of the | any available server to extend (rebind) the lifetimes of the | |||
| addresses assigned (via IA_NA option(s)) | addresses assigned (via IA_NA option(s)) and/or prefixes delegated | |||
| and/or prefixes delegated (via IA_PD | (via IA_PD option(s)) to the client. T2 is expressed as an | |||
| option(s)) to the client. T2 is expressed | absolute value in messages (in seconds), is conveyed within IA | |||
| as an absolute value in messages (in | containers (currently the IA_NA and IA_PD options), and is | |||
| seconds), is conveyed within IA containers | interpreted as a time interval since the message's reception. The | |||
| (currently the IA_NA and IA_PD options), | value stored in the T2 field in IA options is referred to as the | |||
| and is interpreted as a time interval since | T2 value. The actual time when the timer expires is referred to | |||
| the message's reception. The value stored | as the T2 time. | |||
| in the T2 field in IA options is referred | ||||
| to as the T2 value. The actual time when | ||||
| the timer expires is referred to as the | ||||
| T2 time. | ||||
| top-level option An option conveyed in a DHCP message | top-level option | |||
| directly, i.e., not encapsulated in any | An option conveyed in a DHCP message directly, i.e., not | |||
| other option, as described in Section 9 of | encapsulated in any other option, as described in Section 9 of | |||
| [RFC7227]. | [RFC7227]. | |||
| transaction ID An opaque value used to match responses | transaction ID | |||
| with replies initiated by either a client | An opaque value used to match responses with replies initiated by | |||
| or a server. | either a client or a server. | |||
| 5. Client/Server Exchanges | 5. Client/Server Exchanges | |||
| Clients and servers exchange DHCP messages using UDP (see [RFC0768] | Clients and servers exchange DHCP messages using UDP (see [RFC0768] | |||
| and [BCP145]). The client uses a link-local source address or | and [BCP145]). The client uses a link-local source address or | |||
| addresses determined through other mechanisms for transmitting and | addresses determined through other mechanisms for transmitting and | |||
| receiving DHCP messages. | receiving DHCP messages. | |||
| A DHCP client sends all messages using a reserved, link-scoped | A DHCP client sends all messages using a reserved, link-scoped | |||
| multicast destination address (All_DHCP_Relay_Agents_and_Servers - | multicast destination address (All_DHCP_Relay_Agents_and_Servers - | |||
| skipping to change at page 16, line 21 ¶ | skipping to change at line 708 ¶ | |||
| interaction should be considered and documented as part of any future | interaction should be considered and documented as part of any future | |||
| protocol extension. | protocol extension. | |||
| 6.1. Stateless DHCP | 6.1. Stateless DHCP | |||
| Stateless DHCP can be used at any time, typically when a node | Stateless DHCP can be used at any time, typically when a node | |||
| requires some missing or expired configuration information that is | requires some missing or expired configuration information that is | |||
| available via DHCP. | available via DHCP. | |||
| This is the simplest and most basic operation for DHCP and requires a | This is the simplest and most basic operation for DHCP and requires a | |||
| client (and a server) to support only two messages -- | client (and a server) to support only two messages -- Information- | |||
| Information-request and Reply. Note that DHCP servers and relay | request and Reply. Note that DHCP servers and relay agents typically | |||
| agents typically also need to support the Relay-forward and | also need to support the Relay-forward and Relay-reply messages to | |||
| Relay-reply messages to accommodate operation when clients and | accommodate operation when clients and servers are not on the same | |||
| servers are not on the same link. | link. | |||
| 6.2. DHCP for Non-temporary Address Assignment | 6.2. DHCP for Non-Temporary Address Assignment | |||
| This model of operation was the original motivation for DHCP. It is | This model of operation was the original motivation for DHCP. It is | |||
| appropriate for situations where stateless address autoconfiguration | appropriate for situations where stateless address autoconfiguration | |||
| alone is insufficient or impractical, e.g., because of network | alone is insufficient or impractical, e.g., because of network | |||
| policy, additional requirements such as dynamic updates to the DNS, | policy, additional requirements such as dynamic updates to the DNS, | |||
| or client-specific requirements. | or client-specific requirements. | |||
| The model of operation for non-temporary address assignment is as | The model of operation for non-temporary address assignment is as | |||
| follows: | follows: | |||
| skipping to change at page 18, line 20 ¶ | skipping to change at line 799 ¶ | |||
| Each prefix has an associated preferred lifetime and valid lifetime | Each prefix has an associated preferred lifetime and valid lifetime | |||
| (see Section 12.2), which constitute an agreement about the length of | (see Section 12.2), which constitute an agreement about the length of | |||
| time over which the client is allowed to use the prefix. A client | time over which the client is allowed to use the prefix. A client | |||
| can request an extension of the lifetimes on a delegated prefix and | can request an extension of the lifetimes on a delegated prefix and | |||
| is required to terminate the use of a delegated prefix if the valid | is required to terminate the use of a delegated prefix if the valid | |||
| lifetime of the prefix expires. | lifetime of the prefix expires. | |||
| Figure 1 illustrates a network architecture in which prefix | Figure 1 illustrates a network architecture in which prefix | |||
| delegation could be used. | delegation could be used. | |||
| ______________________ \ | ______________________ \ | |||
| / \ \ | / \ \ | |||
| | ISP core network | \ | | ISP core network | \ | |||
| \__________ ___________/ | | \__________ ___________/ | | |||
| | | | | | | |||
| +-------+-------+ | | +-------+-------+ | | |||
| | Aggregation | | ISP | | Aggregation | | ISP | |||
| | device | | network | | device | | network | |||
| +-------+-------+ | | +-------+-------+ | | |||
| | / | | / | |||
| |Network link to / | |Network link to / | |||
| |subscriber premises / | |subscriber premises / | |||
| | | | | |||
| +-------+-------+ \ | +------+--------+ \ | |||
| | CPE | \ | | CPE | \ | |||
| | (DHCP client) | \ | | (DHCP client) | \ | |||
| +----+---+------+ | | +----+---+------+ | | |||
| | | | Subscriber | | | | Subscriber | |||
| ---+-------------+-----+ +-----+------ | network | ---+-------------+-----+ +-----+------ | network | |||
| | | | | | | | | | | |||
| +----+-----+ +-----+----+ +----+-----+ | | +----+-----+ +-----+----+ +----+-----+ | | |||
| |Subscriber| |Subscriber| |Subscriber| / | |Subscriber| |Subscriber| |Subscriber| / | |||
| | PC | | PC | | PC | / | | PC | | PC | | PC | / | |||
| +----------+ +----------+ +----------+ / | +----------+ +----------+ +----------+ / | |||
| Figure 1: Prefix Delegation Network | Figure 1: Prefix Delegation Network | |||
| In this example, the server (in the ISP core network or integrated in | In this example, the server (in the ISP core network or integrated in | |||
| the aggregation device) is configured with a set of prefixes to be | the aggregation device) is configured with a set of prefixes to be | |||
| used for assignment to customers at the time of each customer's first | used for assignment to customers at the time of each customer's first | |||
| connection to the ISP service. The prefix delegation process begins | connection to the ISP service. The prefix delegation process begins | |||
| when the client (CPE) requests configuration information through | when the client (CPE) requests configuration information through | |||
| DHCP. The DHCP messages from the client are received by the server | DHCP. The DHCP messages from the client are received by the server | |||
| via the aggregation device. When the server receives the request, it | via the aggregation device. When the server receives the request, it | |||
| skipping to change at page 19, line 37 ¶ | skipping to change at line 865 ¶ | |||
| or a prefix derived from it is advertised for stateless address | or a prefix derived from it is advertised for stateless address | |||
| autoconfiguration [RFC4862], the advertised preferred and valid | autoconfiguration [RFC4862], the advertised preferred and valid | |||
| lifetimes MUST NOT exceed the corresponding remaining lifetimes of | lifetimes MUST NOT exceed the corresponding remaining lifetimes of | |||
| the delegated prefix. | the delegated prefix. | |||
| A client that has delegated any of the address space received through | A client that has delegated any of the address space received through | |||
| DHCP Prefix Delegation MUST NOT issue a DHCP Release on the relevant | DHCP Prefix Delegation MUST NOT issue a DHCP Release on the relevant | |||
| delegated prefix while any of the address space is outstanding. That | delegated prefix while any of the address space is outstanding. That | |||
| includes addresses leased out by DHCPv6 (IA_NA), prefixes delegated | includes addresses leased out by DHCPv6 (IA_NA), prefixes delegated | |||
| via DHCPv6-PD (IA_PD), and addresses autoconfigured by IPv6 Router | via DHCPv6-PD (IA_PD), and addresses autoconfigured by IPv6 Router | |||
| Advertisements. Requirement WPD-9 in [RFC9096] makes this the Best | Advertisements. Requirement WPD-9 in [RFC9096] makes this the best | |||
| Current Practice. | current practice. | |||
| [RFC9096] section 3.3 further provides more guidance on coordination | [RFC9096], Section 3.3 provides further guidance on coordination of | |||
| of lifetimes between WAN (DHCPv6-PD client) and LAN (DHCPv6-PD | lifetimes between WAN (DHCPv6-PD client) and LAN (DHCPv6-PD server) | |||
| server) sides. | sides. | |||
| Several problems related to Prefix Delegation and Relay Agents and a | Several problems related to Prefix Delegation and Relay Agents and a | |||
| set of requirements to address them are defined in [RFC8987]. | set of requirements to address them are defined in [RFC8987]. | |||
| 6.4. DHCP for Customer Edge Routers | 6.4. DHCP for Customer Edge Routers | |||
| The DHCP requirements and network architecture for Customer Edge | The DHCP requirements and network architecture for Customer Edge | |||
| Routers are described in [RFC7084], with improvements for renumbering | Routers are described in [RFC7084], with improvements for renumbering | |||
| described in [RFC9096]. This model of operation combines address | described in [RFC9096]. This model of operation combines address | |||
| assignment (see Section 6.2) and prefix delegation (see Section 6.3). | assignment (see Section 6.2) and prefix delegation (see Section 6.3). | |||
| skipping to change at page 21, line 5 ¶ | skipping to change at line 917 ¶ | |||
| larger prefix in its initial transmissions rather than request | larger prefix in its initial transmissions rather than request | |||
| additional prefixes later on. | additional prefixes later on. | |||
| The exact behavior of the server (whether to grant additional | The exact behavior of the server (whether to grant additional | |||
| addresses and prefixes or not) is up to the server policy and is out | addresses and prefixes or not) is up to the server policy and is out | |||
| of scope for this document. | of scope for this document. | |||
| For more information on how the server distinguishes between IA | For more information on how the server distinguishes between IA | |||
| option instances, see Section 12. | option instances, see Section 12. | |||
| 6.6. Registering Self-generated Addresses | 6.6. Registering Self-Generated Addresses | |||
| [RFC9686] introduces a method for devices to register their self- | [RFC9686] introduces a method for devices to register their self- | |||
| generated or statically configured addresses in the DHCPv6 servers. | generated or statically configured addresses in the DHCPv6 servers. | |||
| The general idea is that devices would notify the server about | The general idea is that devices would notify the server about | |||
| addresses that they are using, so that the server can log or record | addresses that they are using, so that the server can log or record | |||
| these addresses as required by local policy. | these addresses as required by local policy. | |||
| The major specificity of this mechanism is that the address selection | The major specificity of this mechanism is that the address selection | |||
| is not done by the DHCP server, but by the device itself. The most | is not done by the DHCP server, but by the device itself. The | |||
| of the lifecycle remains the same in principle: a lease is created by | majority of the lifecycle remains the same in principle: a lease is | |||
| the server, and the device performs periodic actions to get the lease | created by the server, the device performs periodic actions to get | |||
| renewed, and eventually the lease can expire. However, this | the lease renewed, and, eventually, the lease can expire. However, | |||
| mechanism uses different message types (ADDR-REG-INFORM and ADDR-REG- | this mechanism uses different message types (ADDR-REG-INFORM and | |||
| REPLY) and has different source address requirements, as defined in | ADDR-REG-REPLY) and has different source address requirements, as | |||
| [RFC9686]. | defined in [RFC9686]. | |||
| 7. DHCP Constants | 7. DHCP Constants | |||
| This section describes various program and networking constants used | This section describes various program and networking constants used | |||
| by DHCP. | by DHCP. | |||
| 7.1. Multicast Addresses | 7.1. Multicast Addresses | |||
| The following multicast addresses are used by DHCPv6: | The following multicast addresses are used by DHCPv6: | |||
| skipping to change at page 22, line 27 ¶ | skipping to change at line 985 ¶ | |||
| of these rules for servers and relays agents. | of these rules for servers and relays agents. | |||
| 7.3. DHCP Message Types | 7.3. DHCP Message Types | |||
| DHCP defines the following message types. The formats of these | DHCP defines the following message types. The formats of these | |||
| messages are provided in Sections 8 and 9. Additional message types | messages are provided in Sections 8 and 9. Additional message types | |||
| have been defined and may be defined in the future; see | have been defined and may be defined in the future; see | |||
| <https://www.iana.org/assignments/dhcpv6-parameters>. The numeric | <https://www.iana.org/assignments/dhcpv6-parameters>. The numeric | |||
| encoding for each message type is shown in parentheses. | encoding for each message type is shown in parentheses. | |||
| SOLICIT (1) A client sends a Solicit message to locate | SOLICIT (1) | |||
| servers. | A client sends a Solicit message to locate servers. | |||
| ADVERTISE (2) A server sends an Advertise message to | ADVERTISE (2) | |||
| indicate that it is available for DHCP | A server sends an Advertise message to indicate that it is | |||
| service, in response to a Solicit message | available for DHCP service, in response to a Solicit message | |||
| received from a client. | received from a client. | |||
| REQUEST (3) A client sends a Request message to request | REQUEST (3) | |||
| configuration parameters, including | A client sends a Request message to request configuration | |||
| addresses and/or delegated prefixes, from a | parameters, including addresses and/or delegated prefixes, from a | |||
| specific server. | specific server. | |||
| CONFIRM (4) A client sends a Confirm message to any | CONFIRM (4) | |||
| available server to determine whether the | A client sends a Confirm message to any available server to | |||
| addresses it was assigned are still | determine whether the addresses it was assigned are still | |||
| appropriate to the link to which the client | appropriate to the link to which the client is connected. | |||
| is connected. | ||||
| RENEW (5) A client sends a Renew message to the | RENEW (5) | |||
| server that originally provided the | A client sends a Renew message to the server that originally | |||
| client's leases and configuration | provided the client's leases and configuration parameters to | |||
| parameters to extend the lifetimes on the | extend the lifetimes on the leases assigned to the client and to | |||
| leases assigned to the client and to update | update other configuration parameters. | |||
| other configuration parameters. | ||||
| REBIND (6) A client sends a Rebind message to any | REBIND (6) | |||
| available server to extend the lifetimes on | A client sends a Rebind message to any available server to extend | |||
| the leases assigned to the client and to | the lifetimes on the leases assigned to the client and to update | |||
| update other configuration parameters; this | other configuration parameters; this message is sent after a | |||
| message is sent after a client receives no | client receives no response to a Renew message. | |||
| response to a Renew message. | ||||
| REPLY (7) A server sends a Reply message containing | REPLY (7) | |||
| assigned leases and configuration | A server sends a Reply message containing assigned leases and | |||
| parameters in response to a Solicit, | configuration parameters in response to a Solicit, Request, Renew, | |||
| Request, Renew, or Rebind message received | or Rebind message received from a client. A server sends a Reply | |||
| from a client. A server sends a Reply | message containing configuration parameters in response to an | |||
| message containing configuration parameters | Information-request message. A server sends a Reply message in | |||
| in response to an Information-request | response to a Confirm message confirming or denying that the | |||
| message. A server sends a Reply message in | addresses assigned to the client are appropriate to the link to | |||
| response to a Confirm message confirming or | which the client is connected. A server sends a Reply message to | |||
| denying that the addresses assigned to the | acknowledge receipt of a Release or Decline message. | |||
| client are appropriate to the link to which | ||||
| the client is connected. A server sends a | ||||
| Reply message to acknowledge receipt of a | ||||
| Release or Decline message. | ||||
| RELEASE (8) A client sends a Release message to the | RELEASE (8) | |||
| server that assigned leases to the client | A client sends a Release message to the server that assigned | |||
| to indicate that the client will no longer | leases to the client to indicate that the client will no longer | |||
| use one or more of the assigned leases. | use one or more of the assigned leases. | |||
| DECLINE (9) A client sends a Decline message to a | DECLINE (9) | |||
| server to indicate that the client has | A client sends a Decline message to a server to indicate that the | |||
| determined that one or more addresses | client has determined that one or more addresses assigned by the | |||
| assigned by the server are already in use | server are already in use on the link to which the client is | |||
| on the link to which the client is | connected. | |||
| connected. | ||||
| RECONFIGURE (10) A server sends a Reconfigure message to a | RECONFIGURE (10) | |||
| client to inform the client that the server | A server sends a Reconfigure message to a client to inform the | |||
| has new or updated configuration parameters | client that the server has new or updated configuration parameters | |||
| and that the client is to initiate a | and that the client is to initiate a Renew/Reply, Rebind/Reply, or | |||
| Renew/Reply, Rebind/Reply, or | Information-request/Reply transaction with the server in order to | |||
| Information-request/Reply transaction with | receive the updated information. | |||
| the server in order to receive the updated | ||||
| information. | ||||
| INFORMATION-REQUEST (11) A client sends an Information-request | INFORMATION-REQUEST (11) | |||
| message to a server to request | A client sends an Information-request message to a server to | |||
| configuration parameters without the | request configuration parameters without the assignment of any | |||
| assignment of any leases to the client. | leases to the client. | |||
| RELAY-FORW (12) A relay agent sends a Relay-forward message | RELAY-FORW (12) | |||
| to relay messages to servers, either | A relay agent sends a Relay-forward message to relay messages to | |||
| directly or through another relay agent. | servers, either directly or through another relay agent. The | |||
| The received message -- either a client | received message -- either a client message or a Relay-forward | |||
| message or a Relay-forward message from | message from another relay agent -- is encapsulated in an option | |||
| another relay agent -- is encapsulated in | in the Relay-forward message. | |||
| an option in the Relay-forward message. | ||||
| RELAY-REPL (13) A server sends a Relay-reply message to a | RELAY-REPL (13) | |||
| relay agent containing a message that the | A server sends a Relay-reply message to a relay agent containing a | |||
| relay agent delivers to a client. The | message that the relay agent delivers to a client. The Relay- | |||
| Relay-reply message may be relayed by other | reply message may be relayed by other relay agents for delivery to | |||
| relay agents for delivery to the | the destination relay agent. | |||
| destination relay agent. | ||||
| The server encapsulates the client message | The server encapsulates the client message as an option in the | |||
| as an option in the Relay-reply message, | Relay-reply message, which the relay agent extracts and relays to | |||
| which the relay agent extracts and relays | the client. | |||
| to the client. | ||||
| 7.4. DHCP Option Codes | 7.4. DHCP Option Codes | |||
| DHCP makes extensive use of options in messages; some of these are | DHCP makes extensive use of options in messages; some of these are | |||
| defined later, in Section 21. Additional options are defined in | defined later, in Section 21. Additional options are defined in | |||
| other documents or may be defined in the future (see [RFC7227] for | other documents or may be defined in the future (see [RFC7227] for | |||
| guidance on new option definitions). | guidance on new option definitions). | |||
| 7.5. Status Codes | 7.5. Status Codes | |||
| skipping to change at page 27, line 12 ¶ | skipping to change at line 1194 ¶ | |||
| 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-byte or 4-byte boundaries). | any other way (such as on 2-byte or 4-byte boundaries). | |||
| The following diagram illustrates the format of DHCP messages sent | The following diagram illustrates the format of DHCP messages sent | |||
| between clients and servers: | between clients and servers: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | msg-type | transaction-id | | | msg-type | transaction-id | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . options . | . options . | |||
| . (variable number and length) . | . (variable number and length) . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: Client/Server Message Format | Figure 2: Client/Server Message Format | |||
| msg-type Identifies the DHCP message type; the | msg-type: Identifies the DHCP message type; the available message | |||
| available message types are listed in | types are listed in Section 7.3. A 1-octet field. | |||
| Section 7.3. A 1-octet field. | ||||
| transaction-id The transaction ID for this message exchange. | transaction-id: The transaction ID for this message exchange. A | |||
| A 3-octet field. | 3-octet field. | |||
| options Options carried in this message; options are | options: Options carried in this message; options are described in | |||
| described in Section 21. A variable-length | Section 21. A variable-length field (4 octets less than the size | |||
| field (4 octets less than the size of the | of the message). | |||
| message). | ||||
| 9. Relay Agent/Server Message Formats | 9. Relay Agent/Server Message Formats | |||
| Relay agents exchange messages with other relay agents and servers to | Relay agents exchange messages with other relay agents and servers to | |||
| relay messages between clients and servers that are not connected to | relay messages between clients and servers that are not connected to | |||
| the same link. | the same link. | |||
| 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-byte or 4-byte boundaries). | any other way (such as on 2-byte or 4-byte boundaries). | |||
| There are two relay agent messages (Relay-forward and Relay-reply), | There are two relay agent messages (Relay-forward and Relay-reply), | |||
| which share the following format: | which share the following format: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | msg-type | hop-count | | | | msg-type | hop-count | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| | link-address | | | link-address | | |||
| | | | | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| | peer-address | | | peer-address | | |||
| | | | | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| . . | . . | |||
| . options (variable number and length) .... . | . options (variable number and length) .... . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3: Relay Agent/Server Message Format | Figure 3: Relay Agent/Server Message Format | |||
| The following sections describe the use of the relay agent message | The following sections describe the use of the relay agent message | |||
| header. | header. | |||
| 9.1. Relay-forward Message | 9.1. Relay-forward Message | |||
| The following table defines the use of message fields in a | The following list defines the use of message fields in a Relay- | |||
| Relay-forward message. | forward message. | |||
| msg-type RELAY-FORW (12). A 1-octet field. | msg-type: RELAY-FORW (12). A 1-octet field. | |||
| hop-count Number of relay agents that have already | hop-count: Number of relay agents that have already relayed this | |||
| relayed this message. A 1-octet field. | message. A 1-octet field. | |||
| link-address An address that may be used by the server to | link-address: An address that may be used by the server to identify | |||
| identify the link on which the client is | the link on which the client is located. This is typically a | |||
| located. This is typically a globally scoped | globally scoped unicast address (i.e., GUA or ULA), but see the | |||
| unicast address (i.e., GUA or ULA), but see | discussion in Section 19.1.1. A 16-octet field. | |||
| the discussion in Section 19.1.1. A 16-octet | ||||
| field. | ||||
| peer-address The address of the client or relay agent from | peer-address: The address of the client or relay agent from which | |||
| which the message to be relayed was received. | the message to be relayed was received. A 16-octet field. | |||
| A 16-octet field. | ||||
| options MUST include a Relay Message option (see | options: MUST include a Relay Message option (see Section 21.10); | |||
| Section 21.10); MAY include other options, | MAY include other options, such as the Interface-Id option (see | |||
| such as the Interface-Id option (see | Section 21.18), added by the relay agent. A variable-length field | |||
| Section 21.18), added by the relay agent. A | (34 octets less than the size of the message). | |||
| variable-length field (34 octets less than | ||||
| the size of the message). | ||||
| See Section 13.1 for an explanation of how the link-address field | See Section 13.1 for an explanation of how the link-address field is | |||
| is used. | used. | |||
| 9.2. Relay-reply Message | 9.2. Relay-reply Message | |||
| The following table defines the use of message fields in a | The following list defines the use of message fields in a Relay-reply | |||
| Relay-reply message. | message. | |||
| msg-type RELAY-REPL (13). A 1-octet field. | msg-type: RELAY-REPL (13). A 1-octet field. | |||
| hop-count Copied from the Relay-forward message. | hop-count: Copied from the Relay-forward message. A 1-octet field. | |||
| A 1-octet field. | ||||
| link-address Copied from the Relay-forward message. | link-address: Copied from the Relay-forward message. A 16-octet | |||
| A 16-octet field. | field. | |||
| peer-address Copied from the Relay-forward message. | peer-address: Copied from the Relay-forward message. A 16-octet | |||
| A 16-octet field. | field. | |||
| options MUST include a Relay Message option (see | options: MUST include a Relay Message option (see Section 21.10); | |||
| Section 21.10); MAY include other options, | MAY include other options, such as the Interface-Id option (see | |||
| such as the Interface-Id option (see | Section 21.18). A variable-length field (34 octets less than the | |||
| Section 21.18). A variable-length field | size of the message). | |||
| (34 octets less than the size of the | ||||
| message). | ||||
| 10. Representation and Use of Domain Names | 10. 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]. The message compression scheme in | Section 3.1 of [RFC1035]. The message compression scheme in | |||
| Section 4.1.4 of [RFC1035] MUST NOT be used. | Section 4.1.4 of [RFC1035] MUST NOT be used. | |||
| 11. DHCP Unique Identifier (DUID) | 11. DHCP Unique Identifier (DUID) | |||
| skipping to change at page 30, line 15 ¶ | skipping to change at line 1332 ¶ | |||
| 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 SHOULD NOT in any | compare DUIDs for equality. Clients and servers SHOULD NOT in any | |||
| other way interpret DUIDs. Clients and servers MUST NOT restrict | other way interpret DUIDs. Clients and servers MUST NOT restrict | |||
| DUIDs to the types defined in this document, as additional DUID types | DUIDs to the types defined in this document, as additional DUID types | |||
| may be defined in the future. It should be noted that an attempt to | may be defined in the future. It should be noted that an attempt to | |||
| parse a DUID to obtain a client's link-layer address is unreliable, | parse a DUID to obtain a client's link-layer address is unreliable, | |||
| as there is no guarantee that the client is still using the same | as there is no guarantee that the client is still using the same | |||
| link-layer address as when it generated its DUID. Also, such an | link-layer address as when it generated its DUID. Also, such an | |||
| attempt will be more and more unreliable as more clients adopt | attempt will be more and more unreliable as more clients adopt | |||
| privacy measures such as those defined in [RFC7844]. If this | privacy measures such as those defined in [RFC7844]. If this | |||
| capability is required, it is recommended to rely on the Client | capability is required, it is recommended to rely on the Client Link- | |||
| Link-Layer Address option instead [RFC6939]. | Layer Address option instead [RFC6939]. | |||
| The DUID is carried in an option because it may be variable in length | The DUID is carried in an option because it may be variable in length | |||
| and because it is not required in all DHCP messages. The DUID is | and because it is not required in all DHCP messages. The DUID is | |||
| designed to be unique across all DHCP clients and servers, and stable | designed to be unique across all DHCP clients and servers, and stable | |||
| for any specific client or server. That is, the DUID used by a | for any specific client or server. That is, the DUID used by a | |||
| client or server SHOULD NOT change over time if at all possible; for | client or server SHOULD NOT change over time if at all possible; for | |||
| example, a device's DUID should not change as a result of a change in | example, a device's DUID should not change as a result of a change in | |||
| the device's network hardware or changes to virtual interfaces (e.g., | the device's network hardware or changes to virtual interfaces (e.g., | |||
| logical PPP (over Ethernet) interfaces that may come and go in | logical PPP (over Ethernet) interfaces that may come and go in | |||
| Customer Premises Equipment routers). The client may change its DUID | Customer Premises Equipment routers). The client may change its DUID | |||
| skipping to change at page 31, line 40 ¶ | skipping to change at line 1396 ¶ | |||
| 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 IANA; see [IANA-HARDWARE-TYPES]. Both the time and the | assigned by IANA; see [IANA-HARDWARE-TYPES]. Both the time and the | |||
| hardware type are stored in network byte order. For Ethernet | hardware type are stored in network byte order. For Ethernet | |||
| hardware types, the link-layer address is stored in canonical form, | hardware types, the link-layer address is stored in canonical form, | |||
| as described in [RFC2464]. | as described in [RFC2464]. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | DUID-Type (1) | hardware type (16 bits) | | | DUID-Type (1) | hardware type (16 bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | time (32 bits) | | | time (32 bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . link-layer address (variable length) . | . link-layer address (variable length) . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: DUID-LLT Format | Figure 4: DUID-LLT Format | |||
| 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; the same DUID-LLT SHOULD be used in configuring all | the link type; the same DUID-LLT SHOULD be used in configuring all | |||
| network interfaces connected to the device, regardless of which | network interfaces connected to the device, regardless of which | |||
| interface's link-layer address was used to generate the DUID-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 | |||
| skipping to change at page 33, line 5 ¶ | skipping to change at line 1452 ¶ | |||
| DUID-LLT. | DUID-LLT. | |||
| 11.3. DUID Assigned by Vendor Based on Enterprise Number (DUID-EN) | 11.3. DUID Assigned by Vendor Based on Enterprise Number (DUID-EN) | |||
| The vendor assigns this form of DUID to the device. This DUID | The vendor assigns this form of DUID to the device. This DUID | |||
| consists of the 4-octet vendor's registered Private Enterprise Number | consists of the 4-octet vendor's registered Private Enterprise Number | |||
| as maintained by IANA [IANA-PEN] followed by a unique identifier | as maintained by IANA [IANA-PEN] followed by a unique identifier | |||
| assigned by the vendor. The following diagram summarizes the | assigned by the vendor. The following diagram summarizes the | |||
| structure of a DUID-EN: | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | DUID-Type (2) | enterprise-number | | | DUID-Type (2) | enterprise-number | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | enterprise-number (contd) | | | | enterprise-number (contd) | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| . identifier . | . identifier . | |||
| . (variable length) . | . (variable length) . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5: DUID-EN Format | Figure 5: DUID-EN Format | |||
| The source of the identifier is left up to the vendor defining it, | The source of the identifier is left up to the vendor defining it, | |||
| but each identifier part of each DUID-EN MUST be unique to the device | but each identifier part of each DUID-EN MUST be unique to the device | |||
| that is using it, and MUST be assigned to the device no later than at | that is using it, and MUST be assigned to the device no later than at | |||
| the first usage and stored in some form of non-volatile storage. | the first usage and stored in some form of non-volatile storage. | |||
| This typically means being assigned during the manufacturing process | This typically means being assigned during the manufacturing process | |||
| in the case of physical devices or, in the case of virtual machines, | in the case of physical devices or, in the case of virtual machines, | |||
| when the image is created or booted for the first time. The | when the image is created or booted for the first time. The | |||
| generated DUID SHOULD be recorded in non-erasable storage. The | generated DUID SHOULD be recorded in non-erasable storage. The | |||
| enterprise-number is the vendor's registered Private Enterprise | enterprise-number is the vendor's registered Private Enterprise | |||
| Number as maintained by IANA [IANA-PEN]. The enterprise-number is | Number as maintained by IANA [IANA-PEN]. The enterprise-number is | |||
| stored as an unsigned 32-bit number. | stored as an unsigned 32-bit number. | |||
| An example DUID of this type might look like this: | An example DUID of this type might look like this: | |||
| +---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | |||
| | 0 | 2 | 0 | 0 |126|217| 12|192| | | 0 | 2 | 0 | 0 |126|217| 12|192| | |||
| +---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | |||
| |132|211| 3 | 0 | 9 | 18| | |132|211| 3 | 0 | 9 | 18| | |||
| +---+---+---+---+---+---+ | +---+---+---+---+---+---+ | |||
| Figure 6: DUID-EN Example | Figure 6: DUID-EN Example | |||
| This example includes the 2-octet type of 2 and the Enterprise Number | This example includes the 2-octet type of 2 and the Enterprise Number | |||
| (32473) (from [RFC5612]), followed by 8 octets of identifier data | (32473) (from [RFC5612]), followed by 8 octets of identifier data | |||
| (0x0CC084D303000912). | (0x0CC084D303000912). | |||
| 11.4. DUID Based on Link-Layer Address (DUID-LL) | 11.4. DUID Based on Link-Layer Address (DUID-LL) | |||
| This type of DUID consists of 2 octets containing a DUID type of 3 | This type of DUID consists of 2 octets containing a DUID type of 3 | |||
| and a 2-octet network hardware type code, followed by the link-layer | and a 2-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 node that has a network | the client or server device. For example, a node that has a network | |||
| interface implemented in a chip that is unlikely to be removed and | 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 | used elsewhere could use a DUID-LL. The hardware type MUST be a | |||
| valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. The | valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. The | |||
| hardware type is stored in network byte order. The link-layer | hardware type is stored in network byte order. The link-layer | |||
| address is stored in canonical form, as described in [RFC2464]. The | address is stored in canonical form, as described in [RFC2464]. The | |||
| following diagram illustrates the format of a DUID-LL: | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | DUID-Type (3) | hardware type (16 bits) | | | DUID-Type (3) | hardware type (16 bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . link-layer address (variable length) . | . link-layer address (variable length) . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 7: DUID-LL Format | Figure 7: DUID-LL Format | |||
| 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 unique link-layer address and is | as that interface provides a unique link-layer address and is | |||
| permanently attached to the device on which the DUID-LL is being | permanently attached to the device on which the DUID-LL is being | |||
| generated. The same DUID-LL SHOULD be used in configuring all | generated. The same DUID-LL SHOULD be used in configuring all | |||
| network interfaces connected to the device, regardless of which | network interfaces connected to the device, regardless of which | |||
| interface's link-layer address was used to generate the DUID. | interface's link-layer address was used to generate the DUID. | |||
| skipping to change at page 34, line 41 ¶ | skipping to change at line 1537 ¶ | |||
| by DHCP clients or servers that cannot tell whether or not a network | by 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. | |||
| 11.5. DUID Based on Universally Unique Identifier (DUID-UUID) | 11.5. DUID Based on Universally Unique Identifier (DUID-UUID) | |||
| This type of DUID consists of 16 octets containing a 128-bit UUID. | This type of DUID consists of 16 octets containing a 128-bit UUID. | |||
| [RFC6355] details when to use this type and how to pick an | [RFC6355] details when to use this type and how to pick an | |||
| appropriate source of the UUID. | appropriate source of the UUID. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | DUID-Type (4) | UUID (128 bits) | | | DUID-Type (4) | UUID (128 bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| | | | | | | |||
| | -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | |||
| Figure 8: DUID-UUID Format | Figure 8: DUID-UUID Format | |||
| 12. Identity Association | 12. 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 or delegated prefixes. Each IA consists of an IAID and | addresses or delegated prefixes. Each IA consists of an IAID and | |||
| associated configuration information. | associated configuration information. | |||
| The IAID uniquely identifies the IA and MUST be chosen to be unique | The IAID uniquely identifies the IA and MUST be chosen to be unique | |||
| skipping to change at page 38, line 8 ¶ | skipping to change at line 1698 ¶ | |||
| 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 21.3) in the client's | a Server Identifier option (see Section 21.3) in the client's | |||
| message. (All servers will receive this message, but only the | message. (All servers will receive this message, but only the | |||
| indicated server will respond.) All servers are indicated when this | indicated server will respond.) All servers are indicated when this | |||
| option is not supplied. | option is not supplied. | |||
| 14.1. Rate Limiting | 14.1. Rate Limiting | |||
| A DHCPv6 client MUST limit the rate of DHCP messages it transmits or | A DHCPv6 client MUST limit the rate of DHCP messages it transmits or | |||
| retransmits. This will minimise the impact of prolonged message | retransmits. This will minimize the impact of prolonged message | |||
| bursts or loops, for example when a client rejects a server's | bursts or loops, for example when a client rejects a server's | |||
| response, repeats the request and gets the same server response which | response, repeats the request and gets the same server response, | |||
| again gets rejected by the client. | which, again, gets rejected by the client. | |||
| This loop can repeat infinitely if there is not a quit/stop | This loop can repeat infinitely if there is not a quit/stop | |||
| mechanism. Therefore, a client must not initiate transmissions too | mechanism. Therefore, a client must not initiate transmissions too | |||
| frequently. | frequently. | |||
| A recommended method for implementing the rate-limiting function is a | A recommended method for implementing the rate-limiting function is a | |||
| token bucket (see Appendix A of [RFC3290]), limiting the average rate | token bucket (see Appendix A of [RFC3290]), limiting the average rate | |||
| of transmission to a certain number in a certain time interval. This | of transmission to a certain number in a certain time interval. This | |||
| method of bounding burstiness also guarantees that the long-term | method of bounding burstiness also guarantees that the long-term | |||
| transmission rate will not be exceeded. | transmission rate will not be exceeded. | |||
| skipping to change at page 39, line 45 ¶ | skipping to change at line 1777 ¶ | |||
| options (see Section 21.6) or IA Prefix options (see Section 21.22) | options (see Section 21.6) or IA Prefix options (see Section 21.22) | |||
| if a valid lifetime for any of the client's leases expires before | if a valid lifetime for any of the client's leases expires before | |||
| retransmission. Thus, whenever this document refers to a | retransmission. Thus, whenever this document refers to a | |||
| "retransmission" of a client's message, it refers to both modifying | "retransmission" of a client's message, it refers to both modifying | |||
| the original message and sending this new message instance to the | the original message and sending this new message instance to the | |||
| server. | server. | |||
| The client retransmission behavior is controlled and described by the | The client retransmission behavior is controlled and described by the | |||
| following variables: | following variables: | |||
| RT Retransmission timeout | RT: Retransmission timeout | |||
| IRT Initial retransmission time | IRT: Initial retransmission time | |||
| MRC Maximum retransmission count | MRC: Maximum retransmission count | |||
| MRT Maximum retransmission time | MRT: Maximum retransmission time | |||
| MRD Maximum retransmission duration | ||||
| RAND Randomization factor | MRD: Maximum retransmission duration | |||
| RAND: Randomization factor | ||||
| Specific values for each of these parameters relevant to the various | Specific values for each of these parameters relevant to the various | |||
| messages are given in the subsections of Section 18.2, using values | messages are given in the subsections of Section 18.2, using values | |||
| defined in Table 1 in Section 7.6. The algorithm for RAND is common | defined in Table 1 in Section 7.6. The algorithm for RAND is common | |||
| across all message transmissions. | across all message transmissions. | |||
| With each message transmission or retransmission, the client sets RT | With each message transmission or retransmission, the client sets RT | |||
| according to the rules given below. If RT expires before the message | according to the rules given below. If RT expires before the message | |||
| exchange terminates, the client recomputes RT and retransmits the | exchange terminates, the client recomputes RT and retransmits the | |||
| message. | message. | |||
| skipping to change at page 41, line 6 ¶ | skipping to change at line 1834 ¶ | |||
| 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 | either of the conditions specified in the previous two paragraphs is | |||
| is 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. | |||
| A client is not expected to listen for a response during the entire | A client is not expected to listen for a response during the entire | |||
| RT period and may turn off listening capabilities after waiting at | RT period and may turn off listening capabilities after waiting at | |||
| least the shorter of RT and MAX_WAIT_TIME due to power consumption | least the shorter of RT and MAX_WAIT_TIME due to power consumption | |||
| saving or other reasons. Of course, a client MUST listen for a | saving or other reasons. Of course, a client MUST listen for a | |||
| Reconfigure if it has negotiated for its use with the server. | Reconfigure if it has negotiated for its use with the server. | |||
| 16. Message Validation | 16. Message Validation | |||
| This section describes which options are valid in which kinds of | This section describes which options are valid in which kinds of | |||
| message types and explains what to do when a client or server | message types and explains what to do when a client or server | |||
| receives a message that contains known options that are invalid for | receives a message that contains known options that are invalid for | |||
| that message. For example, an IA option is not allowed to appear in | that message. For example, an IA option is not allowed to appear in | |||
| an Information-request message. | an Information-request message. | |||
| Clients and servers MAY choose to either (1) extract information from | Clients and servers MAY choose to either (1) extract information from | |||
| such a message if the information is of use to the recipient or | such a message if the information is of use to the recipient or (2) | |||
| (2) ignore such a message completely and just discard it. | ignore such a message completely and just discard it. | |||
| If a server receives a message that it considers invalid, it MAY send | If a server receives a message that it considers invalid, it MAY send | |||
| a Reply message (or Advertise message, as appropriate) with a Server | a Reply message (or Advertise message, as appropriate) with a Server | |||
| Identifier option (see Section 21.3), a Client Identifier option (see | Identifier option (see Section 21.3), a Client Identifier option (see | |||
| Section 21.2) (if one was included in the message), and a Status Code | Section 21.2) (if one was included in the message), and a Status Code | |||
| option (see Section 21.13) with status UnspecFail. | option (see Section 21.13) with status UnspecFail. | |||
| Clients, relay agents, and servers MUST NOT discard messages that | Clients, relay agents, and servers MUST NOT discard messages that | |||
| contain unknown options (or instances of vendor options with unknown | contain unknown options (or instances of vendor options with unknown | |||
| enterprise-number values). These options should be ignored as if | enterprise-number values). These options should be ignored as if | |||
| they were not present. This is critical to provide for future | they were not present. This is critical to provide for future | |||
| extensions of DHCP. | extensions of DHCP. | |||
| A client or server MUST discard any received DHCP messages with an | A client or server MUST discard any received DHCP messages with an | |||
| unknown message type. | unknown message type. | |||
| Clients SHOULD NOT accept multicast messages. | Clients SHOULD NOT accept multicast messages. | |||
| Servers SHOULD NOT accept unicast traffic from clients. The Server | Servers SHOULD NOT accept unicast traffic from clients. The Server | |||
| Unicast option (see Section 21.12) and UseMulticast status code (see | Unicast option (see Section 21.12) and UseMulticast status code (see | |||
| Section 21.13) have been obsoleted and hence clients should no longer | Section 21.13) have been obsoleted; hence, clients should no longer | |||
| send messages to a server's unicast address nor receive the | send messages to a server's unicast address nor receive the | |||
| UseMulticast status code. However, a server that previously | UseMulticast status code. However, a server that previously | |||
| supported the Server Unicast option and is upgraded to not support | supported the Server Unicast option and is upgraded to not support it | |||
| it, MAY continue to receive unicast messages if it previously sent | MAY continue to receive unicast messages if it previously sent the | |||
| the client the Server Unicast option. But this causes no harm and | client the Server Unicast option. However, this causes no harm and | |||
| the client will eventually switch back to sending multicast messages | the client will eventually switch back to sending multicast messages | |||
| (such as after the lease's rebinding time is reached or the client is | (such as after the lease's rebinding time is reached or the client is | |||
| rebooted). | rebooted). | |||
| Relay agents SHOULD NOT accept unicast messages from clients. | Relay agents SHOULD NOT accept unicast messages from clients. | |||
| Note: The multicast/unicast rules mentioned above apply to the DHCP | Note: The multicast/unicast rules mentioned above apply to the DHCP | |||
| messages within this document. Messages defined in other and future | messages within this document. Messages defined in other and future | |||
| documents may have different rules. | documents may have different rules. | |||
| skipping to change at page 48, line 20 ¶ | skipping to change at line 2182 ¶ | |||
| If the server responds with an Advertise message, the client | If the server responds with an Advertise message, the client | |||
| initiates a configuration exchange as described in Section 18.2.2. | initiates a configuration exchange as described in Section 18.2.2. | |||
| A server may initiate a message exchange with a client by sending a | A server may initiate a message exchange with a client by sending a | |||
| Reconfigure message to cause the client to send a Renew, Rebind, or | Reconfigure message to cause the client to send a Renew, Rebind, or | |||
| Information-request message to refresh its configuration information | Information-request message to refresh its configuration information | |||
| as soon as the Reconfigure message is received by the client. | as soon as the Reconfigure message is received by the client. | |||
| Figure 9 shows a timeline diagram of the messages exchanged between a | Figure 9 shows a timeline diagram of the messages exchanged between a | |||
| client and two servers for the typical lifecycle of one or more | client and two servers for the typical lifecycle of one or more | |||
| leases. This starts with the four-message Solicit/Advertise/ | leases. This starts with the four-message Solicit/Advertise/Request/ | |||
| Request/Reply exchange to obtain the lease(s), followed by a | Reply exchange to obtain the lease(s), followed by a two-message | |||
| two-message Renew/Reply exchange to extend the lifetime on the | Renew/Reply exchange to extend the lifetime on the lease(s), and then | |||
| lease(s), and then ends with a two-message Release/Reply exchange to | ends with a two-message Release/Reply exchange to end the client's | |||
| end the client's use of the lease(s). | use of the lease(s). | |||
| Server Server | Server Server | |||
| (not selected) Client (selected) | (not selected) Client (selected) | |||
| v v v | v v v | |||
| | | | | | | | | |||
| | Begins initialization | | | Begins initialization | | |||
| | | | | | | | | |||
| start of | _____________/|\_____________ | | start of | _____________/|\_____________ | | |||
| 4-message |/ Solicit | Solicit \| | 4-message |/ Solicit | Solicit \| | |||
| skipping to change at page 49, line 34 ¶ | skipping to change at line 2245 ¶ | |||
| 2-message | _____________/|\_____________ | | 2-message | _____________/|\_____________ | | |||
| exchange |/ Release | Release \| | exchange |/ Release | Release \| | |||
| | | | | | | | | |||
| | | Discards lease(s) | | | Discards lease(s) | |||
| | | | | | | | | |||
| | | _____________/| | | | _____________/| | |||
| | |/ Reply | | | |/ Reply | | |||
| | | | | | | | | |||
| v v v | v v v | |||
| Figure 9: Timeline Diagram of the Messages Exchanged between a | Figure 9: Timeline Diagram of the Messages Exchanged Between a | |||
| Client and Two Servers for the Typical Lifecycle of One or More | Client and Two Servers for the Typical Lifecycle of One or More | |||
| Leases | Leases | |||
| 18.1. A Single Exchange for Multiple IA Options | 18.1. A Single Exchange for Multiple IA Options | |||
| This document assumes that a client SHOULD use a single transaction | This document assumes that a client SHOULD use a single transaction | |||
| for all of the IA options required on an interface; this simplifies | for all of the IA options required on an interface; this simplifies | |||
| the client implementation and reduces the potential number of | the client implementation and reduces the potential number of | |||
| transactions required. To facilitate a client's use of a single | transactions required. To facilitate a client's use of a single | |||
| transaction for all IA options, servers MUST return the same T1/T2 | transaction for all IA options, servers MUST return the same T1/T2 | |||
| skipping to change at page 51, line 50 ¶ | skipping to change at line 2355 ¶ | |||
| The first Solicit message from the client on the interface SHOULD be | The first Solicit message from the client on the interface SHOULD be | |||
| delayed by a random amount of time between 0 and SOL_MAX_DELAY. This | delayed by a random amount of time between 0 and SOL_MAX_DELAY. This | |||
| random delay helps desynchronize clients that start a DHCP session at | random delay helps desynchronize clients that start a DHCP session at | |||
| the same time, such as after recovery from a power failure or after a | the same time, such as after recovery from a power failure or after a | |||
| router outage after seeing that DHCP is available in Router | router outage after seeing that DHCP is available in Router | |||
| Advertisement messages (see Section 4.2 of [RFC4861]). | Advertisement messages (see Section 4.2 of [RFC4861]). | |||
| The client transmits the message according to Section 15, using the | The client transmits the message according to Section 15, using the | |||
| following parameters: | following parameters: | |||
| IRT SOL_TIMEOUT | * IRT: SOL_TIMEOUT | |||
| MRT SOL_MAX_RT | * MRT: SOL_MAX_RT | |||
| MRC 0 | ||||
| MRD 0 | * MRC: 0 | |||
| * MRD: 0 | ||||
| A client that wishes to use the Rapid Commit two-message exchange | A client that wishes to use the Rapid Commit two-message exchange | |||
| includes a Rapid Commit option (see Section 21.14) in its Solicit | includes a Rapid Commit option (see Section 21.14) in its Solicit | |||
| message. The client may receive a number of different replies from | message. The client may receive a number of different replies from | |||
| different servers. The client will make note of any valid Advertise | different servers. The client will make note of any valid Advertise | |||
| messages that it receives. The client will discard any Reply | messages that it receives. The client will discard any Reply | |||
| messages that do not contain the Rapid Commit option. | messages that do not contain the Rapid Commit option. | |||
| Upon receipt of a valid Reply with the Rapid Commit option, the | Upon receipt of a valid Reply with the Rapid Commit option, the | |||
| client processes the message as described in Section 18.2.10. | client processes the message as described in Section 18.2.10. | |||
| skipping to change at page 52, line 42 ¶ | skipping to change at line 2397 ¶ | |||
| If the client is waiting for an Advertise message, the mechanism | If the client is waiting for an Advertise message, the mechanism | |||
| described in Section 15 is modified as follows for use in the | described in Section 15 is modified as follows for use in the | |||
| transmission of Solicit messages. The message exchange is not | transmission of Solicit messages. The message exchange is not | |||
| terminated by the receipt of an Advertise before the first RT has | terminated by the receipt of an Advertise before the first RT has | |||
| elapsed. Rather, the client collects valid Advertise messages until | elapsed. Rather, the client collects valid Advertise messages until | |||
| the first RT has elapsed. Also, the first RT MUST be selected to be | the first RT has elapsed. Also, the first RT MUST be selected to be | |||
| strictly greater than IRT by choosing RAND to be strictly greater | strictly greater than IRT by choosing RAND to be strictly greater | |||
| than 0. | than 0. | |||
| A client MUST collect valid Advertise messages for the first | A client MUST collect valid Advertise messages for the first RT | |||
| RT seconds, unless it receives a valid Advertise message with a | seconds, unless it receives a valid Advertise message with a | |||
| preference value of 255. The preference value is carried in the | preference value of 255. The preference value is carried in the | |||
| Preference option (see Section 21.8). Any valid Advertise that does | Preference option (see Section 21.8). Any valid Advertise that does | |||
| not include a Preference option is considered to have a preference | not include a Preference option is considered to have a preference | |||
| value of 0. If the client receives a valid Advertise message that | value of 0. If the client receives a valid Advertise message that | |||
| includes a Preference option with a preference value of 255, the | includes a Preference option with a preference value of 255, the | |||
| client immediately begins a client-initiated message exchange (as | client immediately begins a client-initiated message exchange (as | |||
| described in Section 18.2.2) by sending a Request message to the | described in Section 18.2.2) by sending a Request message to the | |||
| server from which the Advertise message was received. If the client | server from which the Advertise message was received. If the client | |||
| receives a valid Advertise message that does not include a Preference | receives a valid Advertise message that does not include a Preference | |||
| option with a preference value of 255, the client continues to wait | option with a preference value of 255, the client continues to wait | |||
| skipping to change at page 54, line 15 ¶ | skipping to change at line 2466 ¶ | |||
| in the Option Request option, with data values as hints to the server | in the Option Request option, with data values as hints to the server | |||
| about parameter values the client would like to have returned. | about parameter values the client would like to have returned. | |||
| The client includes a Reconfigure Accept option (see Section 21.20) | The client includes a Reconfigure Accept option (see Section 21.20) | |||
| if the client is willing to accept Reconfigure messages from the | if the client is willing to accept Reconfigure messages from the | |||
| server. | server. | |||
| The client transmits the message according to Section 15, using the | The client transmits the message according to Section 15, using the | |||
| following parameters: | following parameters: | |||
| IRT REQ_TIMEOUT | * IRT: REQ_TIMEOUT | |||
| MRT REQ_MAX_RT | * MRT: REQ_MAX_RT | |||
| MRC REQ_MAX_RC | * MRC: REQ_MAX_RC | |||
| MRD 0 | * MRD: 0 | |||
| If the message exchange fails, the client takes an action based on | If the message exchange fails, the client takes an action based on | |||
| the client's local policy. Examples of actions the client might take | the client's local policy. Examples of actions the client might take | |||
| include the following: | include the following: | |||
| * 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 18. | * Initiate the server discovery process described in Section 18. | |||
| skipping to change at page 55, line 9 ¶ | skipping to change at line 2507 ¶ | |||
| to identify itself to the server. | to identify itself to the server. | |||
| The client MUST include an Elapsed Time option (see Section 21.9) to | The client MUST include an Elapsed Time option (see Section 21.9) to | |||
| indicate how long the client has been trying to complete the current | indicate how long the client has been trying to complete the current | |||
| DHCP message exchange. | DHCP message exchange. | |||
| The client includes IA options for all of the IAs assigned to the | The client includes IA options for all of the IAs assigned to the | |||
| interface for which the Confirm message is being sent. The IA | interface for which the Confirm message is being sent. The IA | |||
| options include all of the addresses the client currently has | options include all of the addresses the client currently has | |||
| associated with those IAs. The client SHOULD set the T1 and T2 | associated with those IAs. The client SHOULD set the T1 and T2 | |||
| fields in any IA_NA options (see Section 21.4) and the | fields in any IA_NA options (see Section 21.4) and the preferred- | |||
| preferred-lifetime and valid-lifetime fields in the IA Address | lifetime and valid-lifetime fields in the IA Address options (see | |||
| options (see Section 21.6) to 0, as the server will ignore these | Section 21.6) to 0, as the server will ignore these fields. | |||
| fields. | ||||
| The first Confirm message from the client on the interface MUST be | The first Confirm message from the client on the interface MUST be | |||
| delayed by a random amount of time between 0 and CNF_MAX_DELAY. The | delayed by a random amount of time between 0 and CNF_MAX_DELAY. The | |||
| client transmits the message according to Section 15, using the | client transmits the message according to Section 15, 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 terminates, as described in Section 15, the client SHOULD | process terminates, as described in Section 15, the client SHOULD | |||
| continue to use any leases, using the last known lifetimes for those | continue to use any leases, using the last known lifetimes for those | |||
| leases, and SHOULD continue to use any other previously obtained | leases, and SHOULD continue to use any other previously obtained | |||
| configuration parameters. | configuration parameters. | |||
| 18.2.4. Creation and Transmission of Renew Messages | 18.2.4. Creation and Transmission of Renew Messages | |||
| To extend the preferred and valid lifetimes for the leases assigned | To extend the preferred and valid lifetimes for the leases assigned | |||
| skipping to change at page 55, line 47 ¶ | skipping to change at line 2544 ¶ | |||
| the client sends a Renew message to the server from which the leases | the client sends a Renew message to the server from which the leases | |||
| were obtained; the Renew message includes IA options for the IAs | were obtained; the Renew message includes IA options for the IAs | |||
| whose lease lifetimes are to be extended. The client includes IA | whose lease lifetimes are to be extended. The client includes IA | |||
| Address options (see Section 21.6) within IA_NA (see Section 21.4) | Address options (see Section 21.6) within IA_NA (see Section 21.4) | |||
| options for the addresses assigned to the IAs. The client includes | options for the addresses assigned to the IAs. The client includes | |||
| IA Prefix options (see Section 21.22) within IA_PD options (see | IA Prefix options (see Section 21.22) within IA_PD options (see | |||
| Section 21.21) for the delegated prefixes assigned to the IAs. | Section 21.21) for the delegated prefixes assigned to the IAs. | |||
| The server controls the time at which the client should contact the | The server controls the time at which the client should contact the | |||
| server to extend the lifetimes on assigned leases through the T1 and | server to extend the lifetimes on assigned leases through the T1 and | |||
| T2 values assigned to an IA. However, as the client SHOULD | T2 values assigned to an IA. However, as the client SHOULD renew/ | |||
| renew/rebind all IAs from the server at the same time, the client | rebind all IAs from the server at the same time, the client MUST | |||
| MUST select T1 and T2 times from all IA options that will guarantee | select T1 and T2 times from all IA options that will guarantee that | |||
| that the client initiates transmissions of Renew/Rebind messages not | the client initiates transmissions of Renew/Rebind messages not later | |||
| later than at the T1/T2 times associated with any of the client's | than at the T1/T2 times associated with any of the client's bindings | |||
| bindings (earliest T1/T2). | (earliest T1/T2). | |||
| At time T1, the client initiates a Renew/Reply message exchange to | At time T1, the client initiates a Renew/Reply message exchange to | |||
| extend the lifetimes on any leases in the IA. | extend the lifetimes on any leases in the IA. | |||
| A client MUST also initiate a Renew/Reply message exchange before | A client MUST also initiate a Renew/Reply message exchange before | |||
| time T1 if the client's link-local address used in previous | time T1 if the client's link-local address used in previous | |||
| interactions with the server is no longer valid and it is willing to | interactions with the server is no longer valid and it is willing to | |||
| receive Reconfigure messages. This updates the server's information | receive Reconfigure messages. This updates the server's information | |||
| so it is able to continue to communicate with the client (either | so it is able to continue to communicate with the client (either | |||
| directly or via Relay-reply's). | directly or via Relay-reply messages). | |||
| If T1 or T2 had been set to 0 by the server (for an IA_NA or IA_PD) | If T1 or T2 had been set to 0 by the server (for an IA_NA or IA_PD) | |||
| in a previous Reply, the client may, at its discretion, send a Renew | in a previous Reply, the client may, at its discretion, send a Renew | |||
| or Rebind message, respectively. The client MUST follow the rules | or Rebind message, respectively. The client MUST follow the rules | |||
| defined in Section 14.2. | defined in Section 14.2. | |||
| The client sets the "msg-type" field to RENEW. The client generates | The client sets the "msg-type" field to RENEW. 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. | |||
| skipping to change at page 57, line 14 ¶ | skipping to change at line 2608 ¶ | |||
| The client includes an Option Request option (see Section 21.7) to | The client includes an Option Request option (see Section 21.7) to | |||
| request the SOL_MAX_RT option (see Section 21.24) and any other | request the SOL_MAX_RT option (see Section 21.24) and any other | |||
| options the client is interested in receiving. The client MAY | options the client is interested in receiving. The client MAY | |||
| include options with data values as hints to the server about | include options with data values as hints to the server about | |||
| parameter values the client would like to have returned. | parameter values the client would like to have returned. | |||
| The client transmits the message according to Section 15, using the | The client transmits the message according to Section 15, using the | |||
| following parameters: | following parameters: | |||
| IRT REN_TIMEOUT | * IRT: REN_TIMEOUT | |||
| MRT REN_MAX_RT | * MRT: REN_MAX_RT | |||
| MRC 0 | * MRC: 0 | |||
| MRD Remaining time until earliest T2 | * MRD: Remaining time until earliest T2 | |||
| The message exchange is terminated when the earliest time T2 is | The message exchange is terminated when the earliest time T2 is | |||
| reached. While the client is responding to a Reconfigure, the client | reached. While the client is responding to a Reconfigure, the client | |||
| ignores and discards any additional Reconfigure messages it may | ignores and discards any additional Reconfigure messages it may | |||
| receive. | receive. | |||
| The message exchange is terminated when the earliest time T2 is | The message exchange is terminated when the earliest time T2 is | |||
| reached, at which point the client begins the Rebind message exchange | reached, at which point the client begins the Rebind message exchange | |||
| (see Section 18.2.5). | (see Section 18.2.5). | |||
| skipping to change at page 57, line 52 ¶ | skipping to change at line 2646 ¶ | |||
| Section 18.2.4, with the following differences: | Section 18.2.4, with the following differences: | |||
| * The client sets the "msg-type" field to REBIND. | * The client sets the "msg-type" field to REBIND. | |||
| * The client does not include the Server Identifier option (see | * The client does not include the Server Identifier option (see | |||
| Section 21.3) in the Rebind message. | Section 21.3) in the Rebind message. | |||
| The client transmits the message according to Section 15, using the | The client transmits the message according to Section 15, using the | |||
| following parameters: | following parameters: | |||
| IRT REB_TIMEOUT | * IRT: REB_TIMEOUT | |||
| MRT REB_MAX_RT | ||||
| MRC 0 | * MRT: REB_MAX_RT | |||
| MRD Remaining time until valid lifetimes of all leases in all | * MRC: 0 | |||
| IAs have expired | ||||
| * MRD: Remaining time until valid lifetimes of all leases in all IAs | ||||
| have expired | ||||
| If all leases for an IA have expired, the client may choose to | If all leases for an IA have expired, the client may choose to | |||
| include this IA in subsequent Rebind messages to indicate that the | include this IA in subsequent Rebind messages to indicate that the | |||
| client is interested in assignment of the leases to this IA. | client is interested in assignment of the leases to this IA. | |||
| The message exchange is terminated when the valid lifetimes of all | The message exchange is terminated when the valid lifetimes of all | |||
| leases across all IAs have expired, at which time the client uses the | leases across all IAs have expired, at which time the client uses the | |||
| Solicit message to locate a new DHCP server and sends a Request for | Solicit message to locate a new DHCP server and sends a Request for | |||
| the expired IAs to the new server. If the terminated Rebind exchange | the expired IAs to the new server. If the terminated Rebind exchange | |||
| was initiated as a result of receiving a Reconfigure message, the | was initiated as a result of receiving a Reconfigure message, the | |||
| skipping to change at page 58, line 37 ¶ | skipping to change at line 2681 ¶ | |||
| delegated prefixes to be assigned. | delegated prefixes to be assigned. | |||
| 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 (see | The client SHOULD include a Client Identifier option (see | |||
| Section 21.2) to identify itself to the server (however, see | Section 21.2) to identify itself to the server (however, see | |||
| Section 4.3.1 of [RFC7844] for reasons why a client may not want to | Section 4.3.1 of [RFC7844] for reasons why a client may not want to | |||
| include this option). If the client does not include a Client | include this option). If the client does not include a Client | |||
| Identifier option, the server will not be able to return any | Identifier option, the server will not be able to return any client- | |||
| client-specific options to the client, or the server may choose not | specific options to the client, or the server may choose not to | |||
| to respond to the message at all. | respond to the message at all. | |||
| The client MUST include an Elapsed Time option (see Section 21.9) to | The client MUST include an Elapsed Time option (see Section 21.9) to | |||
| indicate how long the client has been trying to complete the current | indicate how long the client has been trying to complete the current | |||
| DHCP message exchange. | DHCP message exchange. | |||
| The client MUST include an Option Request option (see Section 21.7) | The client MUST include an Option Request option (see Section 21.7) | |||
| to request the INF_MAX_RT option (see Section 21.25), the Information | to request the INF_MAX_RT option (see Section 21.25), the Information | |||
| Refresh Time option (see Section 21.23), and any other options the | Refresh Time option (see Section 21.23), and any other options the | |||
| client is interested in receiving. The client MAY include options | client is interested in receiving. The client MAY include options | |||
| with data values as hints to the server about parameter values the | with data values as hints to the server about parameter values the | |||
| skipping to change at page 59, line 14 ¶ | skipping to change at line 2705 ¶ | |||
| When responding to a Reconfigure, the client MUST include a Server | When responding to a Reconfigure, the client MUST include a Server | |||
| Identifier option (see Section 21.3) with the identifier from the | Identifier option (see Section 21.3) with the identifier from the | |||
| Reconfigure message to which the client is responding. | Reconfigure message to which the client is responding. | |||
| The first Information-request message from the client on the | The first Information-request message from the client on the | |||
| interface MUST be delayed by a random amount of time between 0 and | interface MUST be delayed by a random amount of time between 0 and | |||
| INF_MAX_DELAY. The client transmits the message according to | INF_MAX_DELAY. The client transmits the message according to | |||
| Section 15, using the following parameters: | Section 15, 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.2.7. Creation and Transmission of Release Messages | 18.2.7. Creation and Transmission of Release Messages | |||
| To release one or more leases, a client sends a Release message to | To release one or more leases, a client sends a Release message to | |||
| the server. | the server. | |||
| The client sets the "msg-type" field to RELEASE. The client | The client sets the "msg-type" field to RELEASE. The client | |||
| generates a transaction ID and places this value in the | generates a transaction ID and places this value in the "transaction- | |||
| "transaction-id" field. | id" field. | |||
| The client MUST include a Server Identifier option (see Section 21.3) | The client MUST include a Server Identifier option (see Section 21.3) | |||
| in the Renew message, identifying the server which allocated the | in the Renew message, identifying the server that allocated the | |||
| lease(s). | lease(s). | |||
| The client MUST include a Client Identifier option (see Section 21.2) | The client MUST include a Client Identifier option (see Section 21.2) | |||
| to identify itself to the server. | to identify itself to the server. | |||
| The client MUST include an Elapsed Time option (see Section 21.9) to | The client MUST include an Elapsed Time option (see Section 21.9) to | |||
| indicate how long the client has been trying to complete the current | indicate how long the client has been trying to complete the current | |||
| DHCP message exchange. | DHCP message exchange. | |||
| The client includes options containing the IAs for the leases it is | The client includes options containing the IAs for the leases it is | |||
| skipping to change at page 60, line 28 ¶ | skipping to change at line 2761 ¶ | |||
| Because Release messages may be lost, the client should retransmit | Because Release messages may be lost, the client should retransmit | |||
| the Release if no Reply is received. However, there are scenarios | the Release if no Reply is received. However, there are scenarios | |||
| where the client may not wish to wait for the normal retransmission | where the client may not wish to wait for the normal retransmission | |||
| timeout before giving up (e.g., on power down). Implementations | timeout before giving up (e.g., on power down). Implementations | |||
| SHOULD retransmit one or more times but MAY choose to terminate the | SHOULD retransmit one or more times but MAY choose to terminate the | |||
| retransmission procedure early. | retransmission procedure early. | |||
| The client transmits the message according to Section 15, using the | The client transmits the message according to Section 15, using the | |||
| following parameters: | following parameters: | |||
| IRT REL_TIMEOUT | * IRT: REL_TIMEOUT | |||
| MRT 0 | * MRT: 0 | |||
| MRC REL_MAX_RC | * MRC: REL_MAX_RC | |||
| MRD 0 | * MRD: 0 | |||
| If leases are released but the Reply from a DHCP server is lost, the | If leases are released but the Reply from a DHCP server is lost, the | |||
| client will retransmit the Release message, and the server may | client will retransmit the Release message, and the server may | |||
| respond with a Reply indicating a status of NoBinding. Therefore, | respond with a Reply indicating a status of NoBinding. Therefore, | |||
| the client does not treat a Reply message with a status of NoBinding | the client does not treat a Reply message with a status of NoBinding | |||
| in a Release message exchange as if it indicates an error. | in a Release message exchange as if it indicates an error. | |||
| Note that if the client fails to release the lease, each lease | Note that if the client fails to release the lease, each lease | |||
| assigned to the IA will be reclaimed by the server when the valid | assigned to the IA will be reclaimed by the server when the valid | |||
| lifetime of that lease expires. | lifetime of that lease expires. | |||
| skipping to change at page 61, line 10 ¶ | skipping to change at line 2790 ¶ | |||
| 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 Decline message is not used in prefix delegation; thus, the | The Decline message is not used in prefix delegation; thus, the | |||
| client MUST NOT include IA_PD options (see Section 21.21) in the | client MUST NOT include IA_PD options (see Section 21.21) in the | |||
| Decline message. | Decline message. | |||
| The client sets the "msg-type" field to DECLINE. The client | The client sets the "msg-type" field to DECLINE. The client | |||
| generates a transaction ID and places this value in the | generates a transaction ID and places this value in the "transaction- | |||
| "transaction-id" field. | id" field. | |||
| The client MUST include a Server Identifier option (see Section 21.3) | The client MUST include a Server Identifier option (see Section 21.3) | |||
| in the Decline message, identifying the server which allocated the | in the Decline message, identifying the server that allocated the | |||
| lease(s). | lease(s). | |||
| The client MUST include a Client Identifier option (see Section 21.2) | The client MUST include a Client Identifier option (see Section 21.2) | |||
| to identify itself to the server. | to identify itself to the server. | |||
| The client MUST include an Elapsed Time option (see Section 21.9) to | The client MUST include an Elapsed Time option (see Section 21.9) to | |||
| indicate how long the client has been trying to complete the current | indicate how long the client has been trying to complete the current | |||
| DHCP message exchange. | DHCP message exchange. | |||
| The client includes options containing the IAs for the addresses it | The client includes options containing the IAs for the addresses it | |||
| skipping to change at page 61, line 36 ¶ | skipping to change at line 2816 ¶ | |||
| MUST be included in the IAs. Any addresses for the IAs the client | MUST be included in the IAs. Any addresses for the IAs the client | |||
| wishes to continue to use should not be added to the IAs. | wishes to continue to use should not be added to the IAs. | |||
| The client MUST NOT use any of the addresses it is declining as the | The client MUST NOT use any of the addresses it is declining as the | |||
| source address in the Decline message or in any subsequently | source address in the Decline message or in any subsequently | |||
| transmitted message. | transmitted message. | |||
| The client transmits the message according to Section 15, using the | The client transmits the message according to Section 15, using the | |||
| following parameters: | following parameters: | |||
| IRT DEC_TIMEOUT | * IRT: DEC_TIMEOUT | |||
| MRT 0 | * MRT: 0 | |||
| MRC DEC_MAX_RC | * MRC: DEC_MAX_RC | |||
| MRD 0 | * MRD: 0 | |||
| If addresses are declined 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. | |||
| The client SHOULD NOT send a Release message for other bindings it | The client SHOULD NOT send a Release message for other bindings it | |||
| may have received just because it sent a Decline message. The client | may have received just because it sent a Decline message. The client | |||
| SHOULD retain the non-conflicting bindings. The client SHOULD treat | SHOULD retain the non-conflicting bindings. The client SHOULD treat | |||
| skipping to change at page 67, line 19 ¶ | skipping to change at line 3078 ¶ | |||
| option is not present in the Reply, the client SHOULD stop using the | option is not present in the Reply, the client SHOULD stop using the | |||
| previously received configuration information. In other words, the | previously received configuration information. In other words, the | |||
| client should behave as if it never received this configuration | client should behave as if it never received this configuration | |||
| option and return to the relevant default state. If there is no | option and return to the relevant default state. If there is no | |||
| viable way to stop using the received configuration information, the | viable way to stop using the received configuration information, the | |||
| values received/configured from the option MAY persist if there are | values received/configured from the option MAY persist if there are | |||
| no other sources for that data and they have no external impact. For | no other sources for that data and they have no external impact. For | |||
| example, a client that previously received a Client FQDN option (see | example, a client that previously received a Client FQDN option (see | |||
| [RFC4704]) and used it to set up its hostname is allowed to continue | [RFC4704]) and used it to set up its hostname is allowed to continue | |||
| using it if there is no reasonable way for a node to unset its | using it if there is no reasonable way for a node to unset its | |||
| hostname and it has no external impact. As a counter-example, a | hostname and it has no external impact. As a counterexample, a | |||
| client that previously received an NTP server address from the DHCP | client that previously received an NTP server address from the DHCP | |||
| server and does not receive it anymore MUST stop using the configured | server and does not receive it anymore MUST stop using the configured | |||
| NTP server address. The client SHOULD be open to other sources of | NTP server address. The client SHOULD be open to other sources of | |||
| the same configuration information. This behavior does not apply to | the same configuration information. This behavior does not apply to | |||
| any IA options, as their processing is described in Section 18.2.10.1 | any IA options; their processing is described in Section 18.2.10.1. | |||
| 18.2.11. Receipt of Reconfigure Messages | 18.2.11. Receipt of Reconfigure Messages | |||
| A client receives 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. | |||
| The message MUST be dropped if it doesn't pass the validation, as | The message MUST be dropped if it doesn't pass the validation, as | |||
| explained in (see Section 16.11), in particular in case the | explained in Section 16.11, particularly in cases where the | |||
| authentication is missing or fails. | authentication is missing or fails. | |||
| Upon receipt of a valid Reconfigure message, the client responds with | Upon receipt of a valid Reconfigure message, the client responds with | |||
| a Renew message, a Rebind message, or an Information-request message | a Renew message, a Rebind message, or an Information-request message | |||
| as indicated by the Reconfigure Message option (see Section 21.19). | as indicated by the Reconfigure Message option (see Section 21.19). | |||
| The client ignores the "transaction-id" field in the received | The client ignores the "transaction-id" field in the received | |||
| Reconfigure message. While the transaction is in progress, the | Reconfigure message. While the transaction is in progress, the | |||
| client discards any Reconfigure messages it receives. | client discards any Reconfigure messages it receives. | |||
| The Reconfigure message acts as a trigger that signals the client to | The Reconfigure message acts as a trigger that signals the client to | |||
| skipping to change at page 68, line 10 ¶ | skipping to change at line 3117 ¶ | |||
| a Reconfigure, the client proceeds with the message exchange | a Reconfigure, the client proceeds with the message exchange | |||
| (retransmitting the Renew, Rebind, or Information-request message if | (retransmitting the Renew, Rebind, or Information-request message if | |||
| necessary); the client MUST ignore any additional Reconfigure | necessary); the client MUST ignore any additional Reconfigure | |||
| messages until the exchange is complete. | messages until the exchange is complete. | |||
| Duplicate messages will be ignored because the client will begin the | Duplicate messages will be ignored because the client will begin the | |||
| exchange after the receipt of the first Reconfigure. Retransmitted | exchange after the receipt of the first Reconfigure. Retransmitted | |||
| messages will either (1) trigger the exchange (if the first | messages will either (1) trigger the exchange (if the first | |||
| Reconfigure was not received by the client) or (2) be ignored. The | Reconfigure was not received by the client) or (2) be ignored. The | |||
| server MAY discontinue retransmission of Reconfigure messages to the | server MAY discontinue retransmission of Reconfigure messages to the | |||
| client once the server receives the Renew, Rebind, or | client once the server receives the Renew, Rebind, or Information- | |||
| Information-request message from the client. | request message from the client. | |||
| It might be possible for a duplicate or retransmitted Reconfigure to | It might be possible for a duplicate or retransmitted Reconfigure to | |||
| be sufficiently delayed (and delivered out of order) that it arrives | be sufficiently delayed (and delivered out of order) that it arrives | |||
| at the client after the exchange (initiated by the original | at the client after the exchange (initiated by the original | |||
| Reconfigure) has been completed. In this case, the client would | Reconfigure) has been completed. In this case, the client would | |||
| initiate a redundant exchange. The likelihood of delayed and | initiate a redundant exchange. The likelihood of delayed and out-of- | |||
| out-of-order delivery is small enough to be ignored. The consequence | order delivery is small enough to be ignored. The consequence of the | |||
| of the redundant exchange is inefficiency rather than incorrect | redundant exchange is inefficiency rather than incorrect operation. | |||
| operation. | ||||
| 18.2.12. Refreshing Configuration Information | 18.2.12. Refreshing Configuration Information | |||
| Whenever a client may have moved to a new link, the | Whenever a client may have moved to a new link, the prefixes/ | |||
| prefixes/addresses assigned to the interfaces on that link may no | addresses assigned to the interfaces on that link may no longer be | |||
| longer be appropriate for the link to which the client is attached. | appropriate for the link to which the client is attached. Examples | |||
| Examples of times when a client may have moved to a new link include | of times when a client may have moved to a new link include the | |||
| the following: | following: | |||
| * The client reboots (and has stable storage and persistent DHCP | * The client reboots (and has stable storage and persistent DHCP | |||
| state). | state). | |||
| * The client is reconnected to a link on which it has obtained | * The client is reconnected to a link on which it has obtained | |||
| leases. | leases. | |||
| * The client returns from sleep mode. | * The client returns from sleep mode. | |||
| * The client changes access points (e.g., if using Wi-Fi | * The client changes access points (e.g., if using Wi-Fi | |||
| technology). | technology). | |||
| * The client's network interface indicates a disconnection event, | * The client's network interface indicates a disconnection event | |||
| followed by a connection event. | followed by a connection event. | |||
| Specific algorithms for detecting network attachment changes are out | Specific algorithms for detecting network attachment changes are out | |||
| of scope for this document. Two possible mechanisms for detecting | of scope for this document. Two possible mechanisms for detecting | |||
| situations where refreshing configuration information may be needed | situations where refreshing configuration information may be needed | |||
| are defined in [RFC6059] and [RFC4957]. | are defined in [RFC6059] and [RFC4957]. | |||
| When the client detects that it may have moved to a new link and it | When the client detects that it may have moved to a new link and it | |||
| has obtained addresses and no delegated prefixes from a server, the | has obtained addresses and no delegated prefixes from a server, the | |||
| client SHOULD initiate a Confirm/Reply message exchange. The client | client SHOULD initiate a Confirm/Reply message exchange. The client | |||
| skipping to change at page 69, line 41 ¶ | skipping to change at line 3196 ¶ | |||
| with requests when there are link issues (for example, only doing one | with requests when there are link issues (for example, only doing one | |||
| of these at most every 30 seconds). | of these at most every 30 seconds). | |||
| The above selection of an exchange to initiate depends on the | The above selection of an exchange to initiate depends on the | |||
| client's current state: | client's current state: | |||
| * If the client has any valid delegated prefixes obtained from the | * If the client has any valid delegated prefixes obtained from the | |||
| server, it sends Renew (as if the T1 time expired) as described in | server, it sends Renew (as if the T1 time expired) as described in | |||
| Section 18.2.4. | Section 18.2.4. | |||
| * Else, if the client obtained address(es) from the server, it sends | * Else, if the client obtained an address(es) from the server, it | |||
| Confirm as described in Section 18.2.3. | sends Confirm as described in Section 18.2.3. | |||
| * Else, if only network information was obtained from the server, it | * Else, if only network information was obtained from the server, it | |||
| sends Information-request as described in Section 18.2.6 | sends an Information-request as described in Section 18.2.6. | |||
| 18.2.13. Restarting Server Discovery Process | 18.2.13. Restarting Server Discovery Process | |||
| Whenever a client restarts the DHCP server discovery process or | Whenever a client restarts the DHCP server discovery process or | |||
| selects an alternate server as described in Section 18.2.9, the | selects an alternate server as described in Section 18.2.9, the | |||
| client SHOULD stop using any addresses and delegated prefixes for | client SHOULD stop using any addresses and delegated prefixes for | |||
| which it has bindings (see Section 18.2.7) and if possible, any | which it has bindings (see Section 18.2.7) and, if possible, any | |||
| previously received other configuration information, and try to | other configuration information it previously received. The client | |||
| obtain new bindings and other configuration information from a "new" | SHOULD also try to obtain new bindings and other configuration | |||
| server for the same interface. This facilitates the client using a | information from a "new" server for the same interface. This | |||
| single state machine for all bindings. | facilitates the client using a single state machine for all bindings. | |||
| 18.3. Server Behavior | 18.3. 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 configurations of interest to | an implementation-specific manner with configurations of interest to | |||
| clients. | clients. | |||
| A server sends an Advertise message in response to each valid Solicit | A server sends an Advertise message in response to each valid Solicit | |||
| message it receives to announce the availability of the server to the | message it receives to announce the availability of the server to the | |||
| client. | client. | |||
| skipping to change at page 72, line 15 ¶ | skipping to change at line 3309 ¶ | |||
| as though it had received a Request message as described in | as though it had received a Request message as described in | |||
| Section 18.3.2. The server transmits the Reply message as described | Section 18.3.2. The server transmits the Reply message as described | |||
| in Section 18.3.10. The server MUST commit the assignment of any | in Section 18.3.10. The server MUST commit the assignment of any | |||
| addresses and delegated prefixes or other configuration information | addresses and delegated prefixes or other configuration information | |||
| before sending a Reply message to a client. In this case, the server | before sending a Reply message to a client. In this case, the server | |||
| includes a Rapid Commit option in the Reply message to indicate that | includes a Rapid Commit option in the Reply message to indicate that | |||
| the Reply is in response to a Solicit message. | the Reply is in response to a Solicit message. | |||
| DISCUSSION: | DISCUSSION: | |||
| When using the Solicit/Reply message exchange, the server commits | * When using the Solicit/Reply message exchange, the server commits | |||
| the assignment of any leases before sending the Reply message. | the assignment of any leases before sending the Reply message. | |||
| The client can assume that it has been assigned the leases in the | The client can assume that it has been assigned the leases in the | |||
| Reply message and does not need to send a Request message for | Reply message and does not need to send a Request message for | |||
| those leases. | those leases. | |||
| Typically, servers that are configured to use the Solicit/Reply | * Typically, servers that are configured to use the Solicit/Reply | |||
| message exchange will be deployed so that only one server will | message exchange will be deployed so that only one server will | |||
| respond to a Solicit message. If more than one server responds, | respond to a Solicit message. If more than one server responds, | |||
| the client will only use the leases from one of the servers, while | the client will only use the leases from one of the servers, while | |||
| the leases from the other servers will be committed to the client | the leases from the other servers will be committed to the client | |||
| but not used by the client. | but not used by the client. | |||
| 18.3.2. Receipt of Request Messages | 18.3.2. Receipt of Request Messages | |||
| 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 74, line 10 ¶ | skipping to change at line 3400 ¶ | |||
| the IA with the client, the server sends a Reply message with | the IA with the client, the server sends a Reply message with | |||
| existing bindings, possibly with updated lifetimes. The server may | existing bindings, possibly with updated lifetimes. The server may | |||
| update the bindings according to its local policies, but the server | update the bindings according to its local policies, but the server | |||
| SHOULD generate the response again and not simply retransmit | SHOULD generate the response again and not simply retransmit | |||
| previously sent information, even if the "transaction-id" field value | previously sent information, even if the "transaction-id" field value | |||
| matches a previous transmission. The server MUST NOT cache its | matches a previous transmission. The server MUST NOT cache its | |||
| responses. | responses. | |||
| DISCUSSION: | DISCUSSION: | |||
| Cached replies are bad because lifetimes need to be updated | * Cached replies are bad because lifetimes need to be updated | |||
| (either decrease the timers by the amount of time elapsed since | (either decrease the timers by the amount of time elapsed since | |||
| the original transmission or keep the lifetime values and update | the original transmission or keep the lifetime values and update | |||
| the lease information in the server's database). Also, if the | the lease information in the server's database). Also, if the | |||
| message uses any security protection (such as the Replay Detection | message uses any security protection (such as the Replay Detection | |||
| Method (RDM), as described in Section 20.3), its value must be | Method (RDM), as described in Section 20.3), its value must be | |||
| updated. Additionally, any digests must be updated. Given all of | updated. Additionally, any digests must be updated. Given all of | |||
| the above, caching replies is far more complex than simply sending | the above, caching replies is far more complex than simply sending | |||
| the same buffer as before, and it is easy to miss some of those | the same buffer as before, and it is easy to miss some of those | |||
| steps. | steps. | |||
| 18.3.3. Receipt of Confirm Messages | 18.3.3. Receipt of Confirm Messages | |||
| When the server receives a Confirm message, the server determines | When the server receives a Confirm message, the server determines | |||
| whether the addresses in the Confirm message are appropriate for the | whether the addresses in the Confirm message are appropriate for the | |||
| link to which the client is attached. If all of the addresses in the | link to which the client is attached. If all of the addresses in the | |||
| Confirm message pass this test, the server returns a status of | Confirm message pass this test, the server returns a status of | |||
| Success. If any of the addresses do not pass this test, the server | 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 | returns a status of NotOnLink. If the server is unable to perform | |||
| this test (for example, the server does not have information about | this test (for example, the server does not have information about | |||
| prefixes on the link to which the client is connected) or there were | 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 | no addresses in any of the IAs sent by the client, the server MUST | |||
| MUST NOT send a Reply to the client. | NOT send a Reply to the client. | |||
| The server ignores the T1 and T2 fields in the IA options and the | The server ignores the T1 and T2 fields in the IA options and the | |||
| preferred-lifetime and valid-lifetime fields in the IA Address | preferred-lifetime and valid-lifetime fields in the IA Address | |||
| options (see Section 21.6). | options (see Section 21.6). | |||
| 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 and copying the transaction ID from the Confirm message into | to REPLY and copying the transaction ID from the Confirm message into | |||
| the "transaction-id" field. | the "transaction-id" field. | |||
| The server MUST include in the Reply message a Server Identifier | The server MUST include in the Reply message a Server Identifier | |||
| skipping to change at page 75, line 36 ¶ | skipping to change at line 3469 ¶ | |||
| The server may choose to change the list of addresses or delegated | The server may choose to change the list of addresses or delegated | |||
| prefixes and the lifetimes in IAs that are returned to the client. | prefixes and the lifetimes in IAs that are returned to the client. | |||
| If the server finds that any of the addresses in the IA are not | If the server finds that any of the addresses in the IA are not | |||
| appropriate for the link to which the client is attached, the server | appropriate for the link to which the client is attached, the server | |||
| returns the address to the client with lifetimes of 0. | returns the address to the client with lifetimes of 0. | |||
| If the server finds that any of the delegated prefixes in the IA are | If the server finds that any of the delegated prefixes in the IA are | |||
| not appropriate for the link to which the client is attached, the | not appropriate for the link to which the client is attached, the | |||
| server returns the delegated prefix to the client with lifetimes | server returns the delegated prefix to the client with lifetimes of | |||
| of 0. | 0. | |||
| For each IA for which the server cannot find a client entry, the | For each IA for which the server cannot find a client entry, the | |||
| server has the following choices, depending on the server's policy | server has the following choices, depending on the server's policy | |||
| and configuration information: | and configuration information: | |||
| * If the server is configured to create new bindings as a result of | * If the server is configured to create new bindings as a result of | |||
| processing Renew messages, the server SHOULD create a binding and | processing Renew messages, the server SHOULD create a binding and | |||
| return the IA with assigned addresses or delegated prefixes with | return the IA with assigned addresses or delegated prefixes with | |||
| lifetimes and, if applicable, T1/T2 times and other information | lifetimes and, if applicable, T1/T2 times and other information | |||
| requested by the client. If the client included the IA Prefix | requested by the client. If the client included the IA Prefix | |||
| skipping to change at page 79, line 20 ¶ | skipping to change at line 3647 ¶ | |||
| The server includes options containing configuration information to | The server includes options containing configuration information to | |||
| be returned to the client as described in Section 18.3. The server | be returned to the client as described in Section 18.3. The server | |||
| MAY include additional options that were not requested by the client | MAY include additional options that were not requested by the client | |||
| in the Information-request message. | in the Information-request message. | |||
| If the Information-request message received from the client did not | If the Information-request message received from the client did not | |||
| include a Client Identifier option, the server SHOULD respond with a | include a Client Identifier option, the server SHOULD respond with a | |||
| Reply message containing any configuration parameters that are not | Reply message containing any configuration parameters that are not | |||
| determined by the client's identity. If the server chooses not to | determined by the client's identity. If the server chooses not to | |||
| respond, the client may continue to retransmit the | respond, the client may continue to retransmit the Information- | |||
| Information-request message indefinitely. | request message indefinitely. | |||
| 18.3.7. Receipt of Release Messages | 18.3.7. Receipt of Release Messages | |||
| 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 and copying the transaction ID from the Release message into | to REPLY and copying the transaction ID from the Release message into | |||
| the "transaction-id" field. | the "transaction-id" field. | |||
| Upon the receipt of a valid Release message, the server examines the | Upon the receipt of a valid Release message, the server examines the | |||
| IAs and the leases in the IAs for validity. If the IAs in the | IAs and the leases in the IAs for validity. If the IAs in the | |||
| message are in a binding for the client and the leases in the IAs | message are in a binding for the client and the leases in the IAs | |||
| skipping to change at page 82, line 18 ¶ | skipping to change at line 3784 ¶ | |||
| 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 Advertise or Reply message directly to the client | server unicasts the Advertise or Reply message directly to the client | |||
| using the address in the source address field from the IP datagram in | using the address in the source address field from the IP datagram in | |||
| which the original message was received. The Advertise or Reply | which the original message was received. The Advertise or Reply | |||
| message MUST be unicast through the interface on which the original | message MUST be unicast through the interface on which the original | |||
| message was received. | 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, the | |||
| server constructs a Relay-reply message with the Reply message in the | server constructs a Relay-reply message with the Reply message in the | |||
| payload of a Relay Message option (see Section 21.10). If the | payload of a Relay Message option (see Section 21.10). If the Relay- | |||
| Relay-forward messages included an Interface-Id option (see | forward messages included an Interface-Id option (see Section 21.18), | |||
| Section 21.18), the server copies that option to the Relay-reply | the server copies that option to the Relay-reply message. The server | |||
| message. The server unicasts the Relay-reply message directly to the | unicasts the Relay-reply message directly to the relay agent using | |||
| relay agent using the address in the source address field from the IP | the address in the source address field from the IP datagram in which | |||
| datagram in which the Relay-forward message was received. See | the Relay-forward message was received. See Section 19.3 for more | |||
| Section 19.3 for more details on the construction of Relay-reply | details on the construction of Relay-reply messages. | |||
| messages. | ||||
| 18.3.11. Creation and Transmission of Reconfigure Messages | 18.3.11. Creation and Transmission of Reconfigure Messages | |||
| The server sets the "msg-type" field to RECONFIGURE and sets the | The server sets the "msg-type" field to RECONFIGURE and sets the | |||
| "transaction-id" field to 0. The server includes a Server Identifier | "transaction-id" field to 0. The server includes a Server Identifier | |||
| option (see Section 21.3) containing its DUID and a Client Identifier | option (see Section 21.3) containing its DUID and a Client Identifier | |||
| option (see Section 21.2) containing the client's DUID in the | option (see Section 21.2) containing the client's DUID in the | |||
| Reconfigure message. | Reconfigure message. | |||
| Because of the risk of denial-of-service (DoS) attacks against DHCP | Because of the risk of denial-of-service (DoS) attacks against DHCP | |||
| skipping to change at page 83, line 45 ¶ | skipping to change at line 3859 ¶ | |||
| 19. Relay Agent Behavior | 19. Relay Agent Behavior | |||
| The relay agent SHOULD be configured to use a list of destination | The relay agent SHOULD be configured to use a list of destination | |||
| addresses that includes unicast addresses. The list of destination | addresses that includes unicast addresses. The list of destination | |||
| addresses MAY include the All_DHCP_Servers multicast address or other | addresses MAY include the All_DHCP_Servers multicast address or other | |||
| addresses selected by the network administrator. If the relay agent | addresses selected by the network administrator. If the relay agent | |||
| has not been explicitly configured, it MUST use the All_DHCP_Servers | has not been explicitly configured, it MUST use the All_DHCP_Servers | |||
| multicast address as the default. | multicast address as the default. | |||
| If the relay agent relays messages to the All_DHCP_Servers multicast | If the relay agent relays messages to the All_DHCP_Servers multicast | |||
| address or other multicast addresses, it sets the Hop Limit field | address or other multicast addresses, it sets the Hop Limit field to | |||
| to 8. | 8. | |||
| If the relay agent receives a message other than Relay-forward and | If the relay agent receives a message other than Relay-forward and | |||
| Relay-reply and the relay agent does not recognize its message type, | Relay-reply and the relay agent does not recognize its message type, | |||
| it MUST forward the message as described in Section 19.1.1. | it MUST forward the message as described in Section 19.1.1. | |||
| 19.1. Relaying a Client Message or a Relay-forward Message | 19.1. Relaying a Client Message or a Relay-forward Message | |||
| A relay agent relays both messages from clients and Relay-forward | A relay agent relays both messages from clients and Relay-forward | |||
| messages from other relay agents. When a relay agent receives a | messages from other relay agents. When a relay agent receives a | |||
| Relay-forward message, a recognized message type for which it is not | Relay-forward message, a recognized message type for which it is not | |||
| skipping to change at page 85, line 28 ¶ | skipping to change at line 3937 ¶ | |||
| relay agent sets the link-address field to 0; otherwise, the relay | relay agent sets the link-address field to 0; otherwise, the relay | |||
| agent sets the link-address field to a globally scoped unicast | agent sets the link-address field to a globally scoped unicast | |||
| address (i.e., GUA or ULA) assigned to the interface on which the | address (i.e., GUA or ULA) assigned to the interface on which the | |||
| message was received or includes an Interface-Id option (see | message was received or includes an Interface-Id option (see | |||
| Section 21.18) to identify the interface on which the message was | Section 21.18) to identify the interface on which the message was | |||
| received. | received. | |||
| 19.1.3. Relay Agent Behavior with Prefix Delegation | 19.1.3. Relay Agent Behavior with Prefix Delegation | |||
| A relay agent forwards messages containing prefix delegation options | A relay agent forwards messages containing prefix delegation options | |||
| in the same way as it would relay addresses (i.e., per | in the same way as it would relay addresses (i.e., per Sections | |||
| Sections 19.1.1 and 19.1.2). | 19.1.1 and 19.1.2). | |||
| If a server communicates with a client through a relay agent about | If a server communicates with a client through a relay agent about | |||
| delegated prefixes, the server may need a protocol or other | delegated prefixes, the server may need a protocol or other out-of- | |||
| out-of-band communication to configure routing information for | band communication to configure routing information for delegated | |||
| delegated prefixes on any router through which the client may forward | prefixes on any router through which the client may forward traffic. | |||
| traffic. | ||||
| 19.2. Relaying a Relay-reply Message | 19.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 (see Section 21.10). | message in addition to the Relay Message option (see Section 21.10). | |||
| The relay agent extracts the message from the Relay Message option | The relay agent extracts the message from the Relay Message option | |||
| and relays it to the address contained in the peer-address field of | and relays it to the address contained in the peer-address field of | |||
| the Relay-reply message. Relay agents MUST NOT modify the message. | the Relay-reply message. Relay agents MUST NOT modify the message. | |||
| skipping to change at page 87, line 8 ¶ | skipping to change at line 4003 ¶ | |||
| 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> | |||
| Figure 10: Relay-reply Example | Figure 10: Relay-reply Example | |||
| When sending a Reconfigure message to a client through a relay agent, | When sending a Reconfigure message to a client through a relay agent, | |||
| the server creates a Relay-reply message that includes a Relay | the server creates a Relay-reply message that includes a Relay | |||
| Message option containing the Reconfigure message for the next relay | Message option containing the Reconfigure message for the next relay | |||
| agent in the return path to the client. The server sets the | agent in the return path to the client. The server sets the peer- | |||
| peer-address field in the Relay-reply message header to the address | address field in the Relay-reply message header to the address of the | |||
| of the client and sets the link-address field as required by the | client and sets the link-address field as required by the relay agent | |||
| relay agent to relay the Reconfigure message to the client. The | to relay the Reconfigure message to the client. The server obtains | |||
| server obtains the addresses of the client and the relay agent | the addresses of the client and the relay agent through prior | |||
| through prior interaction with the client or through some external | interaction with the client or through some external mechanism. | |||
| mechanism. | ||||
| 19.4. Interaction between Relay Agents and Servers | 19.4. Interaction Between Relay Agents and Servers | |||
| Each time a message is relayed by a relay agent towards a server, a | Each time a message is relayed by a relay agent towards a server, a | |||
| new encapsulation level is added around the message. Each relay is | new encapsulation level is added around the message. Each relay is | |||
| allowed to insert additional options on the encapsulation level it | allowed to insert additional options on the encapsulation level it | |||
| added but MUST NOT change anything in the message being encapsulated. | added but MUST NOT change anything in the message being encapsulated. | |||
| If there are multiple relays between a client and a server, multiple | If there are multiple relays between a client and a server, multiple | |||
| encapsulations are used. Although it makes message processing | encapsulations are used. Although it makes message processing | |||
| slightly more complex, it provides the major advantage of having a | slightly more complex, it provides the major advantage of having a | |||
| clear indication as to which relay inserted which option. The | clear indication as to which relay inserted which option. The | |||
| response message is expected to travel through the same relays, but | response message is expected to travel through the same relays, but | |||
| skipping to change at page 88, line 22 ¶ | skipping to change at line 4065 ¶ | |||
| assigned via a specific relay. A second is for the reconfigure | assigned via a specific relay. A second is for the reconfigure | |||
| mechanism. The server may choose to not send the Reconfigure message | mechanism. The server may choose to not send the Reconfigure message | |||
| directly to the client but rather to send it via relays. This | directly to the client but rather to send it via relays. This | |||
| particular behavior is considered an implementation detail and is out | particular behavior is considered an implementation detail and is out | |||
| of scope for this document. | of scope for this document. | |||
| 20. Authentication of DHCP Messages | 20. Authentication of DHCP Messages | |||
| This document introduces two security mechanisms for the | This document introduces two security mechanisms for the | |||
| authentication of DHCP messages: (1) authentication (and encryption) | authentication of DHCP messages: (1) authentication (and encryption) | |||
| of messages sent between servers and relay agents using IPsec and | of messages sent between servers and relay agents using IPsec and (2) | |||
| (2) protection against misconfiguration of a client caused by a | protection against misconfiguration of a client caused by a | |||
| Reconfigure message sent by a malicious DHCP server. | Reconfigure message sent by a malicious DHCP server. | |||
| 20.1. Security of Messages Sent between Servers and Relay Agents | 20.1. Security of Messages Sent Between Servers and Relay Agents | |||
| Relay agents and servers that exchange messages can use IPsec as | Relay agents and servers that exchange messages can use IPsec as | |||
| detailed in [RFC8213]. | detailed in [RFC8213]. | |||
| 20.2. Summary of DHCP Authentication | 20.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 21.11). The authentication | the Authentication option (see Section 21.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 | |||
| skipping to change at page 90, line 13 ¶ | skipping to change at line 4151 ¶ | |||
| defined in the following section. | defined in the following section. | |||
| RKAP is used (initiated by the server) only if the client and server | RKAP is used (initiated by the server) only if the client and server | |||
| have negotiated to use Reconfigure messages. | have negotiated to use Reconfigure messages. | |||
| 20.4.1. Use of the Authentication Option in RKAP | 20.4.1. Use of the Authentication Option in RKAP | |||
| The following fields are set in an Authentication option (see | The following fields are set in an Authentication option (see | |||
| Section 21.11) for RKAP: | Section 21.11) for RKAP: | |||
| protocol 3 | * protocol: 3 | |||
| algorithm 1 | * algorithm: 1 | |||
| RDM 0 | * RDM: 0 | |||
| The format of the authentication information for RKAP is: | The format of the authentication information for RKAP is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Value (128 bits) | | | Type | Value (128 bits) | | |||
| +-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ | | |||
| . . | . . | |||
| . . | . . | |||
| . +-+-+-+-+-+-+-+-+ | . +-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 11: RKAP Authentication Information | Figure 11: RKAP Authentication Information | |||
| Type Type of data in the Value field carried in this | Type: Type of data in the Value field carried in this option: | |||
| option: | ||||
| 1 Reconfigure key value (used in the Reply | 1 Reconfigure key value (used in the Reply message). | |||
| message). | ||||
| 2 HMAC-MD5 digest of the message (used in | 2 HMAC-MD5 digest of the message (used in the Reconfigure | |||
| the Reconfigure message). | message). | |||
| A 1-octet field. | A 1-octet field. | |||
| Value Data as defined by the Type field. A 16-octet | Value: Data as defined by the Type field. A 16-octet field. | |||
| field. | ||||
| 20.4.2. Server Considerations for RKAP | 20.4.2. Server Considerations for RKAP | |||
| The server selects a reconfigure key for a client during the | The server selects a reconfigure key for a client during the Request/ | |||
| Request/Reply, Solicit/Reply, or Information-request/Reply message | Reply, Solicit/Reply, or Information-request/Reply message exchange. | |||
| exchange. The server records the reconfigure key and transmits that | The server records the reconfigure key and transmits that key to the | |||
| key to the client in an Authentication option (see Section 21.11) in | client in an Authentication option (see Section 21.11) in the Reply | |||
| the Reply message. | message. | |||
| The reconfigure key is 128 bits long and MUST be a cryptographically | The reconfigure key is 128 bits long and MUST be a cryptographically | |||
| strong random or pseudorandom number that cannot easily be predicted. | strong random or pseudorandom number that cannot easily be predicted. | |||
| To provide authentication for a Reconfigure message, the server | To provide authentication for a Reconfigure message, the server | |||
| selects a replay detection value according to the RDM selected by the | selects a replay detection value according to the RDM selected by the | |||
| server and computes an HMAC-MD5 of the Reconfigure message using the | server and computes an HMAC-MD5 of the Reconfigure message using the | |||
| reconfigure key for the client. The server computes the HMAC-MD5 | reconfigure key for the client. The server computes the HMAC-MD5 | |||
| over the entire DHCP Reconfigure message, including the | over the entire DHCP Reconfigure message, including the | |||
| Authentication option; the HMAC-MD5 field in the Authentication | Authentication option; the HMAC-MD5 field in the Authentication | |||
| skipping to change at page 91, line 34 ¶ | skipping to change at line 4212 ¶ | |||
| Authentication option included in the Reconfigure message sent to the | Authentication option included in the Reconfigure message sent to the | |||
| client. | client. | |||
| 20.4.3. Client Considerations for RKAP | 20.4.3. Client Considerations for RKAP | |||
| The client will receive a reconfigure key from the server in an | The client will receive a reconfigure key from the server in an | |||
| Authentication option (see Section 21.11) in the initial Reply | Authentication option (see Section 21.11) in the initial Reply | |||
| message from the server. The client records the reconfigure key for | message from the server. The client records the reconfigure key for | |||
| use in authenticating subsequent Reconfigure messages. | use in authenticating subsequent Reconfigure messages. | |||
| To authenticate a Reconfigure message, the client computes an | To authenticate a Reconfigure message, the client computes an HMAC- | |||
| HMAC-MD5 over the Reconfigure message, with zeroes substituted for | MD5 over the Reconfigure message, with zeroes substituted for the | |||
| the HMAC-MD5 field, using the reconfigure key received from the | HMAC-MD5 field, using the reconfigure key received from the server. | |||
| server. If this computed HMAC-MD5 matches the value in the | If this computed HMAC-MD5 matches the value in the Authentication | |||
| Authentication option, the client accepts the Reconfigure message. | option, the client accepts the Reconfigure message. | |||
| 21. DHCP Options | 21. DHCP Options | |||
| Options are used to carry additional information and parameters in | Options are used to carry additional information and parameters in | |||
| DHCP messages. Every option shares a common base format, as | DHCP messages. Every option shares a common base format, as | |||
| described in Section 21.1. All values in options are represented in | described in Section 21.1. All values in options are represented in | |||
| network byte order. | network byte order. | |||
| This document specifies the DHCP options defined as part of this base | This document specifies the DHCP options defined as part of this base | |||
| DHCP specification. Other options have been or may be defined in the | DHCP specification. Other options have been or may be defined in the | |||
| future in separate documents. See [RFC7227] for guidelines regarding | future in separate documents. See [RFC7227] for guidelines regarding | |||
| the definition of new options. See Section 25 for additional | the definition of new options. See Section 24 for additional | |||
| information about the DHCPv6 "Option Codes" registry maintained by | information about the DHCPv6 "Option Codes" registry maintained by | |||
| IANA. | IANA. | |||
| 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. | |||
| Options that are allowed to appear only once are called "singleton | Options that are allowed to appear only once are called "singleton | |||
| skipping to change at page 92, line 23 ¶ | skipping to change at line 4250 ¶ | |||
| are the IA_NA (see Section 21.4), Vendor Class (see Section 21.16), | are the IA_NA (see Section 21.4), Vendor Class (see Section 21.16), | |||
| Vendor-specific Information (see Section 21.17), and IA_PD (see | Vendor-specific Information (see Section 21.17), and IA_PD (see | |||
| Section 21.21) options. Also, IA Address (see Section 21.6) and IA | Section 21.21) options. Also, IA Address (see Section 21.6) and IA | |||
| Prefix (see Section 21.22) may appear in their respective IA options | Prefix (see Section 21.22) may appear in their respective IA options | |||
| more than once. | more than once. | |||
| 21.1. Format of DHCP Options | 21.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) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 12: Option Format | Figure 12: Option Format | |||
| option-code An unsigned integer identifying the specific | option-code: An unsigned integer identifying the specific option | |||
| option type carried in this option. | type carried in this option. A 2-octet field. | |||
| A 2-octet field. | ||||
| option-len An unsigned integer giving the length of the | option-len: An unsigned integer giving the length of the option-data | |||
| option-data field in this option in octets. | field in this option in octets. A 2-octet field. | |||
| A 2-octet field. | ||||
| option-data The data for the option; the format of this | option-data: The data for the option; the format of this data | |||
| data depends on the definition of the option. | depends on the definition of the option. A variable-length field | |||
| A variable-length field (the length, in | (the length, in octets, is specified by option-len). | |||
| octets, is specified by option-len). | ||||
| DHCP options are scoped by using encapsulation. Some options apply | DHCP 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 21.4, 21.5, and 21.6. | discussed in Sections 21.4, 21.5, and 21.6. | |||
| 21.2. Client Identifier Option | 21.2. Client Identifier Option | |||
| The Client Identifier option is used to carry a DUID (see Section 11) | The Client Identifier option is used to carry a DUID (see Section 11) | |||
| that identifies the client. The format of the Client Identifier | that identifies the client. The format of the Client Identifier | |||
| 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_CLIENTID | option-len | | | OPTION_CLIENTID | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . DUID . | . DUID . | |||
| . (variable length) . | . (variable length) . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 13: Client Identifier Option Format | Figure 13: Client Identifier Option Format | |||
| 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. | |||
| 21.3. Server Identifier Option | 21.3. Server Identifier Option | |||
| The Server Identifier option is used to carry a DUID (see Section 11) | The Server Identifier option is used to carry a DUID (see Section 11) | |||
| that identifies the server. The format of the Server Identifier | that identifies the server. The format of the Server Identifier | |||
| 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_SERVERID | option-len | | | OPTION_SERVERID | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . DUID . | . DUID . | |||
| . (variable length) . | . (variable length) . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 14: Server Identifier Option Format | Figure 14: Server Identifier Option Format | |||
| 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. | |||
| 21.4. Identity Association for Non-temporary Addresses Option | 21.4. Identity Association for Non-Temporary Addresses Option | |||
| The Identity Association for Non-temporary Addresses (IA_NA) option | The Identity Association for Non-temporary Addresses (IA_NA) option | |||
| is used to carry an IA_NA, the parameters associated with the IA_NA, | is used to carry an IA_NA, the parameters associated with the IA_NA, | |||
| and the non-temporary addresses associated with the IA_NA. | and the non-temporary addresses associated with the IA_NA. | |||
| A client that needs a short-term / special purpose address can use a | A client that needs a short-term / special-purpose address can use a | |||
| new IA_NA binding to request an address and release it when finished | new IA_NA binding to request an address and release it when finished | |||
| with it. | with it. | |||
| Note: Addresses appearing in an IA_NA option are not temporary | Note: Addresses appearing in an IA_NA option are not temporary | |||
| addresses (see Section 21.5). | addresses (see Section 21.5). | |||
| The format of the IA_NA option is: | The format of the IA_NA option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_IA_NA | option-len | | | OPTION_IA_NA | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | IAID (4 octets) | | | IAID (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | T1 | | | T1 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | T2 | | | T2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . IA_NA-options . | . IA_NA-options . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 15: Identity Association for Non-temporary Addresses | Figure 15: Identity Association for Non-Temporary Addresses | |||
| Option Format | Option Format | |||
| option-code OPTION_IA_NA (3). | option-code: OPTION_IA_NA (3). | |||
| option-len 12 + length of IA_NA-options field. | option-len: 12 + length of IA_NA-options field. | |||
| IAID The unique identifier for this IA_NA; the | IAID: The unique identifier for this IA_NA; the IAID must be unique | |||
| IAID must be unique among the identifiers for | among the identifiers for all of this client's IA_NAs. The number | |||
| all of this client's IA_NAs. The number | space for IA_NA IAIDs is separate from the number space for other | |||
| space for IA_NA IAIDs is separate from the | IA option types (i.e., IA_PD). A 4-octet field containing an | |||
| number space for other IA option types (i.e., | unsigned integer. | |||
| IA_PD). A 4-octet field containing an | ||||
| unsigned integer. | ||||
| T1 The time interval after which the client | T1: The time interval after which the client should contact the | |||
| should contact the server from which the | server from which the addresses in the IA_NA were obtained to | |||
| addresses in the IA_NA were obtained to | extend the lifetimes of the addresses assigned to the IA_NA; T1 is | |||
| extend the lifetimes of the addresses | a time duration relative to the current time expressed in units of | |||
| assigned to the IA_NA; T1 is a time duration | seconds. A 4-octet field containing an unsigned integer. | |||
| relative to the current time expressed in | ||||
| units of seconds. A 4-octet field containing | ||||
| an unsigned integer. | ||||
| T2 The time interval after which the client | T2: The time interval after which the client should contact any | |||
| should contact any available server to extend | available server to extend the lifetimes of the addresses assigned | |||
| the lifetimes of the addresses assigned to | to the IA_NA; T2 is a time duration relative to the current time | |||
| the IA_NA; T2 is a time duration relative to | expressed in units of seconds. A 4-octet field containing an | |||
| the current time expressed in units of | unsigned integer. | |||
| seconds. A 4-octet field containing an | ||||
| unsigned integer. | ||||
| IA_NA-options Options associated with this IA_NA. A | IA_NA-options: Options associated with this IA_NA. A variable- | |||
| variable-length field (12 octets less than | length field (12 octets less than the value in the option-len | |||
| the value in the option-len field). | field). | |||
| The IA_NA-options field encapsulates those options that are specific | The IA_NA-options field encapsulates those options that are specific | |||
| to this IA_NA. For example, all of the IA Address options (see | to this IA_NA. For example, all of the IA Address options (see | |||
| Section 21.6) carrying the addresses associated with this IA_NA are | Section 21.6) carrying the addresses associated with this IA_NA are | |||
| in the IA_NA-options field. | in the IA_NA-options field. | |||
| Each IA_NA carries one "set" of non-temporary addresses; it is up to | Each IA_NA carries one "set" of non-temporary addresses; it is up to | |||
| the server policy to determine how many addresses are assigned, but | the server policy to determine how many addresses are assigned, but | |||
| typically at most one address is assigned from each prefix assigned | typically at most one address is assigned from each prefix assigned | |||
| to the link to which the client is attached. | to the link to which the client is attached. | |||
| skipping to change at page 96, line 38 ¶ | skipping to change at line 4446 ¶ | |||
| processes the remainder of the message as though the server had not | processes the remainder of the message as though the server had not | |||
| included the invalid IA_NA option. | included the invalid IA_NA option. | |||
| 21.5. Identity Association for Temporary Addresses Option | 21.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 | |||
| obsoleted. Please refer to [RFC8415] for historical information on | obsoleted. Please refer to [RFC8415] for historical information on | |||
| this option. | this option. | |||
| The client SHOULD NOT send this option. The server SHOULD NOT send | The client SHOULD NOT send this option. The server SHOULD NOT send | |||
| this option. When the server receives IA_TA option, the option | this option. When the server receives an IA_TA option, the option | |||
| SHOULD be ignored and the message processing should continue as | SHOULD be ignored and the message processing should continue as | |||
| usual. | usual. | |||
| As this option was never popular among server or client | As this option was never popular among server or client | |||
| implementations before being deprecated, any implementations that | implementations before being deprecated, any implementations that | |||
| still attempt to send it are unlikely to have the option processed. | still attempt to send it are unlikely to have the option processed. | |||
| 21.6. IA Address Option | 21.6. IA Address Option | |||
| The IA Address option is used to specify an address. In this | The IA Address option is used to specify an address. In this | |||
| document it is only specified to be encapsulated within an IA_NA. | document, it is only specified to be encapsulated within an IA_NA. | |||
| DHCPv6 Leasequery [RFC5007] makes use of the IA Address Option | DHCPv6 Leasequery [RFC5007] makes use of the IA Address option | |||
| without encapsulating it in IA_NA. The IAaddr-options field | without encapsulating it in IA_NA. The IAaddr-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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_IAADDR | option-len | | | OPTION_IAADDR | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| | IPv6-address | | | IPv6-address | | |||
| | | | | | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | preferred-lifetime | | | preferred-lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | valid-lifetime | | | valid-lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . IAaddr-options . | . IAaddr-options . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 16: IA Address Option Format | Figure 16: IA Address Option Format | |||
| option-code OPTION_IAADDR (5). | option-code: OPTION_IAADDR (5). | |||
| option-len 24 + length of IAaddr-options field. | option-len: 24 + length of IAaddr-options field. | |||
| IPv6-address An IPv6 address. A client MUST NOT form an | IPv6-address: An IPv6 address. A client MUST NOT form an implicit | |||
| implicit prefix with a length other than 128 | prefix with a length other than 128 for this address. A 16-octet | |||
| for this address. A 16-octet field. | field. | |||
| preferred-lifetime The preferred lifetime for the address in the | preferred-lifetime: The preferred lifetime for the address in the | |||
| option, expressed in units of seconds. A | option, expressed in units of seconds. A 4-octet field containing | |||
| 4-octet field containing an unsigned integer. | an unsigned integer. | |||
| valid-lifetime The valid lifetime for the address in the | valid-lifetime: The valid lifetime for the address in the option, | |||
| option, expressed in units of seconds. A | expressed in units of seconds. A 4-octet field containing an | |||
| 4-octet field containing an unsigned integer. | unsigned integer. | |||
| IAaddr-options Options associated with this address. A | IAaddr-options: Options associated with this address. A variable- | |||
| variable-length field (24 octets less than | length field (24 octets less than the value in the option-len | |||
| the value in the option-len field). | field). | |||
| In a message sent by a client to a server, the preferred-lifetime and | In a message sent by a client to a server, the preferred-lifetime and | |||
| valid-lifetime fields SHOULD be set to 0. The server MUST ignore any | valid-lifetime fields SHOULD be set to 0. The server MUST ignore any | |||
| received values. | received values. | |||
| The client SHOULD NOT send the IA Address option with an unspecified | The client SHOULD NOT send the IA Address option with an unspecified | |||
| address (::). | address (::). | |||
| In a message sent by a server to a client, the client MUST use the | In a message sent by a server to a client, the client MUST use the | |||
| values in the preferred-lifetime and valid-lifetime fields for the | values in the preferred-lifetime and valid-lifetime fields for the | |||
| skipping to change at page 98, line 32 ¶ | skipping to change at line 4536 ¶ | |||
| 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, as specified in | in a Status Code option in the IAaddr-options field, as specified in | |||
| Section 21.13. | Section 21.13. | |||
| 21.7. Option Request Option | 21.7. Option Request Option | |||
| The Option Request option is used to identify a list of options in a | 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 | message between a client and a server. The format of the Option | |||
| Request option is: | Request option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_ORO | option-len | | | OPTION_ORO | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | requested-option-code-1 | requested-option-code-2 | | | requested-option-code-1 | requested-option-code-2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | ... | | | ... | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 17: Option Request Option Format | Figure 17: Option Request Option Format | |||
| option-code OPTION_ORO (6). | option-code: OPTION_ORO (6). | |||
| option-len 2 * number of requested options. | option-len: 2 * number of requested options. | |||
| requested-option-code-n The option code for an option requested | requested-option-code-n: The option code for an option requested by | |||
| by the client. Each option code is a | the client. Each option code is a 2-octet field containing an | |||
| 2-octet field containing an unsigned | unsigned integer. | |||
| integer. | ||||
| A client MUST include an Option Request option in a Solicit, Request, | A client MUST include an Option Request option in a Solicit, Request, | |||
| Renew, Rebind, or Information-request message to inform the server | Renew, Rebind, or Information-request message to inform the server | |||
| about options the client wants the server to send to the client. | about options the client wants the server to send to the client. | |||
| The Option Request option MUST NOT include the following option | The Option Request option MUST NOT include the following option | |||
| codes: | codes: | |||
| * Client Identifier (see Section 21.2) | * Client Identifier (see Section 21.2) | |||
| skipping to change at page 100, line 4 ¶ | skipping to change at line 4602 ¶ | |||
| * User Class (see Section 21.15) | * User Class (see Section 21.15) | |||
| * Vendor Class (see Section 21.16) | * Vendor Class (see Section 21.16) | |||
| * Interface-Id (see Section 21.18) | * Interface-Id (see Section 21.18) | |||
| * Reconfigure Message (see Section 21.19) | * Reconfigure Message (see Section 21.19) | |||
| * Reconfigure Accept (see Section 21.20) | * Reconfigure Accept (see Section 21.20) | |||
| Other top-level option codes MUST appear in the Option Request option | Other top-level option codes MUST appear in the Option Request option | |||
| or they will not be sent by the server. Only top-level option codes | or they will not be sent by the server. Only top-level option codes | |||
| MAY appear in the Option Request option. Option codes encapsulated | MAY appear in the Option Request option. Option codes encapsulated | |||
| in a container option SHOULD NOT appear in an Option Request option; | in a container option SHOULD NOT appear in an Option Request option; | |||
| see [RFC7598] for an example of container options. However, options | see [RFC7598] for an example of container options. However, options | |||
| MAY be defined that specify exceptions to this restriction on | MAY be defined that specify exceptions to this restriction on | |||
| including encapsulated option codes in an Option Request option. For | including encapsulated option codes in an Option Request option. For | |||
| example, the Option Request option MAY be used to signal support for | example, the Option Request option MAY be used to signal support for | |||
| a feature even when that option is encapsulated, as in the case of | a feature even when that option is encapsulated, as in the case of | |||
| the Prefix Exclude option [RFC6603]. See [IANA-OPTION-DETAILS]. | the Prefix Exclude option [RFC6603]. See [IANA-OPTION-DETAILS]. | |||
| See [IANA-OPTION-DETAILS] for the authoritative list of which option | See [IANA-OPTION-DETAILS] for the authoritative list of which option | |||
| codes are required, permitted or forbidden. | codes are required, permitted, or forbidden. | |||
| 21.8. Preference Option | 21.8. Preference Option | |||
| The Preference option is sent by a server to a client to control the | The Preference option is sent by a server to a client to control the | |||
| selection of a server by the client. | selection of a server by the client. | |||
| The format of the Preference option is: | The format of the Preference option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_PREFERENCE | option-len | | | OPTION_PREFERENCE | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | pref-value | | | pref-value | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 18: Preference Option Format | Figure 18: Preference Option Format | |||
| 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 | pref-value: The preference value for the server in this message. A | |||
| message. A 1-octet unsigned integer. | 1-octet unsigned integer. | |||
| 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 18.2.9 | control the selection of a server by the client. See Section 18.2.9 | |||
| for information regarding the use of the Preference option by the | for information regarding the use of the Preference option by the | |||
| client and the interpretation of the Preference option data value. | client and the interpretation of the Preference option data value. | |||
| 21.9. Elapsed Time Option | 21.9. Elapsed Time Option | |||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| | OPTION_ELAPSED_TIME | option-len | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | OPTION_ELAPSED_TIME | option-len | | |||
| | elapsed-time | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | elapsed-time | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Figure 19: Elapsed Time Option Format | Figure 19: Elapsed Time Option Format | |||
| option-code OPTION_ELAPSED_TIME (8). | option-code: OPTION_ELAPSED_TIME (8). | |||
| option-len 2. | option-len: 2. | |||
| elapsed-time The amount of time since the client began its | elapsed-time: The amount of time since the client began its current | |||
| current DHCP transaction. This time is | DHCP transaction. This time is expressed in hundredths of a | |||
| expressed in hundredths of a second | second (10^-2 seconds). A 2-octet field containing an unsigned | |||
| (10^-2 seconds). A 2-octet field containing | integer. | |||
| an unsigned integer. | ||||
| A client MUST include an Elapsed Time option in messages to indicate | A client MUST include an Elapsed Time option in messages to indicate | |||
| how long the client has been trying to complete a DHCP message | how long the client has been trying to complete a DHCP message | |||
| exchange. The elapsed time is measured from the time at which the | exchange. The elapsed time is measured from the time at which the | |||
| client sent the first message in the message exchange, and the | client sent the first message in the message exchange, and the | |||
| elapsed-time field is set to 0 in the first message in the message | elapsed-time field is set to 0 in the first message in the message | |||
| exchange. Servers and relay agents use the data value in this option | exchange. Servers and relay agents use the data value in this option | |||
| as input to policy that controls how a server responds to a client | as input to policy that controls 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 has not | DHCP server to respond to a request when a primary server has not | |||
| skipping to change at page 102, line 5 ¶ | skipping to change at line 4688 ¶ | |||
| represent any elapsed-time values greater than the largest time value | represent any elapsed-time values greater than the largest time value | |||
| that can be represented in the Elapsed Time option. | that can be represented in the Elapsed Time option. | |||
| 21.10. Relay Message Option | 21.10. Relay Message Option | |||
| The Relay Message option carries a DHCP message in a Relay-forward or | The Relay Message option carries a DHCP message in a Relay-forward or | |||
| Relay-reply message. | Relay-reply message. | |||
| The format of the Relay Message option is: | The format of the Relay Message option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_RELAY_MSG | option-len | | | OPTION_RELAY_MSG | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . DHCP-relay-message . | . DHCP-relay-message . | |||
| . . | . . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 20: Relay Message Option Format | Figure 20: Relay Message Option Format | |||
| option-code OPTION_RELAY_MSG (9). | option-code: OPTION_RELAY_MSG (9). | |||
| option-len Length of DHCP-relay-message field. | option-len: Length of DHCP-relay-message field. | |||
| DHCP-relay-message In a Relay-forward message, the received | DHCP-relay-message: In a Relay-forward message, the received | |||
| message, relayed verbatim to the next relay | message, relayed verbatim to the next relay agent or server; in a | |||
| agent or server; in a Relay-reply message, | Relay-reply message, the message to be copied and relayed to the | |||
| the message to be copied and relayed to the | relay agent or client whose address is in the peer-address field | |||
| relay agent or client whose address is in the | of the Relay-reply message. The length, in octets, is specified | |||
| peer-address field of the Relay-reply | by option-len. | |||
| message. The length, in octets, is specified | ||||
| by option-len. | ||||
| 21.11. Authentication Option | 21.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 20. The format of | the Authentication option is described in Section 20. The format of | |||
| the Authentication option is: | the Authentication option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_AUTH | option-len | | | OPTION_AUTH | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | protocol | algorithm | RDM | | | | protocol | algorithm | RDM | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| | replay detection (64 bits) +-+-+-+-+-+-+-+-+ | | replay detection (64 bits) +-+-+-+-+-+-+-+-+ | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| . authentication information . | . authentication information . | |||
| . (variable length) . | . (variable length) . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 21: Authentication Option Format | Figure 21: Authentication Option Format | |||
| option-code OPTION_AUTH (11). | option-code: OPTION_AUTH (11). | |||
| option-len 11 + length of authentication | option-len: 11 + length of authentication information field. | |||
| information field. | ||||
| protocol The authentication protocol used in | protocol: The authentication protocol used in this Authentication | |||
| this Authentication option. A | option. A 1-octet unsigned integer. | |||
| 1-octet unsigned integer. | ||||
| algorithm The algorithm used in the | algorithm: The algorithm used in the authentication protocol. A | |||
| authentication protocol. A 1-octet | 1-octet unsigned integer. | |||
| unsigned integer. | ||||
| RDM The replay detection method used in | RDM: The replay detection method used in this Authentication option. | |||
| this Authentication option. A | A 1-octet unsigned integer. | |||
| 1-octet unsigned integer. | ||||
| replay detection The replay detection information for | replay detection: The replay detection information for the RDM. A | |||
| the RDM. A 64-bit (8-octet) field. | 64-bit (8-octet) field. | |||
| authentication information The authentication information, as | authentication information: The authentication information, as | |||
| specified by the protocol and | specified by the protocol and algorithm used in this | |||
| algorithm used in this Authentication | Authentication option. A variable-length field (11 octets less | |||
| option. A variable-length field | than the value in the option-len field). | |||
| (11 octets less than the value in the | ||||
| option-len field). | ||||
| IANA maintains a registry for the protocol, algorithm, and RDM values | IANA maintains a registry for the protocol, algorithm, and RDM values | |||
| at <https://www.iana.org/assignments/auth-namespaces>. | at <https://www.iana.org/assignments/auth-namespaces>. | |||
| 21.12. Server Unicast Option | 21.12. Server Unicast Option | |||
| The Server Unicast option is obsolete. Please refer to [RFC8415] for | The Server Unicast option is obsolete. Please refer to [RFC8415] for | |||
| historical information on this option. | historical information on this option. | |||
| The client SHOULD NOT request this option in the Option Request | The client SHOULD NOT request this option in the Option Request | |||
| option. The server SHOULD NOT send this option, even when requested | option. The server SHOULD NOT send this option, even when requested | |||
| by clients. When any entity receives the Server Unicast option, the | by clients. When any entity receives the Server Unicast option, the | |||
| option SHOULD be ignored and the message processing should continue | option SHOULD be ignored and the message processing should continue | |||
| as usual. | as usual. | |||
| As this option was not very popular and it typically required special | As this option was not very popular, and it typically required | |||
| configuration by those server implementations that did support it, | special configuration by those server implementations that did | |||
| clients still requesting this option in the Option Request option are | support it, clients still requesting this option in the Option | |||
| increasingly unlikely to receive it. | Request option are increasingly unlikely to receive it. | |||
| 21.13. Status Code Option | 21.13. Status Code Option | |||
| This option returns a status indication related to the DHCP message | This option returns a status indication related to the DHCP message | |||
| or option in which it appears. The format of the Status Code | or option in which it appears. The format of the Status Code option | |||
| option is: | is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_STATUS_CODE | option-len | | | OPTION_STATUS_CODE | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | status-code | | | | status-code | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| . . | . . | |||
| . status-message . | . status-message . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 22: Status Code Option Format | Figure 22: Status Code Option Format | |||
| option-code OPTION_STATUS_CODE (13). | option-code: OPTION_STATUS_CODE (13). | |||
| option-len 2 + length of status-message field. | option-len: 2 + length of status-message field. | |||
| status-code The numeric code for the status encoded in | status-code: The numeric code for the status encoded in this option. | |||
| this option. A 2-octet field containing an | A 2-octet field containing an unsigned integer. | |||
| unsigned integer. | ||||
| status-message A UTF-8 encoded [RFC3629] text string | status-message: A UTF-8 encoded [RFC3629] text string suitable for | |||
| suitable for display to an end user. | display to an end user. MUST NOT be null-terminated. A variable- | |||
| MUST NOT be null-terminated. A variable- | length field (2 octets less than the value in the option-len | |||
| length field (2 octets less than the value in | field). | |||
| the option-len field). | ||||
| 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 | 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 | Status Code option does not appear in a message in which the option | |||
| could appear, the status of the message is assumed to be Success. | could appear, the status of the message is assumed to be Success. | |||
| The status-code values are: | The status-code values are: | |||
| +===============+======+===================================+ | +===============+======+===================================+ | |||
| | Name | Code | Description | | | Name | Code | Description | | |||
| skipping to change at page 106, line 5 ¶ | skipping to change at line 4859 ¶ | |||
| See the "Status Codes" registry at <https://www.iana.org/assignments/ | See the "Status Codes" registry at <https://www.iana.org/assignments/ | |||
| dhcpv6-parameters> for the current list of status codes. | dhcpv6-parameters> for the current list of status codes. | |||
| 21.14. Rapid Commit Option | 21.14. Rapid Commit Option | |||
| The Rapid Commit option is used to signal the use of the two-message | The Rapid Commit option is used to signal the use of the two-message | |||
| exchange for address assignment. The format of the Rapid Commit | exchange for address assignment. The format of the Rapid Commit | |||
| option is: | option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_RAPID_COMMIT | option-len | | | OPTION_RAPID_COMMIT | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 23: Rapid Commit Option Format | Figure 23: Rapid Commit Option Format | |||
| option-code OPTION_RAPID_COMMIT (14). | option-code: OPTION_RAPID_COMMIT (14). | |||
| option-len 0. | option-len: 0. | |||
| A client MAY include this option in a Solicit message if the client | A client MAY include this option in a Solicit message if the client | |||
| is prepared to perform the Solicit/Reply message exchange described | is prepared to perform the Solicit/Reply message exchange described | |||
| in Section 18.2.1. | in Section 18.2.1. | |||
| A server MUST include this option in a Reply message sent in response | A server MUST include this option in a Reply message sent in response | |||
| to a Solicit message when completing the Solicit/Reply message | to a Solicit message when completing the Solicit/Reply message | |||
| exchange. | exchange. | |||
| DISCUSSION: | DISCUSSION: | |||
| Each server that responds with a Reply to a Solicit that includes | * Each server that responds with a Reply to a Solicit that includes | |||
| a Rapid Commit option will commit the leases in the Reply message | a Rapid Commit option will commit the leases in the Reply message | |||
| to the client but will not receive any confirmation that the | to the client but will not receive any confirmation that the | |||
| client has received the Reply message. Therefore, if more than | client has received the Reply message. Therefore, if more than | |||
| one server responds to a Solicit that includes a Rapid Commit | one server responds to a Solicit that includes a Rapid Commit | |||
| option, all but one server will commit leases that are not | option, all but one server will commit leases that are not | |||
| actually used by the client; this could result in incorrect | actually used by the client; this could result in incorrect | |||
| address information in DNS if the DHCP servers update DNS | address information in DNS if the DHCP servers update DNS | |||
| [RFC4704], and responses to leasequery requests [RFC5007] may | [RFC4704], and responses to leasequery requests [RFC5007] may | |||
| include information on leases not in use by the client. | include information on leases not in use by the client. | |||
| The problem of unused leases can be minimized by designing the | * The problem of unused leases can be minimized by designing the | |||
| DHCP service so that only one server responds to the Solicit or by | DHCP service so that only one server responds to the Solicit or by | |||
| using relatively short lifetimes for newly assigned leases. | using relatively short lifetimes for newly assigned leases. | |||
| 21.15. User Class Option | 21.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 users or applications it represents. | category of users or applications it represents. | |||
| The format of the User Class option is: | The format of the User Class 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_USER_CLASS | option-len | | | OPTION_USER_CLASS | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . user-class-data . | . user-class-data . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 24: User Class Option Format | Figure 24: User Class Option Format | |||
| 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. The | user-class-data: The user classes carried by the client. The | |||
| length, in octets, is specified by | length, in octets, is specified by option-len. | |||
| option-len. | ||||
| 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 class | contained in one or more opaque fields that represent the user class | |||
| or classes of which the client is a member. A server selects | or classes of which the client is a member. A server selects | |||
| configuration information for the client based on the classes | configuration information for the client based on the classes | |||
| identified in this option. For example, the User Class option can be | identified in this option. For example, the User Class option can be | |||
| used to configure all clients of people in the accounting department | used to configure all clients of people in the accounting department | |||
| with a different printer than clients of people in the marketing | with a different printer than clients of people in the marketing | |||
| department. The user class information carried in this option MUST | department. The user class information carried in this option MUST | |||
| be configurable on the client. | be configurable on the client. | |||
| The data area of the User Class option MUST contain one or more | The data area of the User Class option MUST contain one or more | |||
| instances of user-class-data information. Each instance of | instances of user-class-data information. Each instance of user- | |||
| user-class-data is formatted as follows: | class-data is formatted as follows: | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | |||
| | user-class-len | opaque-data | | | user-class-len | opaque-data | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | |||
| Figure 25: Format of user-class-data Field | Figure 25: Format of user-class-data Field | |||
| The user-class-len field is 2 octets long and specifies the length of | The user-class-len field is 2 octets long and specifies the length of | |||
| the opaque user-class-data in network byte order. | the opaque user-class-data in network byte order. | |||
| A server interprets the classes identified in this option according | A server interprets the classes identified in this option according | |||
| to its configuration to select the appropriate configuration | to its configuration to select the appropriate configuration | |||
| information for the client. A server may use only those user classes | information for the client. A server may use only those user classes | |||
| that it is configured to interpret in selecting configuration | that it is configured to interpret in selecting configuration | |||
| skipping to change at page 108, line 17 ¶ | skipping to change at line 4963 ¶ | |||
| informed of the classes interpreted by the server. | informed of the classes interpreted by the server. | |||
| 21.16. Vendor Class Option | 21.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 in | information contained in the data area of this option is contained in | |||
| one or more opaque fields that identify details of the hardware | one or more opaque fields that identify details of the hardware | |||
| configuration. The format of the Vendor Class option is: | configuration. The format of the Vendor Class option is: | |||
| 0 1 2 3 | 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_VENDOR_CLASS | option-len | | | OPTION_VENDOR_CLASS | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | enterprise-number | | | enterprise-number | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . vendor-class-data . | . vendor-class-data . | |||
| . . . . . | . . . . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 26: Vendor Class Option Format | Figure 26: Vendor Class Option Format | |||
| 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 | |||
| maintained by IANA [IANA-PEN]. A 4-octet | maintained by IANA [IANA-PEN]. A 4-octet field containing an | |||
| field containing an unsigned integer. | unsigned integer. | |||
| vendor-class-data The hardware configuration of the node on | vendor-class-data: The hardware configuration of the node on which | |||
| which the client is running. A | the client is running. A variable-length field (4 octets less | |||
| variable-length field (4 octets less than the | than the value in the option-len field). | |||
| value in the option-len field). | ||||
| The vendor-class-data field is composed of a series of separate | The vendor-class-data field is composed of a series of separate | |||
| items, each of which describes some characteristic of the client's | items, each of which describes some characteristic of the client's | |||
| hardware configuration. Examples of vendor-class-data instances | hardware configuration. Examples of vendor-class-data instances | |||
| might include the version of the operating system the client is | might include the version of the operating system the client is | |||
| running or the amount of memory installed on the client. | running or the amount of memory installed on the client. | |||
| Each instance of vendor-class-data is formatted as follows: | Each instance of vendor-class-data is formatted as follows: | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | |||
| | vendor-class-len | opaque-data | | | vendor-class-len | opaque-data | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+ | |||
| Figure 27: Format of vendor-class-data Field | Figure 27: Format of vendor-class-data Field | |||
| The vendor-class-len field is 2 octets long and specifies the length | The vendor-class-len field is 2 octets long and specifies the length | |||
| of the opaque vendor-class-data in network byte order. | of the opaque vendor-class-data in network byte order. | |||
| Servers and clients MUST NOT include more than one instance of | Servers and clients MUST NOT include more than one instance of | |||
| OPTION_VENDOR_CLASS with the same Enterprise Number. Each instance | OPTION_VENDOR_CLASS with the same Enterprise Number. Each instance | |||
| of OPTION_VENDOR_CLASS can carry multiple vendor-class-data | of OPTION_VENDOR_CLASS can carry multiple vendor-class-data | |||
| instances. | instances. | |||
| 21.17. Vendor-specific Information Option | 21.17. Vendor-Specific Information Option | |||
| This option is used by clients and servers to exchange vendor- | This option is used by clients and servers to exchange vendor- | |||
| specific information. | specific information. | |||
| The format of the Vendor-specific Information option is: | The format of the Vendor-specific Information 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_VENDOR_OPTS | option-len | | | OPTION_VENDOR_OPTS | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | enterprise-number | | | enterprise-number | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . vendor-option-data . | . vendor-option-data . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 28: Vendor-specific Information Option Format | Figure 28: Vendor-Specific Information Option Format | |||
| option-code OPTION_VENDOR_OPTS (17). | option-code: OPTION_VENDOR_OPTS (17). | |||
| option-len 4 + length of vendor-option-data field. | option-len: 4 + length of vendor-option-data field. | |||
| enterprise-number The vendor's registered Enterprise Number as | enterprise-number: The vendor's registered Enterprise Number as | |||
| maintained by IANA [IANA-PEN]. A 4-octet | maintained by IANA [IANA-PEN]. A 4-octet field containing an | |||
| field containing an unsigned integer. | unsigned integer. | |||
| vendor-option-data Vendor options, interpreted by vendor- | vendor-option-data: Vendor options, interpreted by vendor-specific | |||
| specific code on the clients and servers. A | code on the clients and servers. A variable-length field (4 | |||
| variable-length field (4 octets less than the | octets less than the value in the option-len field). | |||
| value in the option-len field). | ||||
| 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. A | utilizing additional features in a vendor's DHCP implementation. A | |||
| DHCP client that does not receive requested vendor-specific | DHCP client that does not receive requested vendor-specific | |||
| information will still configure the node's IPv6 stack to be | information will still configure the node's IPv6 stack to be | |||
| functional. | functional. | |||
| The vendor-option-data field MUST be encoded as a sequence of | The vendor-option-data field MUST be encoded as a sequence of | |||
| code/length/value fields of format identical to the DHCP options (see | code/length/value fields of format identical to the DHCP options (see | |||
| Section 21.1). The suboption codes are defined by the vendor | Section 21.1). The suboption codes are defined by the vendor | |||
| identified in the enterprise-number field and are not managed by | identified in the enterprise-number field and are not managed by | |||
| IANA. Each of the suboptions is formatted as follows: | IANA. Each of the suboptions is formatted as follows: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | sub-opt-code | suboption-len | | | sub-opt-code | suboption-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . suboption-data . | . suboption-data . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 29: Vendor-specific Options Format | Figure 29: Vendor-Specific Options Format | |||
| sub-opt-code The code for the suboption. A 2-octet field. | sub-opt-code: The code for the suboption. A 2-octet field. | |||
| suboption-len An unsigned integer giving the length of the | suboption-len: An unsigned integer giving the length of the | |||
| suboption-data field in this suboption in | suboption-data field in this suboption in octets. A 2-octet | |||
| octets. A 2-octet field. | field. | |||
| suboption-data The data area for the suboption. The length, | suboption-data: The data area for the suboption. The length, in | |||
| in octets, is specified by sub-option-len. | octets, is specified by suboption-len. | |||
| 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. Servers and clients MUST NOT send | Enterprise Number in that option. Servers and clients MUST NOT send | |||
| more than one instance of the Vendor-specific Information option with | more than one instance of the Vendor-specific Information option with | |||
| the same Enterprise Number. Each instance of the Vendor-specific | the same Enterprise Number. Each instance of the Vendor-specific | |||
| Information option MAY contain multiple suboptions. | Information option MAY contain multiple suboptions. | |||
| A client that is interested in receiving a Vendor-specific | A client that is interested in receiving a Vendor-specific | |||
| skipping to change at page 111, line 14 ¶ | skipping to change at line 5102 ¶ | |||
| * MAY specify an associated Vendor Class option (see Section 21.16). | * MAY specify an associated Vendor Class option (see Section 21.16). | |||
| * MAY specify the Vendor-specific Information option with | * MAY specify the Vendor-specific Information option with | |||
| appropriate data. | appropriate data. | |||
| Servers only return the Vendor-specific Information options if | Servers only return the Vendor-specific Information options if | |||
| specified in Option Request options from clients and: | specified in Option Request options from clients and: | |||
| * MAY use the Enterprise Numbers in the associated Vendor Class | * MAY use the Enterprise Numbers in the associated Vendor Class | |||
| options to restrict the set of Enterprise Numbers in the | options to restrict the set of Enterprise Numbers in the Vendor- | |||
| Vendor-specific Information options returned. | specific Information options returned. | |||
| * MAY return all configured Vendor-specific Information options. | * MAY return all configured Vendor-specific Information options. | |||
| * MAY use other information in the message or in its configuration | * MAY use other information in the message or in its configuration | |||
| to determine which set of Enterprise Numbers in the Vendor- | to determine which set of Enterprise Numbers in the Vendor- | |||
| specific Information options to return. | specific Information options to return. | |||
| 21.18. Interface-Id Option | 21.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 relay | receives a Relay-reply message with an Interface-Id option, the relay | |||
| agent relays the message to the client through the interface | agent relays the message to the client through the interface | |||
| identified by the option. | identified by the option. | |||
| The format of the Interface-Id option is: | The format of the Interface-Id option is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | OPTION_INTERFACE_ID | option-len | | | OPTION_INTERFACE_ID | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . interface-id . | . interface-id . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 30: Interface-Id Option Format | Figure 30: Interface-Id Option Format | |||
| option-code OPTION_INTERFACE_ID (18). | option-code: OPTION_INTERFACE_ID (18). | |||
| option-len Length of interface-id field. | option-len: Length of interface-id field. | |||
| interface-id An opaque value of arbitrary length generated | interface-id: An opaque value of arbitrary length generated by the | |||
| by the relay agent to identify one of the | relay agent to identify one of the relay agent's interfaces. The | |||
| relay agent's interfaces. The length, in | length, in octets, is specified by option-len. | |||
| octets, is specified by option-len. | ||||
| The server MUST copy the Interface-Id option from the Relay-forward | The server MUST copy the Interface-Id option from the Relay-forward | |||
| message into the Relay-reply message the server sends to the relay | message into the Relay-reply message the server sends to the relay | |||
| agent in response to the Relay-forward message. This option MUST NOT | agent in response to the Relay-forward message. This option MUST NOT | |||
| appear in any message except a Relay-forward or Relay-reply message. | appear in any message except a Relay-forward or Relay-reply message. | |||
| Servers MAY use the interface-id field for parameter assignment | Servers MAY use the interface-id field for parameter assignment | |||
| policies. The interface-id value SHOULD be considered an opaque | policies. The interface-id value SHOULD be considered an opaque | |||
| value, with policies based on exact match only; that is, the | value, with policies based on exact match only; that is, the | |||
| interface-id field SHOULD NOT be internally parsed by the server. | interface-id field SHOULD NOT be internally parsed by the server. | |||
| skipping to change at page 112, line 26 ¶ | skipping to change at line 5162 ¶ | |||
| interface-id value changes, a server will not be able to use it | interface-id value changes, a server will not be able to use it | |||
| reliably in parameter assignment policies. | reliably in parameter assignment policies. | |||
| 21.19. Reconfigure Message Option | 21.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, a Rebind message, or an Information-request message. | Renew message, a Rebind message, or an Information-request message. | |||
| The format of the Reconfigure Message option is: | The format of the Reconfigure 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_RECONF_MSG | option-len | | | OPTION_RECONF_MSG | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | msg-type | | | msg-type | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 31: Reconfigure Message Option Format | Figure 31: Reconfigure Message Option Format | |||
| option-code OPTION_RECONF_MSG (19). | option-code: OPTION_RECONF_MSG (19). | |||
| option-len 1. | option-len: 1. | |||
| msg-type 5 for Renew message, 6 for Rebind message, | msg-type: 5 for Renew message, 6 for Rebind message, 11 for | |||
| 11 for Information-request message. A | Information-request message. A 1-octet unsigned integer. | |||
| 1-octet unsigned integer. | ||||
| The Reconfigure Message option can only appear in a Reconfigure | The Reconfigure Message option can only appear in a Reconfigure | |||
| message. | message. | |||
| 21.20. Reconfigure Accept Option | 21.20. Reconfigure Accept Option | |||
| A client uses the Reconfigure Accept option to announce to the server | A client uses the Reconfigure Accept option to announce to the server | |||
| whether the client is willing to accept Reconfigure messages, and a | whether the client is willing to accept Reconfigure messages, and a | |||
| server uses this option to tell the client whether or not to accept | server uses this option to tell the client whether or not to accept | |||
| Reconfigure messages. In the absence of this option, the default | Reconfigure messages. In the absence of this option, the default | |||
| behavior is that the client is unwilling to accept Reconfigure | behavior is that the client is unwilling to accept Reconfigure | |||
| messages. The format of the Reconfigure Accept option is: | messages. The format of the Reconfigure Accept 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_ACCEPT | option-len | | | OPTION_RECONF_ACCEPT | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 32: Reconfigure Accept Option Format | Figure 32: Reconfigure Accept Option Format | |||
| option-code OPTION_RECONF_ACCEPT (20). | option-code: OPTION_RECONF_ACCEPT (20). | |||
| option-len 0. | option-len: 0. | |||
| 21.21. Identity Association for Prefix Delegation Option | 21.21. Identity Association for Prefix Delegation Option | |||
| The IA_PD option is used to carry a prefix delegation identity | The IA_PD option is used to carry a prefix delegation identity | |||
| association, the parameters associated with the IA_PD, and the | association, the parameters associated with the IA_PD, and the | |||
| prefixes associated with it. The format of the IA_PD option is: | prefixes associated with it. The format of the IA_PD 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_PD | option-len | | | OPTION_IA_PD | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | IAID (4 octets) | | | IAID (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | T1 | | | T1 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | T2 | | | T2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| . . | . . | |||
| . IA_PD-options . | . IA_PD-options . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 33: Identity Association for Prefix Delegation Option Format | Figure 33: Identity Association for Prefix Delegation Option Format | |||
| option-code OPTION_IA_PD (25). | option-code: OPTION_IA_PD (25). | |||
| option-len 12 + length of IA_PD-options field. | option-len: 12 + length of IA_PD-options field. | |||
| IAID The unique identifier for this IA_PD; the | IAID: The unique identifier for this IA_PD; the IAID must be unique | |||
| IAID must be unique among the identifiers for | among the identifiers for all of this client's IA_PDs. The number | |||
| all of this client's IA_PDs. The number | space for IA_PD IAIDs is separate from the number space for other | |||
| space for IA_PD IAIDs is separate from the | IA option types (i.e., IA_NA). A 4-octet field containing an | |||
| number space for other IA option types (i.e., | unsigned integer. | |||
| IA_NA). A 4-octet field containing an | ||||
| unsigned integer. | ||||
| T1 The time interval after which the client | T1: The time interval after which the client should contact the | |||
| should contact the server from which the | server from which the prefixes in the IA_PD were obtained to | |||
| prefixes in the IA_PD were obtained to extend | extend the lifetimes of the prefixes delegated to the IA_PD; T1 is | |||
| the lifetimes of the prefixes delegated to | a time duration relative to the message reception time expressed | |||
| the IA_PD; T1 is a time duration relative to | in units of seconds. A 4-octet field containing an unsigned | |||
| the message reception time expressed in units | integer. | |||
| of seconds. A 4-octet field containing an | ||||
| unsigned integer. | ||||
| T2 The time interval after which the client | T2: The time interval after which the client should contact any | |||
| should contact any available server to extend | available server to extend the lifetimes of the prefixes assigned | |||
| the lifetimes of the prefixes assigned to the | to the IA_PD; T2 is a time duration relative to the message | |||
| IA_PD; T2 is a time duration relative to the | reception time expressed in units of seconds. A 4-octet field | |||
| message reception time expressed in units of | containing an unsigned integer. | |||
| seconds. A 4-octet field containing an | ||||
| unsigned integer. | ||||
| IA_PD-options Options associated with this IA_PD. A | IA_PD-options: Options associated with this IA_PD. A variable- | |||
| variable-length field (12 octets less than | length field (12 octets less than the value in the option-len | |||
| the value in the option-len field). | field). | |||
| The IA_PD-options field encapsulates those options that are specific | The IA_PD-options field encapsulates those options that are specific | |||
| to this IA_PD. For example, all of the IA Prefix options (see | to this IA_PD. For example, all of the IA Prefix options (see | |||
| Section 21.22) carrying the prefixes associated with this IA_PD are | Section 21.22) carrying the prefixes associated with this IA_PD are | |||
| in the IA_PD-options field. | in the IA_PD-options field. | |||
| An IA_PD option may only appear in the options area of a DHCP | An IA_PD option may only appear in the options area of a DHCP | |||
| message. A DHCP message may contain multiple IA_PD options (though | message. A DHCP message may contain multiple IA_PD options (though | |||
| each must have a unique IAID). | each must have a unique IAID). | |||
| skipping to change at page 115, line 32 ¶ | skipping to change at line 5299 ¶ | |||
| MUST follow the rules defined in Section 14.2. | MUST follow the rules defined in Section 14.2. | |||
| If a client receives an IA_PD with T1 greater than T2 and both T1 and | If a client receives an IA_PD with T1 greater than T2 and both T1 and | |||
| T2 are greater than 0, the client discards the IA_PD option and | T2 are greater than 0, the client discards the IA_PD option and | |||
| processes the remainder of the message as though the server had not | processes the remainder of the message as though the server had not | |||
| included the IA_PD option. | included the IA_PD option. | |||
| 21.22. IA Prefix Option | 21.22. IA Prefix Option | |||
| The IA Prefix option is used to specify a prefix associated with an | The IA Prefix option is used to specify a prefix associated with an | |||
| IA_PD. The IA Prefix option must be encapsulated in the | IA_PD. The IA Prefix option must be encapsulated in the IA_PD- | |||
| IA_PD-options field of an IA_PD option (see Section 21.21). | options field of an IA_PD option (see Section 21.21). | |||
| 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_IAPREFIX | option-len | | | OPTION_IAPREFIX | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | preferred-lifetime | | | preferred-lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | valid-lifetime | | | valid-lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | prefix-length | | | | prefix-length | | | |||
| +-+-+-+-+-+-+-+-+ IPv6-prefix | | +-+-+-+-+-+-+-+-+ IPv6-prefix | | |||
| | (16 octets) | | | (16 octets) | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | . | | | . | |||
| +-+-+-+-+-+-+-+-+ . | +-+-+-+-+-+-+-+-+ . | |||
| . IAprefix-options . | . IAprefix-options . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 34: IA Prefix Option Format | Figure 34: IA Prefix Option Format | |||
| option-code OPTION_IAPREFIX (26). | option-code: OPTION_IAPREFIX (26). | |||
| option-len 25 + length of IAprefix-options field. | option-len: 25 + length of IAprefix-options field. | |||
| preferred-lifetime The preferred lifetime for the prefix in the | preferred-lifetime: The preferred lifetime for the prefix in the | |||
| option, expressed in units of seconds. A | option, expressed in units of seconds. A value of 0xffffffff | |||
| value of 0xffffffff represents "infinity" | represents "infinity" (see Section 7.7). A 4-octet field | |||
| (see Section 7.7). A 4-octet field | containing an unsigned integer. | |||
| containing an unsigned integer. | ||||
| valid-lifetime The valid lifetime for the prefix in the | valid-lifetime: The valid lifetime for the prefix in the option, | |||
| option, expressed in units of seconds. A | expressed in units of seconds. A value of 0xffffffff represents | |||
| value of 0xffffffff represents "infinity". A | "infinity". A 4-octet field containing an unsigned integer. | |||
| 4-octet field containing an unsigned integer. | ||||
| prefix-length Length for this prefix in bits. A 1-octet | prefix-length: Length for this prefix in bits. A 1-octet unsigned | |||
| unsigned integer. | integer. | |||
| IPv6-prefix An IPv6 prefix. A 16-octet field. | IPv6-prefix: An IPv6 prefix. A 16-octet field. | |||
| IAprefix-options Options associated with this prefix. A | IAprefix-options: Options associated with this prefix. A variable- | |||
| variable-length field (25 octets less than | length field (25 octets less than the value in the option-len | |||
| the value in the option-len field). | field). | |||
| In a message sent by a client to a server, the preferred-lifetime and | In a message sent by a client to a server, the preferred-lifetime and | |||
| valid-lifetime fields SHOULD be set to 0. The server MUST ignore any | valid-lifetime fields SHOULD be set to 0. The server MUST ignore any | |||
| received values in these lifetime fields. | received values in these lifetime fields. | |||
| The client SHOULD NOT send an IA Prefix option with 0 in the | The client SHOULD NOT send an IA Prefix option with 0 in the "prefix- | |||
| "prefix-length" field (and an unspecified value (::) in the | length" field (and an unspecified value (::) in the "IPv6-prefix" | |||
| "IPv6-prefix" field). A client MAY send a non-zero value in the | field). A client MAY send a non-zero value in the "prefix-length" | |||
| "prefix-length" field and the unspecified value (::) in the | field and the unspecified value (::) in the "IPv6-prefix" field to | |||
| "IPv6-prefix" field to indicate a preference for the size of the | indicate a preference for the size of the prefix to be delegated. | |||
| prefix to be delegated. See [RFC8168] for further details on prefix- | See [RFC8168] for further details on prefix-length hints. | |||
| length hints. | ||||
| The client MUST discard any prefixes for which the preferred lifetime | The client MUST discard any prefixes for which the preferred lifetime | |||
| is greater than the valid lifetime. | is greater than the valid lifetime. | |||
| The values in the preferred-lifetime and valid-lifetime fields are | The values in the preferred-lifetime and valid-lifetime fields are | |||
| the number of seconds remaining in each lifetime. See | the number of seconds remaining in each lifetime. See | |||
| Section 18.2.10.1 for more details on how these values are used for | Section 18.2.10.1 for more details on how these values are used for | |||
| delegated prefixes. | delegated prefixes. | |||
| As per Section 7.7, the value of 0xffffffff for the preferred | As per Section 7.7, the value of 0xffffffff for the preferred | |||
| skipping to change at page 118, line 5 ¶ | skipping to change at line 5392 ¶ | |||
| refreshing information retrieved from a DHCP server. It is only used | refreshing information retrieved from a DHCP server. It is only used | |||
| in Reply messages in response to Information-request messages. In | in Reply messages in response to Information-request messages. In | |||
| other messages, there will usually be other information that | other messages, there will usually be other information that | |||
| indicates when the client should contact the server, e.g., T1/T2 | indicates when the client should contact the server, e.g., T1/T2 | |||
| times and lifetimes. This option is useful when the configuration | times and lifetimes. This option is useful when the configuration | |||
| parameters change or during a renumbering event, as clients running | parameters change or during a renumbering event, as clients running | |||
| in the stateless mode will be able to update their configuration. | in the stateless mode will be able to update their configuration. | |||
| The format of the Information Refresh Time option is: | The format of the Information Refresh Time 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_INFORMATION_REFRESH_TIME| option-len | | |OPTION_INFORMATION_REFRESH_TIME| option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | information-refresh-time | | | information-refresh-time | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 35: Information Refresh Time Option Format | Figure 35: Information Refresh Time Option Format | |||
| option-code OPTION_INFORMATION_REFRESH_TIME (32). | option-code: OPTION_INFORMATION_REFRESH_TIME (32). | |||
| option-len 4. | option-len: 4. | |||
| information-refresh-time Time duration relative to the current | information-refresh-time: Time duration relative to the current | |||
| time, expressed in units of seconds. A | time, expressed in units of seconds. A 4-octet field containing | |||
| 4-octet field containing an unsigned | an unsigned integer. | |||
| integer. | ||||
| A DHCP client MUST request this option in the Option Request option | A DHCP client MUST request this option in the Option Request option | |||
| (see Section 21.7) when sending Information-request messages. A | (see Section 21.7) when sending Information-request messages. A | |||
| client MUST NOT request this option in the Option Request option in | client MUST NOT request this option in the Option Request option in | |||
| any other messages. | any other messages. | |||
| A server sending a Reply to an Information-request message SHOULD | A server sending a Reply to an Information-request message SHOULD | |||
| include this option if it is requested in the Option Request option | include this option if it is requested in the Option Request option | |||
| of the Information-request. The option value MUST NOT be smaller | of the Information-request. The option value MUST NOT be smaller | |||
| than IRT_MINIMUM. This option MUST only appear in the top-level | than IRT_MINIMUM. This option MUST only appear in the top-level | |||
| skipping to change at page 119, line 6 ¶ | skipping to change at line 5438 ¶ | |||
| As per Section 7.7, the value 0xffffffff is taken to mean "infinity" | As per Section 7.7, the value 0xffffffff is taken to mean "infinity" | |||
| and implies that the client should not refresh its configuration data | and implies that the client should not refresh its configuration data | |||
| without some other trigger (such as detecting movement to a new | without some other trigger (such as detecting movement to a new | |||
| link). | link). | |||
| If a client contacts the server to obtain new data or refresh some | If a client contacts the server to obtain new data or refresh some | |||
| existing data before the refresh time expires, then it SHOULD also | existing data before the refresh time expires, then it SHOULD also | |||
| refresh all data covered by this option. | refresh all data covered by this option. | |||
| When the client detects that the refresh time has expired, it SHOULD | When the client detects that the refresh time has expired, it SHOULD | |||
| try to update its configuration data by sending an | try to update its configuration data by sending an Information- | |||
| Information-request as specified in Section 18.2.6, except that the | request as specified in Section 18.2.6, except that the client MUST | |||
| client MUST delay sending the first Information-request by a random | delay sending the first Information-request by a random amount of | |||
| amount of time between 0 and INF_MAX_DELAY. | time between 0 and INF_MAX_DELAY. | |||
| A client MAY have a maximum value for the refresh time, where that | A client MAY have a maximum value for the refresh time, where that | |||
| value is used whenever the client receives this option with a value | value is used whenever the client receives this option with a value | |||
| higher than the maximum. This also means that the maximum value is | higher than the maximum. This also means that the maximum value is | |||
| used when the received value is "infinity". A maximum value might | used when the received value is "infinity". A maximum value might | |||
| make the client less vulnerable to attacks based on forged DHCP | make the client less vulnerable to attacks based on forged DHCP | |||
| messages. Without a maximum value, a client may be made to use wrong | messages. Without a maximum value, a client may be made to use wrong | |||
| information for a possibly infinite period of time. There may, | information for a possibly infinite period of time. There may, | |||
| however, be reasons for having a very long refresh time, so it may be | however, be reasons for having a very long refresh time, so it may be | |||
| useful for this maximum value to be configurable. | useful for this maximum value to be configurable. | |||
| skipping to change at page 119, line 32 ¶ | skipping to change at line 5464 ¶ | |||
| A DHCP server sends the SOL_MAX_RT option to a client to override the | A DHCP server sends the SOL_MAX_RT option to a client to override the | |||
| default value of SOL_MAX_RT. The value of SOL_MAX_RT in the option | default value of SOL_MAX_RT. The value of SOL_MAX_RT in the option | |||
| replaces the default value defined in Section 7.6. One use for the | replaces the default value defined in Section 7.6. One use for the | |||
| SOL_MAX_RT option is to set a higher value for SOL_MAX_RT; this | SOL_MAX_RT option is to set a higher value for SOL_MAX_RT; this | |||
| reduces the Solicit traffic from a client that has not received a | reduces the Solicit traffic from a client that has not received a | |||
| response to its Solicit messages. | response to its Solicit messages. | |||
| The format of the SOL_MAX_RT option is: | The format of the SOL_MAX_RT 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_SOL_MAX_RT | option-len | | | OPTION_SOL_MAX_RT | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SOL_MAX_RT value | | | SOL_MAX_RT value | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 36: SOL_MAX_RT Option Format | Figure 36: SOL_MAX_RT Option Format | |||
| option-code OPTION_SOL_MAX_RT (82). | option-code: OPTION_SOL_MAX_RT (82). | |||
| option-len 4. | option-len: 4. | |||
| SOL_MAX_RT value Overriding value for SOL_MAX_RT in seconds; | SOL_MAX_RT value: Overriding value for SOL_MAX_RT in seconds; MUST | |||
| MUST be in this range: 60 <= "value" <= 86400 | be in this range: 60 <= "value" <= 86400 (1 day). A 4-octet field | |||
| (1 day). A 4-octet field containing an | containing an unsigned integer. | |||
| unsigned integer. | ||||
| A DHCP client MUST include the SOL_MAX_RT option code in any Option | A DHCP client MUST include the SOL_MAX_RT option code in any Option | |||
| Request option (see Section 21.7) it sends in a Solicit message. | Request option (see Section 21.7) it sends in a Solicit message. | |||
| The DHCP server MAY include the SOL_MAX_RT option in any response it | The DHCP server MAY include the SOL_MAX_RT option in any response it | |||
| sends to a client that has included the SOL_MAX_RT option code in an | sends to a client that has included the SOL_MAX_RT option code in an | |||
| Option Request option. The SOL_MAX_RT option is sent as a top-level | Option Request option. The SOL_MAX_RT option is sent as a top-level | |||
| option in the message to the client. | option in the message to the client. | |||
| A DHCP client MUST ignore any SOL_MAX_RT option values that are less | A DHCP client MUST ignore any SOL_MAX_RT option values that are less | |||
| skipping to change at page 120, line 38 ¶ | skipping to change at line 5518 ¶ | |||
| A DHCP server sends the INF_MAX_RT option to a client to override the | A DHCP server sends the INF_MAX_RT option to a client to override the | |||
| default value of INF_MAX_RT. The value of INF_MAX_RT in the option | default value of INF_MAX_RT. The value of INF_MAX_RT in the option | |||
| replaces the default value defined in Section 7.6. One use for the | replaces the default value defined in Section 7.6. One use for the | |||
| INF_MAX_RT option is to set a higher value for INF_MAX_RT; this | INF_MAX_RT option is to set a higher value for INF_MAX_RT; this | |||
| reduces the Information-request traffic from a client that has not | reduces the Information-request traffic from a client that has not | |||
| received a response to its Information-request messages. | received a response to its Information-request messages. | |||
| The format of the INF_MAX_RT option is: | The format of the INF_MAX_RT 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_INF_MAX_RT | option-len | | | OPTION_INF_MAX_RT | option-len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | INF_MAX_RT value | | | INF_MAX_RT value | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 37: INF_MAX_RT Option Format | Figure 37: INF_MAX_RT Option Format | |||
| option-code OPTION_INF_MAX_RT (83). | option-code: OPTION_INF_MAX_RT (83). | |||
| option-len 4. | option-len: 4. | |||
| INF_MAX_RT value Overriding value for INF_MAX_RT in seconds; | INF_MAX_RT value: Overriding value for INF_MAX_RT in seconds; MUST | |||
| MUST be in this range: 60 <= "value" <= 86400 | be in this range: 60 <= "value" <= 86400 (1 day). A 4-octet field | |||
| (1 day). A 4-octet field containing an | containing an unsigned integer. | |||
| unsigned integer. | ||||
| A DHCP client MUST include the INF_MAX_RT option code in any Option | A DHCP client MUST include the INF_MAX_RT option code in any Option | |||
| Request option (see Section 21.7) it sends in an Information-request | Request option (see Section 21.7) it sends in an Information-request | |||
| message. | message. | |||
| The DHCP server MAY include the INF_MAX_RT option in any response it | The DHCP server MAY include the INF_MAX_RT option in any response it | |||
| sends to a client that has included the INF_MAX_RT option code in an | sends to a client that has included the INF_MAX_RT option code in an | |||
| Option Request option. The INF_MAX_RT option is a top-level option | Option Request option. The INF_MAX_RT option is a top-level option | |||
| in the message to the client. | in the message to the client. | |||
| skipping to change at page 121, line 29 ¶ | skipping to change at line 5557 ¶ | |||
| If a DHCP client receives a message containing an INF_MAX_RT option | If a DHCP client receives a message containing an INF_MAX_RT option | |||
| that has a valid value for INF_MAX_RT, the client MUST set its | that has a valid value for INF_MAX_RT, the client MUST set its | |||
| internal INF_MAX_RT parameter to the value contained in the | internal INF_MAX_RT parameter to the value contained in the | |||
| INF_MAX_RT option. This value of INF_MAX_RT is then used by the | INF_MAX_RT option. This value of INF_MAX_RT is then used by the | |||
| retransmission mechanism defined in Sections 15 and 18.2.6. | retransmission mechanism defined in Sections 15 and 18.2.6. | |||
| An updated INF_MAX_RT value applies only to the network interface on | An updated INF_MAX_RT value applies only to the network interface on | |||
| which the client received the INF_MAX_RT option. | which the client received the INF_MAX_RT option. | |||
| 22. Implementation status | 22. Security Considerations | |||
| NOTE TO RFC EDITOR: Please remove this section before publication. | ||||
| It is intended for the IESG evaluation. | ||||
| This section records the status of known implementations of the | ||||
| protocol defined by this specification at the time of posting of this | ||||
| Internet-Draft, and is based on a proposal described in RFC 7942. | ||||
| The description of implementations in this section is intended to | ||||
| assist the IETF in its decision processes in progressing drafts to | ||||
| RFCs. Please note that the listing of any individual implementation | ||||
| here does not imply endorsement by the IETF. Furthermore, no effort | ||||
| has been spent to verify the information presented here that was | ||||
| supplied by IETF contributors. This is not intended as, and must not | ||||
| be construed to be, a catalog of available implementations or their | ||||
| features. Readers are advised to note that other implementations may | ||||
| exist. | ||||
| According to RFC 7942, "this will allow reviewers and working groups | ||||
| to assign due consideration to documents that have the benefit of | ||||
| running code, which may serve as evidence of valuable experimentation | ||||
| and feedback that have made the implemented protocols more mature. | ||||
| It is up to the individual working groups to use this information as | ||||
| they see fit". | ||||
| The DHCPv6 protocol was originally published as RFC 3315 in July | ||||
| 2003. Many extensions were defined and RFC 8415 was published in | ||||
| November 2018. The protocol was implemented by many vendors that | ||||
| claim DHCPv6 compliance. It is sometimes difficult to determine | ||||
| whether full compliance with 8415 is claimed. | ||||
| The DHCPv6 protocol enjoys multiple interoperable implementations | ||||
| from all sectors of industry. There are many open source and | ||||
| proprietary implementations, both general software and hardware- | ||||
| specific. The following implementations (listed alphabetically) are | ||||
| known to support DHCPv6: | ||||
| * Android (Google): In March 2023 (IETF'115) Google revealed it is | ||||
| working on the PD client implementation for Android. Open source. | ||||
| Maturity: prototype. Details are scarce, but it seems the | ||||
| implementation will focus on PD functionality. Source: | ||||
| https://datatracker.ietf.org/meeting/116/materials/slides-116- | ||||
| v6ops-using-dhcp-pd-to-allocate-64-per-host-in-broadcast-networks- | ||||
| 00, slide 17. | ||||
| * Cisco Prime Network Registrar: Cisco's software suite that | ||||
| supports many protocols, including RFC8415 compliant server | ||||
| functionality. Proprietary. Maturity: widely used. One of the | ||||
| authors of this I-D was heavily involved in CPNR development. | ||||
| Source: https://www.cisco.com/c/en/us/products/collateral/cloud- | ||||
| systems-management/prime-network-registrar/datasheet- | ||||
| c78-729989.html. | ||||
| * dhcpcd: Client implementation. Works on many Linux and BSD | ||||
| distributions, but seems to be the default client for various BSD | ||||
| flavors. Open source (BSD). Maturity: widely used, in particular | ||||
| on BSD systems. Source: https://github.com/NetworkConfiguration/ | ||||
| dhcpcd . | ||||
| * dhcpd (ISC): Client, relay and server implementation, present in | ||||
| most Linux and BSD distributions. Open source (Mozilla Public | ||||
| License v2). The project is no longer developed, but the software | ||||
| is still in wide use. Source: https://www.isc.org/dhcp/ . | ||||
| * dibbler: Client, relay and server implementation. Limited | ||||
| compatibility with RFC8415. Open source (GNU GPLv2). The project | ||||
| is no longer developed, but the software is still in wide use. | ||||
| The biggest known deployment is 16 million devices. One of the | ||||
| authors of this I-D was the leading developer. Source: | ||||
| https://klub.com.pl/dhcpv6/ . | ||||
| * dnsmasq: Probably the most popular implementation in terms of | ||||
| number of devices. Very popular among CPE and various home | ||||
| appliances. Client and server implementation with some relay | ||||
| capabilities. Open source (GPL v2 or v3). Source: | ||||
| https://dnsmasq.org/ . | ||||
| * EdgeMax (Ubiquiti): Proprietary implementation running on EdgeMax | ||||
| hardware, home and small enterprise gateways and switches. | ||||
| Focused on DHCPv6-PD. Source: https://help.ui.com/hc/en-us/ | ||||
| articles/115002531728-EdgeRouter-Beginners-Guide-to-EdgeRouter. | ||||
| * EOS (Arista): Proprietary implementation for network switches, | ||||
| routers and other networking hardware. RFC8415 support explicitly | ||||
| stated. Server, client, relay implementation. Source: | ||||
| https://www.arista.com/en/um-eos/eos-ipv6 . | ||||
| * FreeRADIUS: RADIUS implementation that also provides DHCPv6 server | ||||
| functionality. Open source. | ||||
| * Huawei: Server, client and relay functionalities are available on | ||||
| most routers and switches. Proprietary. Source: | ||||
| https://support.huawei.com/hedex/ | ||||
| hdx.do?docid=EDOC1100247463&id=EN-US_TASK_0176372622, see | ||||
| "Configuring Server/Relay/client/PD client" on the left panel. | ||||
| * iOS (Apple): Client implementation running on Apple portable | ||||
| devices (iPhones, iPads, etc.). Proprietary. The implementation | ||||
| is widely used. | ||||
| * IOS (Cisco): Server, relay, and client implementation that runs on | ||||
| Cisco routers, switches and other networking hardware. | ||||
| Proprietary. Widely used. Source: | ||||
| https://community.cisco.com/t5/networking-knowledge-base/part-1- | ||||
| implementing-dhcpv6-stateful-dhcpv6/ta-p/3145631 . | ||||
| * Kea (ISC): Server implementation. Open source (Mozilla Public | ||||
| License v2). It is a modern replacement for now retired isc-dhcp. | ||||
| More than 500 users subscribed to the mailing list. One of the | ||||
| authors of this I-D is the lead developer. Source: | ||||
| https://kea.readthedocs.io/en/kea-2.4.0/arm/dhcp6- | ||||
| srv.html#supported-dhcpv6-standards . | ||||
| * JunOS (Juniper): Server, relay, and client implementation that | ||||
| runs on Juniper routers, switches, and other networking hardware. | ||||
| Proprietary. Widely used. Source: | ||||
| https://www.juniper.net/documentation/us/en/software/junos/dhcp/ | ||||
| topics/topic-map/dhcpv6-server.html . | ||||
| * macOS (Apple): Client implementation for Macs (laptops and | ||||
| desktops). Proprietary. Widely used. | ||||
| * odhcp6c (OpenWRT): Minimalistic client implementation intended for | ||||
| embedded environment. Open source (GPL-2). Source: | ||||
| https://github.com/openwrt/odhcp6c . | ||||
| * RouterOS (Mikrotik): Server, relay, and client implementation | ||||
| running on Mikrotik networking hardware (routers, switches, many | ||||
| other appliances). Proprietary. Sources: | ||||
| https://wiki.mikrotik.com/wiki/Manual:IPv6/DHCP_Client, | ||||
| https://wiki.mikrotik.com/wiki/Manual:IPv6/DHCP_Server, | ||||
| https://wiki.mikrotik.com/wiki/Manual:RouterOS6_news . | ||||
| * ServPoET (Finepoint): Server implementation. Proprietary. One of | ||||
| the authors of this I-D was the lead developer. Source: | ||||
| https://finepoint.com/servpoet/ . | ||||
| * udhcpc6 (busybox): Minimum footprint implementation, intended for | ||||
| embedded devices. It used to be a separate project (udhcpc6), but | ||||
| it is now part of the BusyBox project. Open source (GPL-v2). | ||||
| Client implementation. Source: https://udhcp.busybox.net/ | ||||
| README.udhcpc . | ||||
| * Unifi (Ubiquiti): Server, relay, and client implementation running | ||||
| on UniFi hardware (routers, switches, firewalls). Proprietary. | ||||
| Source: https://help.ui.com/hc/en-us/articles/115005868927-UniFi- | ||||
| Gateway-Static-IPv6-and-DHCPv6-Prefix-Delegation. | ||||
| * Windows (Microsoft): Microsoft Windows provides client | ||||
| implementation, which is probably still the most popular OS on | ||||
| desktops and laptops. The server version of Windows provides | ||||
| DHCPv6 server implementation. Proprietary. | ||||
| The DHCPv6 support is also mandated by some third party specs. For | ||||
| example, all cable modems conformant to DOCSIS3.0 or later must | ||||
| support DHCPv6 client functionality. | ||||
| There are many large scale deployments that use DHCPv6. One of them | ||||
| is Comcast's Xfinity. Authors are aware of many other large scale | ||||
| country wide deployments, but due to signed Non-Disclosure Agreements | ||||
| cannot list them. | ||||
| University of New Hampshire's InterOperability Laboratory runs USGv6 | ||||
| Testing Program. Testing DHCPv6 compliance is one aspect of the | ||||
| program. | ||||
| While the original IPv6 Ready Logo testing involved the original | ||||
| DHCPv6 specifications (primarily RFC3315, RFC3633), the large number | ||||
| of tested and certified implementations supports the breadth and | ||||
| depth of DHCPv6 implementations available and deployed in the | ||||
| marketplace over the years that confirm the protocol specifications | ||||
| are up to Internet Standard. See | ||||
| https://www.ipv6ready.org/db/index.php/public/ | ||||
| search/?l=&c=&ds=&de=&pc=&ap=2&oem=&etc=D&fw=&vn=&do=1&o=6.- | ||||
| 23. Security Considerations | ||||
| This section discusses security considerations that are not related | This section discusses security considerations that are not related | |||
| to privacy. See Section 24 for a discussion dedicated to privacy. | to privacy. See Section 23 for a discussion dedicated to privacy. | |||
| The threat to DHCP is inherently an insider threat (assuming a | The threat to DHCP is inherently an insider threat (assuming a | |||
| properly configured network where DHCP ports are blocked on the | properly configured network where DHCP ports are blocked on the | |||
| perimeter gateways of the enterprise). Regardless of the gateway | perimeter gateways of the enterprise). Regardless of the gateway | |||
| configuration, however, the potential attacks by insiders and | configuration, however, the potential attacks by insiders and | |||
| outsiders are the same. | outsiders are the same. | |||
| DHCP lacks end-to-end encryption between clients and servers; thus, | DHCP lacks end-to-end encryption between clients and servers; thus, | |||
| hijacking, tampering, and eavesdropping attacks are all possible as a | hijacking, tampering, and eavesdropping attacks are all possible as a | |||
| result. Some network environments (discussed below) can be secured | result. Some network environments (discussed below) can be secured | |||
| through various means to minimize these attacks. | through various means to minimize these attacks. | |||
| The threat common to both the client and the server is the "resource- | The threat common to both the client and the server is the "resource- | |||
| exhaustion" DoS attack. These attacks typically involve the | exhaustion" DoS attack. Typically, these attacks involve the | |||
| exhaustion of available assigned addresses or delegatable prefixes, | exhaustion of available assigned addresses or delegatable prefixes or | |||
| or the exhaustion of CPU or network bandwidth, and are present any | the exhaustion of CPU or network bandwidth, and they are present any | |||
| time there is a shared resource. Some forms of these exhaustion | time there is a shared resource. Some forms of these exhaustion | |||
| attacks can be partially mitigated by appropriate server policy, | attacks can be partially mitigated by appropriate server policy, | |||
| e.g., limiting the maximum number of leases any one client can get, | e.g., limiting the maximum number of leases any one client can get, | |||
| limiting the number of leases one client can decline, and limiting | limiting the number of leases one client can decline, and limiting | |||
| number of messages a single client can transmit of a period of time. | the number of messages a single client can transmit of a period of | |||
| time. | ||||
| 23.1. Client Security Considerations | 22.1. Client Security Considerations | |||
| One attack specific to a DHCP client is the establishment of a | One attack specific to a DHCP client is the establishment of a | |||
| malicious server with the intent of providing incorrect configuration | malicious server with the intent of providing incorrect configuration | |||
| information to the client. The motivation for doing so may be to | information to the client. The motivation for doing so may be to | |||
| mount a "man in the middle" attack that causes the client to | mount a "man-in-the-middle" attack that causes the client to | |||
| communicate with a malicious server instead of a valid server for | communicate with a malicious server instead of a valid server for | |||
| some service (such as DNS or NTP). The malicious server may also | some service (such as DNS or NTP). The malicious server may also | |||
| mount a DoS attack through misconfiguration of the client; this | mount a DoS attack through misconfiguration of the client; this | |||
| attack would cause all network communication from the client to fail. | attack would cause all network communication from the client to fail. | |||
| A malicious DHCP server might cause a client to set its SOL_MAX_RT | A malicious DHCP server might cause a client to set its SOL_MAX_RT | |||
| and INF_MAX_RT parameters to an unreasonably high value with the | and INF_MAX_RT parameters to an unreasonably high value with the | |||
| SOL_MAX_RT (see Section 21.24) and INF_MAX_RT (see Section 21.25) | SOL_MAX_RT (see Section 21.24) and INF_MAX_RT (see Section 21.25) | |||
| options; this may cause an undue delay in a client completing its | options; this may cause an undue delay in a client completing its | |||
| DHCP protocol transaction in the case where no other valid response | DHCP protocol transaction in the case where no other valid response | |||
| is received. Assuming that the client also receives a response from | is received. Assuming that the client also receives a response from | |||
| a valid DHCP server, large values for SOL_MAX_RT and INF_MAX_RT will | a valid DHCP server, large values for SOL_MAX_RT and INF_MAX_RT will | |||
| not have any effect. | not have any effect. | |||
| Another threat to DHCP clients originates from mistakenly or | Another threat to DHCP clients originates from mistakenly or | |||
| accidentally configured DHCP servers that answer DHCP client requests | accidentally configured DHCP servers that answer DHCP client requests | |||
| with unintentionally incorrect configuration parameters. | with unintentionally incorrect configuration parameters. | |||
| If a client implementation supports the reconfigure mechanism, also | If a client implementation supports the reconfigure mechanism, see | |||
| see Section 23.3 below. | Section 22.3. | |||
| 23.2. Server Security Considerations | 22.2. Server Security Considerations | |||
| The threat specific to a DHCP server is an invalid client | The threat specific to a DHCP server is an invalid client | |||
| masquerading as a valid client. The motivation for this may be for | masquerading as a valid client. The motivation for this may be for | |||
| theft of service, or to circumvent auditing for any number of | theft of service or to circumvent auditing for any number of | |||
| nefarious purposes. | nefarious purposes. | |||
| The messages exchanged between relay agents and servers may be used | The messages exchanged between relay agents and servers may be used | |||
| to mount a man-in-the-middle or DoS attack. Communication between a | to mount a man-in-the-middle or DoS attack. Communication between a | |||
| server and a relay agent, and communication between relay agents, can | server and a relay agent, and communication between relay agents, can | |||
| be authenticated and encrypted through the use of IPsec, as described | be authenticated and encrypted through the use of IPsec, as described | |||
| in [RFC8213]. | in [RFC8213]. | |||
| However, the use of manually configured pre-shared keys for IPsec | However, the use of manually configured pre-shared keys for IPsec | |||
| between relay agents and servers does not defend against replayed | between relay agents and servers does not defend against replayed | |||
| DHCP messages. Replayed messages can represent a DoS attack through | DHCP messages. Replayed messages can represent a DoS attack through | |||
| exhaustion of processing resources but not through misconfiguration | exhaustion of processing resources but not through misconfiguration | |||
| or exhaustion of other resources such as assignable addresses and | or exhaustion of other resources such as assignable addresses and | |||
| delegatable prefixes. | delegatable prefixes. | |||
| If a server implementation supports the reconfigure mechanism, also | If a server implementation supports the reconfigure mechanism, see | |||
| see Section 23.3 below. | Section 22.3. | |||
| 23.3. Reconfigure Security Considerations | 22.3. Reconfigure Security Considerations | |||
| RKAP, described in Section 20.4, provides protection against the use | RKAP, described in Section 20.4, provides protection against the use | |||
| of a Reconfigure message by a malicious DHCP server to mount a DoS or | of a Reconfigure message by a malicious DHCP server to mount a DoS or | |||
| man-in-the-middle attack on a client. This protocol can be | man-in-the-middle attack on a client. This protocol can be | |||
| compromised by an attacker that can intercept the initial message in | compromised by an attacker that can intercept the initial message in | |||
| which the DHCP server sends the key as plain text to the client. | which the DHCP server sends the key as plain text to the client. | |||
| Because of the opportunity for attack through the Reconfigure | Because of the opportunity for attack through the Reconfigure | |||
| message, a DHCP client MUST discard any Reconfigure message that does | message, a DHCP client MUST discard any Reconfigure message that does | |||
| not include authentication or that does not pass the validation | not include authentication or that does not pass the validation | |||
| skipping to change at page 127, line 25 ¶ | skipping to change at line 5662 ¶ | |||
| that response will only be received by servers to which DHCP messages | that response will only be received by servers to which DHCP messages | |||
| are relayed, a malicious server could send a Reconfigure message to a | are relayed, a malicious server could send a Reconfigure message to a | |||
| client, followed (after an appropriate delay) by a Reply message that | client, followed (after an appropriate delay) by a Reply message that | |||
| would be accepted by the client. Thus, a malicious server that is | would be accepted by the client. Thus, a malicious server that is | |||
| not on the network path between the client and the server may still | 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 | 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. | |||
| 23.4. Mitigation Considerations | 22.4. Mitigation Considerations | |||
| Various network environments also offer levels of security if | Various network environments also offer levels of security if | |||
| deployed as described below. | deployed as described below. | |||
| * In enterprise and factory networks, use of authentication per | * In enterprise and factory networks, use of authentication per | |||
| [IEEE-802.1x] can prevent unknown or untrusted clients from | [IEEE-802.1x] can prevent unknown or untrusted clients from | |||
| connecting to the network. However, this does not necessarily | connecting to the network. However, this does not necessarily | |||
| assure that the connected client will be a good DHCP or network | assure that the connected client will be a good DHCP or network | |||
| actor. | actor. | |||
| skipping to change at page 127, line 50 ¶ | skipping to change at line 5687 ¶ | |||
| fe02::1:2) are only forwarded to the DHCP server's (or relay's) | fe02::1:2) are only forwarded to the DHCP server's (or relay's) | |||
| switch port -- not all ports. Also, the server's (or relay's) | switch port -- not all ports. Also, the server's (or relay's) | |||
| unicast replies are only delivered to the target client's port -- | unicast replies are only delivered to the target client's port -- | |||
| not all ports. | not all ports. | |||
| * In public networks (such as a Wi-Fi network in a coffee shop or | * In public networks (such as a Wi-Fi network in a coffee shop or | |||
| airport), it is possible for others within radio range to snoop | airport), it is possible for others within radio range to snoop | |||
| DHCP and other traffic. But in these environments, there is very | DHCP and other traffic. But in these environments, there is very | |||
| little if anything that can be learned from the DHCP traffic | little if anything that can be learned from the DHCP traffic | |||
| itself (either from client to server or from server to client) if | itself (either from client to server or from server to client) if | |||
| the privacy considerations provided in Section 24 are followed. | the privacy considerations provided in Section 23 are followed. | |||
| Even for devices that do not follow the privacy considerations, | Even for devices that do not follow the privacy considerations, | |||
| there is little that can be learned that would not be available | there is little that can be learned that would not be available | |||
| from subsequent communications anyway (such as the device's Media | from subsequent communications anyway (such as the device's Media | |||
| Access Control (MAC) address). Also, because all clients will | Access Control (MAC) address). Also, because all clients will | |||
| typically receive similar configuration details, a bad actor that | typically receive similar configuration details, a bad actor that | |||
| initiates a DHCP request itself can learn much of such | initiates a DHCP request itself can learn much of such | |||
| information. As mentioned above, one threat is that the RKAP key | information. As mentioned above, one threat is that the RKAP key | |||
| for a client can be learned (if the initial | for a client can be learned (if the initial | |||
| Solicit/Advertise/Request/Reply exchange is monitored) and trigger | Solicit/Advertise/Request/Reply exchange is monitored) and trigger | |||
| a premature reconfiguration, but this is relatively easily | a premature reconfiguration, but this is relatively easily | |||
| prevented by disallowing direct client-to-client communication on | prevented by disallowing direct client-to-client communication on | |||
| these networks or using [RFC7610] and [RFC7513]. | these networks or using [RFC7610] and [RFC7513]. | |||
| Many of the attacks by rogue servers can be mitigated by making use | Many of the attacks by rogue servers can be mitigated by making use | |||
| of the mechanisms described in [RFC7610] and [RFC7513]. | of the mechanisms described in [RFC7610] and [RFC7513]. | |||
| 24. Privacy Considerations | 23. Privacy Considerations | |||
| For an extended discussion about privacy considerations for the | For an extended discussion about privacy considerations for the | |||
| client, see [RFC7824]: | client, see [RFC7824]: | |||
| * In particular, its Section 3 discusses various identifiers that | * In particular, Section 3 of [RFC7824] discusses various | |||
| could be misused to track the client. | identifiers that could be misused to track the client. | |||
| * Its Section 4 discusses existing mechanisms that may have an | * Section 4 of [RFC7824] discusses existing mechanisms that may have | |||
| impact on a client's privacy. | an impact on a client's privacy. | |||
| * Finally, its Section 5 discusses potential attack vectors. | * Finally, Section 5 of [RFC7824] discusses potential attack | |||
| vectors. | ||||
| For recommendations regarding how to address or mitigate those | For recommendations regarding how to address or mitigate those | |||
| issues, see [RFC7844]. | issues, see [RFC7844]. | |||
| This specification does not define any allocation strategies for | This specification does not define any allocation strategies for | |||
| servers. Implementers are expected to develop their own algorithm | servers. Implementers are expected to develop their own algorithm | |||
| for the server to choose a resource out of the available pool. | for the server to choose a resource out of the available pool. | |||
| Several possible allocation strategies are mentioned in Section 4.3 | Several possible allocation strategies are mentioned in Section 4.3 | |||
| of [RFC7824]. Please keep in mind that the list in [RFC7824] is not | of [RFC7824]. Please keep in mind that the list in [RFC7824] is not | |||
| exhaustive; there are certainly other possible strategies. Readers | exhaustive; there are certainly other possible strategies. Readers | |||
| are also encouraged to read [RFC7707] -- in particular, its | are also encouraged to read [RFC7707] -- in particular, Section 4.1.2 | |||
| Section 4.1.2, which discusses the problems with certain allocation | of [RFC7707], which discusses the problems with certain allocation | |||
| strategies. | strategies. | |||
| 25. IANA Considerations | 24. IANA Considerations | |||
| This document does not define any new DHCP name spaces or | This document does not define any new DHCP name spaces or | |||
| definitions. | definitions. | |||
| The publication of this document does not change the assignment rules | The publication of this document does not change the assignment rules | |||
| for new values for message types, option codes, DUID types, or status | for new values for message types, option codes, DUID types, or status | |||
| codes. | codes. | |||
| The list of assigned values used in DHCPv6 is available at | The list of assigned values used in DHCPv6 is available at | |||
| <https://www.iana.org/assignments/dhcpv6-parameters>. | <https://www.iana.org/assignments/dhcpv6-parameters>. | |||
| IANA is requested to update all references to [RFC8415] to this | IANA has updated all references to [RFC8415] to this document at | |||
| document at <https://www.iana.org/assignments/dhcpv6-parameters>. | <https://www.iana.org/assignments/dhcpv6-parameters>. | |||
| IANA is requested to add a new column "Status" to all registries on | IANA has added a new column "Status" to all registries on the DHCPv6 | |||
| the DHCPv6 parameters page at <https://www.iana.org/assignments/ | parameters page at <https://www.iana.org/assignments/ | |||
| dhcpv6-parameters> and leave each entry blank except as indicated | dhcpv6-parameters> and has left each entry blank except as indicated | |||
| below: | below: | |||
| * In the Option Code registry, set the "Status" column value to | * In the "Option Codes" registry, the "Status" column value has been | |||
| "Obsolete" for the IA_TA (option code 4) and UNICAST (option code | set to "Obsolete" for the IA_TA (option code 4) and UNICAST | |||
| 12) rows. | (option code 12) rows. | |||
| * In the Status Codes registry, set the "Status" column value to | * In the "Status Codes" registry, the "Status" column value has been | |||
| "Obsolete" for the UseMulticast (status code 5) row. | set to "Obsolete" for the UseMulticast (status code 5) row. | |||
| IANA is requested to update other references to [RFC8415] with | IANA has updated other references to [RFC8415] with references to | |||
| references to this document at: | this document at: | |||
| * https://www.iana.org/assignments/auth-namespaces (four entries) | * <https://www.iana.org/assignments/auth-namespaces> (four entries) | |||
| * https://www.iana.org/assignments/bootp-dhcp-parameters (two | * <https://www.iana.org/assignments/bootp-dhcp-parameters> (two | |||
| entries) | entries) | |||
| * https://www.iana.org/assignments/ipv6-multicast-addresses (two | * <https://www.iana.org/assignments/ipv6-multicast-addresses> (two | |||
| entries) | entries) | |||
| * https://www.iana.org/assignments/service-names-port-numbers (two | * <https://www.iana.org/assignments/service-names-port-numbers> (two | |||
| entries; UDP ports 546 and 547) | entries; UDP ports 546 and 547) | |||
| 26. References | 25. References | |||
| 26.1. Normative References | 25.1. Normative References | |||
| [BCP145] Best Current Practice 145, | [BCP145] Best Current Practice 145, | |||
| <https://www.rfc-editor.org/info/bcp145>. | <https://www.rfc-editor.org/info/bcp145>. | |||
| At the time of writing, this BCP comprises the following: | At the time of writing, this BCP comprises the following: | |||
| Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | |||
| Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | |||
| March 2017, <https://www.rfc-editor.org/info/rfc8085>. | March 2017, <https://www.rfc-editor.org/info/rfc8085>. | |||
| [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | |||
| skipping to change at page 131, line 15 ¶ | skipping to change at line 5845 ¶ | |||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
| DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
| [RFC8213] Volz, B. and Y. Pal, "Security of Messages Exchanged | [RFC8213] Volz, B. and Y. Pal, "Security of Messages Exchanged | |||
| between Servers and Relay Agents", RFC 8213, | between Servers and Relay Agents", RFC 8213, | |||
| DOI 10.17487/RFC8213, August 2017, | DOI 10.17487/RFC8213, August 2017, | |||
| <https://www.rfc-editor.org/info/rfc8213>. | <https://www.rfc-editor.org/info/rfc8213>. | |||
| 26.2. Informative References | 25.2. Informative References | |||
| [Err6159] RFC Errata, Erratum ID 6159, RFC 8415, | ||||
| <https://www.rfc-editor.org/errata/eid1912>. | ||||
| [Err6183] RFC Errata, Erratum ID 6183, RFC 8415, | ||||
| <https://www.rfc-editor.org/errata/eid1912>. | ||||
| [Err6269] RFC Errata, Erratum ID 6269, RFC 8415, | ||||
| <https://www.rfc-editor.org/errata/eid1912>. | ||||
| [IANA-HARDWARE-TYPES] | [IANA-HARDWARE-TYPES] | |||
| IANA, "Hardware Types", | IANA, "Hardware Types", | |||
| <https://www.iana.org/assignments/arp-parameters>. | <https://www.iana.org/assignments/arp-parameters>. | |||
| [IANA-OPTION-DETAILS] | [IANA-OPTION-DETAILS] | |||
| IANA, "Option Codes", | IANA, "Option Codes", | |||
| <https://www.iana.org/assignments/dhcpv6-parameters>. | <https://www.iana.org/assignments/dhcpv6-parameters>. | |||
| [IANA-PEN] IANA, "Private Enterprise Numbers", | [IANA-PEN] IANA, "Private Enterprise Numbers", | |||
| <https://www.iana.org/assignments/enterprise-numbers>. | <https://www.iana.org/assignments/enterprise-numbers>. | |||
| [IANA-RESERVED-IID] | [IANA-RESERVED-IID] | |||
| IANA, "Reserved IPv6 Interface Identifiers", | IANA, "Reserved IPv6 Interface Identifiers", | |||
| <https://www.iana.org/assignments/ipv6-interface-ids>. | <https://www.iana.org/assignments/ipv6-interface-ids>. | |||
| [IEEE-802.1x] | [IEEE-802.1x] | |||
| IEEE, "IEEE Standard for Local and metropolitan area | IEEE, "IEEE Standard for Local and metropolitan area | |||
| networks--Port-Based Network Access Control", IEEE 802.1X- | networks--Port-Based Network Access Control", IEEE 802.1X- | |||
| 2010, DOI 10.1109/IEEESTD.2010.5409813, | 2010, DOI 10.1109/IEEESTD.2010.5409813, February 2010, | |||
| <https://ieeexplore.ieee.org/servlet/ | <https://ieeexplore.ieee.org/document/5409813>. | |||
| opac?punumber=5409757>. | ||||
| [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", | |||
| RFC 2131, DOI 10.17487/RFC2131, March 1997, | RFC 2131, DOI 10.17487/RFC2131, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2131>. | <https://www.rfc-editor.org/info/rfc2131>. | |||
| [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet | [RFC2464] Crawford, M., "Transmission of IPv6 Packets over Ethernet | |||
| Networks", RFC 2464, DOI 10.17487/RFC2464, December 1998, | Networks", RFC 2464, DOI 10.17487/RFC2464, December 1998, | |||
| <https://www.rfc-editor.org/info/rfc2464>. | <https://www.rfc-editor.org/info/rfc2464>. | |||
| [RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6", | [RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6", | |||
| skipping to change at page 136, line 14 ¶ | skipping to change at line 6090 ¶ | |||
| [RFC9243] Farrer, I., Ed., "A YANG Data Model for DHCPv6 | [RFC9243] Farrer, I., Ed., "A YANG Data Model for DHCPv6 | |||
| Configuration", RFC 9243, DOI 10.17487/RFC9243, June 2022, | Configuration", RFC 9243, DOI 10.17487/RFC9243, June 2022, | |||
| <https://www.rfc-editor.org/info/rfc9243>. | <https://www.rfc-editor.org/info/rfc9243>. | |||
| [RFC9686] Kumari, W., Krishnan, S., Asati, R., Colitti, L., Linkova, | [RFC9686] Kumari, W., Krishnan, S., Asati, R., Colitti, L., Linkova, | |||
| J., and S. Jiang, "Registering Self-Generated IPv6 | J., and S. Jiang, "Registering Self-Generated IPv6 | |||
| Addresses Using DHCPv6", RFC 9686, DOI 10.17487/RFC9686, | Addresses Using DHCPv6", RFC 9686, DOI 10.17487/RFC9686, | |||
| December 2024, <https://www.rfc-editor.org/info/rfc9686>. | December 2024, <https://www.rfc-editor.org/info/rfc9686>. | |||
| [TR-187] Broadband Forum, "TR-187 - IPv6 for PPP Broadband Access", | [TR-187] Broadband Forum, "IPv6 for PPP Broadband Access", TR-187, | |||
| February 2013, <https://www.broadband- | Issue: 2, February 2013, | |||
| forum.org/technical/download/TR-187_Issue-2.pdf>. | <https://www.broadband-forum.org/pdfs/tr-187-2-0-0.pdf>. | |||
| Appendix A. Summary of Changes | Appendix A. Summary of Changes from RFC 8415 | |||
| This appendix provides a summary of the changes made from RFC8415: | This appendix provides a summary of the differences between this | |||
| document and [RFC8415]: | ||||
| 1. The following mechanisms were obsoleted. These were not widely | 1. The following mechanisms were obsoleted. These were not widely | |||
| deployed while adding complexity to client and server | deployed while adding complexity to client and server | |||
| implementations. Legacy implementations MAY support them, but | implementations. Legacy implementations MAY support them, but | |||
| implementations conformant to this document MUST NOT rely on | implementations conformant to this document MUST NOT rely on | |||
| them. Obsoleting these features does not cause any | them. Obsoleting these features does not cause any | |||
| interoperatability issues when mixing updated and non-updated | interoperability issues when mixing updated and non-updated | |||
| clients, relay agents, and servers as these mechanisms were | clients, relay agents, and servers as these mechanisms were | |||
| "optional". | "optional". | |||
| IA_TA option. The Identity Association for Temporary Addresses | * IA_TA option. The Identity Association for Temporary | |||
| option has been obsoleted. A client that needs a short-term / | Addresses option has been obsoleted. A client that needs a | |||
| special purpose address can use a new IA_NA binding to request | short-term / special purpose address can use a new IA_NA | |||
| an address and release it when finished with it. | binding to request an address and release it when finished | |||
| with it. | ||||
| UNICAST option. The Server Unicast option has been obsoleted. | * UNICAST option. The Server Unicast option has been obsoleted. | |||
| Use of this was rarely practical as typically relay agents | Use of this was rarely practical as typically relay agents | |||
| between the client and server need to glean information from | between the client and server need to glean information from | |||
| the communication and cannot be bypassed. | the communication and cannot be bypassed. | |||
| UseMulticast status code. The UseMulticast status code has been | * UseMulticast status code. The UseMulticast status code has | |||
| obsoleted. Clients will always multicast messages (as Server | been obsoleted. Clients will always multicast messages (as | |||
| Unicast option has been obsoleted) and servers will no longer | Server Unicast option has been obsoleted) and servers will no | |||
| check for unicast traffic. | longer check for unicast traffic. | |||
| 2. The following errata for RFC 8415 were incorporated: erratum IDs | 2. The following errata reports for [RFC8415] were incorporated: | |||
| 6159, 6269 and 6183. Note that erratum ID 6269 was no longer | [Err6159] [Err6269], [Err6183]. Note that EID 6269 was no longer | |||
| applicable after the Server Unicast Option was obsoleted. Note | applicable after the Server Unicast Option was obsoleted. Note | |||
| that erratum 6159 is also no longer applicable now that temporary | that EID 6159 was also no longer applicable as temporary | |||
| addresses have been obsoleted. Indeed, the section (6.5) that | addresses have been obsoleted. Indeed, the text that EID 6159 | |||
| erratum 6159 corrects has been deleted. | corrects has been deleted. | |||
| 3. A reference to RFC 7943 was added to Section 13.1 as it documents | 3. A reference to [RFC7943] was added to Section 13.1 as it | |||
| a method that might be used to generate addresses and was | documents a method that might be used to generate addresses and | |||
| inadvertently missed when compiling RFC 8415. | was inadvertently missed when compiling [RFC8415]. | |||
| 4. Clarified the UDP ports used by clients, servers, and relay | 4. Clarified the UDP ports used by clients, servers, and relay | |||
| agents (Section 7.2). | agents (Section 7.2). | |||
| 5. Several additional RFCs have been referenced and editorial and | 5. Several additional RFCs have been referenced and editorial and | |||
| reviews comments incorporated. | reviews comments incorporated. | |||
| Appendix B. Appearance of Options in Message Types | Appendix B. Appearance of Options in Message Types | |||
| The following tables indicate with a "*" the options that are allowed | The following tables indicate with a "*" the options that are allowed | |||
| in each DHCP message type. | in each DHCP message type. | |||
| These tables are informational. If they conflict with text earlier | These tables are informational. If they conflict with text earlier | |||
| in this document, that text should be considered authoritative. | in this document, that text should be considered authoritative. | |||
| Client Server Elap. Relay | +=========+========+========+=====+=====+===+====+=====+=====+=====+ | |||
| ID ID IA_NA IA_PD ORO Pref Time Msg. Auth. | | | Client | Server |IA_NA|IA_PD|ORO|Pref|Elap.|Relay|Auth.| | |||
| Solicit * * * * * | | | ID | ID | | | | |Time |Msg. | | | |||
| Advert. * * * * * | +=========+========+========+=====+=====+===+====+=====+=====+=====+ | |||
| Request * * * * * * | | Solicit | * | | * | * | * | | * | | | | |||
| Confirm * * * | +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | |||
| Renew * * * * * * | | Advert. | * | * | * | * | | * | | | | | |||
| Rebind * * * * * | +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | |||
| Decline * * * * * | | Request | * | * | * | * | * | | * | | | | |||
| Release * * * * * | +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | |||
| Reply * * * * * | | Confirm | * | | * | | | | * | | | | |||
| Reconf. * * * | +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | |||
| Inform. * (see note) * * | | Renew | * | * | * | * | * | * | * | | | | |||
| R-forw. * | +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | |||
| R-repl. * | | Rebind | * | | * | * | * | | * | | | | |||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | Decline | * | * | * | * | | | * | | | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | Release | * | * | * | * | | | * | | | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | Reply | * | * | * | * | | | | | * | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | Reconf | * | * | | | | | | | * | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | Inform. | * | (see | | | * | | * | | | | ||||
| | | | note) | | | | | | | | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | R-forw. | | | | | | | | | * | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| | R-repl. | | | | | | | | | * | | ||||
| +=========+--------+--------+-----+-----+---+----+-----+-----+-----+ | ||||
| Table 4 | ||||
| NOTE: The Server Identifier option (see Section 21.3) is only | NOTE: The Server Identifier option (see Section 21.3) is only | |||
| included in Information-request messages that are sent in response to | included in Information-request messages that are sent in response to | |||
| a Reconfigure (see Section 18.2.6). | a Reconfigure (see Section 18.2.6). | |||
| Info | +=======+======+=====+=====+======+======+======+======+======+=====+ | |||
| Status Rap. User Vendor Vendor Inter. Recon. Recon. Refresh | | |Status|Rap. |User |Vendor|Vendor|Inter.|Recon.|Recon.|Info | | |||
| Code Comm. Class Class Spec. ID Msg. Accept Time | | |Code |Comm.|Class|Class |Spec. |ID |Msg. |Accept|Refr.| | |||
| Solicit * * * * * | | | | | | | | | | |Time | | |||
| Advert. * * * * * | +=======+======+=====+=====+======+======+======+======+======+=====+ | |||
| Request * * * * | |Solicit| | * | * | * | * | | | * | | | |||
| Confirm * * * | +=======+------+-----+-----+------+------+------+------+------+-----+ | |||
| Renew * * * * | |Advert.| * | | * | * | * | | | * | | | |||
| Rebind * * * * | +=======+------+-----+-----+------+------+------+------+------+-----+ | |||
| Decline * * * | |Request| | | * | * | * | | | * | | | |||
| Release * * * | +=======+------+-----+-----+------+------+------+------+------+-----+ | |||
| Reply * * * * * * * | |Confirm| | | * | * | * | | | | | | |||
| Reconf. * | +=======+------+-----+-----+------+------+------+------+------+-----+ | |||
| Inform. * * * * | |Renew | | | * | * | * | | | * | | | |||
| R-forw. * * | +=======+------+-----+-----+------+------+------+------+------+-----+ | |||
| R-repl. * * | |Rebind | | | * | * | * | | | * | | | |||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |Decline| | | * | * | * | | | | | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |Release| | | * | * | * | | | | | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |Reply | * | * | * | * | * | | | * | * | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |Reconf.| | | | | | | * | | | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |Inform.| | | * | * | * | | | * | | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |R-forw.| | | | | * | * | | | | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| |R-repl.| | | | | * | * | | | | | ||||
| +=======+------+-----+-----+------+------+------+------+------+-----+ | ||||
| SOL_MAX_RT INF_MAX_RT | Table 5 | |||
| Solicit | ||||
| Advert. * | +=========+============+============+ | |||
| Request | | | SOL_MAX_RT | INF_MAX_RT | | |||
| Confirm | +=========+============+============+ | |||
| Renew | | Solicit | | | | |||
| Rebind | +---------+------------+------------+ | |||
| Decline | | Advert. | * | | | |||
| Release | +---------+------------+------------+ | |||
| Reply * * | | Request | | | | |||
| Reconf. | +---------+------------+------------+ | |||
| Inform. | | Confirm | | | | |||
| R-forw. | +---------+------------+------------+ | |||
| R-repl. | | Renew | | | | |||
| +---------+------------+------------+ | ||||
| | Rebind | | | | ||||
| +---------+------------+------------+ | ||||
| | Decline | | | | ||||
| +---------+------------+------------+ | ||||
| | Release | | | | ||||
| +---------+------------+------------+ | ||||
| | Reply | * | * | | ||||
| +---------+------------+------------+ | ||||
| | Reconf. | | | | ||||
| +---------+------------+------------+ | ||||
| | Inform. | | | | ||||
| +---------+------------+------------+ | ||||
| | R-forw. | | | | ||||
| +---------+------------+------------+ | ||||
| | R-repl. | | | | ||||
| +---------+------------+------------+ | ||||
| Table 6 | ||||
| Appendix C. Appearance of Options in the "options" Field of DHCP | Appendix C. Appearance of Options in the "options" Field of DHCP | |||
| Options | Options | |||
| The following table indicates with a "*" where options defined in | The following table indicates with a "*" where options defined in | |||
| this document can appear as top-level options or can be encapsulated | this document can appear as top-level options or can be encapsulated | |||
| in other options defined in this document. Other RFCs may define | in other options defined in this document. Other RFCs may define | |||
| additional situations where options defined in this document are | additional situations where options defined in this document are | |||
| encapsulated in other options. | encapsulated in other options. | |||
| This table is informational. If it conflicts with text earlier in | This table is informational. If it conflicts with text earlier in | |||
| this document, that text should be considered authoritative. | this document, that text should be considered authoritative. | |||
| Top- RELAY- RELAY- | +============+=====+=====+======+=====+==========+========+========+ | |||
| Level IA_NA IAADDR IA_PD IAPREFIX FORW REPL | | |Top- |IA_NA|IAADDR|IA_PD| IAPREFIX | RELAY- | RELAY- | | |||
| Client ID * | | |Level| | | | | FORW | REPL | | |||
| Server ID * | +============+=====+=====+======+=====+==========+========+========+ | |||
| IA_NA * | | Client ID | * | | | | | | | | |||
| IAADDR * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| IA_PD * | | Server ID | * | | | | | | | | |||
| IAPREFIX * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| ORO * | | IA_NA | * | | | | | | | | |||
| Preference * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| Elapsed Time * | | IAADDR | | * | | | | | | | |||
| Relay Message * * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| Authentic. * | | IA_PD | * | | | | | | | | |||
| Status Code * * * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| Rapid Comm. * | | IAPREFIX | | | | * | | | | | |||
| User Class * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| Vendor Class * | | ORO | * | | | | | | | | |||
| Vendor Info. * * * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| Interf. ID * * | | Preference | * | | | | | | | | |||
| Reconf. MSG. * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| Reconf. Accept * | | Elapsed | * | | | | | | | | |||
| Info Refresh Time * | | Time | | | | | | | | | |||
| SOL_MAX_RT * | +============+-----+-----+------+-----+----------+--------+--------+ | |||
| INF_MAX_RT * | | Relay | | | | | | * | * | | |||
| | Message | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Authentic. | * | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Status | * | * | | * | | | | | ||||
| | Code | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Rapid | * | | | | | | | | ||||
| | Comm. | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | User Class | * | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Vendor | * | | | | | | | | ||||
| | Class | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Vendor | * | | | | | * | * | | ||||
| | Info. | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Interf. | | | | | | * | * | | ||||
| | ID | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Reconf. | * | | | | | | | | ||||
| | MSG. | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Reconf. | * | | | | | | | | ||||
| | Accept | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | Info | * | | | | | | | | ||||
| | Refresh | | | | | | | | | ||||
| | Time | | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | SOL_MAX_RT | * | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| | INF_MAX_RT | * | | | | | | | | ||||
| +============+-----+-----+------+-----+----------+--------+--------+ | ||||
| Table 7 | ||||
| Notes: Options asterisked in the "Top-Level" column appear in the | Notes: Options asterisked in the "Top-Level" column appear in the | |||
| "options" field of client messages (see Section 8). Options | "options" field of client messages (see Section 8). Options | |||
| asterisked in the "RELAY-FORW" and "RELAY-REPL" columns appear in the | asterisked in the "RELAY-FORW" and "RELAY-REPL" columns appear in the | |||
| "options" field of the Relay-forward and Relay-reply messages (see | "options" field of the Relay-forward and Relay-reply messages (see | |||
| Section 9). | Section 9). | |||
| Acknowledgments | Acknowledgments | |||
| This document is merely a refinement of earlier work as described in | This document is merely a refinement of earlier work as described in | |||
| RFC 8415. | [RFC8415]. | |||
| A number of additional people have contributed to identifying issues | A number of additional people have contributed to identifying issues | |||
| with RFC 8415, including Fernando Gont, Felix Hamme, Rene Engel, Esko | with [RFC8415] including Fernando Gont, Felix Hamme, Rene Engel, Esko | |||
| Dijk, Jen Linkova, Tomoyuki Sahara, and Ted Lemon. | Dijk, Jen Linkova, Tomoyuki Sahara, and Ted Lemon. | |||
| We thank the thorough and thoughtful reviewers during the IETF | We thank the thorough and thoughtful reviewers during the IETF | |||
| process, especially Mohamed Boucadair, Tim Chown, Roman Danyliw, | process, especially Mohamed Boucadair, Tim Chown, Roman Danyliw, | |||
| Tatuya Jinmei, Jim Read, Ketan Talaulikar, Eric Vyncke, Dave Worley. | Tatuya Jinmei, Jim Read, Ketan Talaulikar, Éric Vyncke, and Dave | |||
| We also thank the DHC working group members for their reviews of this | Worley. We also thank the DHC WG members for their reviews of this | |||
| updated document. | updated document. | |||
| And, special thanks to Suresh Krishnan for shepherding this document | And special thanks to Suresh Krishnan for shepherding this document | |||
| through the IETF process. | through the IETF process. | |||
| Authors' Addresses | Authors' Addresses | |||
| Tomek Mrugalski | Tomek Mrugalski | |||
| Internet Systems Consortium, Inc. | Internet Systems Consortium, Inc. | |||
| PO Box 360 | PO Box 360 | |||
| Newmarket, NH 03857 | Newmarket, NH 03857 | |||
| United States of America | United States of America | |||
| Email: tomasz.mrugalski@gmail.com | Email: tomasz.mrugalski@gmail.com | |||
| End of changes. 388 change blocks. | ||||
| 1669 lines changed or deleted | 1507 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||