SLAAC: the IPv6 client builds its own address based on Router Advertisements (RA). DHCPv6: a server assigns IPv6 addresses and/or other parameters – stateless (client still uses SLAAC, DHCPv6 only supplies DNS etc.) or stateful (the server assigns the address itself and tracks clients).
Comparison
| Point | SLAAC | DHCPv6 stateless | DHCPv6 stateful |
|---|---|---|---|
| Assigns IPv6 address | ✅ (itself) | ❌ | ✅ (server) |
| Default gateway | ✅ (via RA) | ✅ (via RA) | ✅ (via RA) |
| DNS info | ❌ (normally) | ✅ | ✅ |
| Central control | ❌ | ⚠️ partial | ✅ |
| Typical use | Simple LANs | Enterprise LANs | Strictly controlled enterprise |
CCNA/CCNP key point: the IPv6 default gateway always comes from the Router Advertisement – never from DHCPv6.
How it works
SLAAC
- Client sends RS (Router Solicitation)
- Router replies with RA (Router Advertisement) containing the prefix (e.g. 2001:db8:1::/64) and the router’s link-local address (default gateway)
- The client builds its own Interface ID (EUI-64 or random)
- DAD (Duplicate Address Detection) ensures uniqueness
👉 No server needed.
DHCPv6 stateless
- RA flags: M=0, O=1
- RA gives prefix + gateway; DHCPv6 gives DNS, domain-name, NTP etc.
DHCPv6 stateful
- RA flag: M=1
- DHCPv6 server assigns the address + DNS + lease tracking; RA still provides the gateway
Stateless vs stateful
| Point | Stateless | Stateful |
|---|---|---|
| IPv6 address | ❌ (SLAAC does it) | ✅ (DHCPv6) |
| Default gateway | ✅ (RA) | ✅ (RA) |
| DNS / domain | ✅ | ✅ |
| Lease tracking | ❌ | ✅ |
| Central control | Low | High |
| Depends on SLAAC | ✅ | ❌ |
| RA flags | M=0, O=1 | M=1 |
Special considerations
- RA is always required (even with stateful DHCPv6)
- DHCPv6 uses UDP 546/547
- SLAAC requires a /64 prefix (very exam relevant)
- Security: RA Guard, DHCPv6 Guard, ND inspection
Extra features
- SLAAC: privacy extensions (RFC 4941), minimal overhead
- DHCPv6: lease tracking, IPAM integration, relay in L3 networks
Configuration
! SLAAC (RA only)
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::1/64
ipv6 enable
! DHCPv6 stateless
ipv6 dhcp pool DHCPV6-STATELESS
dns-server 2001:db8::53
domain-name example.local
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::1/64
ipv6 nd other-config-flag
ipv6 dhcp server DHCPV6-STATELESS
! DHCPv6 stateful
ipv6 dhcp pool DHCPV6-STATEFUL
address prefix 2001:db8:2::/64
dns-server 2001:db8::53
domain-name example.local
interface GigabitEthernet0/1
ipv6 address 2001:db8:2::1/64
ipv6 nd managed-config-flag
ipv6 dhcp server DHCPV6-STATEFUL
! DHCPv6 relay
interface GigabitEthernet0/2
ipv6 dhcp relay destination 2001:db8::10
Exam takeaways 🔥
- SLAAC requires /64
- Default gateway = RA, not DHCPv6
- The M and O flags determine client behaviour
- Stateless ≠ stateful DHCPv6