mirror of https://github.com/ospab/ostp.git
Root cause of "connection takes 20-30s, sometimes 1-2 minutes, to reach stable throughput" (trickle of KB for a while, then a sudden jump to full speed): on_loss during SlowStart unconditionally halved cwnd AND permanently switched to ProbeBandwidth's linear (+1 MTU/RTT) growth on the very FIRST loss. Real mobile/Wi-Fi links have a non-zero background loss rate from ordinary wireless noise and handover blips that has nothing to do with congestion; on such a link the first RTT or two of slow start would hit a loss, get knocked into linear growth from a still-small window, and take an enormous number of RTTs to claw back up to full speed - directly contradicting the module's own stated BBR-inspired design intent, since real BBR is deliberately loss-tolerant during startup instead of treating any loss as a hard congestion signal. Fix: track losses within a short (500ms) window and only pay the full exit-slow-start-and-halve cost once SLOW_START_LOSS_TOLERANCE (3) losses land within it - sustained loss is still treated as real congestion. A single isolated loss now takes a mild, temporary haircut (cwnd *= 0.8) but stays in slow start, so exponential growth continues instead of being abandoned over a one-off dropped packet. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||