instance, it is possible to force the http/2 on clear TCP by specifying "proto
h2" on the bind line.
-quic-cc-algo { cubic[-pacing] | newreno | nocc }[(<args,...>)]
+quic-cc-algo { cubic[-pacing] | newreno | bbr | nocc }[(<args,...>)]
This is a QUIC specific setting to select the congestion control algorithm
for any connection attempts to the configured QUIC listeners. They are similar
to those used by TCP.
scenario, it can significantly improve network throughput. However, it can
also increase CPU usage if haproxy is forced to wait too long between each
emission. Pacing support is still experimental, as such it requires
- "expose-experimental-directives".
+ "expose-experimental-directives". BBR congestion control algorithm depends on
+ the pacing support which is in this case implicitely activated by "bbr".
+ Note that BBR haproxy 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
algorithm token. It must be written between parenthesis, separated by a comma
#define QUIC_CC_NEWRENO_STR "newreno"
#define QUIC_CC_CUBIC_STR "cubic"
+#define QUIC_CC_BBR_STR "bbr"
#define QUIC_CC_NO_CC_STR "nocc"
static int bind_parse_quic_force_retry(char **args, int cur_arg, struct proxy *px, struct bind_conf *conf, char **err)
arg += strlen(str_pacing);
}
}
+ else if (strncmp(arg, QUIC_CC_BBR_STR, strlen(QUIC_CC_BBR_STR)) == 0) {
+ if (!experimental_directives_allowed) {
+ ha_alert("'%s' algo is experimental, must be allowed via a global "
+ "'expose-experimental-directives'\n", arg);
+ goto fail;
+ }
+
+ /* bbr */
+ algo = QUIC_CC_BBR_STR;
+ cc_algo = &quic_cc_algo_bbr;
+ arg += strlen(QUIC_CC_BBR_STR);
+ }
else if (strncmp(arg, QUIC_CC_NO_CC_STR, strlen(QUIC_CC_NO_CC_STR)) == 0) {
/* nocc */
if (!experimental_directives_allowed) {