How is the 64-bit interface ID derived from a MAC address (EUI-64), and why isn't ARP needed?
EUI-64 inserts ff:fe into the middle of the 48-bit MAC and flips the 7th bit, yielding a 64-bit interface ID — so the link-layer address is embedded in the IPv6 address and ARP becomes unnecessary.
* EUI-64 transform building a 64-bit interface ID from a MAC. *
* 48-bit MAC structure, source of the EUI-64 interface ID. — Inductiveload, CC BY-SA 2.5, via Wikimedia Commons. *
Worked example from a MAC of 3c:07:54:5d:40:66:
- Split the MAC in half and insert
ff:fein the middle →3c:07:54:ff:fe:5d:40:66 - Flip the 7th bit (the universal/local bit) of the first byte:
3c=0011 1100→ flip the marked bit →0011 1110=3e— giving interface ID3e07:54ff:fe5d:4066 - Prepend the link-local prefix →
fe80::3e07:54ff:fe5d:4066
Because the interface ID is derived from the MAC, a node can map an IPv6 address to its link-layer address logic without the IPv4-style ARP broadcast — Neighbor Discovery (over multicast) handles resolution instead.
Tip: The tell-tale sign of an EUI-64 address is the ff:fe sitting in the middle of the interface ID. (Privacy extensions, RFC 4941, instead randomise the interface ID to avoid tracking the MAC.)
Go deeper:
MAC address — EUI-64 and the U/L bit (Wikipedia) — explains the modified EUI-64 transform and why IPv6 inverts the universal/local bit.