posoo/quinn-dquic@4f8b9bc introduced the capability to send an encoded frame that's larger than conn.inner.datagrams().max_size()
, which is slightly smaller than MTU, i.e., ~1400 bytes. The way is to split the buffer data into multiple QUIC datagrams in quinn::Connection::poll_write()
:
https://github.com/posoo/quinn-dquic/blob/4f8b9bc8033385e1de5d3cbd1ae9b94e12365c56/quinn/src/connection.rs#L576-L603.
This is because the current quinn
implementation demands a QUIC datagram to fit into a "network frame", which, however, is not a requirement in QUIC's specification.
This new fix (posoo/quinn-dquic@4f8b9bc) works well in my small-scale tests even for server and client distribute in different machines. But it still didn't fix the issue in ALVR. I guess the reason might be there are some QUIC packets that contain partial "data frames" lost, i.e., split data frame chunks. Hence the receiver decoder