DHCPv6

Last updated
Dynamic Host Configuration Protocol version 6
Communication protocol
AbbreviationDHCPv6
PurposeProvide IPv6 addresses and additional network configuration parameters to clients in an IPv6 network.
Developer(s)Michael Carney
Charles E. Perkins
Bernie Volz
Ted Lemon
Jim Bound
IntroductionJune 2003;22 years ago (2003-06)
Based on Dynamic Host Configuration Protocol for IPv4
OSI layer Layer 7 Application
Port(s) UDP port 546, for Clients.
UDP port 547, for Servers and relay agents.
RFC(s) 8415, 3319, 3646, 4704, 5007, 6355, 6939, 7653

The Dynamic Host Configuration Protocol version 6 (DHCPv6) is a network protocol for configuring Internet Protocol version 6 (IPv6) hosts with IP addresses, IP prefixes, and other configuration data required to operate in an IPv6 network. It is not just the IPv6 equivalent of the Dynamic Host Configuration Protocol for IPv4.

Contents

IPv6 hosts may automatically generate IP addresses internally using stateless address autoconfiguration (SLAAC), or they may be assigned configuration data with DHCPv6, or both.

DHCPv6 and SLAAC are complementary services. Unlike the Neighbor Discovery Protocol (NDP) used by SLAAC, DHCPv6 can not only assign single unicast addresses, but also entire prefixes in prefix delegation. For example, an ISP's router can provide a prefix to a customer's router via DHCPv6 so that the customer's router can assign addresses to the customer's many devices via either DHCPv6 or SLAAC. This allows routers for residential networks to be configured with no operator intervention.

DHCPv6 also allows the distribution of information other than what SLAAC/NDP provides on a given network: this works even without DHCPv6 managing the distribution of network addresses. The standard method for a SLAAC/NDP network to hand out Domain Name System (DNS) server settings is via setting a flag in the Router Advertisement (RA) message telling the clients to ask for such settings over DHCPv6, [1] :§4.2 although this specific use case is being replaced via a nonstandard extension of the RA message. [2] Still, there remains a plethora of DHCPv6 options for providing additional information not handled by SLAAC/NDP, much like the wide range of information conveyed by legacy DHCP options. [3]

Finally, DHCPv6 also offers a stateful approach, which provides more control over SLAAC's stateless approach.

Operation

Multicast addresses in DHCPv6

DHCPv6 uses IPv6 multicast addresses to enable communication between clients, relay agents, and servers when unicast addresses are not yet known. RFC 8415 defines two well-known multicast groups for this purpose.

Defined multicast addresses

Multicast addressNameScopeUsed byPurpose
ff02::1:2All_DHCP_Relay_Agents_and_Servers Link-local ClientsDiscover on-link DHCPv6 servers and relay agents
ff05::1:3All_DHCP_Servers Site-local Relay agentsForward client messages to all DHCPv6 servers within a site

All DHCPv6 servers and relay agents must join the appropriate multicast groups on relevant interfaces.

Notes

  • Link-local multicast traffic (ff02::1:2) is never forwarded beyond the local link.
  • Site-local multicast (ff05::1:3) requires the relay agent to have an address with sufficient scope to reach servers within the site.
  • Multicast support is mandatory for correct DHCPv6 operation.

Port numbers

Clients listen for DHCP messages on UDP port 546. Servers and relay agents listen for DHCP messages on UDP port 547. [4] :§7.2

Identifiers

DHCP unique identifier

The DHCP unique identifier (DUID) is used by a client to get an IP address from a DHCPv6 server. It has a 2-byte DUID type field, and a variable-length identifier field up to 128 bytes. Its actual length depends on its type. The server compares the DUID with its database and delivers configuration data (address, lease times, DNS servers, etc.) to the client.

Four DUID types are identified: [4] :§11

TypeNameDescription
1DUID-LLT link-layer address plus time
2DUID-ENVendor-assigned identifier based on Enterprise Number
3DUID-LL link-layer address
4DUID-UUID Universally Unique Identifier (UUID)

DUID-LLT (Type 1) consists of:

  • DUID type (1)
  • Hardware type (IANA-assigned)
  • Time value (seconds since 00:00 UTC, 1 January 2000, modulo 2³²)
  • link-layer address

The time component reduces the likelihood of collisions if the same link-layer address is reused on another device. Devices using DUID-LLT must store the generated identifier in stable, non-volatile storage and continue using it even if the original network interface is removed.

This type is recommended for general-purpose computing devices such as desktops, laptops, and printers, that provide writable persistent storage.

DUID-LLT Format
Offset Octet 0123
Octet Bit 012345678910111213141516171819202122232425262728293031
00DUID-Type (1) hardware type
432time
864 link-layer address (variable length)
1296
16128
20160

DUID-EN (Enterprise Number)

DUID-EN (Type 2) is assigned by the device vendor and consists of:

  • DUID type (2)
  • Vendor’s IANA-assigned Private Enterprise Number
  • Vendor-defined unique identifier

The identifier must be unique per device and stored in non-volatile storage. This type is commonly assigned during manufacturing or at first boot in virtualized environments.

DUID-EN Format
Offset Octet 0123
Octet Bit 012345678910111213141516171819202122232425262728293031
00DUID-Type (2) enterprise-number
432enterprise-number (cont.) 
864identifier (variable length)
34272

DUID-LL (Type 3) consists of:

Unlike DUID-LLT, no time value is included. This type is intended for devices with a permanently attached network interface and no writable persistent storage. It should not be used if the permanence of the interface cannot be guaranteed.

DUID-LL Format
Offset Octet 0123
Octet Bit 012345678910111213141516171819202122232425262728293031
00DUID-Type (3) hardware type
432 link-layer address (variable length)
864
1296
16128

DUID-UUID (Universally Unique Identifier)

DUID-UUID (Type 4) uses a 128-bit UUID as its identifier.

DUID-UUID consists of:

Its usage and UUID selection rules are defined in RFC 6355. This type is suitable for devices that already store a UUID in firmware or platform configuration.

DUID-UUID Format
Offset Octet 0123
Octet Bit 012345678910111213141516171819202122232425262728293031
00DUID-Type (4) 
432 Universally Unique Identifier
864
1296
16128


Due to the fact that it is difficult to manage multiple identifiers in a dual-stack environment, and the fact that DUIDs are simply not optimal for some situations, RFC 6939 was released, giving a way to identify a host based on its MAC address. It defines a way for a DHCPv6 relay to pass that information to a DHCPv6 server.

Example

DHCPv6 Example sequence Diagram, with Router Discovery (NDP) DHCPv6 Example sequence Diagram, with Router Discovery (NDP).png
DHCPv6 Example sequence Diagram, with Router Discovery (NDP)

In this example, without rapid-commit present, the server's link-local address is fe80::0011:22ff:fe33:5566 and the client's link-local address is fe80::aabb:ccff:fedd:eeff.

DHCPv6 Message types

This table lists the DHCPv6 message types.

DHCPv6 Message Types
CodeNameRFC
1SOLICITRFC 8415
2ADVERTISERFC 8415
3REQUESTRFC 8415
4CONFIRMRFC 8415
5RENEWRFC 8415
6REBINDRFC 8415
7REPLYRFC 8415
8RELEASERFC 8415
9DECLINERFC 8415
10RECONFIGURERFC 8415
11INFORMATION-REQUESTRFC 8415
12RELAY-FORWRFC 8415
13RELAY-REPLRFC 8415
14LEASEQUERYRFC 5007
15LEASEQUERY-REPLYRFC 5007
16LEASEQUERY-DONERFC 5460
17LEASEQUERY-DATARFC 5460
18RECONFIGURE-REQUESTRFC 6977
19RECONFIGURE-REPLYRFC 6977
20DHCPV4-QUERYRFC 7341
21DHCPV4-RESPONSERFC 7341
22ACTIVELEASEQUERYRFC 7653
23STARTTLSRFC 7653
DHCPv6 Example sequence Diagram, with Router Discovery (NDP) DHCPv6 Example sequence Diagram, with Router Discovery (NDP).png
DHCPv6 Example sequence Diagram, with Router Discovery (NDP)

IETF standards

See also

References

  1. T. Narten; E. Nordmark; W. Simpson; H. Holiman (September 2007). Neighbor Discovery for IP version 6 (IPv6). Network Working Group. doi: 10.17487/RFC4861 . RFC 4861.Draft Standard. Obsoletes RFC  2461. Updated by RFC  5942, 6980, 7048, 7527, 7559, 8028, 8319, 8425 and 9131.
  2. J. Jeong, ed. (February 2006). IPv6 Host Configuration of DNS Server Information Approaches. Network Working Group. doi: 10.17487/RFC4339 . RFC 4339.Informational.
  3. "Dynamic Host Configuration Protocol for IPv6 (DHCPv6) [IANA registry]". www.iana.org.
  4. 1 2 3 T. Mrugalski; M. Siodelski; B. Volz; A. Yourtchenko; M. Richardson; S. Jiang; T. Lemon; T. Winters (November 2018). Dynamic Host Configuration Protocol for IPv6 (DHCPv6). Internet Engineering Task Force. doi: 10.17487/RFC8415 . ISSN   2070-1721. RFC 8415.Proposed Standard. Obsoletes RFC  3315, 3633, 3736, 4242, 7083, 7283 and 7550.