🧪 Lab 01 · IPv6 Neighbor Discovery (ND) & SLAAC / DHCPv6¶
✅ Validated on Arista cEOS 4.32.0F. All outputs captured live from fabric in OrbStack.
Time: ~40 minutes · Nodes: 4 (2 Routers, 2 Leafs)
Quick Start — Step-by-Step Execution Guide (Location: labs/ipv6-lab/)
Step 1 · Deploy the Lab Fabric (if not already running)
cd labs/ipv6-lab
sudo containerlab deploy -t topology.clab.yml --max-workers 1
Step 2 · Launch the Fully Guided Interactive Walkthrough
./run.sh --guided
Alternative Execution Options (Automated Push or Manual CLI)
- Fast Automated Script Push:
./run.sh 01 # apply + verify step 01 automatically ./run.sh --all # run all steps in order - Manual Line-by-Line CLI Execution:
Interactive CLI shell on any container node:
docker exec -it clab-ipv6-lab-r1-v6 Cli
🧠 Technology Deep Dive: IPv6 Neighbor Discovery (ND)¶
IPv6 replaces IPv4 ARP (Address Resolution Protocol) broadcasts with ICMPv6 Neighbor Discovery (ND):
- Neighbor Solicitation (NS / Type 135): Multicast request sent to a Solicited-Node Multicast Address (ff02::1:ffxx:xxxx) asking for a target node's MAC address.
- Neighbor Advertisement (NA / Type 136): Unicast reply returning the link-layer MAC address.
- Router Advertisement (RA / Type 134): Periodic router broadcasts announcing default gateway and IPv6 network prefixes (2001:db8:1::/64) for SLAAC (Stateless Address Autoconfiguration).
Step 1 · Configure IPv6 Dual-Stack Interfaces¶
Configure IPv6 global unicast addresses (2001:db8::/64) and OSPF Area 0 on r1-v6, r2-v6, leaf1-v6, and leaf2-v6.
configure
hostname r1-v6
!
service routing protocols model multi-agent
!
ipv6 unicast-routing
!
interface Loopback0
ip address 10.255.0.1/32
ipv6 address 2001:db8:ffff::1/128
ip ospf area 0.0.0.0
!
interface Ethernet1
no switchport
ip address 10.0.1.1/30
ipv6 address 2001:db8:1::1/64
ip ospf area 0.0.0.0
!
interface Ethernet2
no switchport
ip address 10.0.1.5/30
ipv6 address 2001:db8:2::1/64
ip ospf area 0.0.0.0
!
router ospf 100
router-id 10.255.0.1
passive-interface Loopback0
configure
hostname r2-v6
!
service routing protocols model multi-agent
!
ipv6 unicast-routing
!
interface Loopback0
ip address 10.255.0.2/32
ipv6 address 2001:db8:ffff::2/128
ip ospf area 0.0.0.0
!
interface Ethernet1
no switchport
ip address 10.0.2.1/30
ipv6 address 2001:db8:3::1/64
ip ospf area 0.0.0.0
!
interface Ethernet2
no switchport
ip address 10.0.2.5/30
ipv6 address 2001:db8:4::1/64
ip ospf area 0.0.0.0
!
router ospf 100
router-id 10.255.0.2
passive-interface Loopback0
configure
hostname leaf1-v6
!
service routing protocols model multi-agent
!
ipv6 unicast-routing
!
interface Loopback0
ip address 10.255.0.11/32
ipv6 address 2001:db8:ffff::11/128
ip ospf area 0.0.0.0
!
interface Ethernet1
no switchport
ip address 10.0.1.2/30
ipv6 address 2001:db8:1::2/64
ip ospf area 0.0.0.0
!
interface Ethernet2
no switchport
ip address 10.0.2.2/30
ipv6 address 2001:db8:3::2/64
ip ospf area 0.0.0.0
!
router ospf 100
router-id 10.255.0.11
passive-interface Loopback0
configure
hostname leaf2-v6
!
service routing protocols model multi-agent
!
ipv6 unicast-routing
!
interface Loopback0
ip address 10.255.0.12/32
ipv6 address 2001:db8:ffff::12/128
ip ospf area 0.0.0.0
!
interface Ethernet1
no switchport
ip address 10.0.1.6/30
ipv6 address 2001:db8:2::2/64
ip ospf area 0.0.0.0
!
interface Ethernet2
no switchport
ip address 10.0.2.6/30
ipv6 address 2001:db8:4::2/64
ip ospf area 0.0.0.0
!
router ospf 100
router-id 10.255.0.12
passive-interface Loopback0
Step 2 · Production Verification¶
Verify IPv6 ping reachability from r1-v6 to leaf1-v6:
docker exec -i clab-ipv6-lab-r1-v6 Cli -p 15 <<'EOF'
enable
ping ipv6 2001:db8:1::2 repeat 2
EOF
PING 2001:db8:1::2(2001:db8:1::2) 72 bytes of data.
80 bytes from 2001:db8:1::2: icmp_seq=1 ttl=64 time=0.421 ms
80 bytes from 2001:db8:1::2: icmp_seq=2 ttl=64 time=0.380 ms
--- 2001:db8:1::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1ms
✅ DONE when ping ipv6 2001:db8:1::2 succeeds with 0% packet loss.
Clean up¶
sudo containerlab destroy -t topology.clab.yml