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

Don't update RTT for ack-only packets #984

Closed
wants to merge 3 commits into from
Closed

Conversation

martinthomson
Copy link
Member

No description provided.

Copy link
Contributor

@ianswett ianswett left a comment

Choose a reason for hiding this comment

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

I'm not sure this is clearly the right choice. The reason ack only packets shouldn't be considered for creating a model of ack delay is different from whether they should be considered for RTT in general.

@marten-seemann
Copy link
Contributor

I don't think ack-only packets and acks for non-retransmittable packets are necessarily the same.

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 for getting to this, you beat me to it :-) A few nits.

When an ack is received, it may acknowledge 0 or more packets.
When an acknowledgment is received, it may acknowledge 0 or more packets.

The first acknowledgment for the largest acknowledged packet is used to update
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: "first acknowledgement received for", just to clarify that it's the first one we've seen, not the first one sent.

The first acknowledgment for the largest acknowledged packet is used to update
the estimate of minimum and smoothed RTT. However, if the largest acknowledged
packet would not have caused an acknowledgment to be sent, RTT estimates are not
updated, because the acknowledgment could be significantly delayed.
Copy link
Contributor

Choose a reason for hiding this comment

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

Use normative language: "... RTT estimates MUST NOT be updated..."

// If the largest acked is newly acked and is a packet
// that would normally cause an ack, update the RTT.
if (sent_packets[ack.largest_acked] and
not ack_only(sent_packets[ack.largest_acked])):
Copy link
Contributor

Choose a reason for hiding this comment

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

We use "ackable" as a term in this doc to refer to a packet that triggers an ack. I just realized that it's not yet defined in the doc, but I would use that term ("and is_ackable(sent_packets[ack.largest_acked])"). I'm happy to write up a definition for "ackable" in a PR.

Alternatively, you can leave this as you have it, and I can change it when I actually define the term. Up to you.

@martinthomson
Copy link
Member Author

@ianswett, I was operating on the assumption that a long ACK delay would reduce the accuracy of the RTT estimate. I agree that this might be too blunt an instrument though. I'll let you sort it out.

@martinthomson
Copy link
Member Author

Closed by #991.

@martinthomson martinthomson deleted the rtt-ack-only branch December 6, 2017 10:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants