2001:db8:1::1000:00:5e:00:53:10TENTATIVEIN USENeighbor cacheIPv6 addressMAC addressState2001:db8:1::20?00:00:5e:00:53:20INCOMPLETEREACHABLESTALE2001:db8:2::2000:00:5e:00:53:20STALE2001:db8:1::202001:db8:2::2000:00:5e:00:53:20IPV6 · MACfe80::12001:db8:1::100:00:5e:00:53:01
Envelopes: one ICMPv6 message each; ? = a Solicitation, router = Router Advertisement, tag = Neighbor Advertisement, arrow = Redirect, page = your dataLaptops and router: each shows its IPv6 address and MACYellow board: your neighbor cache, with a state for each rowSwitch: copies multicast to every port; each network card keeps only the groups it joinedIPv6 has no ARP. Your computer (2001:db8:1::10) first checks its address is unique (Duplicate Address Detection), asks for routers (ff02::2) and hears the router's advertisement (ff02::1). To find the neighbor's MAC it sends a Neighbor Solicitation to the solicited-node group ff02::1:ff00:20 and gets a unicast Neighbor Advertisement back; the cache row goes INCOMPLETE → REACHABLE → STALE. A packet sent the long way through the router earns a Redirect, so the next one goes direct. Addresses come from the IPv6 documentation prefix 2001:db8::/32 (RFC 3849); MACs from the documentation block 00:00:5e:00:53:xx (RFC 9542). The short endings ::10, ::20 and ::1 are set by hand so they are easy to read; most computers pick random 64-bit endings (RFC 7217, RFC 8981).

Join the link

  1. Your computer joins a network with the IPv6 address 2001:db8:1::10. IPv6 has no ARP and no broadcast. Neighbor Discovery does that job: small ICMPv6 messages sent to multicast groups, addresses that only interested devices listen to.

Find a neighbor

Redirects

The message, field by field

;; step 1/10 · no-arp
;; at You ::10
you:  2001:db8:1::10   (link-local fe80::10)
      MAC 00:00:5e:00:53:10
Neighbor Discovery = RFC 4861, inside ICMPv6 (next header 58)
frames are plain IPv6, type 0x86dd; ARP needed its own type 0x0806
every ND message leaves with hop limit 255

IPv6 multicast rides in Ethernet frames addressed to 33:33 plus the last 32 bits of the group (RFC 2464), so ff02::1:ff00:20 becomes 33:33:ff:00:00:20. A network card ignores groups it has not joined, so unlike an ARP broadcast, other computers are not disturbed. Switches with MLD snooping go further and only send the frame to ports that joined. Hop limit 255 proves a message came from the same link, but anyone on the link can still lie, just like with ARP. Defences include RA Guard on switches (RFC 6105) and Secure Neighbor Discovery (SEND, RFC 3971), which signs messages but is rarely deployed.