neqo icon indicating copy to clipboard operation
neqo copied to clipboard

transport: consider lower pacing rate in congestion avoidance

Open mxinden opened this issue 1 month ago • 2 comments

Neqo currently paces over half the RTT, i.e. 2x the current rate:

https://github.com/mozilla/neqo/blob/207d309e941d3ae9384c191c13463dc81fca4ce9/neqo-transport/src/pace.rs#L19-L27

This is independent of the congestion control phase, i.e. same in slow start and congestion avoidance.

In slow start, we likely want to keep the aggressive pacing rate to keep up with the cwnd doubling.

In congestion avoidance, to prevent overflowing buffers and thus causing packet loss, we might want to reduce the rate to e.g. 1.2x times the rate.

What do others do?

//CC @MarcoPolo and @marten-seemann since we discussed this over the week. //CC @mwelzl thanks for the input on Linux.

mxinden avatar Nov 06 '25 23:11 mxinden

In slow start, we likely want to keep the aggressive pacing rate to keep up with the cwnd doubling.

Why is this needed? If you always pace at a rate determined by cwnd / rtt, this should not be necessary: During slow start, cwnd will grow, and thereby automatically increase the pacing frequency.

marten-seemann avatar Nov 06 '25 23:11 marten-seemann

It's just a little too slow in slow start. Yes, the time gaps get smaller, but you also send twice as many packets / RTT. I'm attaching an Excel sheet that shows this for the second RTT (i.e., after IW).

paced_slowstart.xlsx

mwelzl avatar Nov 06 '25 23:11 mwelzl