Can you expound on why you think this is the case?
The IETF really needs to fix this issue in particular, it’s the last big hurdle in seeing adoption IMO.
Is using ULA and NPTv6 any worse than using NAT44?
ipv6 is not backwards compatible with ipv4.
Consequently adding support for ipv6 requires a dual stack solution (since supporting ipv4 is a must).
An alternative solution to the problem of the limited number of ipv4 addresses has been reliance on NATs. This is much simpler than supporting ipv6 and is already widely adopted everywhere, and so that's what people are choosing to do.
The obvious conclusion (from a casual observer like myself): the successor to ipv4 has to be backwards compatible with it, similar to how UTF-8 is backwards compatible with ASCII.
EDIT: I should note that I am not a network engineer, so if anything I have written is incorrect, I hope someone corrects me.
I've seen this objection, and I do not see how it could be otherwise.
If all the code out there was for 32-bit-only addresses (of IPv4), then expanding the addresses space to something >32 bits would entailed updating every single IP-capable code. Which is exactly that needed to be done for IPv6: every device needed to have code updated (and this included 'hardware code' of things like ASICs).
While UTF-8 is backwards compatible with ASCII, it did of course require programmers to add support for it just like you are suggesting any successor to IPV4 would. But once that support was added, ASCII could be treated as part of UTF-8 standard.
From what I understand, this is not the case with IPV6 and IPV4. The former requires its own software stack and the IPV6 standard was written (from what I have read) without any attempt to make it possible for IPV4 and IPV6 addresses to coexist in the same software stack easily.
It's not like an actual pipe where one end doesn't care where the other end is. The recipient of a packet has to know where to send the reply.
So while a host with a larger address could easily talk to a legacy host with an older, smaller address, the legacy host couldn't reply because it wouldn't know how to address it.
So, just like expanding address space (IP: 32-bit to 128-bit; ASCII: 8-bit/1-byte to multi-byte), you had to rewrite all the software to handle things.
https://en.wikipedia.org/wiki/IPv4_mapped_address#IPv4-mappe...
The main reason I don't like it - it is much more complex than IPv4 and this complexity provides from little to now real benefits (but a lot of advertised by IPv6 evangelists). The only reason networks migrate to IPv6 is the scarcity of IPv4 addresses, not other features which was envisioned as improvements over IPv4, but on practice turned out to be not very useful.
128bit per address from which usable only 64bit looks like a waste of resources (CPU/RAM) to me. Idea was to embed MAC-address in lower 64bit, but it turned out to be a bad idea because of privacy implications and for most end-user devices lower 64bit are now random. Given that /64 prefix in most cases used by single host a 64bit address would be sufficient. If we had 64bit addresses we would save RAM for routers and OS kernels and simplify implementation (64bit integers are available in practically all modern programming languages and 64bit operations are fast, while 128bit is a slower extension which is not universally available).
For me IPv6 is an example of the second-system effect: https://en.wikipedia.org/wiki/Second-system_effect
If I were running an ISP, I would migrate the backbone network to IPv6 and just use embedded IPv4 addresses to avoid the headaches that come with router-to-router IPv4 links. With IPv6 you always have a link-local address on every port that can be used by routing protocols without relying on proprietary solutions that are not interoperable between vendors or having to assign an IPv4 address (and hoping that you assigned a large enough subnet for future growth). It is much easier to scale up an IPv6-only network and much easier to connect one IPv6-only network to another.
Of course IPv6 is not perfect. SLAAC did not really work out as planned and now we are stuck with an annoying mix of SLAAC and DHCPv6. Reverse-DNS is still a bit of a pain. IPSec is not what it should have been and too many IPv6 standards rely on IPSec for security/authentication. Even so, the core of IPv6 is a huge improvement over IPv4 for individual users, small network operators, large network operators, and the Internet as a whole.
My experience is the complete opposite. Lot of software is still very immature when it comes to IPv6. A prime example is that I had to abandon pfSense because it just didn't handle prefix delegation. And no, switching ISP is not an option for me.
I'm now on OpenWRT which is miles better, but getting IPv6 to play nice is still lot more work. For example there were a lot more steps to getting split-horizon DNS working compared to regular IPv4.
> Even so, the core of IPv6 is a huge improvement over IPv4 for individual users, small network operators, large network operators, and the Internet as a whole.
Maybe in another decade or two when IPv6 and the ecosystem around it has matured a bit. Though it still seems to have a lot of moving parts compared to IPv4, thus requiring more to keep track of.
A total length of 64 bits would be too small for the eventual size of the internet. Our choice was between deploying something with too many addresses or something with too few addresses, and the former is by far better than the latter. We do not want to be going through another IP family transition to increase the bit length again, so we need to get it right the first time.
v6 mostly just took v4 and made the addresses longer, so I'm not sure it's reasonable to describe it as bloated. About the only thing it actually adds over v4 is SLAAC (and IPsec, but that was immediately backported to v4).
Even home consumers are getting at least a /64. Unless you're expecting consumers to start having ~2^64 devices, it doesn't seem like anyone is concerned with the public internet needing more than ~2^64 addresses.
By the time you've gone through six levels of allocations (IANA -> RIR -> ISP -> Customer -> Network -> Device) the vast majority of the total address space will be unused -- or rather: used for the purpose of aggregation, but not used for end machines. A 64-bit address space might only reasonably be able to handle something like 2^40-2^48 devices in total, which isn't that much more than we already have today.
> Unless you're expecting consumers to start having ~2^64 devices
You'd definitely need something longer than 64 bits long, long before this point.
v6 has enough space to give everybody multiple networks, not just multiple addresses (and those networks are always big enough for however many devices you end up attaching to them).
* is roughly equal to 4 300 000 000 (4e9, 4B)
* it is also the maximum number of IPv4 addresses
Going back to math class:
* 2^64 = 2^(32+32) = 2^32 * 2^32 = (4B) * (IPv4 Internet)
So a single /64 IPv6 subnet can hold four billion IPv4 Internets worth of systems.
But given all the drama with IPv6, I think it was reasonable to go with 128-bit addresses just so we don't have to go through all of this again.
On a related note, messing up the assignment of IPv6 address was actually accounted for. If you look at any unicast address that's currently live, you'll see that it begins with a "2". This is because addresses are only being assigned from 2000::/3:
* https://www.iana.org/assignments/ipv6-address-space/ipv6-add...
If, for some reason, we realize there's a mistake in how things were done with that space, it will be declared legacy/deprecated, and IANA will start over with addresses from 4000::/3. If that is screwed up, then 6000::/3 will be next, then 8000::/3, a000::/3, and finally c000::/3.
So the Internet community has six tries to get IPv6 addressing correct.
I would recommend you check out Tom Coffeen, who wrote a book on IPv6 address planning for O'Reilly. Even with half the bits going to the subnet, there is a astronomical amount of addresses available: