cloudflare / cloudflare/quiche

Bug in cubic.rs

Open
#1,848 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
11.8k
Forks
1.1k
Avg merge
21h 9m
Merged PRs (30d)
6

Description

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.
//
//
// 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;
}
}
}

Contributor guide

Open the contributing guide

Research direction

Open cubic.rs and review the spurious congestion event detection block identified in the issue, including its rollback behavior and the referenced RFC section. Check how qdisc pacing interacts with this logic before deciding whether removal is safe. Done means the unnecessary packet-loss behavior is addressed without leaving unused rollback-related code behind; no specific test is named in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.