cloudflare / cloudflare/quiche
Bug in cubic.rs
- 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
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