You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deferred from wosh's datagram-surface evaluation (our finding 14, riding your #3 family) with "file when the need is concrete" — the WebRTC upgrade path made it concrete.
Two related observations
The 1200 B MTU profile is synthetic on non-UDP paths. wosh runs mosh SSP over send-datagram/recv-datagram. A stock C mosh-server emits 1252 B datagrams, over the observed ~1162 B application ceiling, so our proxy sub-frames oversized server datagrams through the tunnel (fragmentation working around a ceiling that exists only by profile). On the relay path (websocket frames) and the WebRTC path (SCTP messages) there is no physical 1200 B MTU — both wires carry larger application messages natively. A per-path ceiling would let relay/WebRTC consumers skip the fragmentation tax entirely, while UDP keeps the QUIC datagram bound.
max-datagram-size is already path-dependent in time. With the upgrade live (post-endpoint: event-driven wakeups replace the bounded-polling pump #44 endpoints; both sides enable endpoint-options.webrtc, dialer offers the webrtc addr hint), a relay-dialed connection migrates to the data channel in the background and connection.path moves — a consumer that sized to the dial-time value now under-uses (or over-estimates) the wire. wosh re-polls opportunistically, but nothing in the WIT says the value can move.
Ask
Either expose per-path ceilings (e.g. max-datagram-size documented as "for the CURRENT path; re-read after connection.path changes" plus raising the synthetic ceiling on relay/webrtc), or an explicit capability read keyed by path-kind. Even just the doc ruling ("the value is path-dependent and not latched") would remove the ambiguity; raising the non-UDP ceilings is the part that buys real throughput for datagram protocols with >1200 B frames.
Context for sizing: mosh's worst-case wire datagram is payload+38 B; we patched our engine's fragment payload 1300→1100 to fit the current ceiling (1338→1138 B), verified wire-compatible against C mosh-server 1.4.0.
Deferred from wosh's datagram-surface evaluation (our finding 14, riding your #3 family) with "file when the need is concrete" — the WebRTC upgrade path made it concrete.
Two related observations
The 1200 B MTU profile is synthetic on non-UDP paths. wosh runs mosh SSP over
send-datagram/recv-datagram. A stock C mosh-server emits 1252 B datagrams, over the observed ~1162 B application ceiling, so our proxy sub-frames oversized server datagrams through the tunnel (fragmentation working around a ceiling that exists only by profile). On the relay path (websocket frames) and the WebRTC path (SCTP messages) there is no physical 1200 B MTU — both wires carry larger application messages natively. A per-path ceiling would let relay/WebRTC consumers skip the fragmentation tax entirely, while UDP keeps the QUIC datagram bound.max-datagram-sizeis already path-dependent in time. With the upgrade live (post-endpoint: event-driven wakeups replace the bounded-polling pump #44 endpoints; both sides enableendpoint-options.webrtc, dialer offers thewebrtcaddr hint), a relay-dialed connection migrates to the data channel in the background andconnection.pathmoves — a consumer that sized to the dial-time value now under-uses (or over-estimates) the wire. wosh re-polls opportunistically, but nothing in the WIT says the value can move.Ask
Either expose per-path ceilings (e.g.
max-datagram-sizedocumented as "for the CURRENT path; re-read afterconnection.pathchanges" plus raising the synthetic ceiling on relay/webrtc), or an explicit capability read keyed bypath-kind. Even just the doc ruling ("the value is path-dependent and not latched") would remove the ambiguity; raising the non-UDP ceilings is the part that buys real throughput for datagram protocols with >1200 B frames.Context for sizing: mosh's worst-case wire datagram is payload+38 B; we patched our engine's fragment payload 1300→1100 to fit the current ceiling (1338→1138 B), verified wire-compatible against C mosh-server 1.4.0.