Let Welcome carry the tunnel MTU the client should apply - #65
Open
davvd wants to merge 1 commit into
Open
Conversation
A client that sizes its own interface for the widest path blackholes its largest packets over the QUIC channel, where every encapsulated packet is wrapped in a datagram that has to fit the path whole. Only the Node knows both its own interface and the framing its transport adds around each packet, so it now says which value to apply instead of leaving the client to guess. Zero keeps the built-in default of 1420, so a client talking to an older Node behaves as it does today. APN-Network/node#120
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
uint32 mtu = 14toWelcome: the value, in bytes, the client isexpected to put on its own tunnel interface for the session it just
opened. Zero means the Node predates the field and the client keeps its
built-in 1420.
The Node needs it because the right value is not a constant. Over the
TCP channel it is simply the Node's own interface, since TCP segments to
the real path anyway. Over the QUIC channel every encapsulated packet
travels inside one datagram that has to fit the path whole, and what is
left for the packet depends on the Node's interface, on the framing
around it and on the length of the connection id the client itself
chose. Today a client sizes its interface for the widest path and its
largest packets vanish on anything narrower, with no ICMP to explain it.
Only the Node can compute the number, so it now says it.
One thing worth knowing about the branch: it sits on 08ee782, the commit
the Node currently pins, not on today's master.
welcome.protoisbyte-identical between the two, so the diff here is only the new field,
and it keeps the Node's submodule bump to a single commit instead of
dragging in the
gaugestype change it is not ready for. Merging intomaster should be clean.
For APN-Network/node#120.