In modern networks, IPv6 is no longer optional — and neither is understanding how hosts get their IPv6 addresses. While IPv4 relies on DHCP, IPv6 offers two distinct address assignment methods: Stateless Address Autoconfiguration (SLAAC) and DHCPv6. The CCNA 200-301 exam (Objective 1.9) expects you to know the differences, the packet flows, and when to use each. Misunderstanding these can break networks or leave them vulnerable — so let's get it right.
Jump to a section
Imagine you're moving to a new city. You need a place to live — that's your IPv6 address. In the IPv4 world, you'd call a rental agency (DHCP server) and they'd assign you a specific apartment (address) and give you the keys (DNS, domain info). That's stateful DHCPv6: the server keeps a record of who lives where. But in IPv6, there's another option: SLAAC. With SLAAC, you walk into a new neighborhood and look at the street signs (Router Advertisement messages). The street signs tell you the neighborhood prefix (e.g., 2001:db8:1:2::/64), but you build your own house number using your unique ID (the EUI-64 interface identifier derived from your MAC address). No central landlord keeps track — it's stateless. Now, what if you also want services like DNS? You might need a helper: stateless DHCPv6, which provides the 'phone book' (DNS server) without assigning an address. So SLAAC gives you an address, stateless DHCPv6 gives you other config, and stateful DHCPv6 gives you both. Understanding this rental analogy helps you remember which protocol does what.
Why IPv6 Needs Different Address Assignment
IPv6 was designed with autoconfiguration as a core feature. The sheer size of the 128-bit address space (2^128 addresses) makes manual configuration impractical for large networks. More importantly, IPv6’s design philosophy emphasizes end-to-end connectivity and simpler network management. Two main methods emerged:
Stateless Address Autoconfiguration (SLAAC): Defined in RFC 4862. A host generates its own IPv6 address using a combination of a prefix learned from a router and a self-generated interface identifier.
DHCPv6: Defined in RFC 8415. A stateful or stateless server assigns addresses and/or other configuration parameters (like DNS servers). DHCPv6 is the IPv6 equivalent of DHCP for IPv4, but with important differences.
SLAAC: The Stateless Approach
SLAAC operates using Neighbor Discovery Protocol (NDP) messages, specifically Router Solicitation (RS) and Router Advertisement (RA).
Step-by-step SLAAC process:
Host sends RS: When an IPv6-enabled interface initializes (e.g., after boot or link-up), the host sends a Router Solicitation message to the all-routers multicast address ff02::2. This asks, "Are there any routers here?"
Router responds with RA: A router configured to support IPv6 (with ipv6 unicast-routing and an interface with an IPv6 address) responds with a Router Advertisement sent to the all-nodes multicast address ff02::1. The RA contains:
The prefix (e.g., 2001:db8:1:2::/64) and its prefix length.
The router's link-local address as the default gateway.
Flags: M flag (Managed address configuration) and O flag (Other configuration).
M=0, O=0: SLAAC only (no DHCPv6).
M=0, O=1: SLAAC for address, stateless DHCPv6 for other info.
M=1: Stateful DHCPv6 for address and other info.
Other parameters like hop limit, MTU, reachable time, retrans timer.
Host generates address: The host takes the 64-bit prefix from the RA and appends a 64-bit interface identifier. The default method is EUI-64, which uses the MAC address (48 bits) and inserts FF:FE in the middle to create a 64-bit ID. For example, MAC 00:1A:2B:3C:4D:5E becomes 021A:2BFF:FE3C:4D5E (note the 7th bit flipped from 0 to 1 to indicate universal/local scope). Modern operating systems often use privacy extensions (RFC 4941) that generate random temporary addresses to prevent tracking.
Duplicate Address Detection (DAD): Before using the address, the host sends a Neighbor Solicitation to the solicited-node multicast address (based on the tentative address) and waits for a response. If no Neighbor Advertisement is received, the address is considered unique. DAD is mandatory for all unicast addresses.
Address lifetime: The RA includes a Valid Lifetime and Preferred Lifetime. The address is preferred for new communications during the preferred lifetime, and valid for existing communications until the valid lifetime expires. Hosts should renew by sending RS or waiting for periodic RAs (default every 200 seconds).
DHCPv6: The Stateful and Stateless Options
DHCPv6 uses UDP port 546 (client) and 547 (server). The client uses its link-local address to communicate initially, then the assigned address.
Stateful DHCPv6:
- The RA has M=1 (and typically O=1).
- The host uses SLAAC for a link-local address, then sends a DHCPv6 SOLICIT message to ff02::1:2 (all DHCPv6 servers).
- DHCPv6 servers respond with ADVERTISE.
- The client selects a server and sends REQUEST.
- The server replies with REPLY, providing an IPv6 address (or prefix delegation) and other options (DNS, domain, etc.).
- The server maintains a lease database, just like DHCP for IPv4.
Stateless DHCPv6: - The RA has M=0, O=1. - The host gets its address via SLAAC, but then sends a DHCPv6 INFORMATION-REQUEST message to get other configuration (DNS, NTP, etc.). The server replies with REPLY containing the options, but no address.
Interaction with NDP and Other Protocols
SLAAC and DHCPv6 both rely on NDP for link-local addressing and DAD. The M and O flags in the RA determine the host's behavior. If a host receives conflicting RAs (e.g., from multiple routers), it uses the first received or the one with the highest preference (if using RFC 4191).
IOS CLI Verification Commands
To check IPv6 addressing and RA details on a Cisco router:
R1# show ipv6 interface GigabitEthernet0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::1
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:1:2::1, subnet is 2001:DB8:1:2::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
MTU is 1500 bytes
ICMP error messages limited to one every 100 milliseconds
ICMP redirects are enabled
ICMP unreachables are sent
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (default)
ND NS retransmit interval is 1000 milliseconds (default)
Default router is FE80::1 on GigabitEthernet0/0To see RAs being sent:
R1# debug ipv6 ndTo configure DHCPv6 pool:
R1(config)# ipv6 dhcp pool MYPOOL
R1(config-dhcpv6)# dns-server 2001:4860:4860::8888
R1(config-dhcpv6)# domain-name example.com
R1(config-dhcpv6)# exit
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ipv6 dhcp server MYPOOLTo enable stateless DHCPv6 on a client interface (Cisco IOS device as client):
R2(config-if)# ipv6 address autoconfig
R2(config-if)# ipv6 dhcp client information-requestDetermine RA Flag Combination
When a host boots, it sends an RS and receives an RA. The RA contains M and O flags. The combination dictates the method: M=0, O=0 means SLAAC only; M=0, O=1 means SLAAC for address + stateless DHCPv6 for other config; M=1 means stateful DHCPv6 (both address and other config). On the exam, you must be able to read these flags from a debug output or configuration and predict host behavior.
Host Performs SLAAC (if applicable)
If M=0, the host generates its own IPv6 address using the prefix from the RA and its interface identifier (EUI-64 or privacy extension). It then performs DAD by sending an NS to the solicited-node multicast address. If no NA is received, the address is unique. The host also sets the default gateway to the router's link-local address from the RA.
Host Initiates DHCPv6 (if needed)
If O=1 (stateless DHCPv6), the host sends an INFORMATION-REQUEST message to the all-DHCP-servers multicast address ff02::1:2. If M=1 (stateful), the host sends a SOLICIT message to ff02::1:2. The server responds with ADVERTISE (for stateful) or REPLY (for stateless). The client then sends REQUEST (stateful) or no further messages (stateless).
Configure Router for SLAAC Only
On the router interface, you need to enable IPv6 unicast routing and assign an IPv6 address. The router will automatically send RAs with M=0, O=0 by default. No additional configuration is needed. Example: ``` R1(config)# ipv6 unicast-routing R1(config)# interface GigabitEthernet0/0 R1(config-if)# ipv6 address 2001:DB8:1:2::1/64 R1(config-if)# no shutdown ``` The RA will include the prefix and default router info. Hosts will use SLAAC.
Configure Router for Stateless DHCPv6
Set the O flag to 1 using the `ipv6 nd other-config-flag` command on the interface. Also configure a DHCPv6 pool with DNS and domain info. Example: ``` R1(config)# ipv6 dhcp pool STATELESS R1(config-dhcpv6)# dns-server 2001:4860:4860::8888 R1(config-dhcpv6)# domain-name example.com R1(config-dhcpv6)# exit R1(config)# interface GigabitEthernet0/0 R1(config-if)# ipv6 nd other-config-flag R1(config-if)# ipv6 dhcp server STATELESS ``` Hosts will use SLAAC for address and DHCPv6 for DNS/domain.
Configure Router for Stateful DHCPv6
Set the M flag to 1 using the `ipv6 nd managed-config-flag` command. You must also configure a DHCPv6 pool that includes an address prefix (and optionally DNS). Example: ``` R1(config)# ipv6 dhcp pool STATEFUL R1(config-dhcpv6)# address prefix 2001:DB8:1:2::/64 R1(config-dhcpv6)# dns-server 2001:4860:4860::8888 R1(config-dhcpv6)# exit R1(config)# interface GigabitEthernet0/0 R1(config-if)# ipv6 nd managed-config-flag R1(config-if)# ipv6 dhcp server STATEFUL ``` Hosts will use DHCPv6 for both address and other config.
Verify Host Address Assignment
On a host PC (Windows, Linux, or Cisco router as client), use the appropriate command to see assigned IPv6 addresses. On a Cisco router client: ``` R2# show ipv6 interface brief GigabitEthernet0/0 [up/up] FE80::21A:2BFF:FE3C:4D5E 2001:DB8:1:2:21A:2BFF:FE3C:4D5E ``` If DHCPv6 was used, you might see a different address. Also check DHCPv6 binding: ``` R1# show ipv6 dhcp binding Client: FE80::21A:2BFF:FE3C:4D5E DUID: 0001000123456789ABCDEF01234567 Username: (none) IA PD: (none) IA NA: IA ID 0x00040001, T1 302400, T2 483840 Address: 2001:DB8:1:2:1234:5678:9ABC:DEF0 preferred lifetime 604800, valid lifetime 2592000 ``` This shows the DHCPv6-assigned address and its lease times.
In enterprise networks, the choice between SLAAC and DHCPv6 depends on administrative requirements. For a campus network where you need to track user devices for security or compliance, stateful DHCPv6 is preferred because the server maintains a lease database. You can correlate IP addresses to switch ports via DHCP snooping. For example, a university with 10,000 students might use stateful DHCPv6 on the wireless network to enforce usage policies and log connections.
However, many organizations prefer SLAAC for its simplicity and lower administrative overhead. In a data center where servers are statically assigned or use DNS-based discovery, SLAAC is often sufficient. The challenge is DNS: SLAAC alone does not provide DNS server addresses. This is solved by either using stateless DHCPv6 (O=1) or by configuring DNS via RDNSS (Recursive DNS Server option in RA), though not all OS support it. A common misconfiguration is setting M=1 without a DHCPv6 server, causing hosts to fail to get addresses. Another pitfall is forgetting to enable ipv6 unicast-routing globally — without it, the router won't send RAs.
Performance-wise, SLAAC is lightweight because it doesn't require a server. DHCPv6 adds server load and network overhead from lease renewals. For large networks, DHCPv6 servers should be redundant (e.g., using DHCPv6 failover). Also, note that SLAAC addresses are typically based on MAC, which can be a privacy concern; privacy extensions help but complicate tracking.
When troubleshooting, always start by checking the RA flags on the router interface with show ipv6 interface [interface]. Verify that the DHCPv6 pool is correctly configured and that the server is reachable. On the client, use ipconfig /all (Windows) or ifconfig (Linux) to see if an address is assigned. Common issues: mismatch between RA flags and DHCPv6 configuration, firewalls blocking DHCPv6 UDP ports, or missing IPv6 routing.
The CCNA 200-301 exam tests Objective 1.9: "Configure and verify IPv6 addressing and prefix." Within this, you must know the difference between SLAAC, stateless DHCPv6, and stateful DHCPv6. Expect questions that present an RA debug output and ask which method the host will use. You must interpret the M and O flags correctly.
Common wrong answers: 1. "SLAAC always provides DNS" — Wrong. SLAAC alone does not provide DNS. That's why stateless DHCPv6 exists. Candidates confuse SLAAC with the ability to get DNS from RA (RDNSS is not always supported). 2. "DHCPv6 is always stateful" — Wrong. DHCPv6 can be stateless (INFORMATION-REQUEST) or stateful (SOLICIT/REQUEST). The M flag determines this. 3. "Hosts cannot have both SLAAC and DHCPv6 addresses" — Wrong. Hosts can have multiple addresses: one from SLAAC, one from DHCPv6, and temporary privacy addresses. 4. "The default gateway is the DHCPv6 server" — Wrong. The default gateway is always the router's link-local address from the RA, not the DHCPv6 server.
Specific values: Default RA interval is 200 seconds. Valid lifetime default is 2592000 seconds (30 days). Preferred lifetime default is 604800 seconds (7 days). DAD attempts default is 1.
Decision rule: When you see a question about IPv6 address assignment, first check the M and O flags. M=1 => stateful DHCPv6. M=0, O=1 => SLAAC + stateless DHCPv6. M=0, O=0 => SLAAC only. If the question mentions DNS or domain, you need either stateless DHCPv6 or RDNSS.
Trap: Some questions show an RA with M=0, O=0 but then ask "What additional configuration is needed for DNS?" The answer is stateless DHCPv6 (O=1) or RDNSS. Do not choose "stateful DHCPv6" because that would also assign an address, which is unnecessary.
SLAAC uses Router Advertisements with M=0, O=0 to assign addresses without a server.
Stateless DHCPv6 (M=0, O=1) provides DNS/domain info but not addresses.
Stateful DHCPv6 (M=1) assigns both addresses and other config from a server.
Default RA interval is 200 seconds; valid lifetime default is 30 days.
Hosts perform DAD before using any unicast address.
The M and O flags in the RA determine the host's behavior.
Cisco routers need 'ipv6 unicast-routing' to send RAs.
These come up on the exam all the time. Here's how to tell them apart.
SLAAC
No server required
Address based on prefix + interface ID
No address tracking
No DNS provided (by default)
Uses RS/RA messages
Stateful DHCPv6
Requires DHCPv6 server
Address assigned by server
Server maintains lease database
Can provide DNS and other options
Uses SOLICIT/ADVERTISE/REQUEST/REPLY
Mistake
SLAAC provides DNS server addresses automatically.
Correct
SLAAC alone does not provide DNS. DNS can be obtained via stateless DHCPv6 (O=1) or RDNSS option in RA (not always supported).
Candidates assume that since SLAAC gives an address, it also gives other config, but it doesn't.
Mistake
DHCPv6 always assigns an IPv6 address.
Correct
DHCPv6 can be stateless (INFORMATION-REQUEST) which only provides options like DNS, not addresses. Stateful DHCPv6 assigns addresses.
The term 'DHCP' is associated with address assignment from IPv4, but DHCPv6 has two modes.
Mistake
The default gateway is learned from DHCPv6.
Correct
The default gateway is always the router's link-local address from the RA. DHCPv6 does not provide default gateway.
In IPv4, DHCP provides default gateway, so candidates incorrectly generalize to IPv6.
Mistake
A host can only use one address assignment method at a time.
Correct
A host can have multiple addresses: SLAAC, DHCPv6, and temporary privacy addresses can coexist.
IPv6 is designed for multiple addresses; this is a fundamental difference from IPv4.
Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.
SLAAC (Stateless Address Autoconfiguration) allows a host to generate its own IPv6 address using a prefix from a Router Advertisement and its own interface identifier (EUI-64 or privacy extension). It does not require a server. DHCPv6 is a client-server protocol that can assign addresses (stateful) or provide other configuration like DNS (stateless). The RA flags (M and O) determine which method hosts use. In short: SLAAC = no server, host creates address; DHCPv6 = server assigns address or options.
First, enable IPv6 routing with 'ipv6 unicast-routing'. On the interface, configure an IPv6 address. Then set the O flag with 'ipv6 nd other-config-flag'. Create a DHCPv6 pool with 'ipv6 dhcp pool NAME' and add DNS/domain. Apply the pool to the interface with 'ipv6 dhcp server NAME'. Hosts will use SLAAC for addresses and DHCPv6 for other info.
The M flag (Managed Address Configuration) tells hosts to use stateful DHCPv6 for address assignment. The O flag (Other Configuration) tells hosts to use stateless DHCPv6 for other parameters (DNS, domain). If both are 0, hosts use SLAAC only. If M=1, O is typically also 1. These flags are set with 'ipv6 nd managed-config-flag' (M) and 'ipv6 nd other-config-flag' (O).
Stateful DHCPv6 gives you central control over address assignment. You can track which device gets which IP, enforce policies, and integrate with DHCP snooping for security. SLAAC is simpler but doesn't allow tracking. For example, in a corporate network, you might use stateful DHCPv6 to log user connections. In a home network, SLAAC is sufficient.
Yes. The Router Advertisement includes the router's link-local address, which the host uses as its default gateway. This is true for all RA-based methods (SLAAC, stateless DHCPv6, stateful DHCPv6). The default gateway is never learned from DHCPv6.
DAD is a process where a host checks if an IPv6 address is already in use before assigning it. The host sends a Neighbor Solicitation to the solicited-node multicast address of the tentative address. If no Neighbor Advertisement is received, the address is unique. DAD is performed for all unicast addresses, including SLAAC and DHCPv6 addresses. It uses the Neighbor Discovery Protocol.
Use 'show ipv6 interface brief' to see all IPv6 addresses on interfaces. For DHCPv6 bindings, use 'show ipv6 dhcp binding'. To see RA details, use 'show ipv6 interface [interface]'. For example, 'show ipv6 interface GigabitEthernet0/0' shows the RA flags, prefix, and link-local address.
You've just covered DHCPv6 and SLAAC — now see how well it sticks with free CCNA 200-301 practice questions. Full explanations included, no account needed.
Done with this chapter?