Repository navigation
Description
Parent: #970
Deliverable
Correct packet-size handling and ICMPv6 signaling across the connector tunnel and gVPC forwarding path, with reproducible path-MTU tests.
Dependencies
Galactic Edge integration (#992)
Implement this milestone as a consumer of the Galactic Edge provider contract. #992 owns provider authorization, host attachment lifecycle, shared-state fencing and maintenance, independently enforced forwarding expiry, prefix conflict arbitration/publication, and gVPC traffic policy. MASQUE owns client authentication, connector /96 assignment and retention, session packet checks, transport behavior and its provider adapter. Use the foundation's versioned contract and existing provider helpers; do not introduce a second host-networking controller, lease store or BGP publisher. Any required foundation change must be tracked and qualified under #992 before this milestone claims integrated acceptance.
Work
- Account for actual QUIC datagram capacity and framing overhead when admitting and forwarding inner IPv6 packets.
- Implement correct Packet Too Big behavior for oversized packets and explicit tunnel failure when the QUIC path cannot support the required IPv6 minimum, following RFC 9484.
- Exercise the complete path, including return traffic and gVPC encapsulation/decapsulation; fix any packet-size handling gap that prevents acceptance.
- Validate HTTP/2 capsule reassembly across transport segments without imposing the QUIC single-datagram size limit. Maintain configured resource bounds.
Acceptance criteria
- Both transports pass bidirectional 1280-byte inner IPv6 delivery against real workloads.
- Controlled path-MTU reductions during an active QUIC tunnel produce correct ICMPv6 feedback or required tunnel termination, not silent black holes.
- Packets larger than the usable tunnel or downstream MTU exercise the appropriate error path; feedback reaches the correct connector and obeys policy.
- Tests record inner packet size, outer path MTU and observed behavior and cover local and remote workload paths.
Additional integration acceptance
- Record attachment/device MTU, SRv6/underlay overhead and transport payload capacity independently; coordinate any host-side correction with the foundation rather than granting MASQUE host privileges.
- Resolve Edge pod attachments: unchecked caller inputs and weak isolation tests #989's attachment-MTU-ceiling finding with a linked fix or current-path proof. Device drift/readback and insufficient underlay capacity must produce explicit behavior.
- Include local-NAT-egress and remote-workload paths, both directions, live MTU changes, control-packet policy and tenant-safe feedback. PacketAccess readiness alone is not MTU acceptance.
Scope follows #970: CONNECT-IP with HTTP/2 fallback; no public API development, plugin/portal integration, product-client development or production rollout.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Activity
[-]MASQUE: implement and verify CONNECT-IP MTU and ICMPv6 behavior[/-][+]Implement and verify CONNECT-IP MTU and ICMPv6 behavior[/+]privateip commentedon Oct 28, 2026
Verdict: valid in part. Checked against the top of the #980/#981 stack (#1207, 78a1b53), since this issue builds on both.
Already in place
TestProxyReturnsPacketTooBig).Gaps
proxySessiona tunnel unable to send any packet: after a 1232-byte packet, the session stayed open for 2 s and the backend received a Packet Too Big reporting MTU 1280.galactic-edge --mtuhas a floor and no ceiling. Edge host links write notenant_gw_tablerow, sousid_egressdrops a packet larger thanencap_mtu_tablewithno_gatewayand sends no error. A connector packet toward a remote workload larger than the uplink MTU less 40 bytes is lost silently.The lab rows (real workloads, live MTU reduction against a real QUIC path, local NAT egress) need the lab and are not covered by this verdict.
privateip commentedon Oct 28, 2026
Fix plan, approved.
PR 1, stacked on #1207 (
fix/issue-982)proxySessionends the session when the tunnel returns a Packet Too Big for a packet of 1280 bytes or less. That means the QUIC path can no longer carry the IPv6 minimum, so RFC 9484 section 10.1 calls for termination. The server logs it and counts it in a newreason="path_mtu"session-end metric, so the drop is visible.doc.goanddocs/edge/masque-service.mddescribe the behavior.PR 2, from main, foundation under #992 and #989 (
fix/issue-982-mtu-ceiling)galactic-edgereadsencap_mtu_tableon every attachment pass. When the value is nonzero and--mtuexceeds it, the attachment is not provisioned. It getsProgrammed=False, reasonMTUExceedsUnderlay, naming both values. A zero value (check off, orgalactic-cninot started yet) skips the check.Risk: a tunnel whose QUIC path drops below the minimum now ends instead of black-holing. The connector reconnects, and the 1280-byte admission probe refuses the new request while the path stays too small.
galactic-edgeis not deployed outside labs, so the ceiling refuses nothing in production today.#982 stays open for the lab rows.
fix(containerlab): Patch only the edge agent's MTU argument
fix(containerlab): Fail the lab build if the edge MTU argument moves
privateip commentedon Oct 28, 2026
The fixes are in two PRs. Neither closes this issue, which stays open for the lab rows.
MTUExceedsUnderlay. This is the Edge pod attachments: unchecked caller inputs and weak isolation tests #989 ceiling finding. The containerlab lab's edge agent moves to 1460. It targets main, under Galactic Edge Foundation #992.Still open here: bidirectional 1280-byte delivery against real workloads on both transports, a live path MTU drop against a real QUIC path, local NAT egress, and lab edge conformance at the new attachment MTU.
fix(connectip): End the session when the path drops below 1280 bytes
privateip commentedon Oct 29, 2026
Closing this with one criterion not met. The live path-MTU case moves to #1237; the rest have evidence. #1208 ends an HTTP/3 tunnel whose path can't carry 1280 bytes and fixes the HTTP/2 Packet Too Big size. #1209 refuses an attachment MTU above the underlay ceiling. #1240 adds the MTU rows to the containerlab lab suite.
path_mtuend is countedMTUExceedsUnderlay, and the edge conformance suite passed all 24 rows at the lab's new 1460 MTU. NAT and remote paths are in mtu-1280-both#1237 has the reproduction and stays open under #970, so the epic can't close until a live MTU drop is handled. #1211 to #1214 stay open as hardening for the edge MTU work.