gfe-relnote: (n/a) Add quic platform api to create BBRv2 sender, currently the implementation just creates a BBRv1 sender. No behavior change, not protected. Merge note: third_party/quic/platform/impl/quic_bbr2_sender_impl.h needs to be copied to Chromium. PiperOrigin-RevId: 252890529 Change-Id: I72b44e189675b397bb67bfd84e4bbb23cab11fcf
diff --git a/quic/core/congestion_control/send_algorithm_interface.cc b/quic/core/congestion_control/send_algorithm_interface.cc index 0b3c6c8..b641eb4 100644 --- a/quic/core/congestion_control/send_algorithm_interface.cc +++ b/quic/core/congestion_control/send_algorithm_interface.cc
@@ -7,6 +7,7 @@ #include "net/third_party/quiche/src/quic/core/congestion_control/bbr_sender.h" #include "net/third_party/quiche/src/quic/core/congestion_control/tcp_cubic_sender_bytes.h" #include "net/third_party/quiche/src/quic/core/quic_packets.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_bbr2_sender.h" #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h" #include "net/third_party/quiche/src/quic/platform/api/quic_fallthrough.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h" @@ -33,6 +34,10 @@ return new BbrSender(clock->ApproximateNow(), rtt_stats, unacked_packets, initial_congestion_window, max_congestion_window, random, stats); + case kBBRv2: + return new QuicBbr2Sender(clock->ApproximateNow(), rtt_stats, + unacked_packets, initial_congestion_window, + max_congestion_window, random, stats); case kPCC: if (GetQuicReloadableFlag(quic_enable_pcc3)) { return CreatePccSender(clock, rtt_stats, unacked_packets, random, stats,
diff --git a/quic/core/quic_types.h b/quic/core/quic_types.h index 66a90c1..7a83495 100644 --- a/quic/core/quic_types.h +++ b/quic/core/quic_types.h
@@ -368,7 +368,14 @@ // QUIC. Note that this is separate from the congestion feedback type - // some congestion control algorithms may use the same feedback type // (Reno and Cubic are the classic example for that). -enum CongestionControlType { kCubicBytes, kRenoBytes, kBBR, kPCC, kGoogCC }; +enum CongestionControlType { + kCubicBytes, + kRenoBytes, + kBBR, + kPCC, + kGoogCC, + kBBRv2, +}; enum LossDetectionType : uint8_t { kNack, // Used to mimic TCP's loss detection.
diff --git a/quic/platform/api/quic_bbr2_sender.h b/quic/platform/api/quic_bbr2_sender.h new file mode 100644 index 0000000..48bc86a --- /dev/null +++ b/quic/platform/api/quic_bbr2_sender.h
@@ -0,0 +1,16 @@ +// Copyright (c) 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef QUICHE_QUIC_PLATFORM_API_QUIC_BBR2_SENDER_H_ +#define QUICHE_QUIC_PLATFORM_API_QUIC_BBR2_SENDER_H_ + +#include "net/quic/platform/impl/quic_bbr2_sender_impl.h" + +namespace quic { + +using QuicBbr2Sender = QuicBbr2SenderImpl; + +} // namespace quic + +#endif // QUICHE_QUIC_PLATFORM_API_QUIC_BBR2_SENDER_H_