Tax the inelastic and all.
This has the secondary benefit of freeing up unused space.
FTFY. CGNAT means consumers get to be behind a double NAT, no port forwarding, poor P2P support, etc. CGNAT is the IPv4 solution of last resort.
I suppose the evidence I would give to back up my statement is that if it was well designed, it would have been adopted. As it stands, I only find it is supported among the more distinguished services that I use.
For another example, Python 3 has much better design than Python 2, and the difficult adoption a result of having people fix what they had written using the poor Python 2 design, and making it easier to adopt would have meant preserving the poor choices.
I don't know enough about IPv4 vs IPv6 to make a judgment in this particular case, but I don't think your argument broadly in itself here follows.
That being said I think it is good people are so good at being non-conformist, at least if there was any other solution out there we would more than likely have found it by now.
There are already more devices connected to the internet than there are ipv4 addresses. Already Android devices alone are more than 3 billion, PCs 1.5 billion. The limit is at 2^32 = 4.3 billion.
It would be a better comparison if Mars were already habitable and one only had to move humans over. Because that's all we have to do to make ipv6 suitable.
Then there is the more complex routing tables. ipv4 is highly fragmented so users with many users don't have large contiguous blocks, but multiple smaller ones. This causes routing tables to bloat up, which increases routing overhead of the packets.
Lastly, there is the ridiculousness of paying for ipv4 addresses in the first place. Ideally, companies could just register them, having to pay a small service fee, that's it. In ipv6 this is the case, but in ipv4 you see Amazon paying huge sums for large ipv4 blocks. More importantly though, this cost is also handed down to customers, at least for hosters like Hetzner. For small servers, this can quickly be a significant fraction of the cost.
I'd like to point out some design decisions I love about IPv6:
- 128-bit addresses instead of 32-bit. I can't imagine having a shortage of routable IP addresses for a long, long time.
- I don't have to use NAT if I don't want because there are enough IP addresses to go around. We've grown so used to NAT that we take it for granted, not recognizing it for the ugly hack it is. On my home network, just about every machine has a routable IPv6 address.
- A consistent subnet: it's almost always gonna be a /64. When I lay out my networks, I don't have to regret specifying a /24 and then, as the office grows, wishing I could extend it to a /22. Every IPv6 subnet is big enough.
- A consistent subnet means that you don't need to use a subnet calculator as much.
- Not wasting .0 and .255 addresses (network & broadcast addresses). It's particularly bad with very small subnets (e.g. an IPv4 /30 wastes half its usable IP addresses).
- On that note, I like having my machines being able to have a .0 (::) address. My favorite IPv6 address? 2600::. You can ping it to see if your connectivity is working.
- ::1 is loopback. 127.0.0.1 is lookpback on IPv4, but 127 is a kinda weird number (okay, it's 2^7 - 1, but it's still weird).
- Without NAT I don't have to worry about network collisions when I VPN into corporate ("What? They're using 10.0.0.0/24? That's my home network's subnet! Dang!").