Skip to content

Commit

Permalink
talk about latest rtt too
Browse files Browse the repository at this point in the history
  • Loading branch information
kazuho committed Mar 5, 2024
1 parent 0899a4b commit c9452ab
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions lib/quicly.c
Original file line number Diff line number Diff line change
Expand Up @@ -3038,10 +3038,11 @@ static uint32_t calc_pacer_send_rate(quicly_conn_t *conn)
{
/* The multiplier uses a hard-coded value of 2x in both the slow start and the congestion avoidance phases. This differs from
* Linux, which uses 1.25x for the latter. The rationale behind this choice is that 1.25x is not sufficiently aggressive
* immediately after a loss event. Following a loss event, the congestion window (CWND) is halved (i.e., beta), but the Smoothed
* Round Trip Time (SRTT) can remain high for a couple of round-trips since it is a moving average adjusted with each ACK
* received. Consequently, if the multiplier is set to 1.25x, the calculated send rate could drop to as low as 1.25 * 1/2 =
* 0.625. By using a 2x multiplier, the send rate is guaranteed to be no less than 1x. */
* immediately after a loss event. Following a loss event, the congestion window (CWND) is halved (i.e., beta), but the RTT
* remains high for one RTT and SRTT can remain high even loger, since it is a moving average adjusted with each ACK received.
* Consequently, if the multiplier is set to 1.25x, the calculated send rate could drop to as low as 1.25 * 1/2 = 0.625. By
* using a 2x multiplier, the send rate is guaranteed to become no less than that immediately before the loss event, which would
* have been the link throughput. */
return quicly_pacer_calc_send_rate(2, conn->egress.cc.cwnd, conn->egress.loss.rtt.smoothed);
}

Expand Down

0 comments on commit c9452ab

Please sign in to comment.