| rfc8156-kek.txt | rfc8156.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) T. Mrugalski | Internet Engineering Task Force (IETF) T. Mrugalski | |||
| Request for Comments: 8156 ISC | Request for Comments: 8156 ISC | |||
| Category: Standards Track K. Kinnear | Category: Standards Track K. Kinnear | |||
| ISSN: 2070-1721 Cisco | ISSN: 2070-1721 Cisco | |||
| April 2017 | May 2017 | |||
| DHCPv6 Failover Protocol | DHCPv6 Failover Protocol | |||
| Abstract | Abstract | |||
| DHCPv6 as defined in "Dynamic Host Configuration Protocol for IPv6 | DHCPv6 as defined in "Dynamic Host Configuration Protocol for IPv6 | |||
| (DHCPv6)" (RFC 3315) does not offer server redundancy. This document | (DHCPv6)" (RFC 3315) does not offer server redundancy. This document | |||
| defines a protocol implementation to provide DHCPv6 failover, a | defines a protocol implementation to provide DHCPv6 failover, a | |||
| mechanism for running two servers with the capability for either | mechanism for running two servers with the capability for either | |||
| server to take over clients' leases in case of server failure or | server to take over clients' leases in case of server failure or | |||
| skipping to change at page 2, line 14 | skipping to change at page 2, line 14 | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 5 | 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. Failover Concepts and Mechanisms . . . . . . . . . . . . . . 9 | 4. Failover Concepts and Mechanisms . . . . . . . . . . . . . . 9 | |||
| 4.1. Required Server Configuration . . . . . . . . . . . . . . 9 | 4.1. Required Server Configuration . . . . . . . . . . . . . . 9 | |||
| 4.2. IPv6 Address and Delegable Prefix Allocation . . . . . . 9 | 4.2. IPv6 Address and Delegable Prefix Allocation . . . . . . 9 | |||
| 4.2.1. Independent Allocation . . . . . . . . . . . . . . . 9 | 4.2.1. Independent Allocation . . . . . . . . . . . . . . . 9 | |||
| 4.2.1.1. Independent Allocation Algorithm . . . . . . . . 10 | ||||
| 4.2.2. Proportional Allocation . . . . . . . . . . . . . . . 10 | 4.2.2. Proportional Allocation . . . . . . . . . . . . . . . 10 | |||
| 4.2.2.1. Reallocating Leases . . . . . . . . . . . . . . . 12 | ||||
| 4.3. Lazy Updates . . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Lazy Updates . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4.4. Maximum Client Lead Time (MCLT) . . . . . . . . . . . . . 13 | 4.4. Maximum Client Lead Time (MCLT) . . . . . . . . . . . . . 14 | |||
| 4.4.1. MCLT Example . . . . . . . . . . . . . . . . . . . . 15 | 4.4.1. MCLT Example . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5. Message and Option Definitions . . . . . . . . . . . . . . . 18 | 5. Message and Option Definitions . . . . . . . . . . . . . . . 18 | |||
| 5.1. Message Framing for TCP . . . . . . . . . . . . . . . . . 18 | 5.1. Message Framing for TCP . . . . . . . . . . . . . . . . . 18 | |||
| 5.2. Failover Message Format . . . . . . . . . . . . . . . . . 18 | 5.2. Failover Message Format . . . . . . . . . . . . . . . . . 18 | |||
| 5.3. Messages . . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.3. Messages . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 5.3.1. BNDUPD . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.3.1. BNDUPD . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 5.3.2. BNDREPLY . . . . . . . . . . . . . . . . . . . . . . 20 | 5.3.2. BNDREPLY . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.3.3. POOLREQ . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.3.3. POOLREQ . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.3.4. POOLRESP . . . . . . . . . . . . . . . . . . . . . . 20 | 5.3.4. POOLRESP . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.3.5. UPDREQ . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.3.5. UPDREQ . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| skipping to change at page 2, line 39 | skipping to change at page 2, line 41 | |||
| 5.3.8. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.3.8. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.3.9. CONNECTREPLY . . . . . . . . . . . . . . . . . . . . 21 | 5.3.9. CONNECTREPLY . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.3.10. DISCONNECT . . . . . . . . . . . . . . . . . . . . . 21 | 5.3.10. DISCONNECT . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.3.11. STATE . . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.3.11. STATE . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.3.12. CONTACT . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.3.12. CONTACT . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.4. Transaction-id . . . . . . . . . . . . . . . . . . . . . 22 | 5.4. Transaction-id . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.5. Options . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 5.5. Options . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.5.1. OPTION_F_BINDING_STATUS . . . . . . . . . . . . . . . 22 | 5.5.1. OPTION_F_BINDING_STATUS . . . . . . . . . . . . . . . 22 | |||
| 5.5.2. OPTION_F_CONNECT_FLAGS . . . . . . . . . . . . . . . 23 | 5.5.2. OPTION_F_CONNECT_FLAGS . . . . . . . . . . . . . . . 23 | |||
| 5.5.3. OPTION_F_DNS_REMOVAL_INFO . . . . . . . . . . . . . . 24 | 5.5.3. OPTION_F_DNS_REMOVAL_INFO . . . . . . . . . . . . . . 24 | |||
| 5.5.3.1. OPTION_F_DNS_HOST_NAME . . . . . . . . . . . . . 25 | ||||
| 5.5.3.2. OPTION_F_DNS_ZONE_NAME . . . . . . . . . . . . . 25 | ||||
| 5.5.3.3. OPTION_F_DNS_FLAGS . . . . . . . . . . . . . . . 26 | ||||
| 5.5.4. OPTION_F_EXPIRATION_TIME . . . . . . . . . . . . . . 27 | 5.5.4. OPTION_F_EXPIRATION_TIME . . . . . . . . . . . . . . 27 | |||
| 5.5.5. OPTION_F_MAX_UNACKED_BNDUPD . . . . . . . . . . . . . 28 | 5.5.5. OPTION_F_MAX_UNACKED_BNDUPD . . . . . . . . . . . . . 28 | |||
| 5.5.6. OPTION_F_MCLT . . . . . . . . . . . . . . . . . . . . 28 | 5.5.6. OPTION_F_MCLT . . . . . . . . . . . . . . . . . . . . 28 | |||
| 5.5.7. OPTION_F_PARTNER_LIFETIME . . . . . . . . . . . . . . 29 | 5.5.7. OPTION_F_PARTNER_LIFETIME . . . . . . . . . . . . . . 29 | |||
| 5.5.8. OPTION_F_PARTNER_LIFETIME_SENT . . . . . . . . . . . 29 | 5.5.8. OPTION_F_PARTNER_LIFETIME_SENT . . . . . . . . . . . 29 | |||
| 5.5.9. OPTION_F_PARTNER_DOWN_TIME . . . . . . . . . . . . . 30 | 5.5.9. OPTION_F_PARTNER_DOWN_TIME . . . . . . . . . . . . . 30 | |||
| 5.5.10. OPTION_F_PARTNER_RAW_CLT_TIME . . . . . . . . . . . . 30 | 5.5.10. OPTION_F_PARTNER_RAW_CLT_TIME . . . . . . . . . . . . 30 | |||
| 5.5.11. OPTION_F_PROTOCOL_VERSION . . . . . . . . . . . . . . 31 | 5.5.11. OPTION_F_PROTOCOL_VERSION . . . . . . . . . . . . . . 31 | |||
| 5.5.12. OPTION_F_KEEPALIVE_TIME . . . . . . . . . . . . . . . 32 | 5.5.12. OPTION_F_KEEPALIVE_TIME . . . . . . . . . . . . . . . 32 | |||
| 5.5.13. OPTION_F_RECONFIGURE_DATA . . . . . . . . . . . . . . 32 | 5.5.13. OPTION_F_RECONFIGURE_DATA . . . . . . . . . . . . . . 32 | |||
| skipping to change at page 16, line 8 | skipping to change at page 16, line 21 | |||
| the original acknowledged partner lifetime (1/2 hour + 3 days) and | the original acknowledged partner lifetime (1/2 hour + 3 days) and | |||
| adjusts for the time passed since the secondary was last updated | adjusts for the time passed since the secondary was last updated | |||
| (1/2 hour). Thus, the remaining time for the acknowledged partner | (1/2 hour). Thus, the remaining time for the acknowledged partner | |||
| interval is 3 days. Adding the MCLT to this yields 3 days plus | interval is 3 days. Adding the MCLT to this yields 3 days plus | |||
| 1 hour, which is more than the desired lifetime of 3 days. So, the | 1 hour, which is more than the desired lifetime of 3 days. So, the | |||
| client may have its lease renewed for the desired lifetime -- 3 days. | client may have its lease renewed for the desired lifetime -- 3 days. | |||
| When the primary DHCP server updates the secondary DHCP server after | When the primary DHCP server updates the secondary DHCP server after | |||
| the DHCP client's renewal REPLY is complete, it will calculate the | the DHCP client's renewal REPLY is complete, it will calculate the | |||
| partner lifetime as the T1 fraction of the actual client lifetime | partner lifetime as the T1 fraction of the actual client lifetime | |||
| (1/2 of 3 days this time = 1.5 days). To this it will add the | (1/2 of 3 days = 1.5 days). To this it will add the desired lifetime | |||
| desired lifetime of 3 days, yielding a total partner lifetime of | of 3 days, yielding a total partner lifetime of 4.5 days. In this | |||
| 4.5 days. In this way, the primary attempts to have the secondary | way, the primary attempts to have the secondary always "lead" the | |||
| always "lead" the client in its understanding of the client's | client in its understanding of the client's lifetime so as to be able | |||
| lifetime so as to be able to always offer the client the desired | to always offer the client the desired lifetime. | |||
| lifetime. | ||||
| Once the initial actual client lifetime of the MCLT has passed, the | Once the initial actual client lifetime of the MCLT has passed, the | |||
| failover protocol operates effectively like DHCP does today in its | failover protocol operates effectively like DHCP does today in its | |||
| behavior concerning lifetimes. However, the guarantee that the | behavior concerning lifetimes. However, the guarantee that the | |||
| actual client lifetime will never exceed the partner server's | actual client lifetime will never exceed the partner server's | |||
| remaining acknowledged partner lifetime by more than the MCLT allows | remaining acknowledged partner lifetime by more than the MCLT allows | |||
| full recovery from a variety of DHCP server failures. | full recovery from a variety of DHCP server failures. | |||
| Fundamental relationship: | Fundamental relationship: | |||
| lease time = floor( desired lifetime, acked-partner-lifetime + MCLT ) | lease time = floor( desired lifetime, acked-partner-lifetime + MCLT ) | |||
| skipping to change at page 58, line 28 | skipping to change at page 58, line 28 | |||
| 1. The OPTION_CLIENTID is used to find the client. | 1. The OPTION_CLIENTID is used to find the client. | |||
| 2. The other data contained in the top level of the | 2. The other data contained in the top level of the | |||
| OPTION_CLIENT_DATA option is stored with the client as | OPTION_CLIENT_DATA option is stored with the client as | |||
| appropriate. | appropriate. | |||
| 3. For each of the OPTION_IA_NA, OPTION_IA_TA, or OPTION_IA_PD | 3. For each of the OPTION_IA_NA, OPTION_IA_TA, or OPTION_IA_PD | |||
| options in the OPTION_CLIENT_DATA option and for each of the | options in the OPTION_CLIENT_DATA option and for each of the | |||
| OPTION_IAADDR or OPTION_IAPREFIX options in the IA_* options: | OPTION_IAADDR or OPTION_IAPREFIX options in the IA_* options: | |||
| 1. OPTION_F_BINDING_STATUS is stored as the binding-status. | a. OPTION_F_BINDING_STATUS is stored as the binding-status. | |||
| 2. OPTION_F_PARTNER_LIFETIME is stored in the expiration-time. | b. OPTION_F_PARTNER_LIFETIME is stored in the expiration-time. | |||
| 3. OPTION_F_STATE_EXPIRATION_TIME is stored in the | c. OPTION_F_STATE_EXPIRATION_TIME is stored in the | |||
| state-expiration-time. | state-expiration-time. | |||
| 4. OPTION_CLT_TIME [RFC5007] is stored in the | d. OPTION_CLT_TIME [RFC5007] is stored in the | |||
| partner-raw-clt-time. | partner-raw-clt-time. | |||
| 5. OPTION_F_PARTNER_RAW_CLT_TIME replaces the | e. OPTION_F_PARTNER_RAW_CLT_TIME replaces the | |||
| client-last-transaction-time if it is later than the current | client-last-transaction-time if it is later than the current | |||
| client-last-transaction-time. | client-last-transaction-time. | |||
| 6. OPTION_F_EXPIRATION_TIME replaces the partner-lifetime if it | f. OPTION_F_EXPIRATION_TIME replaces the partner-lifetime if it | |||
| is later than the current partner-lifetime. | is later than the current partner-lifetime. | |||
| The information contained in an accepted single OPTION_IAPREFIX | The information contained in an accepted single OPTION_IAPREFIX | |||
| option that is not contained in an OPTION_CLIENT_DATA option is | option that is not contained in an OPTION_CLIENT_DATA option is | |||
| stored in the receiving server's binding database as follows: | stored in the receiving server's binding database as follows: | |||
| 1. The IPv6 prefix is used to find the prefix. | 1. The IPv6 prefix is used to find the prefix. | |||
| 2. Inside of the IAprefix-options section: | 2. Inside of the IAprefix-options section: | |||
| 1. OPTION_F_BINDING_STATUS is stored as the binding-status. | a. OPTION_F_BINDING_STATUS is stored as the binding-status. | |||
| 2. OPTION_F_PARTNER_LIFETIME (if any) is stored in the | b. OPTION_F_PARTNER_LIFETIME (if any) is stored in the | |||
| expiration-time. | expiration-time. | |||
| 3. OPTION_F_STATE_EXPIRATION_TIME (if any) is stored in the | c. OPTION_F_STATE_EXPIRATION_TIME (if any) is stored in the | |||
| state-expiration-time. | state-expiration-time. | |||
| 4. OPTION_F_EXPIRATION_TIME (if any) replaces the | d. OPTION_F_EXPIRATION_TIME (if any) replaces the | |||
| partner-lifetime if it is later than the current | partner-lifetime if it is later than the current | |||
| partner-lifetime. | partner-lifetime. | |||
| 7.6. Sending Binding Replies | 7.6. Sending Binding Replies | |||
| A server MUST respond to every BNDUPD message with a BNDREPLY | A server MUST respond to every BNDUPD message with a BNDREPLY | |||
| message. The BNDREPLY message MUST contain an OPTION_CLIENT_DATA | message. The BNDREPLY message MUST contain an OPTION_CLIENT_DATA | |||
| option if the BNDUPD message contained an OPTION_CLIENT_DATA option, | option if the BNDUPD message contained an OPTION_CLIENT_DATA option, | |||
| or it MUST contain an OPTION_IAPREFIX option if the BNDUPD message | or it MUST contain an OPTION_IAPREFIX option if the BNDUPD message | |||
| contained an OPTION_IAPREFIX option. The BNDREPLY message MUST have | contained an OPTION_IAPREFIX option. The BNDREPLY message MUST have | |||
| skipping to change at page 62, line 15 | skipping to change at page 62, line 15 | |||
| The information contained in the BNDREPLY message in an | The information contained in the BNDREPLY message in an | |||
| OPTION_CLIENT_DATA that represents an acceptance is stored with the | OPTION_CLIENT_DATA that represents an acceptance is stored with the | |||
| appropriate client and lease, as follows: | appropriate client and lease, as follows: | |||
| 1. The OPTION_CLIENTID is used to find the client. | 1. The OPTION_CLIENTID is used to find the client. | |||
| 2. For each of the OPTION_IA_NA, OPTION_IA_TA, or OPTION_IA_PD | 2. For each of the OPTION_IA_NA, OPTION_IA_TA, or OPTION_IA_PD | |||
| options in the OPTION_CLIENT_DATA option and for each of the | options in the OPTION_CLIENT_DATA option and for each of the | |||
| OPTION_IAADDR or OPTION_IAPREFIX options they contain: | OPTION_IAADDR or OPTION_IAPREFIX options they contain: | |||
| 1. OPTION_F_PARTNER_LIFETIME_SENT is stored in the | a. OPTION_F_PARTNER_LIFETIME_SENT is stored in the | |||
| acked-partner-lifetime. | acked-partner-lifetime. | |||
| 2. The partner-lifetime is set to 0 to indicate that no more | b. The partner-lifetime is set to 0 to indicate that no more | |||
| information needs to be sent to the partner. | information needs to be sent to the partner. | |||
| Alternatively, the BNDREPLY message may contain a single | Alternatively, the BNDREPLY message may contain a single | |||
| OPTION_IAPREFIX option not contained in an OPTION_CLIENT_DATA option, | OPTION_IAPREFIX option not contained in an OPTION_CLIENT_DATA option, | |||
| representing information concerning a single prefix lease. If the | representing information concerning a single prefix lease. If the | |||
| IAprefix-options section of the OPTION_IAPREFIX option contains an | IAprefix-options section of the OPTION_IAPREFIX option contains an | |||
| OPTION_STATUS_CODE representing an error, then it is considered a | OPTION_STATUS_CODE representing an error, then it is considered a | |||
| rejection of the corresponding BNDUPD message. If the | rejection of the corresponding BNDUPD message. If the | |||
| OPTION_IAPREFIX option does not contain an OPTION_STATUS_CODE option | OPTION_IAPREFIX option does not contain an OPTION_STATUS_CODE option | |||
| or if the OPTION_STATUS_CODE option contains a success status, then | or if the OPTION_STATUS_CODE option contains a success status, then | |||
| End of changes. 18 change blocks. | ||||
| 20 lines changed or deleted | 24 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||