Comment by cyberax
3 days ago
> There's nothing wrong with ipv6
Sweet summer child...
There's EVERYTHING wrong with IPv6. It's a recursively bad protocol. From the basic header design (extension headers, wtf) to the "human management" layer ("why should we deploy IPv6 if it actively _breaks_ stuff?").
As an example, try to design a standards-compliant IPv6 network where you can reliably print from an Android phone if your Internet connection goes down and the router withdraws the prefix. It's trivial with IPv4 and _impossible_ with IPv6.
> if your Internet connection goes down and the router withdraws the prefix
My router advertises both the public prefix from my ISP and a ULA prefix for internal LAN connections (essentially the IPv6 equivalent to RFC-1918). This gives me stable local addresses that do not change and work without public internet access.
https://en.wikipedia.org/wiki/Unique_local_address
> My router advertises both the public prefix from my ISP and a ULA prefix for internal LAN connections
You'd think so, but you'd be wrong. If you have a GUA and a ULA, and the printer has both a GUA and a ULA, then your host is going to prefer the GUA when connecting to the printer.
So when a router withdraws a prefix, it's possible for your computer to still have a (stale) GUA while the printer only has a ULA. Whoops, and your printing is broken.
There is an RFC in review that would fix this: https://www.ietf.org/archive/id/draft-ietf-6man-rfc6724-upda... . It'll likely be approved in 2027, so you'd be able to use ULAs some time in the 2030-s once it trickles down.
Ditch advertising public addresses to local devices at all.
Have the router issue ULAs only and let the router do stateless NPT (network prefix translation) only.
Done, works great. Doesn’t matter what your internet connection is doing.
Yes, your local devices will use the ULA to attempt to connect to Internet destinations if that’s the only v6 address they have. It works fine.
11 replies →
That RFC does look like a nice improvement! Until then, since both devices have a ULA address, wouldn't simply deleting the printer from your phone/computer and re-adding it resolve the issue? Doing it when your public internet is down would probably even be best to ensure you're getting the ULA instead of GUA, thereby avoiding this issue entirely in the future.
(Admittedly I haven't had a printer for over a decade and I have never printed from a phone, so maybe I am missing something.)
2 replies →
The extension headers are fine, because they frequently are not needed, so the fact that they are optional allows the IPv6 header to be significantly simpler than the IPv4 header, which has some seldom used fields which are always present.
No, they are not fine. Their design means that the router needs to know all possible extension headers to just be able to route the packets. Oh, and you also have to do offset-chasing in the hardware fastpath.
As a consequence, IPv6 with extension headers are just dropped by routers in the public Internet.
https://datatracker.ietf.org/doc/html/rfc2460#section-4:
That seems like the opposite of needing to know all possible extension headers in order to route a packet.
2 replies →
If it works with mainstream Linux, sounds like an Android problem
Android’s developers have long had their own vision on how v6 should work to the detriment of their own users...
Exhibit A: https://issuetracker.google.com/issues/36949085
On the other hand, if Android supported IA_NA we would probably be seeing ISPs in the wild handing out /112s and going "But it's 2^16 IPs! We're being so generous, what could you possibly have to complain about?", so it's quite possible that adding support would be to the detriment of all Internet users.
Android does now support IA_PD, so the people who need to track IP use via DHCPv6 requests should now be happy. (We'll just put aside the question of whether doing that even makes sense in a world where devices can be told to use any IP.)
That's not a very good example.
1) I can count on one hand the number of times my Internet connection has gone down in the past 5 years.
2) I can count on zero hands the number of times I've tried to print from a phone, ever.
I explained the problem in a sibling post on this thread.
But you want a more complex challenge? Here you go!
You have a small business office that has two Internet uplinks for redundancy. You want to balance the load across them and failover broken links.
This can be done with literally zero setup with IPv4.
This is teasing at a bigger issue.
When v6 was “invented” I believe they thought “everyone” would have PI addresses, as was (relatively) common 30 years ago.
If everyone has their own PI space, and used BGP with their ISPs this would also be “zero setup” with v6 as that’s the entire point of BGP and PI addresses.
It was a definite failure of imagination that they did not think of how this would work if you don’t control your own IP space.
If you have ISPs you can peer with over BGP and your own PI IP space this does “just work” as you’d expect. The same way it “just works” with v4 in a NATless world.
A lot of the things that “just work” in v4 are really just NAT sweeping the rough edges under the rug. The same problems exist in v4, but don’t get seen in practice as local / global addresses are effectively always different on your network (unless you’re lucky enough to be a legacy allocation that has an /8 of v4 I suppose).
If you enforce that same “separation” in v6 (with NPT, or NAT) surprise the “problems” also go away, like they do in v4.
5 replies →
I do admit this is a challenge. The only reason it's "easy" with IPv4 is because of NAT. With IPv6 you'll need prefix translation. I've found someone with a failover solution for UniFi but in general you are correct, it's a pain: https://github.com/mattackerman808/ipv6-wan-failover
1 reply →
[dead]