Currently, a typical home Internet user will be assigned one IP address from their ISP, and then use NAT (Network Address Translation) to share the Internet connection among all their computers. The IP address assigned by your ISP is dynamic, and that is not a problem for the average home user, or even your typical power user.
Setting static IPs on computers is not all that uncommon, even among home users, excluding only the very most technically-illiterate ones. For example, your home router might be 10.0.0.1, and the other desktops in your house might be 10.0.0.10, 10.0.0.11, and so on. Then, if somebody drops by and wants to use your WiFi, they might be assigned an address via DHCP, such as 10.0.0.121.
This won’t work in IPv6 if, and only if, ISPs choose to make your subnet allocation dynamic. I urge ISPs to assign static IPv6 subnets to all their customers.
Why? Well, let me give my reasons. In IPv4, all the home machines in the above example are behind a NAT. This means the private IP address (10.0.0.121) gets dynamically translated to your public IP address (123.12.134.78).
Because of the absence of NAT in IPv6, this can’t happen! Your machine’s IPv6 address is tied to the subnet allocated to you by the ISP. And if your ISP changes your subnet every time you connect to the Internet as they currently do with IPv4, your static IPs will break horrendously.
I am aware of site-local and unique local addresses. These addresses are designed to be used only in a local situation, and not routed to the Internet. In theory, this could solve the problem, by allowing you to have a static local address, and a dynamic global address. In practice, this will not work because:
- Site-local addresses have been deprecated by RFC 3879.
- Unique local addresses are considered to be global addresses by current OSes. Wikipedia says that “despite the restricted, local usage of these addresses, they have a global address scope”, which means that your computer will assume either one can get to the Internet.
- Thus, your source IP may be wrong, and your packet may be filtered and rejected by your ISP, or you may never get a reply, as the message won’t be able to get back to you.
- Having both unique local and global addresses are confusing to the end-user, unlike link-local addresses, which are clearly marked as such, and are generally non-routable.
Finally, we must look at the reason why dynamic IPv4 addresses are assigned in the first place. I believe the main reason for this is to conserve space. With most of their address space used up, ISPs would have to count on all of their customers not using their Internet connections at the same time. Dynamic IP addresses means they can effectively over-subscribe their puny IP allocations.
In IPv6, this is not necessary. ISPs typically get a /32 allocation, which if you’re not familiar with CIDR notation, is bleeping huge! With a /32 allocation, an ISP could allocate more than 4 billion /64 subnets (which are suitable for a typical household) to each of their customers. I don’t think any ISP in the world has 4 billion customers, and if they did, they could get a /31 allocation, which would give them about 8 billion /64 subnets. Plenty of space for static allocations for everyone!
In conclusion, I’d like to summarise what I’ve been trying to bring out:
- People that like to set static IPs on their machines will have them break if their subnet changes.
- Site-local and unique local addresses only add to the problem, not solve it.
- There is enough IPv6 address space in a /32 for everybody to have a static subnet.
- There is no business advantage in giving out dynamic subnets. Do the best thing by your customers and go static.
So, dear ISPs of the world, please make static IPv6 subnets a part of your standard offering — not a “paid upgrade” or anything silly like that. It might work in the NAT’ed world of IPv4, but you will do your IPv6 customers a disservice.
Thanks for reading.


I don’t get it. Why would your machines have static addresses in the first place?
Imagine the ISP allocates a /64, dynamically or otherwise. Your router then *bridges* that. Your machine autoconfs. Any second or third machine you want to run also autconfs — at no additional expense to the ISP, since they are running stateless DHCP.
In short, NAT routers appeared because ADSL bridges could only support one IPv4 client. But ADSL bridges can support an infinite number of IPv6 autoconf clients. So there’s no need to route IPv6 at all, let alone NAT it.
I’m not advocating NAT for IPv6, nor am I lamenting the loss of NAT. I’m saying that NAT had the side-effect of making your private-side IPs fairly consistent and static, despite the fact that IPs are dynamic.
I know I use static IPs all the time when configuring stuff. I can remember my server’s IP address, 2001:44b8:62:50::1, but there’s no way I’m going to remember the dynamic IP addresses, like 2001:44b8:62:50:21b:fcff:fe25:42e7.
Our server’s IPv4 address is 192.168.0.14. There’s lots of stuff hardcoded to that address. If it changed, things would probably break. Our server’s IPv6 address is hardcoded to 2001:44b8:62:50::1. Things like our DNS would definitely break if that changed.
Luckily, Internode’s Hexago broker remembers our subnet, so it is static for now. But what if one day they chose to change our subnet? Our server’s IPv6 address would change to something like 2001:44b8:62:beef::1, and break all the configuration, while the IPv4 address, 192.168.0.14, would still work.
That is what I’m getting at. In IPv4, because of NAT, the dynamic IP changing has no ramifications on your internal network’s configuration. In IPv6, all the internal IPs are based on your assigned subnet. If that subnet is changing all the time, then…it’s painful.
Not to mention the fact that if your line drops out and in again, and your subnet changes (as it does with IPv4 — every time it drops out we get a new IP), because of the nature of Router Advertisement/Discovery, the machines will still have their old addresses which are broken, as well as new ones.
All stuff we wouldn’t have if ISPs gave out static IPv6 subnets. I don’t know whether any do or not — the purpose of this post is to make sure everyone offers static ones from the get go.
The bigger problem is management of static assignments. Yes yes, it should be simple but with millions of customers managing N million subnets statically assigned to customers becomes hard. Also one /64 is not good enought, the current ISP thinking is leaning towards a /56 to a home, which I think is way overkill. Remember a /64 is only 1 subnet which sucks as most homes are multiple subnets these days. Think of a wireless LAN behind a Home router. Or guest wireless LAN, or multiple layers of internal LANs with firewalls. The problem is that even if this is assigned via DHCP-PD, nobody has created a DHCP-PD Client/Server to re-delegate the /64 to downstream subnets. The other issue is aggregation of addressing and routing which then requires a much larger subnet to be allocated to each aggregation router, which means address space starts getting eaten up real quick. Also if you need to move a customer to a different aggregation router because of capacity, you can’t guarantee keeping a static address for a customer. Address Management is not simple on the ISP side. And keep in mind that without NAT a Firewall will be required which allows out by default in blocked. Anything but will probably void any support from the providers as w/o a firewall all internal devices are at risk and if you have security issues or become a bot you will be terminated. This all starts to blow the IPv6 dream of open to everything. The other thing to keep in mind is that all these NAT’d subnets in the network now in a full IPv6 world have to be publically addressed and IPv6 only has 2 power of 2 more subnets. Trust me it is going to run out and there are already people starting to try to figure out what to do next.
With regards to /56’s, yeah, it is a bit overkill. Internode currently offer /60’s to trial participants, which gives me 16 /64’s to work with. (I’ve only used two so far.)
And DHCPv6-PD kinda sucks. I tell you what, it’s painful to keep running all the time, and yeah, re-delegation isn’t possible.
Thank goodness the only thing Internode use DHCPv6-PD for is updating their routing tables so they route your static subnet to you. Otherwise I’d commit suicide.
Jeremy,
I would be very interested in the issues you experience with DHCPv6-PD. Is it problems with vendor implementation, RFC design, or re-delegation as I stated. I am going to try to push the re-delegation capability through the standards.
The other issue I didn’t mention is getting customers to properly configure or pre-configuring static addresses to everyones cable modem or Home Router is a nightmare and not realistic. So…… a dynamic assignment to customers is really the only supportable model. Static addressing will of course also be available.
I am currently trying to design the IPv6 strategy for our company and trying to weigh the balance of all these issues. I also prefer a /60 or a /59 at most. 16-32 subnets per subscriber is more than enough for a home and it still doesn’t eliminate the ability to offer more for specialized situations, but honestly if someone wants more they would more than likely also want a static assignment.
Any other issues with IPv6 service would be of interest to me, as I would try to account for most of them to make our customers as happy as they can be; and in turn our support staff happier.