| Internet protocol suite |
|---|
| Application layer |
| Transport layer |
| Internet layer |
| Link layer |
TheDynamic Host Configuration Protocol version 6 (DHCPv6) is anetwork protocol for configuringInternet Protocol version 6 (IPv6)hosts withIP addresses,IP prefixes, and other configuration data required to operate in an IPv6 network. It is not just the IPv6 equivalent of theDynamic Host Configuration Protocol forIPv4.
IPv6 hosts may automatically generate IP addresses internally usingstateless address autoconfiguration (SLAAC), or they may be assigned configuration data with DHCPv6, or both.
DHCPv6 and SLAAC are complementary services. Unlike theNeighbor Discovery Protocol (NDP) used by SLAAC, DHCPv6 can not only assign single unicast addresses, but also entire prefixes inprefix 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 outDomain 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.
Clients listen for DHCP messages onUDP port 546. Servers and relay agents listen for DHCP messages on UDP port 547.[4]: §7.2
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
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 itsMAC address. It defines a way for a DHCPv6 relay to pass that information to a DHCPv6 server.
In this example, without rapid-commit present, the server's link-local address isfe80::0011:22ff:fe33:5566 and the client's link-local address isfe80::aabb:ccff:fedd:eeff.
This table lists the DHCPv6 message types.
| Code | Name | RFC |
|---|---|---|
| 1 | SOLICIT | RFC 8415 |
| 2 | ADVERTISE | RFC 8415 |
| 3 | REQUEST | RFC 8415 |
| 4 | CONFIRM | RFC 8415 |
| 5 | RENEW | RFC 8415 |
| 6 | REBIND | RFC 8415 |
| 7 | REPLY | RFC 8415 |
| 8 | RELEASE | RFC 8415 |
| 9 | DECLINE | RFC 8415 |
| 10 | RECONFIGURE | RFC 8415 |
| 11 | INFORMATION-REQUEST | RFC 8415 |
| 12 | RELAY-FORW | RFC 8415 |
| 13 | RELAY-REPL | RFC 8415 |
| 14 | LEASEQUERY | RFC 5007 |
| 15 | LEASEQUERY-REPLY | RFC 5007 |
| 16 | LEASEQUERY-DONE | RFC 5460 |
| 17 | LEASEQUERY-DATA | RFC 5460 |
| 18 | RECONFIGURE-REQUEST | RFC 6977 |
| 19 | RECONFIGURE-REPLY | RFC 6977 |
| 20 | DHCPV4-QUERY | RFC 7341 |
| 21 | DHCPV4-RESPONSE | RFC 7341 |
| 22 | ACTIVELEASEQUERY | RFC 7653 |
| 23 | STARTTLS | RFC 7653 |