OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 * | 9 * |
10 */ | 10 */ |
(...skipping 16 matching lines...) Expand all Loading... |
27 // suggests using this value. | 27 // suggests using this value. |
28 const float kHighGain = 2.885f; | 28 const float kHighGain = 2.885f; |
29 // BBR uses this value to drain queues created during STARTUP in one round trip | 29 // BBR uses this value to drain queues created during STARTUP in one round trip |
30 // time. | 30 // time. |
31 const float kDrainGain = 1 / kHighGain; | 31 const float kDrainGain = 1 / kHighGain; |
32 // kStartupGrowthTarget and kMaxRoundsWithoutGrowth are chosen from | 32 // kStartupGrowthTarget and kMaxRoundsWithoutGrowth are chosen from |
33 // experiments, according to the design document. | 33 // experiments, according to the design document. |
34 const float kStartupGrowthTarget = 1.25f; | 34 const float kStartupGrowthTarget = 1.25f; |
35 const int kMaxRoundsWithoutGrowth = 3; | 35 const int kMaxRoundsWithoutGrowth = 3; |
36 // Pacing gain values for Probe Bandwidth mode. | 36 // Pacing gain values for Probe Bandwidth mode. |
37 const float kPacingGain[] = {1.1, 0.9, 1, 1, 1, 1, 1, 1}; | 37 const float kPacingGain[] = {1.1f, 0.9f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}; |
38 const size_t kGainCycleLength = sizeof(kPacingGain) / sizeof(kPacingGain[0]); | 38 const size_t kGainCycleLength = sizeof(kPacingGain) / sizeof(kPacingGain[0]); |
39 // Least number of rounds PROBE_RTT should last. | 39 // Least number of rounds PROBE_RTT should last. |
40 const int kProbeRttDurationRounds = 1; | 40 const int kProbeRttDurationRounds = 1; |
41 // The least amount of milliseconds PROBE_RTT mode should last. | 41 // The least amount of milliseconds PROBE_RTT mode should last. |
42 const int kProbeRttDurationMs = 200; | 42 const int kProbeRttDurationMs = 200; |
43 // Gain value for congestion window for assuming that network has no queues. | 43 // Gain value for congestion window for assuming that network has no queues. |
44 const float kTargetCongestionWindowGain = 1; | 44 const float kTargetCongestionWindowGain = 1; |
45 // Gain value for congestion window in PROBE_BW mode. In theory it should be | 45 // Gain value for congestion window in PROBE_BW mode. In theory it should be |
46 // equal to 1, but in practice because of delayed acks and the way networks | 46 // equal to 1, but in practice because of delayed acks and the way networks |
47 // work, it is nice to have some extra room in congestion window for full link | 47 // work, it is nice to have some extra room in congestion window for full link |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 last_packet_ack_time_(0), | 105 last_packet_ack_time_(0), |
106 last_packet_send_time_(0), | 106 last_packet_send_time_(0), |
107 pacing_rate_bps_(0), | 107 pacing_rate_bps_(0), |
108 last_packet_send_time_during_high_gain_ms_(-1), | 108 last_packet_send_time_during_high_gain_ms_(-1), |
109 data_sent_before_high_gain_started_bytes_(-1), | 109 data_sent_before_high_gain_started_bytes_(-1), |
110 data_sent_before_high_gain_ended_bytes_(-1), | 110 data_sent_before_high_gain_ended_bytes_(-1), |
111 first_packet_ack_time_during_high_gain_ms_(-1), | 111 first_packet_ack_time_during_high_gain_ms_(-1), |
112 last_packet_ack_time_during_high_gain_ms_(-1), | 112 last_packet_ack_time_during_high_gain_ms_(-1), |
113 data_acked_before_high_gain_started_bytes_(-1), | 113 data_acked_before_high_gain_started_bytes_(-1), |
114 data_acked_before_high_gain_ended_bytes_(-1), | 114 data_acked_before_high_gain_ended_bytes_(-1), |
115 first_packet_seq_num_during_high_gain_(-1), | 115 first_packet_seq_num_during_high_gain_(0), |
116 last_packet_seq_num_during_high_gain_(-1), | 116 last_packet_seq_num_during_high_gain_(0), |
117 high_gain_over_(false), | 117 high_gain_over_(false), |
118 packet_stats_(), | 118 packet_stats_(), |
119 past_rtts_() { | 119 past_rtts_() { |
120 // Initially enter Startup mode. | 120 // Initially enter Startup mode. |
121 EnterStartup(); | 121 EnterStartup(); |
122 } | 122 } |
123 | 123 |
124 BbrBweSender::~BbrBweSender() {} | 124 BbrBweSender::~BbrBweSender() {} |
125 | 125 |
126 int BbrBweSender::GetFeedbackIntervalMs() const { | 126 int BbrBweSender::GetFeedbackIntervalMs() const { |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 latest->send_time_ms + now_ms - latest->arrival_time_ms; | 544 latest->send_time_ms + now_ms - latest->arrival_time_ms; |
545 } | 545 } |
546 FeedbackPacket* fb = new BbrBweFeedback( | 546 FeedbackPacket* fb = new BbrBweFeedback( |
547 flow_id_, now_ms * 1000, corrected_send_time_ms, packet_feedbacks_); | 547 flow_id_, now_ms * 1000, corrected_send_time_ms, packet_feedbacks_); |
548 packet_feedbacks_.clear(); | 548 packet_feedbacks_.clear(); |
549 return fb; | 549 return fb; |
550 } | 550 } |
551 } // namespace bwe | 551 } // namespace bwe |
552 } // namespace testing | 552 } // namespace testing |
553 } // namespace webrtc | 553 } // namespace webrtc |
OLD | NEW |