DOC: config: refine a little bit the text on QUIC pacing

The QUIC pacing options changed a few times during their development.
For example the unit is now in datagrams not bytes. Also a few
sentences were slightly ambiguous so let's reword this.

No backport is needed.
This commit is contained in:
Willy Tarreau 2024-11-25 14:30:15 +01:00
parent dee3f4b3ff
commit 7fb98e833c

View File

@ -17213,26 +17213,33 @@ quic-cc-algo { cubic | newreno | bbr | nocc }[(<args,...>)]
Default value: cubic Default value: cubic
It is possible to active pacing if the algorithm is compatible. This is done It is possible to enable pacing if the algorithm is compatible. This is done
by specifying optional burst argument as described in the next paragraph. by specifying an optional burst argument as described in the next paragraph.
Pacing purpose is to smooth emission of data without burst to reduce network The purpose of pacing is to smooth emission of data to reduce network losses.
loss. In some scenario, it can significantly improve network throughput. In some scenario, it can significantly improve network throughput by avoiding
However, it can also increase CPU usage if haproxy is forced to wait too long retransmissions. However, it can also increase CPU usage if haproxy is forced
between each emission. Pacing support is still experimental, as such it to wait too long between each emission. Pacing support is still experimental,
requires "expose-experimental-directives". BBR congestion control algorithm as such it requires "expose-experimental-directives". The BBR congestion
depends on the pacing support which is in this case implicitely activated by control algorithm depends on the pacing support which is in this case
"bbr". Note that BBR haproxy implementation is still considered as implicitly enabled by choosing the "bbr" algorithm. Note that haproxy's BBR
experimental and cannot be enabled without "expose-experimental-directives". implementation is still considered as experimental and cannot be enabled
without "expose-experimental-directives".
For further customization, a list of parameters can be specified after the For further customization, a list of parameters can be specified after the
algorithm token. It must be written between parenthesis, separated by a comma algorithm token. It must be written between parenthesis, separated by a
operator. Each argument is optional and can be empty if needed. Here is the comma. Each argument is optional and can be empty if needed. Here is the
mandatory order of each parameters : mandatory order of each parameters :
- maximum window size in bytes. It must be greater than 10k and smaller than - maximum window size in bytes. It must be greater than 10k and smaller than
4g. By default "tune.quic.frontend.default-max-window-size" value is used. 4g. By default "tune.quic.frontend.default-max-window-size" value is used.
- burst size in bytes. By default, it is set to 0, which means unlimited. A - burst size in datagrams. By default, it is set to 0, which means unlimited.
positive value up to 1024 can be specified to smooth emission with pacing. A positive value up to 1024 can be specified to smooth emission using
See above paragraph for more explanation. pacing. Lower values provide a smoother traffic (hence less losses) at the
expense of a higher CPU usage, while higher values will reduce CPU usage
and provide a slightly more bursty traffic. Note that a datagram is usually
around 1252 bytes, and that a typical receive buffer is 208kB or 170
datagrams, so in order to keep the traffic smooth, bursts should only
represent a small fraction of this value (between a few units to a few tens
at most). See above paragraph for more explanation.
Example: Example:
# newreno congestion control algorithm # newreno congestion control algorithm