IPv6 Subnetting: From /48 to /64
Plan your IPv6 network with proper subnetting. Learn about /64 boundaries, how to divide /48 and /56 allocations, and practical examples.
IPv6 Subnetting Philosophy#
IPv6 subnetting flips the IPv4 mindset. Instead of carefully rationing scarce address space, you're dividing abundance. A single /48 allocation gives you 65,536 /64 subnets—more than most organizations will ever use.
TL;DR - Quick Summary
Key Points:
- Always use /64 for end-host networks (required for SLAAC and Neighbor Discovery)
- ISP allocations: /48 for enterprise (65,536 subnets), /56 for small business (256 subnets), /64 for minimal
- Point-to-point links can use /127 or /126 to conserve addresses
- Stop conserving addresses—IPv6 abundance is a feature, organize it logically instead
Skip to: Common ISP Allocations | Subnetting a /48 | Special Cases
The design goal is simple: make subnetting straightforward and consistent. Use /64 for everything that connects end hosts. Stop worrying about address conservation.
The /64 Boundary: Just Use It#
The /64 prefix length is special in IPv6. Not because it's aesthetically pleasing or traditional, but because fundamental IPv6 protocols require it:
SLAAC (Stateless Address Autoconfiguration) generates the 64-bit Interface ID from the device's MAC address or a random value. It needs exactly 64 bits to work. Give it less, and autoconfiguration breaks.
Neighbor Discovery optimization assumes /64 subnets. Using smaller prefixes creates performance issues that aren't worth the "saved" addresses.
Modified EUI-64 interface identifiers require 64 bits. Privacy extensions require 64 bits. Everything in the IPv6 ecosystem expects 64 bits.
Don't Subnet Below /64
Using /96 or /112 for end-user networks breaks SLAAC and causes compatibility issues. The only exceptions are point-to-point router links (/127 or /126) and loopback interfaces (/128).
The practical advice: use /64 for every network segment with hosts. Done.
CIDR Notation#
IPv6 uses CIDR notation to express network prefixes:
2001:db8:abcd:1234::/64
│ │
│ └─ Prefix length
└──────────────────── Network prefix (first 64 bits)The number after the slash indicates how many bits identify the network. The remaining bits identify individual interfaces.
For 2001:db8:abcd:1234::/64:
- Network prefix: first 64 bits (
2001:db8:abcd:1234) - Interface ID: last 64 bits (anything from
::toffff:ffff:ffff:ffff)
Common ISP Allocations#
Most IPv6 connectivity comes with one of these prefix sizes:
/48 - Enterprise and Large Customer#
You get 16 bits for subnetting (bits 49-64), creating up to 65,536 /64 networks.
2001:db8:abcd:0000::/64 ─┐
2001:db8:abcd:0001::/64 │
2001:db8:abcd:0002::/64 ├─ All from the same /48
... │
2001:db8:abcd:ffff::/64 ─┘This is the standard allocation for businesses. It supports complex networks with hundreds of locations and VLANs.
/56 - Small Business and Residential#
You get 8 bits for subnetting, creating up to 256 /64 networks.
2001:db8:abcd:ab00::/64 ─┐
2001:db8:abcd:ab01::/64 │
... ├─ 256 /64 subnets available
2001:db8:abcd:abff::/64 ─┘Plenty for home networks with multiple VLANs (main network, guest WiFi, IoT devices, etc.).
/64 - Minimal Residential#
A single subnet. Works fine if you don't need network segmentation. Most home users won't need more.
Many ISPs default to /64 but will assign /56 on request. Always ask for at least a /56.
Subnetting a /48#
When you receive a /48, you control bits 49-64 for subnet identification. That's 16 bits = 65,536 subnets.
Practical Example: Office Network#
Allocation: 2001:db8:abcd::/48
Subnet Plan:
├─ 0000-000f Infrastructure
│ ├─ 2001:db8:abcd:0001::/64 Management/Out-of-band
│ ├─ 2001:db8:abcd:0002::/64 Switches and APs
│ └─ 2001:db8:abcd:0003::/64 Monitoring and logs
│
├─ 0010-00ff Servers
│ ├─ 2001:db8:abcd:0010::/64 Web/app servers
│ ├─ 2001:db8:abcd:0011::/64 Database servers
│ └─ 2001:db8:abcd:0012::/64 Storage
│
├─ 0100-01ff User networks
│ ├─ 2001:db8:abcd:0100::/64 Floor 1 workstations
│ ├─ 2001:db8:abcd:0101::/64 Floor 2 workstations
│ └─ 2001:db8:abcd:0102::/64 Floor 3 workstations
│
├─ 0200-02ff Guest and public
│ ├─ 2001:db8:abcd:0200::/64 Guest WiFi
│ └─ 2001:db8:abcd:0201::/64 Public WiFi
│
└─ f000-ffff Reserved for future useNotice the hexadecimal ranges create logical groupings. The scheme is readable and leaves room for growth.
Hierarchical Subnetting#
Multi-site organizations can allocate larger blocks to each location:
2001:db8:abcd::/48
│
├─ 2001:db8:abcd:0000::/52 HQ (4,096 /64 subnets)
│ └─ 2001:db8:abcd:0000::/64 through 2001:db8:abcd:0fff::/64
│
├─ 2001:db8:abcd:1000::/52 Branch A (4,096 subnets)
│ └─ 2001:db8:abcd:1000::/64 through 2001:db8:abcd:1fff::/64
│
├─ 2001:db8:abcd:2000::/52 Branch B (4,096 subnets)
│
└─ 2001:db8:abcd:3000::/52 Branch C (4,096 subnets)Each branch manages its own /52 independently. HQ can delegate without coordination overhead.
You can subnet further:
Branch A: 2001:db8:abcd:1000::/52
│
├─ 2001:db8:abcd:1000::/56 Building 1 (256 subnets)
├─ 2001:db8:abcd:1100::/56 Building 2 (256 subnets)
└─ 2001:db8:abcd:1200::/56 Building 3 (256 subnets)The hierarchy can go as deep as you need, down to the /64 boundary.
Subnetting a /56#
With a /56, you have 8 bits (bits 57-64) for subnetting. That's 256 /64 networks.
Home Network Example#
Allocation: 2001:db8:abcd:ab00::/56
Subnet Plan:
├─ 2001:db8:abcd:ab00::/64 Main LAN
├─ 2001:db8:abcd:ab01::/64 Home office
├─ 2001:db8:abcd:ab02::/64 Guest WiFi
├─ 2001:db8:abcd:ab03::/64 IoT devices (cameras, sensors)
├─ 2001:db8:abcd:ab04::/64 Smart home (speakers, lights)
├─ 2001:db8:abcd:ab05::/64 Lab/test network
└─ 2001:db8:abcd:ab06-abff Available (250 subnets unused)Even a power user won't exhaust 256 subnets. This allocation is generous.
The eighth bit in the fourth hextet changes:
ab00= binary...0000 0000(subnet 0)ab01= binary...0000 0001(subnet 1)ab02= binary...0000 0010(subnet 2)abff= binary...1111 1111(subnet 255)
Special Cases#
Point-to-Point Links#
Router-to-router links don't need 18 quintillion addresses. Two options:
/127 - RFC 6164 standard for point-to-point links. Provides exactly 2 addresses, analogous to IPv4's /31:
2001:db8:abcd:1::/127
├─ 2001:db8:abcd:1::0 Router A
└─ 2001:db8:abcd:1::1 Router B/126 - Provides 4 addresses, like IPv4's /30:
2001:db8:abcd:1::/126
├─ 2001:db8:abcd:1::0 Network address (can use)
├─ 2001:db8:abcd:1::1 Router A
├─ 2001:db8:abcd:1::2 Router B
└─ 2001:db8:abcd:1::3 (available)Both work. /127 is more efficient. Some older equipment only supports /126.
Alternatively, just use /64 on point-to-point links. It wastes nothing that matters and simplifies your addressing plan.
Loopback Addresses#
Router loopback interfaces use /128 (a single address):
2001:db8:abcd::1/128These are used for router IDs, management access, and protocol endpoints.
Documentation Practices#
Document your subnet plan before assigning addresses. A simple table works:
| Prefix | VLAN | Purpose | Gateway |
|---------------------------|------|----------------------|------------|
| 2001:db8:abcd:1::/64 | 10 | Management | ::1 |
| 2001:db8:abcd:2::/64 | 20 | Servers | ::1 |
| 2001:db8:abcd:10::/64 | 100 | Floor 1 users | ::1 |
| 2001:db8:abcd:11::/64 | 101 | Floor 2 users | ::1 |
| 2001:db8:abcd:100::/64 | 200 | Guest WiFi | ::1 |
| 2001:db8:abcd:200::/64 | 300 | IoT devices | ::1 |Include:
- Prefix: The full /64 network
- VLAN ID: If applicable (helps correlate layer 2 and layer 3)
- Purpose: What connects to this network
- Gateway: Usually
::1, the first address - Notes: Firewall zones, contact info, whatever helps operations
Track this in your network documentation system, not a forgotten spreadsheet. Future you will be grateful.
Calculating Subnet Information#
Number of /64 Subnets Available#
Formula: 2^(64 - prefix_length)
/48: 2^(64-48) = 2^16 = 65,536 subnets
/52: 2^(64-52) = 2^12 = 4,096 subnets
/56: 2^(64-56) = 2^8 = 256 subnets
/60: 2^(64-60) = 2^4 = 16 subnetsSubnet Range#
For a given /64 subnet, the range is straightforward:
Prefix: 2001:db8:abcd:1234::/64
First address: 2001:db8:abcd:1234::
Last address: 2001:db8:abcd:1234:ffff:ffff:ffff:ffff
Usable addresses: All of them (18,446,744,073,709,551,616)Unlike IPv4, there's no broadcast address to reserve. IPv6 uses multicast for broadcast-like functions.
Finding Subnet Boundaries#
When given a /56 like 2001:db8:abcd:ab00::/56, the subnet boundaries are:
First /64: 2001:db8:abcd:ab00::/64
Last /64: 2001:db8:abcd:abff::/64
The range locks bits 1-56: 2001:db8:abcd:ab...
Bits 57-64 can vary: 00 through ff
Bits 65-128 identify interfaces (the /64 portion)For hierarchical allocation, align on nibble (4-bit) boundaries when possible. It keeps hexadecimal notation clean:
- /48, /52, /56, /60, /64 align on nibble boundaries
- /50, /54, /58, /62 don't align and create messy hex ranges
Stick to nibble-aligned prefixes unless you have a specific reason not to.
Summary#
IPv6 subnetting is simpler than IPv4 once you internalize the philosophy:
-
Use /64 for all host networks. Don't overthink it. The protocol stack expects it.
-
ISP allocations are generous. /48 for enterprises (65,536 subnets), /56 for small sites (256 subnets), /64 for minimal deployments.
-
Plan hierarchically. Allocate blocks to locations or functions. Let each site manage its portion independently.
-
Document your plan. Future troubleshooting depends on knowing what each subnet does.
-
Stop conserving addresses. IPv6 abundance is a feature. Use it.
The biggest mental shift from IPv4: you're not squeezing every last address out of limited space. You're organizing abundance into a logical structure.
Related Articles#
- IPv6 Address Types - Understand the different types of IPv6 addresses and their uses
- DHCPv6 vs SLAAC - Choose the right address assignment method for your network
Calculate Your Subnets
Use our Subnet Calculator to plan your IPv6 network allocation and visualize subnet hierarchies.