Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify refragmenting of stream data when MTU is different and retransmission happens on other path. #309

Open
gloinul opened this issue Mar 16, 2024 · 7 comments

Comments

@gloinul
Copy link

gloinul commented Mar 16, 2024

Section 7.6
Is refragmentation of data in DATA frames allowed to cope with PMTUD. Maybe should be mentioned explicitly to ensure that this is not resulting in implementation issues. Sender responsibility?

@mirjak
Copy link
Collaborator

mirjak commented Mar 18, 2024

refragmentation? When?

@huitema
Copy link
Contributor

huitema commented Mar 18, 2024

Picoquic has been doing refragmentation of retransmitted packets for several years. That is tested in the interop runner, and does not create any particular interop issue. Hey, I think that the code may well split a stream_data_frame in several segments and send the segments over different paths...

@gloinul
Copy link
Author

gloinul commented Mar 18, 2024

I think it would be good to add some text in the specification that sender MAY do this and receiver MUST be able to accept refragmentation done in retransmissions.

@mirjak
Copy link
Collaborator

mirjak commented Mar 18, 2024

Why is this different in the multipath case than in RFC9000?

@huitema
Copy link
Contributor

huitema commented Mar 18, 2024

@mirjak exactly. Besides, if the packet was lost, the receiver has not seen the first copy of the frame, so it cannot tell that it is a retransmission. It is a well tested feature of RFC9000.

@gloinul
Copy link
Author

gloinul commented Mar 18, 2024

I don't think it is different. It is just more likely to occur. In RFC 9000 an MTU change is most likely to occur due to a connection migration event. Thus you may have some outstanding stream data ranges that needs to be retransmitted. In MP-QUIC you might attempt to send retransmission for a 1400 byte block over the other path that can only fit a 1200 byte data block. Thus, you will be forced to create two stream frames and send them in two packets if you are going to retransmitt.

@mirjak
Copy link
Collaborator

mirjak commented May 14, 2024

So something like:

As noted in {{Section 2.2 of QUIC-TRANSPORT}}, STREAM frame boundaries are not expected to be preserved when data is transmitted. Especially when STREAM frames have to be retransmitted over a different path with a smaller MTU limit, new smaller STREAM frames might need to be sent instead.

Should we add that somewhere?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants