r/ipv6
IPv6 is “broken” when PMTUD fails - and Happy Eyeballs doesn't save you
- upvotes
- 54
- comments
- 65
Post
Highlighted: the lines this signal was extracted from
My setup is a Deutsche Telekom PPPoE connection. The actual PPPoE MTU is 1492, while clients on the LAN use the normal Ethernet MTU of 1500. One particular site, login.schwaebisch-hall.de (behind Azure Front Door), reliably fails over IPv6. IPv4 works. IPv6 through another ISP works. DNS works. The TCP connection works. The TLS handshake starts - and then stalls after the initial ClientHello message. After packet captures and testing, the problem is very clearly MTU-related. With the client at MTU 1500: IPv6 HTTPS fails client advertises TCP MSS 1440 the first 99 bytes from the server arrive then server TCP bytes 100–2955 are missing later packets starting at SEQ 2956 arrive the client repeatedly ACKs 100 and SACKs the later data That missing range is 2856 bytes. Interestingly: 2856 = 2 * 1428 And with IPv6 + TCP timestamps: 40 IPv6 + 32 TCP + 1428 payload = 1500 So it fits exactly two full-size 1500-byte packets disappearing at a path that only supports 1492. I can't prove the size of the missing packets because, obviously, they never reach my capture point, but the numbers are rather suggestive. Now the fun part: If I change the client MTU to 1492, everything works. If I leave the client MTU at 1500 and configure my MikroTik to clamp the outgoing IPv6 TCP MSS to 1432, everything works. With MSS 1432, the Azure endpoint sends lots of packets that are...
Keep reading with a free account
The rest of this post, and every signal for Deutsche Telekom, is in your free account.
Also quoted as evidence
What makes this even more interesting is that this may explain why relatively few Telekom users notice it: consumer routers such as FRITZ!Box do MSS clamping automatically.
From the post
[comment u/sbujdoso] Anecdata: I haver encontered the same problem for years: azure is broken mostly towards deutse Telekom.