Skip to content

Commit 133998f

Browse files
authored
Release 4.4.1 (#597)
- [IMPROVEMENT] Improve BBR performance at high BDP by removing a hardcoded limit inherited from the original BBR code in Chrome.
1 parent 3a42550 commit 133998f

4 files changed

Lines changed: 22 additions & 5 deletions

File tree

CHANGELOG

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
2024-12-01
1+
2025-12-07
2+
- 4.4.1
3+
- [IMPROVEMENT] Improve BBR performance at high BDP by removing a
4+
hardcoded limit inherited from the original BBR code in Chrome.
5+
6+
2025-11-30
27
- 4.4.0
38
- [API] Add per-connection send rate throttling.
49
- [BUGFIX] Fix data corruption in delayed mini-conn packets (#593).

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
# The short X.Y version
2727
version = u'4.4'
2828
# The full version, including alpha/beta/rc tags
29-
release = u'4.4.0'
29+
release = u'4.4.1'
3030

3131

3232
# -- General configuration ---------------------------------------------------

include/lsquic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ extern "C" {
2727

2828
#define LSQUIC_MAJOR_VERSION 4
2929
#define LSQUIC_MINOR_VERSION 4
30-
#define LSQUIC_PATCH_VERSION 0
30+
#define LSQUIC_PATCH_VERSION 1
3131

3232
#define LSQUIC_QUOTE(x) #x
3333
#define LSQUIC_SVAL(v) LSQUIC_QUOTE(v)

src/liblsquic/lsquic_bbr.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@
7373
/* Taken from send_algorithm_interface.h */
7474
#define kDefaultMaxCongestionWindowPackets 2000
7575

76+
/* Multiplier for maximum cwnd relative to BDP. This allows BBR to probe
77+
* bandwidth (1.25x during PROBE_BW) and handle ACK aggregation without
78+
* hitting a hard limit at high RTT.
79+
*/
80+
#define kMaxCwndBdpMultiplier 3.0f
81+
7682
// The time after which the current min_rtt value expires.
7783
#define kMinRttExpiry sec(10)
7884

@@ -146,8 +152,9 @@ set_mode (struct lsquic_bbr *bbr, enum bbr_mode mode)
146152
{
147153
if (bbr->bbr_mode != mode)
148154
{
149-
LSQ_DEBUG("mode change %s -> %s", mode2str[bbr->bbr_mode],
150-
mode2str[mode]);
155+
LSQ_INFO("mode change %s -> %s (BW: %"PRIu64" bps, cwnd: %"PRIu64")",
156+
mode2str[bbr->bbr_mode], mode2str[mode],
157+
minmax_get(&bbr->bbr_max_bandwidth), bbr->bbr_cwnd);
151158
bbr->bbr_mode = mode;
152159
}
153160
else
@@ -941,6 +948,11 @@ calculate_cwnd (struct lsquic_bbr *bbr, uint64_t bytes_acked,
941948
LSQ_DEBUG("exceed max cwnd");
942949
bbr->bbr_cwnd = bbr->bbr_max_cwnd;
943950
}
951+
952+
/* Update max_cwnd based on current BDP to scale with network conditions. */
953+
uint64_t bdp_based_max = get_target_cwnd(bbr, kMaxCwndBdpMultiplier);
954+
uint64_t static_min = kDefaultMaxCongestionWindowPackets * kDefaultTCPMSS;
955+
bbr->bbr_max_cwnd = MAX(bdp_based_max, static_min);
944956
}
945957

946958

0 commit comments

Comments
 (0)