1. Introduction to IPv6 SLAAC
IPv6 SLAAC (Stateless Address Autoconfiguration) is a method that allows hosts to automatically configure their IPv6 address without using a DHCPv6 server.
In IPv6 networks, hosts can’t just pick any address at random, they need a valid Global Unicast Address (GUA) to communicate across the Internet.
But how do they get that address?
Figure 1 - Dynamic GUA Assignment differents approaches
There are two main approaches:
Stateful methods, where a DHCPv6 server assigns and tracks the addresses (similar to IPv4)
Stateless methods, where the host configures itself without needing any central server
SLAAC which stands for Stateless Address Autoconfiguration is the most common stateless method.
Defined in RFC 4862, it allows a host to automatically configure its Global Unicast IPv6 address without relying on DHCP.
How does SLAAC work?
All it needs is a router on the local network that can advertise a prefix. From there, the host can build its Global Unicast Address IPv6 address by:
Generating a Link-Local Address using EUI-64 or a random Interface ID.
Sending a Router Solicitation (RS) to request the network prefix.
Receiving a Router Advertisement (RA) with the network prefix.
Combining the Network Prefix with its Interface ID to form the Global Unicast Address (GUA).
Figure 2 - SLAAC Process Step by Step Simplified
Now that you’ve seen the big picture, let’s explore each step in detail.
2. SLAAC Step-by-Step
Step 1: Host generates a Link-Local Address
As soon as PC1 connects to the network and IPv6 is enabled, it automatically generates a Link-Local Address.
This address allows communication only within the local segment.
Figure 4 - Topology we used to demonstrate SLAAC
The Link-Local Address is built from:
A Fixed Prefix → FE80::/64
An Interface ID → based on the MAC address (using EUI-64) or randomly generated.
The interface ID need to be calculated in order to create our Link Local Address, in this example we will use EUI-64.
Building the Link-Local Address with EUI-64
We start by looking at the PC1 device MAC Address in order to begin the EUI-64 process :
Figure 5 - EUI 64 Process Step by Step
PC1 have successfully generates its Link-Local Address (FE80::21A:2BFF:FE3C:4D5E), it appears now in the interface output:
C:\Users\PC1> ipconfig /all
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix..:
Physical Address................: 001A.2B3C.4D5E
Link-local IPv6 Address.........: FE80::21A:2BFF:FE3C:4D5E
IP Address......................: 0.0.0.0
Subnet Mask.....................: 0.0.0.0
Default Gateway.................: 0.0.0.0
DNS Servers.....................: 0.0.0.0
DHCP Servers....................: 0.0.0.0
DHCPv6 Client DUID..............: 00-01-00-01-26-AB-91-42-00-1A-2B-3C-4D-5E
Once the Link-Local Address has been created, we need to make sure no other device is already using it on the local network.
To verify this, the host runs a process called Duplicate Address Detection (DAD).
Step 2: Run Duplicate Address Detection (DAD)
Every time an IPv6 address is created, the host automatically subscribes to a special multicast group called the solicited-node multicast address.
This multicast address is derived from the last 24 bits of the IPv6 address, and it's unique for each address.
For example:
Link-Local Address:
FE80::21A:2BFF:FE3C:4D5E
Last 24 bits:
3C:4D5E
→ Solicited-node multicast address:
FF02::1:FF3C:4D5E
This multicast group ensures that only devices configured with the exact same address will receive the message.
You can confirm that PC1 has joined this group with:
C:\Users\PC1> netsh interface ipv6 show joins
Interface 12: Ethernet0
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 1 Yes ff02::1 (All-nodes)
0 1 Yes ff02::2 (All-routers)
0 2 Yes ff02::1:ff3c:4d5e (For DAD)
At this point, PC1 sends a Neighbor Solicitation (NS) to the solicited-node multicast address:
Source address →
::
(unspecified, since the address is not yet valid)Destination →
FF02::1:FF3C:4D5E
(Multicast)Target →
FE80::21A:2BFF:FE3C:4D5E
(Link-Local Address)
Figure 6 - PC1 sends NS to check if the link local address is used
Other devices like PC2 or R1 ignore this message because they are not subscribed to the FF02::1:FF3C:4D5E
multicast group.
Figure 7 - Neighbors don't respond
If another host was already using this address, it would have responded to the NS, and the address would be rejected.
Now PC1 can communicate with local devices using this Link-Local Address.
But to reach the Internet or any global destination, it still needs a Global Unicast Address (GUA).
How Is the GUA Built?
Figure 8 - Global Unicast IPv6 Address
To build its Global Unicast Address, the host needs two elements:
A Network Prefix, provided by the router (via SLAAC)
An Interface ID, generated locally using EUI-64 or a random value.
To obtain the prefix, PC1 must contact a local router using Router Solicitation.
Step 3: Send a Router Solicitation (RS)
PC1 sends a Router Solicitation (RS) to the multicast group for all routers: FF02::2
Its goal is to ask about the Network Prefix the host can use to build its GUA Address.
The RS message is sent automatically when PC1 apply the link local address to his interface.
Step 4: Receive Router Advertisement (RA)
The router (R1) receives the RS and responds with a Router Advertisement (RA).
This RA message contains:
A Network Prefix, in our example:
2001:db8:acad:1::/64
A set of configuration flags:
A (Autonomous) → Tells the host: “You’re allowed to use this prefix and build your own IPv6 address using SLAAC”
O (Other) → Optional info like DNS can be provided by DHCPv6
M (Managed) → A DHCPv6 server is required to assign the address
In a typical SLAAC configuration, the router sets only the A flag, indicating the host to build its own Global Unicast Address (GUA) using SLAAC.
The Network Prefix received from the router:
2001:db8:acad:1::/64
Its Interface ID (generated with EUI-64 from the MAC address):
021A:2BFF:FE3C:4D5E
Resulting GUA:
2001:db8:acad:1:021A:2BFF:FE3C:4D5E/64
Step 5: Perform DAD on the Global Unicast Address (GUA)
Just like with the Link-Local Address, the host must verify that no other device is already using the same Global Unicast Address on the local network.
To do this, PC1 sends a Neighbor Solicitation (NS) message to the solicited-node multicast address derived from the last 24 bits of its GUA.
If another device is already using this address, it will respond to the NS.
If there’s no response, the address is considered unique.
In our case, no device replies, so PC1 assigns the GUA to its interface:
Final IPv6 Configuration
At this point, PC1 has:
A Global Unicast Address (GUA)
→2001:db8:acad:1:021A:2BFF:FE3C:4D5E/64
A Link-Local Address
→FE80::21A:2BFF:FE3C:4D5E
You can confirm the full configuration with:
C:\Users\PC1> ipconfig /all
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix..:
Physical Address................: 001A.2B3C.4D5E
Link-local IPv6 Address.........: FE80::21A:2BFF:FE3C:4D5E
IPv6 Address....................: 2001:db8:acad:1:21A:2BFF:FE3C:4D5E
Subnet Prefix...................: 2001:db8:acad:1::/64
Default Gateway.................: FE80::1
DHCP Servers....................: ::
DHCPv6 Client DUID..............: 00-01-00-01-26-AB-91-42-00-1A-2B-3C-4D-5E
DNS Servers.....................: ::
As shown above, the host has also received a Default Gateway (FE80::1
) from the router via the Router Advertisement (RA). This Link-Local address is used as the next-hop for packets going outside the local network.
All of this happens automatically no DHCPv6 server needed, thanks to SLAAC.
3. Configuring SLAAC on a Cisco Router
To enable SLAAC on a Cisco router, follow these steps:
Enable IPv6 routing globally
Activate IPv6 on the interface
Assign a Global Unicast Address (GUA) to the interface
Once these steps are completed, the router automatically starts sending Router Advertisement (RA) messages on the local network segment. These RAs allow hosts to configure their IPv6 addresses using SLAAC.
1. Enable IPv6 Routing Globally
R1(config)# ipv6 unicast-routing
This command enables IPv6 forwarding across the router and activates RA functionality on interfaces that have IPv6 addresses.
2. Enable IPv6 on the Interface
R1(config)# interface g0/0
R1(config-if)# ipv6 enable
This enables IPv6 processing on the interface and generates a Link-Local Address automatically (prefix FE80::/64).
3. Assign a Global Unicast Address (GUA)
R1(config-if)# ipv6 address 2001:db8:acad:1::1/64
This address defines the prefix that will be advertised in RA messages.
Hosts receiving this prefix will use it to build their own GUA using SLAAC.
Verify Configuration
We can now verify the interface with:
R1# show ipv6 interface g0/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:acad:1::1, subnet is 2001:db8:acad:1::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
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 (using 30000)
ND advertised reachable time is 0 (unspecified)
ND advertised retransmit interval is 0 (unspecified)
ND router advertisements are sent every 200 seconds
ND router advertisements live for 1800 seconds
ND advertised default router preference is Medium
Hosts use stateless autoconfig for addresses.
4. Conclusion
IPv6 SLAAC allows hosts to quickly configure their IPv6 addresses without needing a DHCP server.
Below is the global SLAAC diagram as a reminder.
At each step, the host checks if the Link-Local Address or the Global Unicast Address is already in use before applying it to helps avoid IP address conflicts on the network.