The purpose of pacing is to smooth emission of data to reduce network losses.
In most scenario, it can significantly improve network throughput by avoiding
retransmissions. Pacing support is still experimental, as such it requires
- "expose-experimental-directives". The BBR congestion control algorithm
- depends on the pacing support which is in this case implicitly enabled by
- choosing the "bbr" algorithm. Note that haproxy's BBR implementation is still
+ "expose-experimental-directives". Selecting BBR congestion algorithm will
+ implicitly activate pacing as it relies on it to work as expected. Explicitly
+ disabling pacing in conjunction with BBR may cause slowdowns or high loss
+ rates during transfers. Also note that haproxy's BBR implementation is also
considered as experimental and cannot be enabled without
"expose-experimental-directives".
4g. By default "tune.quic.frontend.default-max-window-size" value is used.
- pacing activation. By default, it is set to 0, which means pacing is not
used. To activate it, specify a positive value. Burst size will be
- dynamically adjusted to adapt to the network conditions. This parameter is
- ignored by BBR as pacing is automatically activated for this algorithm.
+ dynamically adjusted to adapt to the network conditions.
Example:
# newreno congestion control algorithm
if (pacing < 0)
goto fail;
- if (!(cc_algo->flags & QUIC_CC_ALGO_FL_OPT_PACING)) {
- ha_warning("'%s' : pacing parameter ignored for '%s' congestion algorithm\n",
- args[cur_arg], algo);
- }
- else if (pacing) {
+ if (pacing) {
if (!experimental_directives_allowed) {
memprintf(err, "'%s' : support for pacing is experimental, must be allowed via a global "
"'expose-experimental-directives'\n", args[cur_arg]);
cc_algo->pacing_inter = quic_cc_default_pacing_inter;
}
+ else if (!(cc_algo->flags & QUIC_CC_ALGO_FL_OPT_PACING)) {
+ ha_warning("'%s' : '%s' algorithm without pacing may cause slowdowns or high loss rates during transfers\n",
+ args[cur_arg], algo);
+ cc_algo->pacing_inter = NULL;
+ }
if (*end_opt == ')') {
goto out;