IPv6 prides itself as a protocol that supports many dynamic plug and play functionalities. As a result, there are multiple ways to assign IP addresses in IPv6. This guide will go over two methods of IPv6 address assignment: stateless and stateful
Stateful Address Assignment
Similar to IPv4, IPv6 can use DHCP to statefully assign IP addresses to any clients. Cisco IOS routers can be configured to be Stateful DHCP servers. Stateful DHCP means that the DHCP server is responsible for assigning the IP address to and client. The DHCP server keeps a record of all clients and the IPv6 address assigned to them. Below is a configuration example of a server and client using stateful DHCP.
Notice how the server can disable RA on its interface facing the client. This is because the DHCP process is completely responsible for assigning IP address to all clients on that Layer 3 segment.
ipv6 address dhcp
The client configuration is the same in IPv6 as it is for IPv4.
Stateless Address Assignment
This is a unique feature only to IPv6. Stateless address configuration means that the client picks their own address based on the prefix being advertised on their connected interface. All Cisco devices have the ability to participate in Stateless Autoconfiguration (SLAAC). By default, SLAAC does not provide anything to the client outside of an IPv6 address and a default gateway. Additional configuration on the server is necessary before the same information can be provided to the client as Stateful DHCP.
Moreover, it is important to note that SLAAC most commonly uses eui-64 format for address assignment. This means that IPv6 addresses will be built from a combination of the Layer 3 subnet prefix and the MAC address of the client. The requirement for SLAAC is that the LAN segment must use a /64 mask.
Cisco IOS routers support both Stateful DHCP and Stateless DHCP. Stateless DHCP does not track IPv6 address bindings per client. Rather, it uses DHCP only to hand out domain-names, DNS servers and other client relevant information. Below is a server and client configuration example for Stateless address assignment.
ipv6 dhcp pool IPV6_DHCPPOOL
ipv6 address 2001:DB8:1000::1/64
ipv6 nd other-config-flag
ipv6 dhcp server IPV6_DHCPPOOL
Notice that the DHCP pool configured on the sever has no address pool assigned. This is because the client will select their own IP address since this is a stateless address assignment solution. The router is acting as a stateless DHCP server. Its only role is to provide DNS server and domain name information to clients on this segment.
ipv6 address auto-config
The client is configured to use SLAAC by setting the "auto-config" option. This command is unique to IPv6 and is the most common way to obtain IP addresses via IPv6.
DHCP debugs can be used to verify the information passed from the server to the cilent. Below are two examples of the output of debug ipv6 dhcp detail. If stateful address assignment is configured, the following debugs should seen on the server:
*Apr 17 18:23:52.286: IPv6 DHCP: Received RELEASE from FE80::A8BB:CCFF:FE01:F500 on Ethernet0/0