Skip to content

Instantly share code, notes, and snippets.

@jj1bdx
Last active February 16, 2024 09:34
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jj1bdx/1adac3e305d0fb6dee90dd5b909513ed to your computer and use it in GitHub Desktop.
Save jj1bdx/1adac3e305d0fb6dee90dd5b909513ed to your computer and use it in GitHub Desktop.
Do not enable QUIC on 1280-byte MTU IPv6 networks

Do not enable QUIC on 1280-byte MTU IPv6 networks

Synopsis

  • QUIC requires transmission of at least 1350 bytes of UDP packets on IPv6 (and 1370 bytes on IPv4).
  • On Chrome/Chromium (and Vivaldi), if sending 1350-byte UDP packet fails on IPv6, fallback to HTTP/2 over TCP immediately occurs.

Implementation details on Chrome/Chromium (60.0.3112.55 on Vivaldi)

See the explanation in Japanese for the further details on the current implementation. Note well that this differs from the latest version of QUIC Internet-Draft: see draft-ietf-quic-transport-01 Section 8. Quote:

  1. Packetization and Reliability

The maximum packet size for QUIC is the maximum size of the encrypted payload of the resulting UDP datagram. All QUIC packets SHOULD be sized to fit within the path's MTU to avoid IP fragmentation. The recommended default maximum packet size is 1350 bytes for IPv6 and 1370 bytes for IPv4. To optimize better, endpoints MAY use PLPMTUD [RFC4821] for detecting the path's MTU and setting the maximum packet size appropriately.

Status of QUIC over ISPs (with connections to Google servers)

Connections with www.google.com and other QUIC-enabled Google servers:

  • Tunnelbroker.net with 1280-byte MTU: broken
  • IIJmio IPv6: OK (limit: 1499 bytes of IPv6 packets)

More on MTU length between ISPs measured by ICMPv6 ping

Further investigations suggest that the MTUs between he.net (tunnelbroker.net) and major sites such as www.google.com and www.facebook.com are intentionally restricted to 1280 bytes. On the other hand, the MTUs between he.net and other sites such as www.iij.ad.jp and www.ipv6.org are not restricted to 1280 bytes. I tested the MTU max value with the following command on macOS:

    ping6 www.ipv6.org -c 10 -s 1500 -l 10
    # -s stands for the size; actual IPv6 packet size is +48 bytes
    # so in this case the size is 1548 bytes
    # for 1280 byte limie the -s value should be set to 1232
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment