From d1a8ce588f03aa9ecd19c33aae6c3451d0863567 Mon Sep 17 00:00:00 2001 From: Per K Date: Thu, 16 May 2024 10:33:52 +0000 Subject: [PATCH] Add field trial to reset BWE if Network adapter changes instead of if IP address changes Bug: webrtc:14928, webrtc:42225231 Change-Id: I7c3d8d87cb2d0fe8dad5794c6247876c17c73f74 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350561 Reviewed-by: Jonas Oreland Commit-Queue: Per Kjellander Cr-Commit-Position: refs/heads/main@{#42324} --- call/rtp_transport_controller_send.cc | 25 ++++++++++++++++--------- call/rtp_transport_controller_send.h | 3 +++ experiments/field_trials.py | 3 +++ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc index 0104d3d013..f667417239 100644 --- a/call/rtp_transport_controller_send.cc +++ b/call/rtp_transport_controller_send.cc @@ -95,6 +95,8 @@ RtpTransportControllerSend::RtpTransportControllerSend( !env_.field_trials().IsEnabled("WebRTC-Bwe-NoFeedbackReset")), add_pacing_to_cwin_(env_.field_trials().IsEnabled( "WebRTC-AddPacingToCongestionWindowPushback")), + reset_bwe_on_adapter_id_change_( + env_.field_trials().IsEnabled("WebRTC-Bwe-ResetOnAdapterIdChange")), relay_bandwidth_cap_("relay_cap", DataRate::PlusInfinity()), transport_overhead_bytes_per_packet_(0), network_available_(false), @@ -295,18 +297,23 @@ void RtpTransportControllerSend::RegisterTargetTransferRateObserver( bool RtpTransportControllerSend::IsRelevantRouteChange( const rtc::NetworkRoute& old_route, const rtc::NetworkRoute& new_route) const { - // TODO(bugs.webrtc.org/11438): Experiment with using more information/ - // other conditions. bool connected_changed = old_route.connected != new_route.connected; - bool route_ids_changed = - old_route.local.network_id() != new_route.local.network_id() || - old_route.remote.network_id() != new_route.remote.network_id(); - if (relay_bandwidth_cap_->IsFinite()) { - bool relaying_changed = IsRelayed(old_route) != IsRelayed(new_route); - return connected_changed || route_ids_changed || relaying_changed; + bool route_ids_changed = false; + bool relaying_changed = false; + + if (reset_bwe_on_adapter_id_change_) { + route_ids_changed = + old_route.local.adapter_id() != new_route.local.adapter_id() || + old_route.remote.adapter_id() != new_route.remote.adapter_id(); } else { - return connected_changed || route_ids_changed; + route_ids_changed = + old_route.local.network_id() != new_route.local.network_id() || + old_route.remote.network_id() != new_route.remote.network_id(); } + if (relay_bandwidth_cap_->IsFinite()) { + relaying_changed = IsRelayed(old_route) != IsRelayed(new_route); + } + return connected_changed || route_ids_changed || relaying_changed; } void RtpTransportControllerSend::OnNetworkRouteChanged( diff --git a/call/rtp_transport_controller_send.h b/call/rtp_transport_controller_send.h index 68f14b4987..eada78ee0e 100644 --- a/call/rtp_transport_controller_send.h +++ b/call/rtp_transport_controller_send.h @@ -152,6 +152,7 @@ class RtpTransportControllerSend final SequenceChecker sequence_checker_; TaskQueueBase* task_queue_; PacketRouter packet_router_; + std::vector> video_rtp_senders_ RTC_GUARDED_BY(&sequence_checker_); RtpBitrateConfigurator bitrate_configurator_; @@ -193,6 +194,8 @@ class RtpTransportControllerSend final const bool reset_feedback_on_route_change_; const bool add_pacing_to_cwin_; + const bool reset_bwe_on_adapter_id_change_; + FieldTrialParameter relay_bandwidth_cap_; size_t transport_overhead_bytes_per_packet_ RTC_GUARDED_BY(sequence_checker_); diff --git a/experiments/field_trials.py b/experiments/field_trials.py index e40af98b47..2c85ab38ea 100755 --- a/experiments/field_trials.py +++ b/experiments/field_trials.py @@ -62,6 +62,9 @@ ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ FieldTrial('WebRTC-Bwe-LimitPacingFactorByUpperLinkCapacityEstimate', 42220543, date(2025, 1, 1)), + FieldTrial('WebRTC-Bwe-ResetOnAdapterIdChange', + 42225231, + date(2025, 5, 30)), FieldTrial('WebRTC-DataChannelMessageInterleaving', 41481008, date(2024, 10, 1)),