Re: "We have now run out of IPv4 addresses"
That’s my whole point. IPv4 is not forward compatible (it was never meant to be used long term) so any minute change to it requires to overhaul the entire installed base.
Yup. It's why it's a false argument to suggest hardware and software changes prevented any alternative v6 proposals, including simpler ones like tacking on a country code and modest header changes. IPv4 headers have a version field to help.
If you’re overhauling the entire installed base anyway you might as well tackle much more than just a lack of address space.
Problem is it hasn't tackled much more very well. So yes, it's created a massive address pool, but it's done it very inefficiently and introduced new problems. So one example being the massive size of home user allocations, or just exposing local & potentially sensitive information to the world. So..
Addresses in this group consist of an 80-bit prefix of zeros, the next 16 bits are ones, and the remaining, least-significant 32 bits contain the IPv4 address.
For a 'compatibility' kludge. Prepend the useful data with a 96 bit 'version' field, which devices have to buffer, read and then act on. Which from a network perspective, is one of the biggest inefficencies given header bloat impacts throughput, or 'goodput'. A lot of user datagrams are small packets, often only a few bytes, so the ratio of header to payload is lousy. Plus the impact on hardware, especially service provider where more memory and processor is needed to buffer/queue/forward packets. Which also has a latency impact, ie having to read more bits before actioning.
Alternatives could have also simplified user adoption, so tacking on a country code or a few bytes would mean service providers could read incoming packets, read the IPv4 version field and then potentially just prepend.. So fewer changes needed at the user level. Problem is v6 is pretty much an entirely new protocol, so more resistance to change.