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

Bug in cubic.rs #1848

Open
WernerDrasche opened this issue Sep 25, 2024 · 0 comments
Open

Bug in cubic.rs #1848

WernerDrasche opened this issue Sep 25, 2024 · 0 comments

Comments

@WernerDrasche
Copy link

WernerDrasche commented Sep 25, 2024

I think that the following code passage can be removed from cubic.rs as it causes unnecessary packet loss and tanks performance when combined with qdisc pacing.

// Detecting spurious congestion events.
// <https://tools.ietf.org/id/draft-ietf-tcpm-rfc8312bis-00.html#section-4.9>
//
// When the recovery episode ends with recovering
// a few packets (less than cwnd / mss * ROLLBACK_THRESHOLD_PERCENT(%)), it's
// considered as spurious and restore to the previous state.
if r.congestion_recovery_start_time.is_some() {
  let new_lost = r.lost_count - r.cubic_state.prior.lost_count;

  let rollback_threshold = (r.congestion_window / r.max_datagram_size) *
      ROLLBACK_THRESHOLD_PERCENT /
      100;

  let rollback_threshold = rollback_threshold.max(MIN_ROLLBACK_THRESHOLD);

    if new_lost < rollback_threshold {
        let did_rollback = rollback(r);
        if did_rollback {
            return;
        }
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant