Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> What's your idea, specifically?

This is the problem. Lots of arm-chair protocol engineers claim it'd be easy if 'They did X'. Of course, these immediately fall apart under the barest of scrutiny but they keep coming up.

Here is your challenge. Create a way to add this address space extension in a way that doesn't break backwards compatibility. Remember, you need to be specific how you would add the change and how it would keep backwards compatibility.



> address space extension in a way that doesn't break backwards compatibility.

i didn't say it wouldn't break backward compatibility - you're moving the goal posts. what i said was "a superset of IP with a different packet format and wider fields"

> arm-chair protocol engineers

don't be condescending. i've likely been designing protocols for longer than you think.

> Remember, you need to be specific how you would add the change and how it would keep backwards compatibility.

if all you had to do to deal with IPv6 was bigger addresses and a slightly different wire format, it wouldn't have had the barrier to adoption. don't design an entirely different protocol. the wire format is the least of the problems.


>if all you had to do to deal with IPv6 was bigger addresses and a slightly different wire format,

This again. The biggest barrier to IPv6 adoption has always been a different wire format, it doesn't matter the degree of difference.


I'm just a casual homelab guy, but all my hardware now supports IPv6 but I'm not really using it precisely because it is just so different from IPv4.

How you assign addresses is completely different. How you configure your firewall as a result is completely different. In fact software support for the latter was one of the things I struggled with for years before having to change router software from pfSense to OpenWRT. Last I checked pfSense still didn't have full support.

They changed the way you write the addresses, using the port separator as group separator as well, leading to needing special software support for parsing IPv6 addresses. I know because I had to fix this in a few projects where we bothered to add IPv6 support, and that was the biggest PITA by far when adding IPv6 support, the rest was trivial.

Out of all the trouble I've had with IPv6, the wire format was the least problematic by far. All the wire format did was cause it to take some time to get IPv6 capable hardware.

But I've had that hardware for decades at this point. The thing keeping IPv6 back is all the other things they changed.


> They changed the way you write the addresses, using the port separator as group separator as well, leading to needing special software support for parsing IPv6 addresses. I know because I had to fix this in a few projects where we bothered to add IPv6 support, and that was the biggest PITA by far when adding IPv6 support, the rest was trivial.

OMFG!

The hardest part of supporting IPv6 was fixing your address parsing? THAT!?

Here's my frustration. Everyone who doesn't understand the why of IPv6 always complains that the address format is such a huge problem and that is why the IPv6 deployment is so slow and hard. It's basically a shibboleth for poor understanding.

The reason why this isn't a good take is that IP address parsing is a standard function of every standard library on the planet. You dump in a string and they all figure it out, and spit back an object with everything you need. The reason you had so much trouble with supporting it is that you weren't using the platform libraries. You hacked together some junk, probably a few broken regex's and string concatenation. Your homebrew IP library was broken and I guarantee you didn't handle all the IPv4 parsing rules correctly.


> The hardest part of supporting IPv6 was fixing your address parsing?

That was actually a non-trivial part of implementing IPv6. Sure RFC 2732 had come out a few years earlier, but we weren't parsing URLs so it was not clear if it applied to our use-case.

All the rest that was required for us to support IPv6 was quite trivial. This was the only thing we had to spend time on.

> The reason why this isn't a good take is that IP address parsing is a standard function of every standard library on the planet.

Ok, I stand to be corrected, after all none of us were network programming experts.

How do you parse a IPv6 address, including the port number if present, using Boost 1.35 or C++03 STL? Note should run on Windows XP, as well as Linux and OSX of similar era. Does your solution require the format specified in RFC 2732?

Anyway my point still stands. There main friction to adopting IPv6 is not the wire format, it's everything else they changed.


So here is an exercise: go look at the structure of an IPv4 packet. It’s not complicated. Can you see where you can cram 32 additional bits? Or even 24? Because if there isn’t a place for them then you cannot possibly extend the IPv4 address space without breaking backwards compatibility. Anyone can do this exercise, and anyone who has an opinion should do this exercise.

Spoiler: you will come to the conclusion that you can’t find the additional bits. Your only option is to break compatibility and create a new packet header format. At this point you can choose literally any size address larger than 32 bits. 64 is good, but the cost to go to 128 is literally nothing while giving you a lot more possibilities of what you can do with it.

Lastly, IPv6 fixes a lot of craft from IPv4. It is a more streamlined protocol that is actually easier to work with than IPv4. The people who told you that IPv6 is overengineered didn’t have an alternative better protocol. Their point was that IPv4 is fine and we don’t need anything but what it provides because a new protocol is scary and annoying to learn because new things are scary. Literally, mathematically, there is no alternative that solves address exhaustion in a backwards compatible way. CGNAT is the overengineered hack, not IPv6.

I really hope you stop respond in to people with nonsense before you look at the packet structure yourself.


what i said was "a superset of IP with a different packet format and wider fields"

well, yes obviously you need more bits. what you don't need is all the other changes.

> I really hope you stop respond in to people with nonsense before you look at the packet structure yourself.

don't be condescending.


Again, look at the IP header format and see for yourself that there is no place to create wider fields. This is what everyone here has been trying to tell you in a myriad ways and you are not hearing this. There is no possible way to do what you are proposing. What you are saying is the definition of nonsense because there is no sense in it. You are arguing that an 18 wheeler should be able to fit inside the trunk of a car and getting upset when people tell you that it doesn’t fit.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: