IPv6 SLAAC and Neighbor Discovery Workbench

IPv6 SLAAC and Neighbor Discovery Workbench

Trace link-local setup, router advertisements, SLAAC, DAD, IPHC reconstruction, and constrained-link delivery

animation
ipv6
slaac
ndp
networking-core
6lowpan
Interactive IPv6 SLAAC and Neighbor Discovery animation for learning RS, RA, NS, NA, DAD, prefix formation, 6LoWPAN IPHC address reconstruction, and fragment budgeting.
Interactive animation IPv6 SLAAC and NDP

IPv6 SLAAC and Neighbor Discovery Workbench

Step through how an IoT node gets from no IPv6 address to a usable address and a working next hop. Watch which ICMPv6 message changes the address state, router state, and neighbor cache.

Tentative link-localAddress state
Create IIDCurrent message
None yetNext hop
TryLoad Industrial cell /64 with EUI-64 derived IID, then Step through RS, RA, DAD NS, and the no-conflict result.
ObserveAddress state moves tentative to preferred after 1 DAD exchange; enabling Context prefix /64 can reduce the 80 B datagram from 2 fragments to 1 frame.
ExplainRA supplies the /64 and default router, the IID completes 128 bits, DAD probes uniqueness, and LOWPAN_IPHC elides fields only when both peers share reconstruction context.
Technical boundariesThe bounded /64 lesson omits privacy/stable-secret IIDs, DHCPv6, context distribution/expiry, 6LoWPAN ND registration, secured ND, router failover, mesh-under forwarding, retries, and receiver reassembly.
Colour keynetworking core identitycurrent / primaryreference / datasuccesscautionerror / failure
Goal
Separate link-local setup, router discovery, prefix learning, DAD, and neighbor resolution.
Try
Run normal boot, duplicate address, same-link peer, and sleepy 6LoWPAN scenarios.
Watch
Use Step to connect each ICMPv6 message to one concrete state change.
Check
Decide whether the payload needs a direct neighbor or the default router as next hop.

Scenario Presets

Node Configuration

Address State and ICMPv6 Message Flow

A sensor joins a normal IPv6 subnet. It creates a link-local address, discovers a router, learns a /64 prefix, runs DAD, then resolves the next hop before sending data.

Ready: normal SLAAC boot loaded
Sensor
tentative
Router
RA source
On-link peer
actuator
Cloud
off-link
Start: the node has a link-layer identity but no assigned IPv6 address yet.

Address State

tentativeLink-local
not learnedGlobal or ULA
unknownDefault router
buildingCurrent result

Neighbor Cache and Diagnosis

Step through the flow to see when a tentative address becomes usable and when the node learns a link-layer next hop.

Targetnone
Entryempty
MeaningNo packet can leave until the address and next hop are ready.

SLAAC, DAD, and LOWPAN_IPHC joined trace

Form one bounded /64 address, prove whether DAD makes it usable, name every address reconstruction source, and pass the exact compressed datagram to the canonical 802.15.4 sender plan.

Zigbee & Thread · 6LoWPAN
TryLoad Global, no context. Then change only Shared context with the counterexample button.
ObserveBoth 128-bit addresses change from 16 inline bytes to named reconstruction sources; two fragments become one frame.
ExplainAddress formation and DAD do not prove the receiver owns the prefix context required for IPHC elision.

Bounded inputs

Causal trace

Load a fixture to begin.The address, field ledger, and sender plan remain synchronized.
Interface identifier
Candidate address
Solicited-node target
Usable address after DAD
Compressed header H
Compressed datagram D
Calculated sender plan
PHY airtime at 250 kb/s

One field ledger

H_joined = 2 + CID + TF + HLIM + src + dst + UDP NHC
airBytes = D + fragment headers + n × (H_MAC + 6)
Misconception: “Once an IPv6 address is formed, IPHC can always remove it.”
Without a shared global-prefix context, both addresses remain inline even after successful DAD.
Technical boundaries. This is a bounded /64 SLAAC, DAD, and LOWPAN_IPHC reconstruction lesson. It does not implement privacy or stable-secret IIDs, DHCPv6, non-/64 SLAAC, every RFC 6282 multicast/address mode, context distribution or expiry, 6LoWPAN ND registration lifetimes, secured ND, router failover, mesh-under forwarding, link retries, or receiver reassembly. The displayed header size is exact only for the shown field ledger. Verify the real context table, compressed capture, reconstructed IPv6 packet, DAD or registration evidence, and application receipt before making an interoperability claim.
Quick Reference
  • RS: Router Solicitation asks routers to advertise sooner.
  • RA: Router Advertisement can carry a Prefix Information Option; the autonomous flag lets hosts use SLAAC.
  • NS/NA: Neighbor Solicitation and Advertisement support DAD and link-layer address resolution.
  • DAD: A tentative address is not assigned if a duplicate is reported.
How To Debug

If the node has only `fe80::`, inspect RA reception and prefix flags. If the global address is tentative or failed, inspect DAD. If the address is assigned but packets do not leave, inspect the default route and neighbor cache entry for the selected next hop.

Technical Accuracy Notes
  • This animation uses documentation prefixes and simplified interface identifiers for teaching.
  • For off-link destinations, the node resolves the router as the link-layer next hop, not the cloud server.
  • Classic IPv6 ND uses multicast heavily. 6LoWPAN deployments often use ND optimizations and address registration to reduce multicast cost.
  • Modern systems do not have to expose MAC-derived EUI-64 interface identifiers; opaque or privacy-oriented identifiers are common.
Source Links