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

Do not reset pto_count on Initial ACKs #3551

Merged
merged 23 commits into from
Apr 19, 2020
Merged

Do not reset pto_count on Initial ACKs #3551

merged 23 commits into from
Apr 19, 2020

Conversation

ianswett
Copy link
Contributor

@ianswett ianswett commented Mar 29, 2020

In order to avoid sending anti-deadlock packets too quickly when the server doesn't yet have anything to send.

Also sets pto_count to 0 in pseudocode when Initial or Handshake keys are dropped, lining it up with existing normative text.(this could be split into a separate non-design PR if people prefer)

Adds the term 'backoff' which is usually reset upon receiving an acknowledgement. The lines up more closely with 'pto_count' in the pseudocode.

Fixes #3546

In order to avoid sending anti-deadlock packets too quickly when the server doesn't yet have anything to send.

Fixes #3546
ianswett added a commit that referenced this pull request Mar 29, 2020
When writing #3551, I found some of the text organization to be odd, so this moves it some.
@ianswett ianswett added the design An issue that affects the design of the protocol; resolution requires consensus. label Mar 29, 2020
draft-ietf-quic-recovery.md Outdated Show resolved Hide resolved
draft-ietf-quic-recovery.md Outdated Show resolved Hide resolved
draft-ietf-quic-recovery.md Outdated Show resolved Hide resolved
ianswett and others added 2 commits March 31, 2020 18:29
Co-Authored-By: Martin Thomson <mt@lowentropy.net>
value. This exponential reduction in the sender's rate is important because
value. The PTO period is set back to the original value upon receiving an
acknowledgement for a non-Initial packet. The PTO timer is not decreased when
the client receives an Initial ACK to ensure the client's anti-deadlock timer
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about changing the text to something like: The PTO period is set back to the original value when receiving an acknowledgement, if the endpoint knows that the peer has completed address validation. The PTO timer is not decreased while the peer is validating the address, to ensure the endpoint's anti-deadlock timer does not fire...

I think that is our intent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, accepted with some small editorial changes.

Copy link
Member

@kazuho kazuho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

Copy link
Contributor

@janaiyengar janaiyengar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, Ian, a couple of comments.

draft-ietf-quic-recovery.md Outdated Show resolved Hide resolved
value. This exponential reduction in the sender's rate is important because
value. The PTO period is reset based on the latest rtt information when
receiving an acknowledgement if the peer has completed address validation.
The PTO timer is not decreased while the peer is validating the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The PTO timer is not decreased while the peer is validating the
The PTO backoff is not decreased even on receiving an
acknowledgement as long as the peer is validating this endpoint's

draft-ietf-quic-recovery.md Outdated Show resolved Hide resolved
// Reset pto_count unless the server has not yet
// validated the client's address.
if (PeerCompletedAddressValidation()):
pto_count = 0
SetLossDetectionTimer()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this also be done only when pto_count is set to 0? Why restart the timer here if the pto_count hasn't changed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A new RTT measurement is available, so the alarm value should always be updated.

@ianswett ianswett merged commit 6db7436 into master Apr 19, 2020
@ianswett ianswett deleted the ianswett-initial-pto branch April 19, 2020 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

PTO probes are sent too frequently
6 participants