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

Path MTU Discovery is highly affected by packet loss #4520

Open
marten-seemann opened this issue May 14, 2024 · 5 comments · May be fixed by #4545
Open

Path MTU Discovery is highly affected by packet loss #4520

marten-seemann opened this issue May 14, 2024 · 5 comments · May be fixed by #4545
Milestone

Comments

@marten-seemann
Copy link
Member

Loss of a single probe packet will make the MTU discoverer believe that it has reached the path's MTU. This is unnecessarily aggressive.

It doesn't cost a lot to send a second probe packet of the same size (in most cases just 1 extra packet, if you're careful), to confirm that the loss was actually caused by exceeding the MTU.

The concrete algorithm is still tbd.

@marten-seemann
Copy link
Member Author

We might not need #4519 (or at the very least reduce the number of flake attempts) once we have this.

@bt90
Copy link
Contributor

bt90 commented May 14, 2024

Loss of a single probe packet will make the MTU discoverer believe that it has reached the path's MTU. This is unnecessarily aggressive.

I think this even violates RFC 8899:

The PL is REQUIRED to be robust in the case where probe packets are lost due to other reasons (including link transmission error, congestion).

The RFC seems to recommend up to 3 probes before giving up: https://datatracker.ietf.org/doc/html/rfc8899#name-constants

This paper by the RFC 8899 authors looks quite interesting:

https://www.hb.fh-muenster.de/opus4/frontdoor/deliver/index/docId/14965/file/dplpmtudQuicPaper.pdf

@marten-seemann
Copy link
Member Author

Thank you @bt90! I wasn't aware of this paper, and I'm not sure I understand how they deal with packet loss: Every time a probe packet is lost, you have the choice to either re-probe the same size, or reduce the probe size by a little and probe a slightly smaller size.

I don't think it hugely matters, PMTUD is cheap, so going for something simple might be the better answer than hunting for the most optimal solution.

@bt90
Copy link
Contributor

bt90 commented May 14, 2024

Every time a probe packet is lost, you have the choice to either re-probe the same size, or reduce the probe size by a little and probe a slightly smaller size.

That one is covered by the RFC:

https://datatracker.ietf.org/doc/html/rfc8899#name-probing-for-a-larger-plpmtu

tl;dr: the search only stops after multiple probes failed

@marten-seemann marten-seemann added this to the v0.45 milestone Jun 2, 2024
@marten-seemann
Copy link
Member Author

@bt90 I implemented an algorithm that should be more resilient to packet loss in #4545. Would you mind taking a look?

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

Successfully merging a pull request may close this issue.

2 participants