What prefix lengths do you use for LANs, point-to-point links and loopbacks in IPv6, and why?
Show the answer
Say this first
A /64 for every LAN segment, because SLAAC and many host stacks assume a 64-bit interface ID. A /127 on router-to-router links (RFC 6164), usually carved from a /64 reserved per link. A /128 for loopbacks. A site gets a /48, which is 65,536 /64s. ISPs commonly give homes a /56 or /48.
Go deeper
The usual sizes
| Use | Size | Note |
|---|---|---|
| Organization from an RIR | /32 to /48 | LIRs get /32 or more, end sites /48 |
| Site | /48 | 16 bits of subnet ID |
| Home from an ISP | /56 or /48 | 256 or 65,536 LANs |
| LAN or VLAN | /64 | always |
| Point-to-point | /127 | RFC 6164 |
| Loopback | /128 | one address |
Why not smaller LANs
A /120 on a LAN breaks SLAAC, and some devices and features assume /64. IPv6 does not need you to save addresses. It needs you to have enough subnets.
Why /127 on links
- NDP exhaustion: on a /64 link, a scan of nonexistent addresses makes the router create an incomplete neighbor entry for each one. A /127 has two addresses, nothing to scan.
- Looping: on point-to-point links, old implementations bounced packets for unused addresses back and forth until the hop limit ran out.
- The old worry, that one of the two addresses is the subnet-router anycast address, is handled by RFC 6164: routers do not use that anycast address on a /127.
Many teams reserve a whole /64 per link and configure the /127 from its start. The plan stays tidy and you can change your mind later.
They will ask next
Isn't a /64 for a VLAN of 20 hosts wasteful?
Addresses are not the scarce resource in IPv6, subnets are. A /48 gives 65,536 of them. The /64 keeps SLAAC, privacy addresses and every host stack working.
What do you do if the ISP gives a site a single /64?
Push back and ask for a /56 or /48, usually through DHCPv6 prefix delegation. With one /64 you cannot subnet without breaking SLAAC, so people end up with ugly workarounds like ND proxying.
Traps
- Using /112 or /120 on LANs to "save space".
- Forgetting loopbacks are /128, not /64.