IPv6 Address Management: A Practical Guide to Subnetting, Planning, and Dual-Stack Migration

A practical guide to IPv6 address management: /64 subnetting, /48 site planning, ULA, dual stack migration, and pitfalls that catch teams moving from IPv4.

IPv6 Address Management: A Practical Guide to Subnetting, Planning, and Dual-Stack Migration
IPv6 Address Management: A Practical Guide to Subnetting, Planning, and Dual-Stack Migration · August 1, 2026

IPv6 has stopped being a future consideration and become a present day operational reality, and the change is showing up in budgets as much as in network architecture. AWS has charged $43.80 per year for every public IPv4 address since early 2024, Azure has been moving its public IP pricing in the same direction through 2026, and Google’s global adoption statistics crossed the fifty percent mark in 2025, with countries like France, Germany, and India well above it. Your team may not have planned an IPv6 migration yet, but your cloud bill, your upstream providers, and the platforms your users depend on are all making the case for you, and the longer the transition is deferred, the more of your addressing is built on assumptions that are quietly eroding.

What makes IPv6 hard is not the protocol itself, it is the management layer around it. Every habit your team built around IPv4, subnet sizing by usable host count, private range planning, relying on NAT as a security boundary, transcribing short dotted quad addresses into a spreadsheet, needs to be reexamined because each one transfers to IPv6 either poorly or not at all. This guide walks through how IPv6 addressing actually differs, how to design a subnetting plan that takes advantage of the /64 and /48 conventions, how to sequence a dual stack migration without breaking the services you already run, and the pitfalls that catch most teams in the first six months.

Why IPv6 Is No Longer Optional

The economics of IPv4 have inverted. Public IPv4 space is exhausted at the regional registry level, the market for legacy address space trades at thousands of dollars per /24, and the cloud providers that absorbed that scarcity for years have started billing it back to you. The $43.80 per public address per year that AWS charges is a modest line item in isolation, but multiply it across the dozens of public addresses a growing environment consumes and it becomes a permanent tax that scales with every deployment you add. Azure’s public IP pricing has been converging on the same level, and the direction of travel is unmistakable: operating on IPv4 only will get more expensive, not less.

Reachability is the second driver. More than half of the world’s internet users now reach Google over IPv6, mobile networks in many regions run IPv6 natively for the majority of their traffic, and a growing share of residential and business access is delivered as dual stack. If your services are IPv4 only you remain reachable through translation, but you are betting on intermediaries whose reliability and investment you do not control. The adoption curve is also asymmetric, consumer and mobile networks moved early while enterprise networks lag, which means your own users are already carrying IPv6 experience from home into a workplace network that does not offer it.

The enterprise lag has a practical consequence beyond user expectations. Major SaaS platforms, public APIs, and content delivery networks have been enabling IPv6 for years, and some have signaled that IPv4 support will eventually be a legacy feature rather than the default. When the external services your organization depends on prefer IPv6 and your network cannot carry it, the translation happens somewhere in the middle, which adds latency, complicates troubleshooting, and hides where a failure actually occurred. Enabling IPv6 on your own network gives you end to end visibility that a translated path never provides.

None of this means you need to rip out IPv4 tomorrow. It means the question has shifted from whether your network will need IPv6 to how prepared you are when a new site, a new cloud account, or a new carrier requirement forces the issue. Teams that treat IPv6 as a design consideration now get to make deliberate choices about allocation and security. Teams that wait until a migration is forced end up making those same decisions under time pressure, with half the information and none of the slack.

How IPv6 Addressing Differs from IPv4

An IPv6 address is 128 bits written as eight groups of four hexadecimal digits, and that single structural fact cascades through everything else. There is no broadcast address, multicast replaces it, and Neighbor Discovery replaces ARP. Addresses are not scarce the way IPv4 addresses are, which changes the planning problem from conservation to aggregation, and every host can have a globally reachable address, which changes your security assumptions before you write a single firewall rule.

The most consequential difference for subnetting is the interface identifier. SLAAC lets hosts build their own addresses from a router advertised prefix combined with a 64 bit interface identifier, which is why the /64 is effectively the floor for any subnet that uses standard autoconfiguration. A /64 contains 2^64 addresses, which means the usable host count math that anchors IPv4 subnetting becomes irrelevant. Your design decisions shift to how many /64s you allocate per site and how those prefixes aggregate, not how many devices each segment can hold.

IPv6 also changes your private addressing assumptions. Unique Local Addresses in the fc00::/7 range fill a role similar to RFC 1918 space, but they are not meant to be guessed or memorized, a random 48 bit prefix generated once and documented properly is the correct practice. Every interface additionally gets a link local address from fe80::/10 automatically, and that is how Neighbor Discovery and routing protocols such as OSPFv3 actually operate. Teams that forget link local addressing exists end up confused about why every interface shows multiple addresses and which one they should be troubleshooting.

The absence of NAT is the difference with the longest reach. In IPv4, private addressing combined with NAT gave most networks a de facto boundary that was never designed to be a security control but functioned as one anyway. IPv6 does not offer that accidental protection, every host on a global prefix is directly addressable, so segmentation, filtering, and firewall policy become the actual security boundary. That is not a regression, it is a more honest architecture, but it is a shift your team has to plan for rather than inherit.

Finally, address behavior itself is different. Hosts maintain multiple addresses and select between them according to the rules in RFC 6724, preferring the pair of source and destination addresses that share the longest common prefix. Privacy extensions create temporary addresses for outbound connections so that a host’s persistent identifier is not exposed in every flow, which means the address your servers see from a client is not necessarily the address you would use to reach it back. Monitoring, logging, and access control all need to account for this churn instead of assuming one address per host.

Designing an IPv6 Subnetting Plan

Good IPv6 subnetting starts with allocation hierarchy rather than subnet sizing. The regional internet registries recommend a /48 per site, which yields 65,536 /64 subnets, and the structure you impose on the 16 subnet ID bits between the /48 and the /64 is where your entire plan lives. Reserve a range of subnet IDs for infrastructure and management, a range per security zone, a range per environment, and leave a substantial unallocated block for growth, because unlike IPv4 there is no reason to run the plan tight.

Aggregation is the discipline that replaces conservation. If your interior routing protocol has to carry thousands of individual /64s, your routing tables will not stay small no matter how much address space you have. Allocate hierarchically so that summaries align with your topology, one /48 per site with subnet ID ranges grouped by function, and your core routers can advertise a single aggregate instead of hundreds of specifics. The same hierarchy that keeps your documentation readable keeps your routing tables manageable.

Not every prefix needs to be a /64. Point to point links between routers are better served by /127s drawn from the reserved infrastructure range, following the same logic as /31 links in IPv4 and protecting the link from neighbor cache exhaustion, and loopback addresses are /128s. The plan should distinguish clearly between segments that carry hosts and links that merely carry traffic, and the IP planning workflow you use should make both visible with their purpose documented.

Decide early whether each segment needs global reachability or only internal connectivity. ULA is the right tool for internal services that should never be exposed, lab environments, and management networks, while globally allocated space is for anything users or partners must reach directly. The mistake is treating ULA as a one time convenience and then discovering that a service you designed around it needs to be reachable from the internet, because retrofitting global addressing into a segment built on ULA means renumbering that segment’s hosts.

Cloud environments add their own allocation logic. Each provider hands out IPv6 in provider specific block sizes and ties them to VPC or virtual network scopes, which means a /56 from one provider does not map neatly onto a /48 from another. The practical approach is to treat each provider’s allocation as its own site within your plan, assign /64s to each subnet you create, and keep the provider prefix documented alongside the on premises hierarchy so that a single view still represents the whole network.

Planning a Dual Stack Migration

Dual stack, running IPv4 and IPv6 side by side on the same network, remains the recommended migration strategy because it is incremental. You do not cut over, you add. The sequence that works for most teams starts with the network itself: enable IPv6 on your WAN and transit links, obtain an allocation from your upstream provider or use ULA where global reachability is not required, and turn on IPv6 routing on your core infrastructure first. Infrastructure problems are easiest to isolate while the only traffic on the new stack is your own.

DNS is the load bearing step, because it is what actually connects IPv6 to your users. Add AAAA records for your web, mail, and API endpoints, make sure your authoritative and recursive DNS servers are reachable over IPv6 and can handle the larger responses that EDNS0 enables, and verify that your monitoring tools see AAAA queries and IPv6 traffic once it starts flowing. Modern clients use Happy Eyeballs to race both stacks and use whichever works, which is forgiving, but it is not a substitute for testing each service over IPv6 directly, because a service that silently fails on one stack degrades the experience for a subset of users without raising an obvious alarm.

Services come before clients. Stand up your public facing services on dual stack first, measure them, and let external users begin reaching you over IPv6 while your internal clients remain on IPv4. Once the externally visible path is proven, roll IPv6 into internal segments, publishing router advertisements, enabling SLAAC and DHCPv6, and assigning addresses to clients and workloads segment by segment. Each segment gets its own rollout window, its own verification, and its own rollback path, which is precisely why the plan needs to know which VLANs, VRFs, and sites map to which prefixes before the first advertisement goes out.

Security is where dual stack projects most often go wrong. Because NAT is not a normal part of IPv6, every host has a directly reachable address, and the boundary that used to exist implicitly at the router must now exist explicitly in firewall policy. Filter both stacks symmetrically, and audit your ACLs, security group rules, and firewall rule sets for IPv4 only entries, because an IPv6 segment that is accidentally unfiltered is a far larger exposure than the equivalent mistake in IPv4. Add the new addressing to your network topology documentation at the same time you enable it, so the change is visible to the whole team rather than a configuration detail buried in a router.

Monitoring and operations complete the loop. NetFlow, sFlow, and telemetry sources must be configured to collect IPv6 traffic, dashboards and alert thresholds need to cover both families, and log correlation has to handle the fact that the same session can involve addresses from both stacks. Capacity planning also changes: the question is no longer whether a segment will run out of addresses, it is whether your routing, firewall, and monitoring infrastructure can handle the additional state that dual stack traffic generates. The operational work of a dual stack network is mostly about making both families equally visible and equally accountable.

Avoiding the Common IPv6 Pitfalls

Most IPv6 failures are not protocol failures, they are planning failures carried over from IPv4 thinking. The most common is security policy that covers only one address family, either leaving IPv6 unfiltered or blocking it wholesale. The second is sizing subnets by expected host count as if a /64 were an oversized /24. The third is treating point to point links like LAN segments, assigning them /64s and exposing them to neighbor cache exhaustion, when a /127 is the correct and defensible choice.

Address hygiene is a quieter source of trouble. EUI-64 derived addresses embed the interface MAC address in the low 64 bits, convenient for network operators and a tracking concern for the hosts that use them, so make sure privacy extensions are enabled where clients do outbound connections and remember that the temporary addresses they create will churn continuously. If your monitoring or access control assumes a stable per host address, you will chase disappearing addresses instead of troubleshooting real problems.

Do not assume one autoconfiguration mechanism covers everything. SLAAC gives hosts addresses and, with the RFC 8106 option, DNS server information, while DHCPv6 delivers additional configuration such as domain search lists and other options, and most networks run both rather than choosing one. The failure mode appears when a team disables SLAAC expecting DHCPv6 to handle addressing, or vice versa, and then discovers that a class of devices stopped getting addresses entirely.

The operational pitfalls are about documentation. A 32 character hexadecimal address is far harder to eyeball than a dotted quad, and the transcription errors that were annoying in IPv4 become genuinely dangerous in IPv6, where a single mistyped character can point at a completely different host or prefix. When the only record of your allocations is a spreadsheet, those errors propagate silently and compound as other records reference them. IP address management with validation and conflict detection catches the mistakes that manual records never will, and a hierarchical view keeps long prefixes checkable at a glance.

Finally, watch for partial enablement, the state where IPv6 appears configured but is not actually end to end. A common variant is enabling IPv6 on the LAN while the WAN or firewall drops it, or enabling it in one cloud region and not in another, which produces hosts with IPv6 addresses that cannot reach anything. Before you declare a segment dual stack, test a real flow from a client in that segment to an external IPv6 destination, and make sure the path through firewalls, load balancers, and any middleboxes is actually IPv6 capable rather than merely IPv6 aware.

Keeping Your IPv6 Plan Accurate

Dual stack doubles the number of objects you need to keep consistent. Every subnet, every address, and every VLAN and VRF association now exists in two address families, and if the two sides are tracked in separate places they will drift apart within a quarter. The discipline that served IPv4, a single hierarchy with utilization visible at every level, becomes twice as valuable and twice as hard to maintain by hand when applied to both families at once.

Treat your IPv6 plan as live infrastructure data rather than a document. Record the prefix, its purpose, the site, the VLAN, the VRF, and the responsible owner at the moment of allocation, and make every change visible through an audit trail so that when a migration goes wrong you can reconstruct exactly what was enabled, when, and by whom. That auditability matters for compliance and for the postmortems that follow any dual stack incident, and it is the property that spreadsheets and ad hoc records simply cannot provide.

Reconcile your documentation against the routers, switches, and cloud resources periodically. Utilization tracking in IPv6 is not about running out of addresses, it is about detecting segments that were allocated but never used, prefixes that drifted from their documented purpose, and host assignments that no longer match reality. A quarterly review that compares the documented state of each prefix against the live network catches these discrepancies while they are still cheap to correct, and the same review is where you confirm that every advertised prefix still has a reason to exist.

The accuracy of the plan ultimately depends on how well it connects to the rest of your infrastructure knowledge. An IPv6 prefix in isolation is an abstraction, but a prefix linked to its site, its VLAN, its VRF, and the devices and interfaces that use it becomes the context your team needs during an incident. When the address plan lives in the same system as your device inventory and cabling records, a troubleshooting session that starts with a hostname can end with the full addressing picture instead of a detour through three different tools.

Managing IPv4 and IPv6 Together with Obelinf

Obelinf is built to manage both address families in the same data model, so a dual stack network is not two parallel tracking efforts. You create IPv4 and IPv6 subnets in the same hierarchical tree, associate both with the same sites, VLANs, and VRFs, and see utilization at every level from a /48 down to an individual /128, with validation that catches overlapping or out of range prefixes before they reach production. The VLAN and subnet management layer keeps your Layer 2 and Layer 3 view consistent across both families, and the automatic changelog records every allocation and change with user identity, so your IPv6 rollout carries the same auditability as the rest of your infrastructure.

The practical effect is that planning the transition stops being a separate documentation project. You can model the IPv4 and IPv6 side of a segment side by side, verify that both have the same VLAN and VRF context, and hand the migration to your team with a source of truth that reflects reality rather than a spreadsheet that two people have edited differently. IP address management in Obelinf covers both families natively, so whether you are enabling IPv6 for the first time, running a long term dual stack, or planning to retire IPv4 from individual segments, the transition stays under control because the data, the relationships, and the change history all live in one place.

Frequently Asked Questions

Why is IPv6 subnetting different from IPv4 subnetting?
IPv6 subnetting is different because SLAAC requires a 64 bit interface identifier, which makes /64 the standard subnet size regardless of how many hosts a segment will hold. Address conservation, the core constraint of IPv4 subnetting, stops being the design problem, and the number of /64s you can carve from a site allocation plus how well those prefixes aggregate becomes what matters instead. A platform that models both families in one hierarchy, like Obelinf, keeps the two plans from drifting apart.
What is a /64 subnet in IPv6 and why is it the recommended size?
A /64 is an IPv6 subnet with 64 bits of network prefix and 64 bits of interface identifier, and it is the recommended size because hosts use the lower 64 bits for stateless address autoconfiguration (SLAAC). A prefix shorter than /64 breaks SLAAC and forces manual or DHCPv6 only configuration, while a /64 contains 2^64 addresses, so running out of space in a subnet is effectively impossible.
Is dual stack the best way to migrate from IPv4 to IPv6?
Dual stack, running IPv4 and IPv6 in parallel, is the recommended migration strategy because it lets you roll out IPv6 incrementally without cutting off anything that still depends on IPv4. Modern clients use Happy Eyeballs to try both stacks simultaneously, so services do not need to be perfect before you enable IPv6. Obelinf manages both address families in the same subnet hierarchy, which makes tracking a dual stack network a single task rather than two.
Does IPv6 have private addresses like RFC 1918?
Yes, Unique Local Addresses (ULA) in the fc00::/7 range fill a role similar to RFC 1918 private space, but they are meant to be randomly generated rather than guessed. The correct practice is to generate a random /48 prefix once, document it properly, and use it consistently across your network, while remembering that every interface also gets a link local address from fe80::/10 automatically.
What is the best IPv6 address management tool for a growing network?
The best IPv6 address management tool tracks IPv4 and IPv6 in a single hierarchy with validation, conflict detection, and utilization visibility, because dual stack doubles the objects you must keep consistent. Obelinf provides native support for both address families with VRF and VLAN associations, so a dual stack segment is managed as one logical entity, and an automatic changelog records every allocation change for audit purposes.