SLAAC – Stateless Address Autoconfiguration
1. What Is SLAAC and Why Does It Exist?
Stateless Address Autoconfiguration (SLAAC) is an IPv6 mechanism defined in RFC 4862 that allows a host to automatically configure a globally routable IPv6 address for itself — without a DHCP server, without manual configuration, and without any centralised state being maintained about the address assignment. The host derives its own address by combining a network prefix advertised by a local router with an interface identifier generated from its MAC address (or a random value).
SLAAC is one of the defining features that distinguishes IPv6 address management from IPv4. In IPv4, automatic address assignment requires either DHCP or APIPA (link-local only). In IPv6, SLAAC enables true plug-and-play global addressing — a device can join a network and configure a routable address within seconds, with no server infrastructure required.
| Characteristic | SLAAC | IPv4 DHCP |
|---|---|---|
| Server required? | No — host self-configures from Router Advertisement | Yes — DHCP server must be present and reachable |
| State maintained? | No — "stateless"; router does not track which host has which address | Yes — DHCP server maintains a lease database per client |
| Address uniqueness check | Host performs Duplicate Address Detection (DAD) via NDP | DHCP server manages the pool to prevent conflicts |
| Gateway provided? | Yes — Router Advertisement includes the default gateway (router's link-local address) | Yes — DHCP Option 3 |
| DNS server provided? | Via RDNSS option in RA (RFC 8106) or stateless DHCPv6 | Yes — DHCP Option 6 |
| Address predictability | Partially predictable (EUI-64 uses MAC) or random (RFC 8981 privacy extensions) | Controlled by DHCP server — can be static or dynamic |
Related pages: IPv6 Overview | IPv6 Addressing | Link-Local vs Global Unicast | IPv6 Neighbour Discovery (NDP) | DHCP Overview | DHCP How It Works | DHCP Configuration | DHCP Relay | DHCPv6 & SLAAC Lab | IPv6 Basic Configuration Lab
2. IPv6 Address Types Involved in SLAAC
Before tracing through the SLAAC process, you need to understand the two address types that every IPv6 interface automatically acquires and how they relate to SLAAC.
| Address Type | Prefix | Scope | How Acquired | Role in SLAAC |
|---|---|---|---|---|
| Link-Local Address | FE80::/10 | Link-local only — never routed beyond the local segment | Auto-generated from EUI-64 or random IID as soon as IPv6 is enabled on an interface — no router needed | Used as the source address for RS (Router Solicitation) messages and as the default gateway address in Router Advertisements |
| Global Unicast Address (GUA) | 2000::/3 (typically 2001::/16 or 2400::/12) | Globally routable — equivalent to a public IPv4 address | Configured via SLAAC (prefix from RA + self-generated IID) or DHCPv6 | The primary address SLAAC assigns — allows the host to communicate beyond the local link |
A host's link-local address is available immediately when IPv6 is enabled. The global unicast address via SLAAC is configured only after a Router Advertisement is received containing a prefix with the A flag (Autonomous Address Configuration flag) set.
3. Neighbour Discovery Protocol (NDP) — The Foundation of SLAAC
SLAAC is built on top of the Neighbour Discovery Protocol (NDP), defined in RFC 4861. NDP is to IPv6 what ARP is to IPv4 — but significantly more capable. NDP uses ICMPv6 messages and operates on the local link using multicast. The five NDP message types relevant to SLAAC are:
| NDP Message | ICMPv6 Type | Direction | Purpose |
|---|---|---|---|
| Router Solicitation (RS) | Type 133 | Host → All Routers multicast (FF02::2) | Host requests an immediate Router Advertisement rather than waiting for the periodic RA interval |
| Router Advertisement (RA) | Type 134 | Router → All Nodes multicast (FF02::1) | Router periodically (or in response to RS) advertises the network prefix, flags, MTU, hop limit, and default gateway information |
| Neighbour Solicitation (NS) | Type 135 | Host → Solicited-node multicast | Used for address resolution (like ARP Request) and Duplicate Address Detection (DAD) |
| Neighbour Advertisement (NA) | Type 136 | Host → Unicast or All Nodes multicast | Response to NS — provides MAC address (like ARP Reply); also sent unsolicited when a host changes its link-layer address |
| Redirect | Type 137 | Router → Host | Informs a host of a better first-hop router for a specific destination (equivalent to ICMP Redirect in IPv4) |
See IPv6 Neighbour Discovery (NDP) for full detail on all NDP message types and multicast group addressing.
4. The SLAAC Process – Step by Step
When an IPv6-enabled host connects to a network, it follows this sequence to configure a global unicast address using SLAAC:
| Step | Action | NDP Message Used |
|---|---|---|
| 1 | Generate a link-local address. The host creates a link-local address using the FE80::/10 prefix combined with an Interface Identifier (IID) derived from its MAC address (EUI-64) or a random value. | — |
| 2 | Perform Duplicate Address Detection (DAD). Before using the link-local address, the host sends a Neighbour Solicitation to the solicited-node multicast address for its tentative address. If no Neighbour Advertisement is received back, the address is unique and can be used. | NS (Type 135) → NA (Type 136) if duplicate found |
| 3 | Send a Router Solicitation. The host sends an RS to the all-routers multicast address (FF02::2) to request an immediate Router Advertisement, rather than waiting up to 200 seconds for the next periodic RA. | RS (Type 133) — source: host's link-local; destination: FF02::2 |
| 4 | Receive a Router Advertisement. The router responds with an RA sent to all nodes (FF02::1). The RA contains the network prefix (e.g., 2001:DB8:ACAD:1::/64), prefix length, flags (M, O, A), lifetime values, MTU, and the router's link-local address as the default gateway. | RA (Type 134) — source: router's link-local; destination: FF02::1 |
| 5 | Check the A flag. If the Autonomous Address Configuration flag (A=1) is set in the Prefix Information Option of the RA, the host proceeds to self-configure a global unicast address using SLAAC. | — |
| 6 | Generate the Global Unicast Address. The host combines the 64-bit prefix from the RA with a self-generated 64-bit Interface Identifier (IID) to form the full 128-bit GUA. The IID is derived using EUI-64 or generated randomly (RFC 8981 privacy extensions). | — |
| 7 | Perform DAD on the new GUA. The host sends a Neighbour Solicitation for the tentative GUA. If no conflict is detected within 1 second (default), the address is assigned and marked as preferred. | NS (Type 135) → NA (Type 136) if duplicate found |
| 8 | Configure the default gateway. The host uses the router's link-local address (source address of the RA) as its default gateway — no separate gateway configuration needed. | — |
5. EUI-64 – Interface Identifier Generation
EUI-64 (Extended Unique Identifier – 64 bit) is the original method for generating the 64-bit Interface Identifier (IID) from a 48-bit MAC address. The IID is the host portion of an IPv6 address when using a /64 prefix — it occupies the lower 64 bits of the 128-bit address.
5.1 EUI-64 Conversion Process
| Step | Action | Example |
|---|---|---|
| 1 | Take the 48-bit MAC address | AA:BB:CC:DD:EE:FF |
| 2 | Split it in half at the 3rd and 4th octets | AA:BB:CC | DD:EE:FF |
| 3 | Insert FF:FE in the middle to expand to 64 bits |
AA:BB:CC:FF:FE:DD:EE:FF |
| 4 | Flip the 7th bit (Universal/Local bit — bit 6 of the first octet, 0-indexed). If it was 0, set it to 1; if it was 1, set it to 0. This converts between globally unique (OUI-based) and locally administered addressing. | AA = 10101010 → flip bit 6 → 10101000 =
A8 |
| 5 | The resulting 64-bit EUI-64 IID in IPv6 colon notation | A8BB:CCFF:FEDD:EEFF |
| 6 | Combine with the 64-bit prefix from the RA to form the GUA | Prefix 2001:DB8:ACAD:1::/64 +
IID A8BB:CCFF:FEDD:EEFF→ GUA: 2001:DB8:ACAD:1:A8BB:CCFF:FEDD:EEFF |
5.2 The U/L Bit — Why It Is Flipped
The Universal/Local (U/L) bit is bit 6 of the first octet of the MAC
address (counting from bit 0 on the right). In IEEE MAC addressing, this bit
indicates whether the address is universally administered (0 — globally
unique, assigned by the manufacturer) or locally administered (1 —
assigned locally). EUI-64 flips this bit to indicate the address was derived
from a MAC address, signalling the address is derived from a globally unique
identifier. In practice, since most MAC addresses are universally administered
(bit = 0), EUI-64 IIDs typically have this bit set to 1 (the 02
pattern in many Cisco router loopback EUI-64 addresses).
5.3 EUI-64 Privacy Concern and RFC 8981
Because EUI-64 encodes the device's MAC address directly into the IPv6 address, the same IID appears in every network the device joins — enabling device tracking across networks. RFC 8981 (Privacy Extensions for SLAAC) addresses this by generating a random IID instead of deriving it from the MAC address. Modern operating systems (Windows, macOS, Linux, iOS, Android) use privacy extensions by default, generating temporary random addresses that change periodically.
| IID Method | Source | Privacy | Stability | Common Usage |
|---|---|---|---|---|
| EUI-64 | Derived from MAC address | Low — MAC embedded in address | Stable — same IID on every network | Routers, network infrastructure, servers |
| Random (RFC 8981) | Cryptographically random | High — no MAC linkage | Changes periodically (hours to days) | End-user devices: PCs, phones, tablets |
| Stable Random (RFC 7217) | Hash of network prefix + MAC + secret key | High — no MAC linkage | Stable per-network (same address on same network) | Modern OS default for non-temporary addresses |
6. Router Advertisement Flags – M, O, and A
The Router Advertisement message contains flags that tell hosts which address configuration method to use. Understanding M, O, and A flags is critical for CCNA and for understanding how SLAAC, stateless DHCPv6, and stateful DHCPv6 co-exist.
6.1 The M Flag and O Flag (in the RA header)
| Flag | Name | When Set (= 1) | When Cleared (= 0) |
|---|---|---|---|
| M | Managed Address Configuration | Host should obtain its IPv6 address from a stateful DHCPv6 server (DHCPv6 assigns and tracks the address) | Host should use SLAAC to self-configure its address (default) |
| O | Other Configuration | Host should contact a stateless DHCPv6 server to obtain other configuration parameters (DNS servers, domain name, NTP) — but not the address itself | No other configuration needed from DHCPv6 (default) |
6.2 The A Flag (in the Prefix Information Option)
| Flag | Name | When Set (= 1) | When Cleared (= 0) |
|---|---|---|---|
| A | Autonomous Address Configuration | Host may use this prefix to self-configure a SLAAC address (combines prefix with its own IID) | This prefix should not be used for SLAAC — host must obtain an address from DHCPv6 |
6.3 Flag Combinations and Resulting Behaviour
| M Flag | O Flag | A Flag | Address Configuration Method | Other Config (DNS etc.) |
|---|---|---|---|---|
| 0 | 0 | 1 | SLAAC only — host self-configures GUA from RA prefix | Via RDNSS option in RA (RFC 8106) — no DHCPv6 needed |
| 0 | 1 | 1 | SLAAC + Stateless DHCPv6 — host self-configures GUA from RA, then contacts DHCPv6 server for DNS and other parameters only | From stateless DHCPv6 server |
| 1 | 0 | 0 | Stateful DHCPv6 only — host obtains full address and configuration from DHCPv6 server; SLAAC not used for the GUA | From stateful DHCPv6 server (included in DHCPv6 reply) |
| 1 | 1 | 0 | Stateful DHCPv6 only — address from DHCPv6 server | From DHCPv6 server (O flag is redundant when M=1) |
| 0 | 0 | 0 | No prefix for SLAAC; no DHCPv6 — host uses only its link-local address (no GUA configured) | None |
Default Cisco router RA: M=0, O=0, A=1 — pure SLAAC. Unless you
explicitly configure the M or O flags (with ipv6 nd managed-config-flag
or ipv6 nd other-config-flag), the router sends RAs that tell
hosts to use SLAAC only.
7. Router Advertisement Key Fields
A Router Advertisement carries multiple fields that hosts use to configure themselves. The most important for SLAAC are:
| RA Field / Option | Purpose | Example Value |
|---|---|---|
| Source Address | Router's link-local address — becomes the host's default gateway | FE80::1 |
| M Flag | Managed Address Configuration (use stateful DHCPv6 for address) | 0 (SLAAC) or 1 (DHCPv6) |
| O Flag | Other Configuration (use stateless DHCPv6 for DNS etc.) | 0 (no DHCPv6) or 1 (DHCPv6 for other config) |
| Router Lifetime | How long (in seconds) this router should be used as the default gateway. 0 = not a default gateway. | 1800 seconds (30 minutes) |
| Reachable Time | How long a neighbour is considered reachable after last confirmation | 30,000 ms |
| Retrans Timer | Time between retransmitted NS messages for DAD and address resolution | 1,000 ms |
| Prefix Information Option | Advertises the network prefix for SLAAC — includes prefix, prefix length, A flag, L flag, valid lifetime, and preferred lifetime | 2001:DB8:ACAD:1::/64, A=1, valid lifetime=2592000 s |
| MTU Option | Recommended MTU for the link | 1500 bytes |
| RDNSS Option (RFC 8106) | Recursive DNS Server — provides DNS server addresses directly in the RA without needing DHCPv6 | 2001:DB8::53 |
8. Duplicate Address Detection (DAD)
Duplicate Address Detection (DAD) is an NDP process that every IPv6 host performs before assigning any address — link-local or global — to ensure no other device on the link is already using that address. DAD is defined in RFC 4862 and is mandatory for all SLAAC-configured addresses.
| Step | Action |
|---|---|
| 1 | The host marks the address as tentative — it is not yet used for sending or receiving traffic |
| 2 | The host sends a Neighbour Solicitation (NS) with:
source = :: (unspecified address), destination = the
solicited-node multicast address for the tentative address
(FF02::1:FFxx:xxxx where xx:xxxx are the last 24 bits of the address) |
| 3 | The host waits 1 second (RetransTimer default) for a response |
| 4a | If no Neighbour Advertisement is received — no other device is using the address. The address transitions from tentative to preferred and is assigned to the interface. |
| 4b | If a Neighbour Advertisement is received — a conflict is detected. The address is marked duplicate and cannot be used. Manual intervention or a new IID must be generated. |
DAD is also performed by routers on their own interfaces when IPv6 is enabled.
On Cisco IOS, DAD can be verified with show ipv6 interface — the
output shows the DAD attempt count and whether any duplicates were detected.
9. SLAAC vs DHCPv6 – Full Comparison
IPv6 supports three address assignment models. Understanding the difference between them — and when each is appropriate — is a key CCNA topic.
| Feature | SLAAC Only | SLAAC + Stateless DHCPv6 | Stateful DHCPv6 |
|---|---|---|---|
| RA M Flag | 0 | 0 | 1 |
| RA O Flag | 0 | 1 | 0 or 1 |
| RA A Flag | 1 | 1 | 0 |
| Address assignment | Host self-configures from RA prefix + IID | Host self-configures from RA prefix + IID | DHCPv6 server assigns a specific address |
| DHCPv6 server needed? | No | Yes — for DNS/other config only | Yes — for address and all config |
| Address tracking (server side) | None — completely stateless | None — server only provides DNS, no address binding | Full — server maintains binding table (IP + MAC + lease) |
| Default gateway | From RA source address (router's link-local) | From RA source address | From RA source address (DHCPv6 does not provide gateway) |
| DNS servers | Via RDNSS option in RA (RFC 8106) | From stateless DHCPv6 server | From stateful DHCPv6 server |
| Admin control over address | None — host generates its own IID | None — host generates its own IID | Full — administrator controls address pool and assignments |
| Typical use case | Home networks, small offices, IoT | Enterprise with SLAAC addressing but centralised DNS management | Enterprise networks requiring address tracking and control — may use a DHCP relay agent when the server is on a different subnet |
Important note: In IPv6, the default gateway is always provided by the Router Advertisement — regardless of whether SLAAC or DHCPv6 is used for the address. DHCPv6 does not provide a default gateway option (unlike IPv4 DHCP Option 3). This means a Router Advertisement must always be present on the link, even in a stateful DHCPv6 deployment.
10. Cisco IOS Configuration for SLAAC
On Cisco IOS, enabling IPv6 on a router interface automatically triggers periodic Router Advertisement sending. The default RA includes the interface prefix with A=1 (SLAAC enabled), M=0, and O=0 — pure SLAAC mode.
10.1 Enable IPv6 and SLAAC on a Router Interface
! Enable IPv6 routing globally
Router(config)# ipv6 unicast-routing
! Configure IPv6 address on the LAN interface (this also sends RAs automatically)
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 address 2001:DB8:ACAD:1::1/64
Router(config-if)# no shutdown
Router(config-if)# exit
10.2 Configure RA for SLAAC + Stateless DHCPv6 (O Flag)
! Set the O flag — hosts use SLAAC for address, DHCPv6 for DNS/other config
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 nd other-config-flag
Router(config-if)# exit
10.3 Configure RA for Stateful DHCPv6 (M Flag)
! Set the M flag — hosts use stateful DHCPv6 for address assignment
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 nd managed-config-flag
Router(config-if)# exit
! Also clear the A flag to suppress SLAAC address generation
Router(config-if)# ipv6 nd prefix 2001:DB8:ACAD:1::/64 no-autoconfig
10.4 Suppress Router Advertisements (on a specific interface)
! Stop sending RAs on an interface facing the WAN (security best practice)
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ipv6 nd ra suppress all
Router(config-if)# exit
10.5 Configure EUI-64 Address on a Cisco Interface
! Router generates its own IPv6 address using EUI-64 from interface MAC
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 address 2001:DB8:ACAD:1::/64 eui-64
Router(config-if)# exit
For a complete lab, see DHCPv6 & SLAAC Configuration Lab and IPv6 Basic Configuration Lab.
11. SLAAC Verification Commands
| Command | Platform | Output / Purpose |
|---|---|---|
show ipv6 interface GigabitEthernet0/0 |
Cisco IOS (router) | Shows IPv6 addresses assigned (link-local + GUA), RA sending interval, M/O flag status, DAD attempts, and join multicast groups |
show ipv6 neighbors |
Cisco IOS | IPv6 neighbour cache — equivalent of the IPv4 ARP table; shows IP, MAC, state (REACH, STALE, INCOMPLETE) |
show ipv6 routers |
Cisco IOS (host/client) | Displays RA-derived default router information — router address, lifetime, M/O flags |
show ipv6 route |
Cisco IOS | IPv6 routing table — SLAAC-configured default route appears as a route via the router's link-local address (see also show ip route for IPv4 equivalent) |
debug ipv6 nd |
Cisco IOS | Real-time NDP messages — RS, RA, NS, NA events including SLAAC address configuration and DAD |
ipconfig /all |
Windows | Shows all IPv6 addresses including link-local, SLAAC GUA, and temporary (privacy extension) addresses |
ip -6 addr show |
Linux | Lists all IPv6 addresses per interface with scope and flags (dynamic, temporary, mngtmpaddr) |
netsh interface ipv6 show addresses |
Windows | Detailed IPv6 address information including DAD state, lifetime, and origin (SLAAC, DHCPv6, or manual) |
12. SLAAC Quick-Reference Summary
| SLAAC Concept | Key Fact |
|---|---|
| Full name | Stateless Address Autoconfiguration |
| RFC | RFC 4862 |
| Protocol basis | NDP (Neighbour Discovery Protocol) — ICMPv6 RS and RA messages |
| Server required? | No — completely serverless address configuration |
| Host sends first | Router Solicitation (RS) — ICMPv6 Type 133 to FF02::2 |
| Router responds with | Router Advertisement (RA) — ICMPv6 Type 134 to FF02::1 |
| A flag = 1 means | Host may use this prefix for SLAAC (self-configure a GUA) |
| M flag = 1 means | Use stateful DHCPv6 for address assignment |
| O flag = 1 means | Use stateless DHCPv6 for other config (DNS etc.) — not the address |
| IID generation (default) | EUI-64 from MAC address (or random with RFC 8981 privacy extensions) |
| EUI-64 key step | Insert FF:FE in the middle of MAC, then flip the 7th bit (U/L bit) |
| Default gateway source | Router's link-local address (source of RA) — always from RA, not DHCPv6 |
| Address uniqueness check | Duplicate Address Detection (DAD) via Neighbour Solicitation |
| Cisco enable SLAAC | ipv6 unicast-routing + ipv6 address <prefix>/64
on interface — RAs sent automatically |
| DHCPv6 provides gateway? | No — gateway always comes from RA regardless of DHCPv6 mode |