Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BBR2 - Fixes and updates #1521

Closed
wants to merge 19 commits into from

Conversation

divyabhat1
Copy link
Contributor

BUG FIXES

  1. Pacing rate assigned at initialization/default was never updated until a higher rate was measured.
  2. Initial minRTT is never updated unless a smaller value is measured

EDITS OBTAINED FROM LINUX IMPLEMENTATION OF BBRV2

  1. Ref: https://github.com/google/bbr/blob/v2alpha/net/ipv4/tcp_bbr2.c
  2. Pacing Gain and Congestion Window Gain defined for all phases of BBR2 (taken from Linux implementation of BBRv2)
  3. Track and handle excessive loss during Startup phase (may be seen with high RTT/loss profiles)

MY EDITS

  1. MinRTT, MaxBW and ACK aggregation - all windows updated to use a function of RTT, instead of static values (currently uses the most recent value to account for transient network variations, should optimize)
  2. Temporarily disabled ProbeRTT phase. ProbeRTT was defined in the draft to probe the path for bandwidth during a session (long-lived sessions would benefit). It reduces bytes in flight in order to probe for RTT, needs more work to figure out when we do this.

@divyabhat1 divyabhat1 requested a review from a team as a code owner May 25, 2023 18:09
@divyabhat1 divyabhat1 marked this pull request as draft May 25, 2023 18:15
@divyabhat1 divyabhat1 marked this pull request as ready for review May 30, 2023 17:45
Pass a whole lost packet (Sent) to congestion_event() hook,
to use some of the information of lost packet.
{Sent|Acked}.{tx_in_flight|lost} is current bytes_in_flight
and bytes_lost counter when the packet is sent.

This is needed for BBR2 module.
Based on draft-cardwell-iccrg-bbr-congestion-control-02.

Largely based on bbr module but most of functions are
renamed/changed a bit. per_loss.rs contains loss-related
functions.
@ghedo
Copy link
Member

ghedo commented Jun 1, 2023

FTR, this is based on top of #1218.


fn bbr2_handle_queue_too_high_in_startup(r: &mut Recovery) {
r.bbr2_state.filled_pipe = true;
bbr2_inflight(r, r.bbr2_state.max_bw, 1.0);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From the Linux implementation, we need to assign the calculated inflight to inflight_hi variable which is part of long term model.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch! Updated. Thanks :)

// Another round w/o much growth
r.bbr2_state.full_bw_count += 1;

if r.bbr2_state.full_bw_count >= 3 {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move 3 into a constant

junhochoi and others added 11 commits August 21, 2023 10:39
Pass a whole lost packet (Sent) to congestion_event() hook,
to use some of the information of lost packet.
{Sent|Acked}.{tx_in_flight|lost} is current bytes_in_flight
and bytes_lost counter when the packet is sent.

This is needed for BBR2 module.
Based on draft-cardwell-iccrg-bbr-congestion-control-02.

Largely based on bbr module but most of functions are
renamed/changed a bit. per_loss.rs contains loss-related
functions.
@ghedo ghedo force-pushed the 1512.bbr2 branch 2 times, most recently from f7bb08e to dbc5eb8 Compare August 29, 2023 10:21
@ghedo ghedo deleted the branch cloudflare:1512.bbr2 August 29, 2023 10:31
@ghedo ghedo closed this Aug 29, 2023
@ghedo
Copy link
Member

ghedo commented Aug 29, 2023

Had to move this into #1604 as GitHub automatically closed this PR after #1218 was merged, and I can't seem to be able to re-open it anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants