4 ms·
What is the modem doing to cause v6 to break in such a way that it affects the user's experience? In theory, broken or degraded v6 should be taken care of with
by oasisbob 9y ago
What is the modem doing to cause v6 to break in such a way that it affects the user's experience? In theory, broken or degraded v6 should be taken care of with Happy Eyeballs [1] at the user's device, so the user doesn't even know anything is wrong. I'm really curious what kind of breakage would slip through the cracks.
eg, when Netflix started blocking IPv6 tunnel brokers in their VPN crackdown, my house was affected and Netflix was broken. As a "short term" fix, I blocked traffic towards the v6 tunnel at the firewall, but was too lazy to disable v6 prefix advertisement or actually take the tunnel down. I intended to revisit the whole situation, but forgot.
Despite all the devices on my home network having global v6 addresses, you'd never know that anything is broken because Happy Eyeballs is working as intended across everything - Mac OS, Linux, iOS, Android, Windows.
[1] https://en.wikipedia.org/wiki/Happy_Eyeballs https://en.wikipedia.org/wiki/Happy_Eyeballs
- pmjordan 9y agoIf in doubt, it's probably an MTU discovery issue. Initial TCP handshake succeeds, then the connection hangs on the first major payload packet (e.g. HTTP response). At least I've seen that happen on lots of awful setups. Many ISPs seem to have routers that neither fragment packets, nor do they respond with ICMP Fragmentation Needed packets. So the connection eventually times out.
- nikanj 9y agoI'm at a late stage of an IT career, and I no longer care /why/ a piece of shit device is a piece of shit. With ipv6 on, larger objects like style sheets and images don't load. With ipv6 off, everything loads correctly. If you want me to debug why this happens, we have some papers to sign and retainers to pay ;)
- geofft 9y agoHappy Eyeballs cannot be implemented in libc/Winsock/etc. alone, because it crosses the abstraction barrier of the Berkeley socket API. Happy Eyeballs wants you to open two TCP connections to the same hostname, one over IPv4 and one over IPv6, and use the one that returns an ACK first. But the BSD socket API separates the process of looking up the hostname and opening a connection to it - getaddrinfo() returns a list of addresses, but you can only pass a single address, with a specific address family (IPv4 or IPv6), to connect(). So the intended use is that the application iterates over the returned addresses itself. You could come up with some scheme where libc caches the IPv4 and IPv6 results and has getaddrinfo() return a fake address to the application that's actually an index into the cache, and have libc implement Happy Eyeballs on its end once connect() is called, but that would probably have all sorts of negative side effects, starting with the fact that getaddrinfo() couldn't be used for any other purpose than generating addresses for connect(). Also, not every protocol is compatible with Happy Eyeballs, because there's no guarantee that opening a connection is harmless. It's perfectly valid for me to e.g. implement a smart lightbulb protocol by having it toggle off/on when it receives a connection from a trusted network interface without actually requiring data to be sent. If you used Happy Eyeballs in this case and both IPv4 and IPv6 worked, you wouldn't be able to turn on your lights. This is of course a contrived example, but the authors of generic libraries like your libc have to worry about contrived examples. So it has to be implemented by application software or at least a library for the specific protocol like HTTP (layer 5 or up), which means that in practice, lots of apps won't have it implemented. And therefore in practice, broken or degraded IPv6 is very end-user visible.
- Hello71 9y agoalthough otoh in theory there are 65535 usable ports, but shitty shitty firewalls and shitty shitty "sysadmins" often mean you just get 2, and TCP only at that, but it seems that just that bare minimum "connectivity" works well enough that "regular users" don't notice.
- rootw0rm 9y agothat is a fairly kickass way to describe the problem.