-
Notifications
You must be signed in to change notification settings - Fork 205
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
Skip a packet number when sending one PTO packet #2952
Conversation
draft-ietf-quic-recovery.md
Outdated
expensive consecutive PTO expiration due to a single lost datagram. | ||
expensive consecutive PTO expiration due to a single lost datagram. When only | ||
sending a single packet on PTO, senders can skip a packet number to elicit a | ||
faster acknowledgement. | ||
|
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 understand this: while packet numbers are usually incremental, that does not carry any semantics to my knowledge. PN's are skipped to guard against optimistic ACK attacks. It would be unfortunate if that praxis affects retransmission?
That said, I think it would be great if PN's could be assumed to be incremental, but there is no good solution to the optimistic ACK attack so far.
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.
IIUC, skipping a packet number is a way to elicit an immediate ACK.
Quoting from section 4: In order to accelerate loss recovery and reduce timeouts, the receiver SHOULD send an immediate ACK after it receives an out-of-order packet.
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.
But how is "out-of-order" defined?
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.
So if both endpoints skip every second packet number early in the connection, in order to aggressively detect optimistic ACK's, would that lead to an ACK flood?
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.
The term is defined in section 2.
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.
Why are we recommending to skip packet numbers over just including a PING? The former causes more overhead in the reverse direction.
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.
@larseggert IIUC, the receiver of a PING is not required to send an ACK immediately.
My slight preference goes to handling the issue below the framing layer, because it'd be only after you've generated the payload of a packet (by gathering frames) that you discover that the packet that is going to be sent is a tail.
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 that this is a good advice. OTOH, I wonder if it might be better to suggest that such approach is possible for all tails, not just PTOs.
This is a clever idea, but I don't think that we want to write it down in the spec. It's allowed by the spec, so people can surely do it, but we are talking about immediate ACK signaling in other ways too, and I don't think we want to encourage this behavior. |
Yeah, it's incredible how much money they will make by skipping packet numbers. If I had just known about this before... |
I'm going to run an experiment comparing 1 PTO packet, 2 PTO packets, and 1 with skipping a packet number and report back the results. If the results are good enough with 1PTO + gap, we can consider whether this is an optimization worth mentioning. |
Can also test this both sides at the same time? I'm still concerned this might run away in ACK floods. |
Indicates that peers can skip a packet number when sending a single PTO packet to elicit a faster ACK.
91474d4
to
87dcdbb
Compare
Co-Authored-By: Jana Iyengar <jri.ietf@gmail.com>
Indicates that peers can skip a packet number when sending a single PTO packet to elicit a faster ACK.