I know that IPv6 was created in 1998 as a future-proofing, to make sure that there will be enough IP addresses in the works for large networks. IPv4 uses 32 bits and is represented with denary (0-9) while IPv6 uses 128 bits, so there are far more possible addresses, and it is represented using hexadecimal (0-9 then A-F).
What I’m wondering is why IPv4 is still so common, even though the number of devices connected to the internet have skyrocketed with more computers, laptops, smartphones, game consoles, embedded systems, etc. all connected! If it was thought that there would be too few available addresses in 1998, surely that has to be a bigger problem in the modern day?
Additionally, why didn’t IPv6 replace v4, even after nearly three decades of existing? Is it a technological limitation, cost, or something else?
And online I see many sysadmins online (!) complaining about IPv6 being more difficult to work with. Is this because the addresses are harder to remember, are adaptations of the protocol by manufacturers all different (similar to USB-C), or is there some other problem with IPv6? Or is this a case of a loud angry minority, especially in chat forums where people tend to have more polarised views?
Many devices do support IPv6, but it’s not universal like IPv4, despite the standard existing since 1998 and having many advantages. Why is this?
There are a number of points:
If you build a networking devices, you have to have IPV4. You may or better should have IPV6, too, but without IPV4, you’ll have a bad start.
If you build an embedded system, like an “internet of things” sensor or actor, memory is at premium, so having to take care of a small and a large IP stack might be challenging.
Some systems are old that their software libraries don’t even offer an IPV6 option.
My current project uses IPV4 only, because I don’t need anything fancy. I just span a 10/8 network with 10.0.0.1 being the server. No routing, not even DNS. Using IPV6 for that application would be wasted.
surely that has to be a bigger problem in the modern day?
The problem already exists. We have run out of IPv4 addresses for years now and e. g. cloud computing/VPS providers have started charging additional fees for IPv4 addresses.
The main reason is money.
Some companies don’t want to do additional work and IPv4 is “good enough” (although it isn’t) so they do nothing and we are stuck with it.
In a nutshell: https://github.com/becarpenter/misc/blob/main/why6why.md
Blog author is also one of the authors of IPv6. Very neat, thanks for sharing!
The first and biggest reason is network effects. If nobody else is using IPv6, then there’s little benefit to switching. Corporations and governments are always resource constrained and there’s not really a business case for switching just because it might be necessary someday. Being that corporations and governments are the ones providing the vast majority of services on the internet, that means there’s not as much reason for switching for end users as well.
Part of the reason that switching didn’t end up being necessary was that NAT did a really good job of solving the address problem. NAT let you have an internal network behind a single IP address which vastly reduced the amount of public IPs necessary. Even most people in tech probably wouldn’t realize that the concept of public vs internal network didn’t exist back in the day. Everything connected to the Internet had a publically reachable IP. When even that wasn’t enough, they just did it again and had CGNAT, carrier grade NAT. Now you could have multiple households and businesses behind a single IP.
The final reason is that IPv6 is just different from IPv4. Things like router advertisements and SLAAC require you to learn new things and rethink how you do things. What doesn’t help matters is that until you get everyone switched over to IPv6, you still have to support IPv4 in some way. Dual stack, where you run both IPv4 and IPv6 in parallel, is the most compatible way, but it’s also the most complicated to administrate. There are ways for an IPv6-only network to communicate with IPv4 clients, such as NAT64, but they each have their own caveats. These differences can result in small annoyances to administrators that add up, such as like you mentioned that IPv6 addresses are just not as memorable as IPv4. The natural fix for this is DNS. But like I said, that requires you to rethink your network. DNS goes from being a nice to have to being essential even for small networks.
Despite all these issues, IPv6 adoption is still marching along. France, India, and Germany have some of the highest rates of IPv6 capable devices, at 83.97%, 78.81%, and 74.30%. (IPv6 Adoption) Globally, we’re sitting around just under 50%. (Google IPv6 Tracker) Some sectors also have higher adoption rates. Mobile carriers are mostly IPv6-only these days. A lot of residential routers also ship with IPv6 enabled.
Mobile carriers are mostly IPv6-only these days.
I was going to point that out as well.
Your phone is probably on an IP6 network right now.
And it will be NATted to an IP4 address when it leaves the carrier’s network to interact with the public internet.
Does that mean you can use IP6 to connect despite CGNAT, or do the ISPs that use it tend to firewall off the IP6 connections anyway?
If your ISP supports IPv6, then yes, you can use IPv6 to get a publicly reachable address when you would otherwise be unable to due to being behind a CGNAT. If your ISP does not support IPv6, you are out of luck. There are methods to translate between IPv4 and IPv6, but they require a public IPv4 address.
My friend switched to Starlink recently and was disappointed to find out he can’t host Minecraft servers and such due to CGNAT. Luckily, Starlink does support IPv6, so he was able to host his servers that way. The caveat is that we have to be IPv6 capable to join his server.
Because people are slow to fix something unless it is an impending problem.
Take the Y2K bug. Did you know the original person who made the bug was telling people in the 70s that is needs fixing? And it wasn’t actually fixed till the second half of the 90s.
2038 is going to be a fun year with all the 32bit clocks overflowing to 1970
2038 is going to be a fun year with all the 32bit clocks overflowing to 1970
Actually 13 December 1901, since it overflows to negative, not zero.
Other than that, good answer, full marks
Right… signed vs unsigned ints.
I learned to program in the 1980s. I promise you that for most programs written then the coder was like, “Two digit year, of course. Why waste so many bytes with a four digit year? Nobody will be using this software in 15 years!” And probably 95% of the time they were right…
2038 problems have already started happening in niche cases. I expect things will pick up in pace in a couple of years because 10 years is that sort of period of time that people like to post-date future events by.
That might be enough to scare a few of the hold-outs. Then 2033 will be the next scare and reminder, because five years, etc.
Then probably every year after that until the deadline hits. By that point, the remaining few will be using
faketimeor something like it to eke out a few more years from whatever ancient hardware they’re still running that is too expensive to replace.Fun fact, and possible hint: Setting the date back 28 years on such hardware could work in a pinch, since the calendar from 2010 to 2037 is identical to that from 2038 to 2065. All weekdays and leap days fall on the same dates. (Easter and other moveable feasts don’t, however.)
I think people are missing a main point here. There is nothing wrong with IPv4, it works. It just can’t scale globally anymore, it doesn’t have enough space.
If you are running a worldwide network with millions of nodes, IPv6 is essential. But for things that are smaller than that, it becomes less essential. But what’s the best metric for adoption, how many small offices or home labs adopt it? Or how many large, worldwide networks?
i, uh, would say that constitutes a problem
When IPv6 was created, NAT technologies had not yet really developed yet. That development stretched out the utility of IPv4 and allowed it to be perfectly sufficient even today. Back then, you bought a public IP for every node on your network. Seems crazy now, because you can put an entire enterprise behind one IP.
IPv6 was created to allow that same provisioning concept of every node having a public IP. Well, we don’t really need that anymore. So we relegate IPv6 usage to machines like cell phones, but if a human has to utilize the address, we give em an IPv4.
IPv6 was created to allow that same provisioning concept of every node having a public IP. Well, we don’t really need that anymore.
I’m my home lab I don’t want every node to have an external IP. I like that NAT forces me to provision holes for specific purposes and between reverse proxy and limited port forwarding I get all of the functionality that I need.
I know I can get similar security using firewall rules and DNS but it is hard to want to replace something that just works.
Why is this?
Most corporations have the inertia of a rock when it comes to changes. There is no real reason behind it. Implementing IPv6 is a no-brainer. Same with NATing legacy systems so they can continue using IPv4.
Instead of manually juggling IP addresses, properly set up environments use hostnames and handle DNS automatically.
It’s basically “we/I don’t see any short-term benefit from it, it causes some setup work, and it is not important because everything still works”.
There is no real reason behind it
Money. The reason is always money.
Basically the same reason the US hasn’t switched to metric.
It’s basically “we/I don’t see any short-term benefit from it, it causes some setup work, and it is not important because everything still works”.
this is it and why the u.s. is such garbage. everything is all about the next quarter bottom line. there is zero long term planning, "if it aint broke, dont fix it’ is freakin king… at least at the small business level… which is most of them!
Absolutely this. Just kicking the rock down the road, and they’ll scramble to fix it once it causes issues.
denary
Yes, that’s technically the correct 10th term in the Latin-based unary-binary-ternary-… sequence but nobody calls it that… I wondered what your mother tongue is but I couldn’t find a language in which the preferred name for “decimal system” would use den- rather than dec-, dek-, des- or a completely different word. Not to mention you avoided senidenary for obvious reasons…
I dunno, I use the two terms interchangeably. Both describe the same thing and you get the idea with both words. “Senidenary” is much less common than “hexadecimal”, so the latter is preferred. But to be fair, it is kind if weird I used denary then hexadecimal. English is strange, it’s many languages in a trenchcoat.
V4 is easier to work with (not using long hex addresses and it’s concepts are more familiar) and works fine for most everyone’s use cases. So if it ain’t broke don’t fix it and low return on investment for most businesses. If you switch you have you do some awkward stuff where you maintain both.
What are these many advantages you speak of, other than global address space? If I’m an average business and may need one to three external ipv4 addresses, which are around $30/yr each, how much labor is it going to cost to migrate and when will I break even? Surely my sysadmin’s time is better spent on things like security hardening?
how much labor is it going to cost to migrate and when will I break even? Surely my sysadmin’s time is better spent on things like security hardening?
this is the reason right here.
theres literally no economic pressure for last mile users to give a shit about v6. v4 is so mature (and really the nat ecosystem around it) that its just dirt simple to get basic or crazy shit running quickly. v6? ha
I would love if standard IP addresses used hex by default. C0.A8.1.1 or 7F.0.0.1
One of the main issues I think is holding IPv6 back is that we keep needing to memorize IPs and type them by hand. 192.168.0.16, 172.16.0.0/12, and 10.0.0.0/8 are easy to remember, and usually it’s just the last number that’s important, anyway, because we all use 192.168.1.0/24 by default.
But then IPv6 comes along with /48 prefixes and endless numbers to read, analyze (same subnet? typos?), memorize or write down. Ain’t nobody got time for that.
IPv6 would have to integrate some sort of DNS resolver on a network level so that people can work with computer names. That would make the hostname actually relevant and not have every Windows be called DESKTOP-W38D6M5P. If you already have a separate DNS service, it’s only the registration step that has slightly more friction, but still.
E: I guess you could argue that it’s a UI problem. IPv6 has neighbor discovery and the UI can just show a list to choose from. Still no hostnames, though. Is configuration part of a layer’s responsibility?
Is configuration part of a layer’s responsibility?
You should see the unfinished proposal for ipv8. The authors think yes to a large degree, though not how you’re thinking.
because we all use 192.168.1.0/24 by default.
This is a bigger deal than you may think. Those of us stubborn enough to use one of the other defined internal network ranges already hit more obstacles than we should, and that difference should be trivial to non-existent.
For me the latest is a smart home device that hard-coded 192.168.1.x, so I am not able to connect it to my network
Most network devices can have multiple IPs. Assign 192.168.1.1 to your router (in addition to your normal up) and it should probably start routing traffic to that device
Maybe because a 128-bit hexadecimal address is impossible to memorise. I know all (6) my IPV4 addresses.
If only there was some kind of system to give IP addresses easy to remember names.
And give in to big DNS? What’s next? Multiple services per server? Insanity!
This was proudly coded in Notepad.hostfile gang rise up… after manually distributing the latest DNS updates out of band
Or maybe we could like, shorten the big addresses and not need to remember the parts we’re not using yet
There’s no place like ::1
Yeah? You plan to setup, host, and maintain a local DNS server?
Been there, done that. No thanks.
IPv6 on a small network can just use mDNS just fine. Larger networks, you would have a DNS server anyways.
And as long as it works perfectly every time, we’re set!
Fd00::1|fd00::2 etc…
Did not know that this could be gone…
I think you might be underestimating uptake. Google suggests upwards of 50% usage. Also I’m fairly certain that a lot of residential infrastructure has been slowly moving to IPv6 in Australia at least. Not an overnight process, but it’s happening. Over here we have a lot of newer mobile plans offering IPv6 as well.
I think a big holdback is that a lot of larger corporations will still use IPv4/NAT setups at the top level, even if all of the hardware in the network supports it. “If it’s not broke don’t fix it.” The result is huge amounts of daily traffic coming from these institutions being IPv4 by default, with all devices in WiFi, etc, being lumped into the same group.
I love australia for it. We had to support IPv6 because some of your clients were IPv6 only. And I think this is a good thing. Some push is neccessary.
For me personally it’s unfamiliarity. Technically all my devices and networks use IPv6. But I just enabled it in my router and used my hosting company’s configuration.
But one of my servers at home should be reachable from the internet but that is only through IPv4. Configuring port forwarding through my router was intuitive and straight forward. But for IPv6 I have to allow the port to be open, but I don’t want it to be the standard port so I have to configure the corresponding service on the machine itself to listen with a specific port on a specific address. But I have no idea what each of the addresses it has mean.
I think some of them are purely internal, some temporary, some less so. And if I ever found out what to use I would then have to configure my DynDNS, which is currently just pointing to the public IPv6 address of my router but not to the server I would want to reach.
I could learn all these things. But I just can’t be bothered because the IPv4 stuff still works.
At least you have ipv6 as an option…
I will switch the second it becomes available here. Won’t hold my breath though…
Additionally, why didn’t IPv6 replace v4
Same reasons why electric vehicles have not replaced gas powered vehicles (yet).
The engine is not easily exchangeable, and there are still enough people who build, and people who buy the older models.
but the analogy fails to scale. you cant nat gasoline
v6 solves a problem no one seems to have yet, and so no one is buying into. money talks and v4 isnt financially painful.
FYI, there’s a new proposal for IPv8 to address the issues with ipv6.
The main benefit seems to be that it is a superset of IPv4, so all existing addresses remain valid.
It also has some questionable ‘enhancements’ like requiring DNS records in order to allow routing.
Ipv8 isn’t a real proposal being taken seriously by anyone just fyi. The original white paper was AI slop with full on hallucinated sources.
Let’s just adopt the whole superset thing and have ipv4.1 or something. Those are some pretty rancid enhancements.
















