Live data from Hacker News

Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

cloud.google.com

31–40 of 81 posts

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#31
post #30

Incredibly unsafe. If Class E is reserved "for future use", maybe that could include public use. The first rule of hardening production reliability is, make sure it doesn't just work, but that it will continue to work. Tomorrow, some customer of yours gets assigned addresses from Class E. Have fun untangling that. Why not stop this bullshit and just transition to IPv6??

I'm not too worried about the Internet at large actually using Class E addresses. IPv4 is considered obsolete so there shouldn't be any "future use" coming out of the standards committee.

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#33
post #28

It never made sense to me why the authors of the IPv6 standard chose to use an entirely different address format, instead of extending address space in a backwards-compatible way. Why not just append/prepend the 12 additional bytes onto existing IPv4 addresses, and write the standard such that all valid IPv4 addresses are also valid IPv6 addresses? I'm not an RFC author, but something like "All existing IPv4 addresse…

They actually did that (see sibling replies), and it actually delayed adoption of ipv6 by a few more years, because of things like: 1. some OSes can listen on ipv6-mapped-ipv4 automatically when some application listens on ipv4 2. app is updated to listed on both ipv4 and ipv6 3. at various companies, the updated app fails to start, because it listened on ipv4, which automatically listened on ipv6, and then it tried…

Interesting! Thank you for the thoughtful reply - I did not anticipate those complications.

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#34
post #28

It never made sense to me why the authors of the IPv6 standard chose to use an entirely different address format, instead of extending address space in a backwards-compatible way. Why not just append/prepend the 12 additional bytes onto existing IPv4 addresses, and write the standard such that all valid IPv4 addresses are also valid IPv6 addresses? I'm not an RFC author, but something like "All existing IPv4 addresse…

They actually did that (see sibling replies), and it actually delayed adoption of ipv6 by a few more years, because of things like: 1. some OSes can listen on ipv6-mapped-ipv4 automatically when some application listens on ipv4 2. app is updated to listed on both ipv4 and ipv6 3. at various companies, the updated app fails to start, because it listened on ipv4, which automatically listened on ipv6, and then it tried…

> and DHCPv6

So long as you don't have to care about Android, maybe.

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#35
post #14

Earlier quoted context omitted.

There's no such thing as "backwards compatible." The IPv4 packet format is set in stone with 32 bit addresses. The "just add more bytes" meme doesn't make any sense.

But it gets brought up all the time ...

Sure, by people who have never bothered to read the RFCs nor spent even a moment of thinking about what happens on the wire. (I last read the RFCs in the late 1990s so I don't know the latest, but it is obvious you can't add more bits)

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#36
post #2

Anything but IPv6 it would seem.

I wish that Kubernetes had started as IPv6-only or IPv6-first. IPv6 is perfect for giving each pod its own address. There is more space for giving each host a subnet, or giving each pod its own address in the subnet. That would have gotten rid of the CNI overlay networks. It would also made barrier between the internal and external networks. It would require running NAT64 and DNS64 in most clusters.

> I wish that Kubernetes had started as IPv6-only or IPv6-first

Seems a bit strange to me that they didn't, given how you'll want to use some sort of ingress anyway, so IPv4 could be delegated to those edge points.

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#37
post #28

Earlier quoted context omitted.

They actually did that (see sibling replies), and it actually delayed adoption of ipv6 by a few more years, because of things like: 1. some OSes can listen on ipv6-mapped-ipv4 automatically when some application listens on ipv4 2. app is updated to listed on both ipv4 and ipv6 3. at various companies, the updated app fails to start, because it listened on ipv4, which automatically listened on ipv6, and then it tried…

> and DHCPv6 So long as you don't have to care about Android, maybe.

Android still doesn't have this?

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#38
“ As mentioned in Google VPC network valid IPv4 ranges, Class E addresses (240.0.0.0/4) are reserved for future use, as noted in RFC 5735 and RFC 1112 — however, that doesn’t mean you can’t use them today in certain circumstances.”

Wow. reserved means “kept aside”. Once someone starts using them, they stop being kept aside.

This means that de-facto they are private addresses now. I suppose it’s a pragmatic choice.

But, wow, so much for having interactions in relevant standards bodies, multistakeholder engagements, etc. Why bother. Classy. /s

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#39
post #14

Earlier quoted context omitted.

There's no such thing as "backwards compatible." The IPv4 packet format is set in stone with 32 bit addresses. The "just add more bytes" meme doesn't make any sense.

But it gets brought up all the time ...

They think the shed should be blue.

Re: Leveraging Class E address space to mitigate IPv4 exhaustion issues in GKE

#40
post #14

It never made sense to me why the authors of the IPv6 standard chose to use an entirely different address format, instead of extending address space in a backwards-compatible way. Why not just append/prepend the 12 additional bytes onto existing IPv4 addresses, and write the standard such that all valid IPv4 addresses are also valid IPv6 addresses? I'm not an RFC author, but something like "All existing IPv4 addresse…

There's no such thing as "backwards compatible." The IPv4 packet format is set in stone with 32 bit addresses. The "just add more bytes" meme doesn't make any sense.

Just to address the implication (prevalent in many of the sibling comments as well) that I and everyone else who talks about this are idiots incapable of grasping that 128 is larger than 32:

If 32 bit IPv4 addresses are valid IPv6 addresses without fiddly NAT64/DNS64 shenanigans, then (it seems to me) IPv4-only clients could blithely continue to interact with the IPv4-accessible internet via IPv6-only servers, routers, etc. indefinitely. They can putter along accessing only a subset of available resources forever and everyone can passive-aggressively roll their eyes at them and close support tickets saying "upgrade to IPv6 if you want to see the rest of the internet, it just works."

That's what I mean by backwards compatible. Everyone who says "it can't be done, it has to be this way" is asserting that there's no better alternative to NAT64/DNS64 and running two entirely separate networking stacks in parallel. I don't buy that there was no simpler way to accomplish packing 32 bits into a space that can contain 128 bits. And if "supporting IPv6" simply meant "upgrading your networking software to the latest version, which transparently handles both IPv4 and IPv6 traffic for you" then networking and server teams have no excuse to avoid deploying IPv6 support for 26 years.

I recognize that 128 bit addresses will be truncated and packets misdirected or rejected if handled by a 32 bit networking stack. I recognize that clients upgrading too early will fail and need to fall back. But making it unnecessarily difficult for servers and routers to handle IPv4 traffic in an IPv6-only context led us to where we are today.

To illustrate my point: ascii text works just fine, with no translation layer required, when parsed and transmitted as UTF-8.

Post reply on HN