Chapter 16 • IPv6 Autoconﬁguration 273
Dynamic allocation DHCP assigns an IP address to a client for a limited
period of time (or until the client explicitly relinquishes the address).
Manual allocation A client’s IP address is assigned by the network
administrator, and DHCP is used simply to convey the assigned
address to the client.
In all cases, the DHCP server maintains state about the clients that use
DHCP to conﬁgure themselves. ISPs providing broadband services to con-
sumers (and other network providers) may conﬁgure their DHCP servers
to allocate addresses only to nodes with a particular link layer address to
prevent unauthorized use of their service. However, DHCP can be used for
ad hoc networking, in which a node not previously known to the DHCP
server can be allocated an address.
Stateless autoconﬁguration allows nodes to conﬁgure themselves com-
pletely independently of any central authority because servers to maintain
addressing states are unnecessary.
This is not to say that stateful and stateless autoconﬁguration are mutu-
ally exclusive; quite the reverse is the case, in fact. Neighbor Discovery
incorporates features that allow the two types of autoconﬁguration to
complement each other in an IPv6 network. For example, stateless auto-
conﬁguration is useful because it permits a node to allocate its own IPv6
address that is valid for local-scope network. At the same time, it can
query for stateful autoconﬁguration services on the local network to allow
it to determine its own global IPv6 address, network preﬁx, and default
16.2 IPv6 Stateful Autoconﬁguration: DHCPv6
DHCPv6 is the latest iteration of an autoconﬁguration protocol published
in RFC 951, “Boot Protocol,” in 1985. The following are some RFCs that
can provide further information about BOOTP, DHCP, and DHCPv6.
RFC 3397 “Dynamic Host Conﬁguration Protocol (DHCP) Domain
RFC 3118 “Authentication for DHCP Messages”
RFC 2132 “DHCP Options and BOOTP Vendor Extensions”
RFC 2131 “Dynamic Host Conﬁguration Protocol”
274 Part Two • IPv6 Protocols
RFC 1542 “Clariﬁcations and Extensions for the Bootstrap Protocol”
RFC 1534 “Interoperation Between DHCP and BOOTP”
RFC 0951 “Bootstrap Protocol”
The speciﬁcation for DHCPv6 is still, as of mid-2003, a work-in-progress.
Although in many ways quite similar to DHCPv4, DHCPv6 is different
enough that the protocol speciﬁcation does not include speciﬁc information
about interoperability between the two.
16.2.1 DHCP MESSAGES
DHCP clients and servers communicate by sending DHCP protocol mes-
sages using UDP. The client, which (at least to start with) has no valid IP
address for itself or for the local DHCP server, sends DHCP requests to the
multicast address reserved for DHCP servers in the link scope. These are
the two valid addresses for sending DHCPv6 queries.
All_DHCP_Relay_Agents_and_Servers (FF02::1:2) A link-scoped mul-
ticast address used by a client to communicate with neighboring (i.e.,
on-link) relay agents and servers. All servers and relay agents are
members of this multicast group.
All_DHCP_Servers (FF05::1:3) A site-scoped multicast address used by
a relay agent to communicate with servers, either because the relay
agent wants to send messages to all servers or because it does not
know the unicast addresses of the servers. Note that in order for a
relay agent to use this address, it must have an address of sufﬁcient
scope to be reachable by the servers. All servers within the site are
members of this multicast group.
As long as these addresses are available to the DHCP client, it can conﬁgure
itself with DHCP.
The client can send UDP messages without an IPv6 address but must pro-
vide some link layer address (otherwise, the responses from the servers
can’t be delivered). The default behavior for DHCP clients is to continue
sending all DHCP messages to the multicast addresses reserved for DHCP
services rather than directly to a speciﬁc DHCP server’s unicast address.
The reason for this is to allow the use of DHCP relay agents to pass