IPv6 by hand: address types, finding the prefix, EUI-64 and solicited-node multicast
In short: IPv6 calculations are easier than they look because every hex digit is four bits. Find a prefix by keeping the right number of hex digits and zeroing the rest; build EUI-64 by inserting FFFE into the MAC and flipping the seventh bit; and form a solicited-node multicast address from ff02::1:ff plus the last 24 bits of the unicast address.
A quick map of IPv6 address types
IPv6 has three kinds of address. Unicast identifies one interface; multicast identifies a group; anycast is a unicast address shared by several devices, and the network delivers to the nearest one. There is no broadcast.
| Address or range | Type | Used for |
|---|---|---|
| 2000::/3 | Global unicast | Internet-routable addresses |
| fd00::/8 (from fc00::/7) | Unique local | Private, internal addressing |
| fe80::/10 | Link-local | One link only; neighbour discovery, routing next hops |
| ::1 and :: | Loopback and unspecified | Testing yourself; "no address yet" |
| ff02::1 | Multicast | All nodes on the link |
| ff02::2 | Multicast | All routers on the link |
| ff02::1:2 | Multicast | All DHCPv6 servers and relay agents |
| ff02::1:ff00:0/104 | Multicast | Solicited-node addresses (see below) |
The background to these types is in IPv6 explained; this note is about working with them by hand.
Finding the prefix
Each hex digit is 4 bits and each block of four digits is 16 bits. So for prefix lengths that are a multiple of 4 (a nibble boundary), keep that many bits' worth of digits and set the rest to zero. Take the host address 2001:db8:acad:1234:a1b2::9:
- /64 keeps four blocks:
2001:db8:acad:1234::/64. Almost every LAN subnet is a /64. - /56 keeps three blocks and two digits of the fourth:
2001:db8:acad:1200::/56. Many ISPs give homes a /56 (256 /64 subnets). - /48 keeps three blocks:
2001:db8:acad::/48. A typical site allocation (65,536 /64 subnets).
When the prefix is not on a nibble boundary, convert only the digit that is split. For 2001:db8:4c2a:7b31::25/62, the first 60 bits run to the third digit of the fourth block (7b3). The last digit, 1, is 0001 in binary; keep its first 2 bits (00) and zero the rest, giving 0000 = 0. The prefix is 2001:db8:4c2a:7b30::/62, which covers the four /64s from 7b30 to 7b33. Expand and compress addresses with the IPv6 tool to check your work.
EUI-64 step by step
A host or router can build the 64-bit interface ID from its 48-bit MAC address with modified EUI-64:
- Split the MAC into two halves of 24 bits:
005056andabcdef. - Insert
fffebetween them:005056fffeabcdef. - Flip the seventh bit of the first byte, the universal/local (U/L) bit. The first byte
00is0000 0000; flipping the seventh bit gives0000 0010=02. A quick trick: the second hex digit changes 0 to 2, 2 to 0, 4 to 6, 8 to a, c to e, and so on. - Write it in blocks:
0250:56ff:feab:cdef. With the prefix 2001:db8:acad:10::/64 the address is2001:db8:acad:10:250:56ff:feab:cdef.
On a Cisco router you can ask for this automatically:
interface GigabitEthernet0/1
ipv6 address 2001:db8:acad:10::/64 eui-64
ipv6 enable
Routers often use EUI-64 or manual addresses. Desktop and mobile operating systems now usually prefer random or stable private interface IDs instead, because EUI-64 exposes the MAC address and lets a device be tracked from network to network.
Solicited-node multicast
IPv4 uses a broadcast ARP request, which disturbs every host on the subnet. IPv6 Neighbour Discovery sends its Neighbour Solicitation to a solicited-node multicast address instead, so only hosts whose address ends in the same 24 bits need to look at it. Every interface joins the solicited-node group for each of its unicast addresses.
- Take the last 24 bits (six hex digits) of the unicast address. For
2001:db8:acad:12::a1b2:c3d4they areb2:c3d4. - Add them to
ff02::1:ff: the result isff02::1:ffb2:c3d4. - On Ethernet, IPv6 multicast maps to a MAC address of
33:33plus the last 32 bits of the group:33:33:ff:b2:c3:d4. Switches and network cards can filter on it, so other hosts ignore the frame in hardware.
The full Neighbour Discovery process, including duplicate address detection, is in IPv6 Neighbour Discovery, SLAAC and DHCPv6.
Real-world example: documenting a branch IPv6 plan
A network engineer at a fictional retail chain received 2001:db8:5a00::/48 for a new regional office. She gave each floor a /56 and each VLAN a /64 inside it, so the second floor's voice VLAN became 2001:db8:5a00:210::/64. Router interfaces used short manual addresses ending in ::1 so they were easy to recognise, while the uplink to the core used EUI-64 for a quick lab test before being changed to a manual address. When a colleague asked why a packet capture showed traffic to ff02::1:ff00:1, she explained it was a neighbour solicitation for the router's ::1 address, sent to its solicited-node group, not a broadcast storm.
Practice
What is the /56 prefix of 2001:db8:9:87ab:1::5?
Build the EUI-64 interface ID for MAC 3c:22:fb:12:34:56.
What is the solicited-node multicast address and multicast MAC for 2001:db8::7:8a9b:cdef?
Key takeaways
- IPv6 has unicast, multicast and anycast addresses, but no broadcast.
- Each hex digit is 4 bits, so prefixes on nibble boundaries just keep digits and zero the rest.
- EUI-64 inserts fffe into the middle of the MAC and flips the U/L bit.
- Solicited-node multicast is ff02::1:ff plus the last 24 bits of the unicast address.
- IPv6 multicast maps to Ethernet MAC addresses starting 33:33.
Original content written by Mohamed Fayas for FM TecHub. © 2026 FM TecHub. You're welcome to share a link to this page; please don't copy the text elsewhere without permission.