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 <jonaso@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42324}
This commit is contained in:
Per K 2024-05-16 10:33:52 +00:00 committed by WebRTC LUCI CQ
parent b25c747d5d
commit d1a8ce588f
3 changed files with 22 additions and 9 deletions

View File

@ -95,6 +95,8 @@ RtpTransportControllerSend::RtpTransportControllerSend(
!env_.field_trials().IsEnabled("WebRTC-Bwe-NoFeedbackReset")), !env_.field_trials().IsEnabled("WebRTC-Bwe-NoFeedbackReset")),
add_pacing_to_cwin_(env_.field_trials().IsEnabled( add_pacing_to_cwin_(env_.field_trials().IsEnabled(
"WebRTC-AddPacingToCongestionWindowPushback")), "WebRTC-AddPacingToCongestionWindowPushback")),
reset_bwe_on_adapter_id_change_(
env_.field_trials().IsEnabled("WebRTC-Bwe-ResetOnAdapterIdChange")),
relay_bandwidth_cap_("relay_cap", DataRate::PlusInfinity()), relay_bandwidth_cap_("relay_cap", DataRate::PlusInfinity()),
transport_overhead_bytes_per_packet_(0), transport_overhead_bytes_per_packet_(0),
network_available_(false), network_available_(false),
@ -295,18 +297,23 @@ void RtpTransportControllerSend::RegisterTargetTransferRateObserver(
bool RtpTransportControllerSend::IsRelevantRouteChange( bool RtpTransportControllerSend::IsRelevantRouteChange(
const rtc::NetworkRoute& old_route, const rtc::NetworkRoute& old_route,
const rtc::NetworkRoute& new_route) const { 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 connected_changed = old_route.connected != new_route.connected;
bool route_ids_changed = bool route_ids_changed = false;
old_route.local.network_id() != new_route.local.network_id() || bool relaying_changed = false;
old_route.remote.network_id() != new_route.remote.network_id();
if (relay_bandwidth_cap_->IsFinite()) { if (reset_bwe_on_adapter_id_change_) {
bool relaying_changed = IsRelayed(old_route) != IsRelayed(new_route); route_ids_changed =
return connected_changed || route_ids_changed || relaying_changed; old_route.local.adapter_id() != new_route.local.adapter_id() ||
old_route.remote.adapter_id() != new_route.remote.adapter_id();
} else { } 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( void RtpTransportControllerSend::OnNetworkRouteChanged(

View File

@ -152,6 +152,7 @@ class RtpTransportControllerSend final
SequenceChecker sequence_checker_; SequenceChecker sequence_checker_;
TaskQueueBase* task_queue_; TaskQueueBase* task_queue_;
PacketRouter packet_router_; PacketRouter packet_router_;
std::vector<std::unique_ptr<RtpVideoSenderInterface>> video_rtp_senders_ std::vector<std::unique_ptr<RtpVideoSenderInterface>> video_rtp_senders_
RTC_GUARDED_BY(&sequence_checker_); RTC_GUARDED_BY(&sequence_checker_);
RtpBitrateConfigurator bitrate_configurator_; RtpBitrateConfigurator bitrate_configurator_;
@ -193,6 +194,8 @@ class RtpTransportControllerSend final
const bool reset_feedback_on_route_change_; const bool reset_feedback_on_route_change_;
const bool add_pacing_to_cwin_; const bool add_pacing_to_cwin_;
const bool reset_bwe_on_adapter_id_change_;
FieldTrialParameter<DataRate> relay_bandwidth_cap_; FieldTrialParameter<DataRate> relay_bandwidth_cap_;
size_t transport_overhead_bytes_per_packet_ RTC_GUARDED_BY(sequence_checker_); size_t transport_overhead_bytes_per_packet_ RTC_GUARDED_BY(sequence_checker_);

View File

@ -62,6 +62,9 @@ ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
FieldTrial('WebRTC-Bwe-LimitPacingFactorByUpperLinkCapacityEstimate', FieldTrial('WebRTC-Bwe-LimitPacingFactorByUpperLinkCapacityEstimate',
42220543, 42220543,
date(2025, 1, 1)), date(2025, 1, 1)),
FieldTrial('WebRTC-Bwe-ResetOnAdapterIdChange',
42225231,
date(2025, 5, 30)),
FieldTrial('WebRTC-DataChannelMessageInterleaving', FieldTrial('WebRTC-DataChannelMessageInterleaving',
41481008, 41481008,
date(2024, 10, 1)), date(2024, 10, 1)),