Eg 192.168.0.1 becomes 0.0.0.0.192.168.0.1
And then we dish out all the new address space. You would get the network providers to handle address conversion until software and hardware has been updated. Because all the existing addresses are reserved in the new set, it doesn’t affect them.
Keeps all the nice parts of IPv4, doesn’t require everyone to switch to an entirely new system, backwards compatible with existing hardware/software. Problem solved.
[–] mort96 15 hours ago
[–] throw0101c 15 hours ago
As does DNS.
"A" records are fixed at 32 bits, so you have to add a new record type and update all DNS software, plus user-space API/library code and data structures to ask for and store the new record type.
Just like IPv6.
There is no "just" adding more addresses: whatever scheme anyone comes up with is the same amount of work as IPv6.
[–] malfist 13 hours ago
[–] knottn 15 hours ago
[–] mort96 15 hours ago
[–] dspillett 15 hours ago
IIRC something like that was considered when IPv6 was first being designed, be deemed insufficient for the long-term future. 64-bits is thought to be enough to stave off address starvation though, which is why IPv6 address ranges are usually assigned as /64s (my homer link has a /48 range should I wish to use it all!), so I can see your reasoning on that level.
[–] arjie 12 hours ago
[–] dspillett 10 hours ago
Hence my having a /64 (/48 in fact, should I ever enable more than the current /64) shows that 64-bits is enough for global addressing. If it wasn't then giving me a /64 would be part of a path to creating an address exhaustion problem just like the one with IPv4 (which was exacerbated somewhat by handing out /8 ranges unnecessarily in the early days).
[–] arjie 9 hours ago
[–] georgyo 15 hours ago
You still need to have routers, clients, and absolutely everything to understand the new scheme to use those new addresses.
[–] charlieyu1 15 hours ago
[–] growse 15 hours ago
[–] charlieyu1 11 hours ago
[–] dspillett 10 hours ago
Though I've never seen a v6 address represented that way, it would make then noticeably longer, so I don't know if anything will accept such a string as a valid address. Though IPv4-mapped addresses are sometimes show as a mix (::ffff:10.5.2.1 for 10.5.2.1) so maybe I'm wrong there.
Likewise I've never seen IPv4 addresses written in hex in the wild, but the relevant specs say it is valid. `ping 0xc0a82bc2` works just as well as `ping 192.168.43.194` but I doubt many forms accepting IPv4 addresses will validate that and allow it.
[–] bottled_poe 15 hours ago
[–] throw0101c 15 hours ago
Or octal:
* https://networkingtoolbox.net/ip-address-convertor/represent...
[–] bluGill 15 hours ago
[–] Sharlin 14 hours ago
[–] WorldMaker 14 hours ago
[–] ndriscoll 15 hours ago
The entire ipv4 space is already mapped to reserved subsets of ipv6, by the way. e.g. ::ffff:0:0/96 (i.e. 0.0.0.0.0.0.0.0.0.0.255.255.w.x.y.z) or 64:ff9b::/96. v6 devices can already "talk to" v4. The problem is the ipv6 space is obviously not a subset of ipv4, so v4 doesn't have a clean way to talk to or even about v6.
[–] zamadatix 15 hours ago
Most of the time, this results in people thinking the big problems are one set like "if only there was a way to translate" while the real remaining problems are another set like "and how do you get people to want to transition when it works well enough for those clients in the translated state".
[–] Sharlin 15 hours ago
Yeah, about that part. This is a "now draw the rest of the fucking owl" type of idea.
[–] orangeboats 14 hours ago
It turns out when you ignore the hardest part of the problem, you can always make a good-looking proposal!
[–] mahboi 10 hours ago
[–] orangeboats 10 hours ago
[–] mahboi 9 hours ago
[–] orangeboats 4 hours ago
IPv6-lacking hardware and software definitely do exist in the wild, have you seen how some programs from incompetent developers accept only IPv4 addresses in the config files? I think all of us have seen at least one such program.
Often times it's just a matter of using another function to parse the address string. But you are shit outta luck if the program is closed source.
[–] mahboi 3 hours ago
[–] cr3ative 15 hours ago
[–] teddyh 8 hours ago
[–] Dagger2 7 hours ago
Being an IETF draft means nothing at all, as covered in this IETF draft: https://datatracker.ietf.org/doc/draft-wkumari-not-a-draft/
[–] teddyh 7 hours ago
[–] andix 15 hours ago
Dual-stack is also the default, and CG-NAT exists as a fallback. For IPv6 only websites there is still the option to use a HTTP proxy.
[–] spauldo 58 minutes ago
[–] icedchai 15 hours ago
[–] zeroq 15 hours ago
[–] vrighter 14 hours ago
[–] _blk 15 hours ago
Now the reason this doesn't work is that the address length is not encoded, so if you make the address longer, no one knows about it and they [routers and destinations] just assume the wrong address and send it on or discard the frame
[–] orangeboats 15 hours ago
How is this different from ::192.168.0.1? :)
[–] wpm 15 hours ago
Of all the sins of IPv6, its tied between using ':' as the separator, and the god awful '::' "just skip writing the address because we made them too fucking big lol"
Wouldn't have been a problem if they hadn't given every square millimeter of the planet 100 billion addresses.
[–] orangeboats 15 hours ago
Fine, let's change the question.
Without counting, how many zeroes are there in 192.168.0.0.0.0.0.1?
[–] mahboi 8 hours ago
But I don't get why the other commenter was proposing putting the 0s at the beginning instead of the end. Shouldn't the new address space be under the existing subnets?
[–] wpm 14 hours ago
[–] throw0101c 14 hours ago
The protocol chosen for IPng, SIPP, did actually have "only" 64 bits, but this was deemed not enough as folks did not want to have to worry about running out again (amongst other reasons), and so tweaked it to have a fixed 128 bits:
* https://datatracker.ietf.org/doc/html/rfc1752
SIPP originally was variable-length capable, but it was decided fixed-length was better (e.g., for hardware like ASICs).
> Wouldn't have been a problem if they hadn't given every square millimeter of the planet 100 billion addresses.
For the record: IPv6 gives 10¹⁷ addresses per mm²; in terms of volume, 10⁸ IPv6 addresses per mm³ throughout the Earth.
[–] wpm 14 hours ago
I woulda thought 18 quintillion would've been enough addresses for the next century or two but good thing we locked in all this extra data we throw away with a '::'.
I'm sure it was all well considered by intelligent people, but it was still a dumb decision.
[–] ndriscoll 13 hours ago
Like I only tangentially interact with this stuff, but I can't imagine how a network operator wouldn't prefer we live in an all ipv6 world.
[–] cowlevel 10 hours ago
[–] growse 14 hours ago
See, no colons in sight!
[–] mahboi 8 hours ago
[–] gwbas1c 14 hours ago
That being said, we should take the time to understand why IPv4 is still hanging around when IPv6 has been around since before most people got internet access. What is really holding IPv6 back?
[–] mahboi 9 hours ago
[–] binaryturtle 12 hours ago
[–] throw0101c 15 hours ago
There is no "just" extending the address length:
So it's a matter of mathematical and physical fact that to expand
the address size, you must change the protocol, and that means
[three] things immediately:
You have to change the version number.
You have to add new code to handle the new version.
[…]
You need a coexistence technique so that updated systems,
with the new protocol, can connect to old systems that know
nothing of the new protocol.
Two minutes of thought show that this third requirement has only
two solutions:
(3A) Dual stack, in which the new machines speak both
the old (IPv4) and new (IPng) protocol.
(3B) Translation, in which something translates addresses
between the old and new protocols.
* https://github.com/becarpenter/misc/blob/main/why6why.md* https://datatracker.ietf.org/doc/html/rfc1671
> Keeps all the nice parts of IPv4, doesn’t require everyone to switch to an entirely new system, backwards compatible with existing hardware/software. Problem solved.
You have to ship new code to every 'network element' to support your "IPv4+" plan. Just like with IPv6.
You also have to update DNS to create new resource record types ("A" is hard-coded to 32-bits) to support the new longer addresses, and have all user-land code start asking for, using, and understanding the new record replies. Just like with IPv6. (A lot of legacy code did not have room in data structures for multiple reply types: sure you'd get the "A" but unless you updated the code to get the "A+" address (for "IPv4+" addresses) you could never get to the longer with address… just like IPv6 needed code updates to recognize AAAA, otherwise you were A-only.)
You need to update socket APIs to hold new data structures for longer addresses so your app can tell the kernel to send packets to the new addresses. Just like with IPv6. In any 'address extension' plan the legacy code cannot use the new address space; you have to:
* update the IP stack (like with IPv6)
* tell applications about new DNS records (like IPv6)
* set up translation layers for legacy-only code that cannot be update to reach IPv4+-only destination (like IPv6 with DNS64/NAT64, CLAT, etc)
You're updating the exact same code paths in both the "IPv4+" and IPv6 scenarios: dual-stack, DNS, socket address structures, dealing with legacy-only code that is never touched to deal with the larger address space.
"Just adding more bits" means updating a whole bunch of code (routers, firewalls, DNS, APIs, userland, etc) to handle the new data structures. There is no "just": it's the same work for IPv6 as with any other idea.
[–] mahboi 10 hours ago
[–] cowlevel 10 hours ago
[–] mahboi 10 hours ago
[–] cowlevel 3 hours ago
[–] mahboi 3 hours ago
[–] mitxela 15 hours ago
[–] harrouet 15 hours ago
[–] mahboi 9 hours ago
[–] Dagger2 7 hours ago
You have 2002:47b1:11ab::/48. If your ISP supports it, packets sent to that /48 will be delivered to you as native v6 packets, otherwise they'll be stuffed into a v4 packet which will be sent to 71.177.17.171. Or there's ::ffff:71.177.17.171 which will reach you using unmodified v4 packets.
That's two different ways your v4 address is present in v6.
[–] mahboi 7 hours ago
[–] Dagger2 3 hours ago
(On home Internet you'll probably need your ISP to handle the announcements, like they already do for your v4 address.)
[–] mahboi 3 hours ago
[–] TZubiri 15 hours ago
the thing is that it does require a switch similar to ipv6. but maybe there’s a subnet that maps 1 to 1 with the legacy block?
something like this could theoretically be pinned onto ipv6 AND anyone could do it, just select a 98 bit prefix you own, and the rest of the 32 bits you can map to ipv4.
phase -1 could be tunneling traffic through a single zone proxy which would be inefficient and is purely conceptual
phase 0 would be the same, but with an anycast ipv6,same ip that resolves differently based on location, like 8.8.8.8
phase 1 would be the mapping prefix to ipv4 (and viceversa?) being distributed to the routing tables like, which could be done via application logic (most efficient), or via some deep arcane isp routing conf files, or just a hell of a lot of routing table entries for each ipv4 but duplicated, possibly programatically controlled by an application that generates router table files as a target, thus avoiding desyncs and effectively becoming the first option of application level implementation
maybe something like this already exists though
of course it’s horrible hacking (as hacking in the non crime sense often is), but it allows for a purely technical solution to issues of political and administrative nature.. which is all the rage nowadays
[–] cowlevel 10 hours ago
[–] inglor_cz 15 hours ago
[–] nekusar 15 hours ago
But the big big problem isn't windows/Linux/mac. Writing drivers for those are "easy".
The problem lies in all the networking gear speaks only IPv4 and/or 6. LLM assisted hacks can get into maintenance areas, but these devices are also built to support the least amount of things. Like, there may not be enough ram or storage to even run it.
And 20 years in, you see how well IPv6 has taken off :eyeroll:
And even on my network, I disabled IPv6. My upstream ISP is doing something that makes '6 unstable, but '4 is fine. And I find most network engineers don't have to maintain '6, so they never really learn it.
Absolutely not. Existing IPv4 hardware and software expects addresses to be 4 bytes long. They expect packets to have a 4 byte source address at offset 12 in the header, then a 4 byte destination address at offset 16. Everything breaks if you try to give them a header with an 8 byte source address at offset 12 and an 8 byte destination address at offset 20.