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
Server SHOULD send full-sized datagrams until the path is validated #4188
Merged
martinthomson
merged 25 commits into
quicwg:master
from
kazuho:kazuho/server-packet-size
Oct 15, 2020
Merged
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit
Hold shift + click to select a range
6e76817
server sends full-size datagrams until the path is validated
kazuho 1214c15
Update draft-ietf-quic-transport.md
kazuho 78500d1
Update draft-ietf-quic-transport.md
kazuho 5727b87
Update draft-ietf-quic-transport.md
kazuho 56569b9
wordwrap
kazuho 8ec73e1
update back reference to cover padding
kazuho 97b8798
reduce the recommendation of padding to Initial packets only; restric…
kazuho bd089c9
Drop "unless the client address is validated", merging the requirements.
kazuho 271010c
Update draft-ietf-quic-transport.md
kazuho a3351be
Update draft-ietf-quic-transport.md
kazuho 0410b60
when to pad is independent from path validation
kazuho 6e0fe53
at most once is likely enough
kazuho 681c02e
Update draft-ietf-quic-transport.md
kazuho 34ad874
servers MUST pad Initial packets carrying CRYPTO frames
kazuho c30347b
wordwrap
kazuho 67e49f8
pad Initial with CRYPTO frames -> pad ack-eliciting Initial
kazuho 3518d54
editorial
ianswett a51ad56
@martinthomson's suggestion with tweaks
kazuho 1bb33b1
Update draft-ietf-quic-transport.md
kazuho 3f875ca
Update draft-ietf-quic-transport.md
kazuho e3a596f
revert changes to the address validation section, as server-side requ…
kazuho c550cb4
editorial
janaiyengar adbe600
wordwrap
kazuho 8f5dff7
Update draft-ietf-quic-recovery.md
kazuho b1ab5f8
Update draft-ietf-quic-recovery.md
kazuho File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains 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
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it would be better to limit the scope and say servers SHOULD pad Initial packets that carry crypto data.
The problem of padding all Initial packets is that ACK-only Initial packets consume full MTU, when the send window is still controlled by the amplification limit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think making a carve-out for ACK-only packets sounds attractive, but it could result in the client sending an Initial, getting it acknowledged, but not receiving the server's Initial. Then things get complex to reason about.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think that the special rules for ACK-only is enough to justify an exception. I could tolerate non-ack-eliciting packets being exempt from this padding rule, but it seems unnecessary. We already have one exception.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Endpoints that don't coalesce are already trading performance for simplicity. The added sacrifice here isn't that large.
Clients: if it only receives an Initial, padding is critical to raising the amplification limit. If it gets a Handshake packet too, it will momentarily send a Handshake ACK that will allow it to free the Initial context and get the cwnd back.
Servers: If the client has a valid Retry or NEW_TOKEN token, there is no amplification limit. So the performance penalty only applies to a non-coalescing server when:
(a) There is no token, AND the Initial padding causes the handshake flight to go over the amplification limit.
(b) The initial padding causes the handshake flight to go over the initial cwnd.
I find it hard to believe a server deeply concerned about these losses would not coalesce packets for other reasons.