diff --git a/quiche/quic/core/congestion_control/pacing_sender.cc b/quiche/quic/core/congestion_control/pacing_sender.cc
index 687bf47..a705591 100644
--- a/quiche/quic/core/congestion_control/pacing_sender.cc
+++ b/quiche/quic/core/congestion_control/pacing_sender.cc
@@ -23,6 +23,7 @@
 PacingSender::PacingSender()
     : sender_(nullptr),
       max_pacing_rate_(QuicBandwidth::Zero()),
+      application_driven_pacing_rate_(QuicBandwidth::Infinite()),
       burst_tokens_(kInitialUnpacedBurst),
       ideal_next_packet_send_time_(QuicTime::Zero()),
       initial_burst_size_(kInitialUnpacedBurst),
diff --git a/quiche/quic/core/congestion_control/pacing_sender.h b/quiche/quic/core/congestion_control/pacing_sender.h
index 214b2670..3461a39 100644
--- a/quiche/quic/core/congestion_control/pacing_sender.h
+++ b/quiche/quic/core/congestion_control/pacing_sender.h
@@ -44,6 +44,19 @@
     max_pacing_rate_ = max_pacing_rate;
   }
 
+  void set_application_driven_pacing_rate(
+      QuicBandwidth application_driven_pacing_rate) {
+    // Soft pacing suggestion from application layer. Experimental, see
+    // b/364614652 for more context.
+
+    application_driven_pacing_rate_ = application_driven_pacing_rate;
+    sender_->SetApplicationDrivenPacingRate(application_driven_pacing_rate_);
+  }
+
+  QuicBandwidth application_driven_pacing_rate() const {
+    return application_driven_pacing_rate_;
+  }
+
   void set_remove_non_initial_burst() { remove_non_initial_burst_ = true; }
 
   QuicBandwidth max_pacing_rate() const { return max_pacing_rate_; }
@@ -88,6 +101,12 @@
   // If not QuicBandidth::Zero, the maximum rate the PacingSender will use.
   QuicBandwidth max_pacing_rate_;
 
+  // Keep track of the application driven pacing rate used by sender_.
+  // Experimental, see b/364614652 for more context. This signals application
+  // bandwidth needs to the underlying BBR sender, so that we can back off
+  // accordingly when congestion is detected.
+  QuicBandwidth application_driven_pacing_rate_;
+
   // Number of unpaced packets to be sent before packets are delayed.
   uint32_t burst_tokens_;
   QuicTime ideal_next_packet_send_time_;  // When can the next packet be sent.
diff --git a/quiche/quic/core/quic_connection.cc b/quiche/quic/core/quic_connection.cc
index d569048..e705044 100644
--- a/quiche/quic/core/quic_connection.cc
+++ b/quiche/quic/core/quic_connection.cc
@@ -663,6 +663,12 @@
   sent_packet_manager_.SetMaxPacingRate(max_pacing_rate);
 }
 
+void QuicConnection::SetApplicationDrivenPacingRate(
+    QuicBandwidth application_driven_pacing_rate) {
+  sent_packet_manager_.SetApplicationDrivenPacingRate(
+      application_driven_pacing_rate);
+}
+
 void QuicConnection::AdjustNetworkParameters(
     const SendAlgorithmInterface::NetworkParams& params) {
   sent_packet_manager_.AdjustNetworkParameters(params);
@@ -687,6 +693,10 @@
   return sent_packet_manager_.MaxPacingRate();
 }
 
+QuicBandwidth QuicConnection::ApplicationDrivenPacingRate() const {
+  return sent_packet_manager_.ApplicationDrivenPacingRate();
+}
+
 bool QuicConnection::SelectMutualVersion(
     const ParsedQuicVersionVector& available_versions) {
   // Try to find the highest mutual version by iterating over supported
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h
index 81a742d..3a7e534 100644
--- a/quiche/quic/core/quic_connection.h
+++ b/quiche/quic/core/quic_connection.h
@@ -561,6 +561,15 @@
   // Called by the Session when a max pacing rate for the connection is needed.
   virtual void SetMaxPacingRate(QuicBandwidth max_pacing_rate);
 
+  // Called by the Session when an application driven pacing rate for the
+  // connection is needed.  Experimental, see b/364614652 for more context.
+  // This is only used by an experimental feature for bbr2_sender to support
+  // soft pacing based on application layer hints when there are signs of
+  // congestion.  application_driven_pacing_rat| is the bandwidth that is
+  // considered sufficient for the application's need.
+  virtual void SetApplicationDrivenPacingRate(
+      QuicBandwidth application_driven_pacing_rate);
+
   // Allows the client to adjust network parameters based on external
   // information.
   void AdjustNetworkParameters(
@@ -577,6 +586,9 @@
   // Returns the max pacing rate for the connection.
   virtual QuicBandwidth MaxPacingRate() const;
 
+  // Returns the application driven pacing rate for the connection.
+  virtual QuicBandwidth ApplicationDrivenPacingRate() const;
+
   // Sends crypto handshake messages of length |write_length| to the peer in as
   // few packets as possible. Returns the number of bytes consumed from the
   // data.
diff --git a/quiche/quic/core/quic_sent_packet_manager.h b/quiche/quic/core/quic_sent_packet_manager.h
index ce95b4d..faebd06 100644
--- a/quiche/quic/core/quic_sent_packet_manager.h
+++ b/quiche/quic/core/quic_sent_packet_manager.h
@@ -151,6 +151,20 @@
     pacing_sender_.set_max_pacing_rate(max_pacing_rate);
   }
 
+  // Experimental, see b/364614652 for more context.
+  // This is only used by an experimental feature for bbr2_sender to support
+  // soft pacing based on application layer hints when there are signs of
+  // congestion.
+  void SetApplicationDrivenPacingRate(
+      QuicBandwidth application_driven_pacing_rate) {
+    pacing_sender_.set_application_driven_pacing_rate(
+        application_driven_pacing_rate);
+  }
+
+  QuicBandwidth ApplicationDrivenPacingRate() const {
+    return pacing_sender_.application_driven_pacing_rate();
+  }
+
   // The delay to use for the send alarm. If zero, it essentially means
   // to queue the send call immediately.
   // WARNING: This is currently an experimental API.
diff --git a/quiche/quic/test_tools/quic_test_utils.h b/quiche/quic/test_tools/quic_test_utils.h
index df9fd66..0e9f020 100644
--- a/quiche/quic/test_tools/quic_test_utils.h
+++ b/quiche/quic/test_tools/quic_test_utils.h
@@ -655,6 +655,11 @@
               (const CachedNetworkParameters&, bool), (override));
   MOCK_METHOD(void, SetMaxPacingRate, (QuicBandwidth), (override));
 
+  MOCK_METHOD(void, SetApplicationDrivenPacingRate, (quic::QuicBandwidth),
+              (override));
+  MOCK_METHOD(quic::QuicBandwidth, ApplicationDrivenPacingRate, (),
+              (const, override));
+
   MOCK_METHOD(void, OnStreamReset, (QuicStreamId, QuicRstStreamErrorCode),
               (override));
   MOCK_METHOD(bool, SendControlFrame, (const QuicFrame& frame), (override));
