Do not reset our RTT in slow start.

If a circuit only sends a tiny amount of data such that its cwnd is not
full, it won't increase its cwnd above the minimum. Since slow start circuits
should never hit the minimum otherwise, we can just ignore them for RTT reset
to handle this.
This commit is contained in:
Mike Perry 2023-01-10 20:47:11 +00:00
parent c50496036b
commit 482cde5931

View File

@ -902,7 +902,7 @@ congestion_control_update_circuit_rtt(congestion_control_t *cc,
if (cc->min_rtt_usec == 0) { if (cc->min_rtt_usec == 0) {
// If we do not have a min_rtt yet, use current ewma // If we do not have a min_rtt yet, use current ewma
cc->min_rtt_usec = cc->ewma_rtt_usec; cc->min_rtt_usec = cc->ewma_rtt_usec;
} else if (cc->cwnd == cc->cwnd_min) { } else if (cc->cwnd == cc->cwnd_min && !cc->in_slow_start) {
// Raise min rtt if cwnd hit cwnd_min. This gets us out of a wedge state // Raise min rtt if cwnd hit cwnd_min. This gets us out of a wedge state
// if we hit cwnd_min due to an abnormally low rtt. // if we hit cwnd_min due to an abnormally low rtt.
uint64_t new_rtt = percent_max_mix(cc->ewma_rtt_usec, cc->min_rtt_usec, uint64_t new_rtt = percent_max_mix(cc->ewma_rtt_usec, cc->min_rtt_usec,