Skip to content

fix(wt_bridge): default QUIC initial packet size to 1200 for VPN paths#373

Merged
osamu620 merged 1 commit into
mainfrom
fix/wt-bridge-quic-initial-mtu
May 11, 2026
Merged

fix(wt_bridge): default QUIC initial packet size to 1200 for VPN paths#373
osamu620 merged 1 commit into
mainfrom
fix/wt-bridge-quic-initial-mtu

Conversation

@osamu620

Copy link
Copy Markdown
Owner

Summary

  • Default InitialPacketSize to 1200 bytes (QUIC minimum per RFC 9000
    §14) instead of quic-go's default of 1252. On paths with reduced MTU
    (e.g. VPN tunnels between subnets with path MTU ≤ 1280), the server's
    coalesced Initial+Handshake datagram at 1252+28 = 1280 bytes rides the
    exact MTU edge. When it exceeds the path MTU the Initial response is
    silently dropped, the browser never receives the ServerHello, and Chrome
    reports QUIC_HANDSHAKE_TIMEOUT with num_undecryptable_packets: 7
    (Handshake packets arrive but can't be decrypted without the missing
    Initial).
  • Add --initial-mtu flag (1200–1452) so operators with known higher
    path MTU can opt in to larger packets.

Test plan

  • go build passes (verified locally)
  • Split-mode: bridge on 133.36.41.0/25, browser on 192.168.0.0/24
    (path MTU 1280) — verify WebTransport handshake succeeds
  • LAN mode (path MTU 1500) — verify no regression
  • --initial-mtu 1452 on a same-subnet setup — verify it still works

🤖 Generated with Claude Code

The previous default (quic-go's 1252 bytes → 1280 total IP packet)
silently fails on paths with reduced MTU, such as VPN tunnels between
subnets.  The server's Initial response exceeds the path MTU, gets
dropped, and the browser times out with QUIC_HANDSHAKE_TIMEOUT because
it never receives the ServerHello needed to derive handshake keys —
while smaller Handshake packets arrive as undecryptable orphans.

Default to 1200 bytes (the QUIC-mandated minimum, RFC 9000 §14) so the
bridge works out of the box on any routable path.  Add --initial-mtu
(1200–1452) for operators who know their path MTU and want larger
packets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@osamu620 osamu620 merged commit 1c0c8aa into main May 11, 2026
12 checks passed
@osamu620 osamu620 deleted the fix/wt-bridge-quic-initial-mtu branch May 27, 2026 07:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant