draft-ietf-dhc-dhcpv6-load-balancing-01.txt | draft-ietf-dhc-dhcpv6-load-balancing-02.txt | |||
---|---|---|---|---|
DHC A. Kostur | DHC A. Kostur | |||
Internet-Draft Incognito | Internet-Draft Incognito | |||
Intended status: Standards Track March 02, 2014 | Intended status: Standards Track July 04, 2014 | |||
Expires: September 01, 2014 | Expires: January 03, 2015 | |||
DHC Load Balancing Algorithm for DHCPv6 | Load Balancing for DHCPv6 | |||
draft-ietf-dhc-dhcpv6-load-balancing-01 | draft-ietf-dhc-dhcpv6-load-balancing-02 | |||
Abstract | Abstract | |||
This document proposes a method of algorithmic load balancing for | This document proposes a method of algorithmic load balancing for | |||
IPv6 Dynamic Host Configuration Protocol (DHCPv6) traffic. It | IPv6 Dynamic Host Configuration Protocol (DHCPv6) traffic. It | |||
enables multiple, cooperating servers to decide which one should | enables multiple, cooperating servers to decide which one should | |||
service a client, without necessarily exchanging any information | service a client, without necessarily exchanging any information | |||
between the servers. The server selection is based on the servers | between the servers. The server selection is based on the servers | |||
hashing client DHCP Unique Identifiers (DUIDs) when multiple DHCPv6 | hashing client DHCP Unique Identifiers (DUIDs) when multiple DHCPv6 | |||
servers are available to service DHCPv6 clients. The proposed | servers are available to service DHCPv6 clients. The proposed | |||
skipping to change at page 1, line 41 | skipping to change at page 1, line 41 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 01, 2014. | This Internet-Draft will expire on January 03, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 (http://trustee.ietf.org/ | Provisions Relating to IETF Documents (http://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
2. Background and External Requirements . . . . . . . . . . . . . 3 | 2. Background and External Requirements . . . . . . . . . . . . . 3 | |||
3. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.1. Messages with a Server Identifier . . . . . . . . . . . . 3 | 3.1. Messages with a Server Identifier . . . . . . . . . . . . 3 | |||
3.2. RENEWs with the DHCPv6 servers sharing lease information . 3 | 3.2. RENEWs with the DHCPv6 servers sharing lease information . 3 | |||
3.3. RENEWs with the DHCPv6 servers not sharing lease informatio 4 | 3.3. RENEWs with the DHCPv6 servers not sharing lease informatio 4 | |||
3.4. Selecting the STID . . . . . . . . . . . . . . . . . . . . 4 | 3.4. Selecting the STID . . . . . . . . . . . . . . . . . . . . 4 | |||
3.5. Replacing the secs field . . . . . . . . . . . . . . . . . 5 | 3.5. Replacing the secs field . . . . . . . . . . . . . . . . . 4 | |||
4. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . . 5 | 7.1. Normative References . . . . . . . . . . . . . . . . . . . 5 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . . 5 | 7.2. Informative References . . . . . . . . . . . . . . . . . . 6 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 6 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
1. Introduction | 1. Introduction | |||
This document is intended to extend the algorithm described in DHC | This document is intended to extend the algorithm described in DHC | |||
Load Balancing Algorithm [RFC3074] to apply to DHCPv6 [RFC3315] | Load Balancing Algorithm [RFC3074] to apply to DHCPv6 [RFC3315] | |||
traffic. Most of the terminology and procedures are identical to the | traffic. Most of the terminology and procedures are identical to the | |||
ones specified in RFC 3074. As a short summary: servers which are | ones specified in RFC 3074. As a short summary: servers which are | |||
participating in load balancing calculate hash values for the Service | participating in load balancing calculate hash values for the Service | |||
Transaction ID (STID) based on client-specific values (the client | Transaction ID (STID) based on client-specific values (the client | |||
DUID for DHCPv6, the Client ID or CHADDR field for DHCPv4) for each | DUID for DHCPv6, the Client ID or CHADDR field for DHCPv4) for each | |||
incoming UDP packet. This hash is then used to select a hash bucket. | incoming UDP packet. This hash is then used to select a hash bucket. | |||
Servers are assigned to service particular buckets. | Servers are assigned to service particular buckets. | |||
Load balancing is not the same as failover, as load balancing is not | Load balancing is not the same as failover, as load balancing is not | |||
attempting to address any redundancy concerns [RFC6853]. Load | attempting to address any redundancy concerns [RFC6853]. Load | |||
balancing does not attempt to address the issues of configuration or | balancing does not attempt to address the issues of configuration or | |||
data synchronization between DHCPv6 servers. However, load balancing | data synchronization between DHCPv6 servers. However, load balancing | |||
may be desirable in a failover set of servers in order to reduce the | may be desirable in a failover set of servers in order to reduce the | |||
load on the servers in normal operations (see Section 5.3 of | load on the servers in normal operations, and certain desirable | |||
[RFC6853]), and certain desirable behaviors can occur if load | behaviors can occur if load balancing is aware that data | |||
balancing is aware that data synchronization is occurring. | synchronization is occurring. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
2. Background and External Requirements | 2. Background and External Requirements | |||
The requirements for DHCPv6 are substantially the same as for DHCPv4, | The requirements for DHCPv6 are substantially the same as for DHCPv4, | |||
replacing DHCPDISCOVER with SOLICIT, DHCPREQUEST with REQUEST, | replacing DHCPDISCOVER with SOLICIT, DHCPREQUEST with REQUEST, | |||
CONFIRM, RENEW, or REBIND (as appropriate), etc. | CONFIRM, RENEW, or REBIND (as appropriate), etc. | |||
skipping to change at page 3, line 21 | skipping to change at page 3, line 28 | |||
replacing DHCPDISCOVER with SOLICIT, DHCPREQUEST with REQUEST, | replacing DHCPDISCOVER with SOLICIT, DHCPREQUEST with REQUEST, | |||
CONFIRM, RENEW, or REBIND (as appropriate), etc. | CONFIRM, RENEW, or REBIND (as appropriate), etc. | |||
3. Operation | 3. Operation | |||
A DHCPv6 server performing this load balancing will operate in | A DHCPv6 server performing this load balancing will operate in | |||
substantially the same manner as if it were a DHCPv4 server load | substantially the same manner as if it were a DHCPv4 server load | |||
balancing an incoming DHCPv4/BOOTP packet with the following | balancing an incoming DHCPv4/BOOTP packet with the following | |||
differences. | differences. | |||
Load balancing only applies to incoming UDP DHCPv6 messages that | Load balancing only applies to incoming client-originated UDP DHCPv6 | |||
servers would normally process: SOLICIT, REQUEST, CONFIRM, RENEW, | messages. RELAY-FORWs are processed based on the content of the most | |||
REBIND, RELEASE, DECLINE, INFORMATION-REQUEST, and RECONFIGURE- | encapsulated packet (ie: the client-originated DHCPv6 message). | |||
REQUEST [RFC6977]. RELAY-FORWARDs are processed based on the content | ||||
of the most encapsulated packet (ie: the above listed message types). | ||||
Future message types will have to be considered as they are proposed | Future message types will have to be considered as they are proposed | |||
as to how they may be load balanced. | as to how they may be load balanced. | |||
LEASEQUERY [RFC5007] messages with a query based on IP SHOULD NOT | LEASEQUERY [RFC5007] messages MUST NOT be load balanced. Devices | |||
have load balancing applied to them. The Client DUID that is | which are sending LEASEQUERY packets will have to be sending those | |||
supplied in a LEASEQUERY message identifies the requestor, and not an | packets to all of the load balanced DHCPv6 servers, and the | |||
actual client device. This could result in the server which answered | LEASEQUERY specification already considers what the device should do | |||
the client device deciding that it should not answer the requestor. | when it receives responses to the LEASEQUERY from multiple sources. | |||
LEASEQUERY messages with a query based on Client ID SHOULD have load | ||||
balancing applied to them, using the Client DUID contained in the | ||||
OPTION_LQ_QUERY option for the STID. | ||||
DHCPV4-QUERY [I-D.ietf-dhc-dhcpv4-over-dhcpv6] messages SHOULD NOT be | DHCPV4-QUERY [I-D.ietf-dhc-dhcpv4-over-dhcpv6] messages SHOULD NOT be | |||
load balanced, but should be subject to DHCPv4 load balncing, if the | load balanced, but SHOULD be subject to DHCPv4 load balancing, if the | |||
server supports it. | server supports it. | |||
ADVERTISE, REPLY, RELAY-REPL, LEASEQUERY-REPLY, LEASEQUERY-DONE, | ADVERTISE, REPLY, RELAY-REPL, LEASEQUERY-REPLY, and RECONFIGURE-REPLY | |||
LEASEQUERY-DATA, and RECONFIGURE-REPLY are messages which should not | [RFC6977] are messages which should not be received by a DHCPv6 | |||
be received by a DHCPv6 server and thus are not considered in this | server and thus are not considered in this document. | |||
document. | ||||
3.1. Messages with a Server Identifier | 3.1. Messages with a Server Identifier | |||
Messages which contain a Server Identifier to direct that message to | Messages which contain a Server Identifier to direct that message to | |||
a specific server SHOULD be processed as if load balancing were not | a specific server SHOULD be processed as if load balancing were not | |||
in play, with the exception of RENEWs. | in play, with the exception of RENEWs. | |||
3.2. RENEWs with the DHCPv6 servers sharing lease information | 3.2. RENEWs with the DHCPv6 servers sharing lease information | |||
A DHCPv6 server receiving a RENEW with the server's Server Identifier | A DHCPv6 server receiving a RENEW with the server's Server Identifier | |||
specified MAY choose to ignore the request if the load balancing | specified MAY choose to ignore the request if the load balancing | |||
skipping to change at page 4, line 55 | skipping to change at page 4, line 55 | |||
3.4. Selecting the STID | 3.4. Selecting the STID | |||
DHCPv6 servers MUST use the client's DUID in its entirety as the | DHCPv6 servers MUST use the client's DUID in its entirety as the | |||
STID. This is different than RFC 3074 which limited the STID to 16 | STID. This is different than RFC 3074 which limited the STID to 16 | |||
bytes. | bytes. | |||
An INFORMATION-REQUEST may have no client DUID in the message. | An INFORMATION-REQUEST may have no client DUID in the message. | |||
Calculate the hash as if a 0-length DUID were supplied, effectively | Calculate the hash as if a 0-length DUID were supplied, effectively | |||
assigning those messages to hash bucket 0. | assigning those messages to hash bucket 0. | |||
A LEASEQUERY based on Client ID MUST use the Client ID contained in | ||||
the OPTION_LQ_QUERY option. | ||||
3.5. Replacing the secs field | 3.5. Replacing the secs field | |||
A DHCPv6 server providing the capability of Delayed Service SHOULD | A DHCPv6 server providing the capability of Delayed Service SHOULD | |||
use the value in the OPTION_ELAPSED_TIME wherever RFC 3074 makes | use the value in the OPTION_ELAPSED_TIME wherever RFC 3074 makes | |||
reference to the secs field. | reference to the secs field. | |||
4. Acknowledgements | 4. Acknowledgements | |||
Thanks to Bernie Volz, Steve Gonczi, Ted Lemon, and Rob Stevens as | Thanks to Bernie Volz, Steve Gonczi, Ted Lemon, and Rob Stevens as | |||
this document heavily borrows from their previous work on RFC 3074, | this document heavily borrows from their previous work on RFC 3074, | |||
as well as Bernie and Tomek Mrugalski's additional comments during | as well as Bernie and Tomek Mrugalski's additional comments during | |||
the discussions. | the discussions. | |||
skipping to change at page 5, line 26 | skipping to change at page 5, line 23 | |||
the discussions. | the discussions. | |||
5. IANA Considerations | 5. IANA Considerations | |||
This memo includes no request to IANA. | This memo includes no request to IANA. | |||
6. Security Considerations | 6. Security Considerations | |||
This proposal in and by itself provides no security, nor does it | This proposal in and by itself provides no security, nor does it | |||
impact existing security. Servers using this algorithm are | impact existing security. Servers using this algorithm are | |||
responsible for ensuring that if the contents of the HBA are | responsible for ensuring that if the contents of the hash bucket | |||
transmitted over the network as part of the process of configuring | assignments are transmitted over the network as part of the process | |||
any server, that message be secured against tampering, since | of configuring any server, that message be secured against tampering, | |||
tampering with the HBA could result in denial of service for some or | since tampering with the HBA could result in denial of service for | |||
all clients. | some or all clients. | |||
If the hash bucket assignments are not configured such that each | ||||
bucket is assigned to one and only one DHCP server, this results in | ||||
some clients that will be either completely ignored by the DHCP | ||||
servers (if no server is configured to answer that hash bucket), or | ||||
get multiple responses (if more than one server is configured to | ||||
answer that hash bucket). | ||||
7. References | 7. References | |||
7.1. Normative References | 7.1. Normative References | |||
[I-D.ietf-dhc-dhcpv4-over-dhcpv6] | ||||
Sun, Q., Cui, Y., Siodelski, M., Krishnan, S. and I. | ||||
Farrer, "DHCPv4 over DHCPv6 Transport", Internet-Draft | ||||
draft-ietf-dhc-dhcpv4-over-dhcpv6-05, February 2014. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC3074] Volz, B., Gonczi, S., Lemon, T. and R. Stevens, "DHC Load | [RFC3074] Volz, B., Gonczi, S., Lemon, T. and R. Stevens, "DHC Load | |||
Balancing Algorithm", RFC 3074, February 2001. | Balancing Algorithm", RFC 3074, February 2001. | |||
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C. and | [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C. and | |||
M. Carney, "Dynamic Host Configuration Protocol for IPv6 | M. Carney, "Dynamic Host Configuration Protocol for IPv6 | |||
(DHCPv6)", RFC 3315, July 2003. | (DHCPv6)", RFC 3315, July 2003. | |||
[RFC5007] Brzozowski, J., Kinnear, K., Volz, B. and S. Zeng, "DHCPv6 | [RFC5007] Brzozowski, J., Kinnear, K., Volz, B. and S. Zeng, "DHCPv6 | |||
Leasequery", RFC 5007, September 2007. | Leasequery", RFC 5007, September 2007. | |||
[RFC6977] Boucadair, M. and X. Pougnard, "Triggering DHCPv6 | [RFC6977] Boucadair, M. and X. Pougnard, "Triggering DHCPv6 | |||
Reconfiguration from Relay Agents", RFC 6977, July 2013. | Reconfiguration from Relay Agents", RFC 6977, July 2013. | |||
7.2. Informative References | 7.2. Informative References | |||
[I-D.ietf-dhc-dhcpv4-over-dhcpv6] | ||||
Sun, Q., Cui, Y., Siodelski, M., Krishnan, S. and I. | ||||
Farrer, "DHCPv4 over DHCPv6 Transport", Internet-Draft | ||||
draft-ietf-dhc-dhcpv4-over-dhcpv6-05, February 2014. | ||||
[RFC6853] Brzozowski, J., Tremblay, J., Chen, J. and T. Mrugalski, | [RFC6853] Brzozowski, J., Tremblay, J., Chen, J. and T. Mrugalski, | |||
"DHCPv6 Redundancy Deployment Considerations", BCP 180, | "DHCPv6 Redundancy Deployment Considerations", BCP 180, | |||
RFC 6853, February 2013. | RFC 6853, February 2013. | |||
Author's Address | Author's Address | |||
Andre Kostur | Andre Kostur | |||
Incognito Software Inc. | Incognito Software Inc. | |||
Suite 500 - 375 Water St. | Suite 500 - 375 Water St. | |||
Vancouver, BC V6B 5C6 | Vancouver, BC V6B 5C6 | |||
End of changes. 17 change blocks. | ||||
44 lines changed or deleted | 41 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/ |