]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: quic: implement BBR congestion control algorithm for QUIC
authorFrederic Lecaille <flecaille@haproxy.com>
Thu, 5 Sep 2024 08:33:38 +0000 (10:33 +0200)
committerFrederic Lecaille <flecaille@haproxy.com>
Wed, 20 Nov 2024 16:34:22 +0000 (17:34 +0100)
commitd04adf44dc4f524a02cd74188704cad05d65a98a
tree110ed8cc8463fd380f8cdb376494b523545560c6
parent472d57595092b3cc1d6dafa8876f8077e59d30e2
MINOR: quic: implement BBR congestion control algorithm for QUIC

Implement the version 3 of BBR for QUIC specified by the IETF in this draft:

https://datatracker.ietf.org/doc/draft-ietf-ccwg-bbr/

Here is an extract from the Abstract part to sum up the the capabilities of BBR:

BBR ("Bottleneck Bandwidth and Round-trip propagation time") uses recent
measurements of a transport connection's delivery rate, round-trip time, and
packet loss rate to build an explicit model of the network path. BBR then uses
this model to control both how fast it sends data and the maximum volume of data
it allows in flight in the network at any time. Relative to loss-based congestion
control algorithms such as Reno [RFC5681] or CUBIC [RFC9438], BBR offers
substantially higher throughput for bottlenecks with shallow buffers or random
losses, and substantially lower queueing delays for bottlenecks with deep buffers
(avoiding "bufferbloat"). BBR can be implemented in any transport protocol that
supports packet-delivery acknowledgment. Thus far, open source implementations
are available for TCP [RFC9293] and QUIC [RFC9000].

In haproxy, this implementation is considered as still experimental. It depends
on the newly implemented pacing feature.

BBR was asked in GH #2516 by @KazuyaKanemura, @osevan and @kennyZ96.
Makefile
include/haproxy/quic_cc-t.h
include/haproxy/quic_cc.h
src/quic_cc_bbr.c [new file with mode: 0644]