Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: net/quic/quic_sent_packet_manager.cc

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_sent_packet_manager.h ('k') | net/quic/quic_sent_packet_manager_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_sent_packet_manager.h" 5 #include "net/quic/quic_sent_packet_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
11 #include "net/quic/congestion_control/pacing_sender.h" 11 #include "net/quic/congestion_control/pacing_sender.h"
12 #include "net/quic/crypto/crypto_protocol.h" 12 #include "net/quic/crypto/crypto_protocol.h"
13 #include "net/quic/proto/cached_network_parameters.pb.h" 13 #include "net/quic/proto/cached_network_parameters.pb.h"
14 #include "net/quic/quic_connection_stats.h" 14 #include "net/quic/quic_connection_stats.h"
15 #include "net/quic/quic_flags.h" 15 #include "net/quic/quic_flags.h"
16 #include "net/quic/quic_utils_chromium.h" 16 #include "net/quic/quic_utils_chromium.h"
17 17
18 using std::max; 18 using std::max;
19 using std::min; 19 using std::min;
20 20
21 namespace net { 21 namespace net {
22 22
23 // The length of the recent min rtt window in seconds. Windowing is disabled for 23 // The length of the recent min rtt window in seconds. Windowing is disabled for
24 // values less than or equal to 0. 24 // values less than or equal to 0.
25 int32 FLAGS_quic_recent_min_rtt_window_s = 60; 25 int32_t FLAGS_quic_recent_min_rtt_window_s = 60;
26 26
27 namespace { 27 namespace {
28 static const int64 kDefaultRetransmissionTimeMs = 500; 28 static const int64_t kDefaultRetransmissionTimeMs = 500;
29 // TCP RFC calls for 1 second RTO however Linux differs from this default and 29 // TCP RFC calls for 1 second RTO however Linux differs from this default and
30 // define the minimum RTO to 200ms, we will use the same until we have data to 30 // define the minimum RTO to 200ms, we will use the same until we have data to
31 // support a higher or lower value. 31 // support a higher or lower value.
32 static const int64 kMinRetransmissionTimeMs = 200; 32 static const int64_t kMinRetransmissionTimeMs = 200;
33 static const int64 kMaxRetransmissionTimeMs = 60000; 33 static const int64_t kMaxRetransmissionTimeMs = 60000;
34 // Maximum number of exponential backoffs used for RTO timeouts. 34 // Maximum number of exponential backoffs used for RTO timeouts.
35 static const size_t kMaxRetransmissions = 10; 35 static const size_t kMaxRetransmissions = 10;
36 // Maximum number of packets retransmitted upon an RTO. 36 // Maximum number of packets retransmitted upon an RTO.
37 static const size_t kMaxRetransmissionsOnTimeout = 2; 37 static const size_t kMaxRetransmissionsOnTimeout = 2;
38 38
39 // Ensure the handshake timer isnt't faster than 10ms. 39 // Ensure the handshake timer isnt't faster than 10ms.
40 // This limits the tenth retransmitted packet to 10s after the initial CHLO. 40 // This limits the tenth retransmitted packet to 10s after the initial CHLO.
41 static const int64 kMinHandshakeTimeoutMs = 10; 41 static const int64_t kMinHandshakeTimeoutMs = 10;
42 42
43 // Sends up to two tail loss probes before firing an RTO, 43 // Sends up to two tail loss probes before firing an RTO,
44 // per draft RFC draft-dukkipati-tcpm-tcp-loss-probe. 44 // per draft RFC draft-dukkipati-tcpm-tcp-loss-probe.
45 static const size_t kDefaultMaxTailLossProbes = 2; 45 static const size_t kDefaultMaxTailLossProbes = 2;
46 static const int64 kMinTailLossProbeTimeoutMs = 10; 46 static const int64_t kMinTailLossProbeTimeoutMs = 10;
47 47
48 // Number of unpaced packets to send after quiescence. 48 // Number of unpaced packets to send after quiescence.
49 static const size_t kInitialUnpacedBurst = 10; 49 static const size_t kInitialUnpacedBurst = 10;
50 50
51 bool HasCryptoHandshake(const TransmissionInfo& transmission_info) { 51 bool HasCryptoHandshake(const TransmissionInfo& transmission_info) {
52 if (transmission_info.retransmittable_frames == nullptr) { 52 if (transmission_info.retransmittable_frames == nullptr) {
53 return false; 53 return false;
54 } 54 }
55 return transmission_info.retransmittable_frames->HasCryptoHandshake() == 55 return transmission_info.retransmittable_frames->HasCryptoHandshake() ==
56 IS_HANDSHAKE; 56 IS_HANDSHAKE;
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 179
180 if (network_change_visitor_ != nullptr) { 180 if (network_change_visitor_ != nullptr) {
181 network_change_visitor_->OnCongestionWindowChange(); 181 network_change_visitor_->OnCongestionWindowChange();
182 } 182 }
183 } 183 }
184 184
185 void QuicSentPacketManager::ResumeConnectionState( 185 void QuicSentPacketManager::ResumeConnectionState(
186 const CachedNetworkParameters& cached_network_params, 186 const CachedNetworkParameters& cached_network_params,
187 bool max_bandwidth_resumption) { 187 bool max_bandwidth_resumption) {
188 if (cached_network_params.has_min_rtt_ms()) { 188 if (cached_network_params.has_min_rtt_ms()) {
189 uint32 initial_rtt_us = 189 uint32_t initial_rtt_us =
190 kNumMicrosPerMilli * cached_network_params.min_rtt_ms(); 190 kNumMicrosPerMilli * cached_network_params.min_rtt_ms();
191 rtt_stats_.set_initial_rtt_us( 191 rtt_stats_.set_initial_rtt_us(
192 max(kMinInitialRoundTripTimeUs, 192 max(kMinInitialRoundTripTimeUs,
193 min(kMaxInitialRoundTripTimeUs, initial_rtt_us))); 193 min(kMaxInitialRoundTripTimeUs, initial_rtt_us)));
194 } 194 }
195 send_algorithm_->ResumeConnectionState(cached_network_params, 195 send_algorithm_->ResumeConnectionState(cached_network_params,
196 max_bandwidth_resumption); 196 max_bandwidth_resumption);
197 } 197 }
198 198
199 void QuicSentPacketManager::SetNumOpenStreams(size_t num_streams) { 199 void QuicSentPacketManager::SetNumOpenStreams(size_t num_streams) {
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 } 869 }
870 870
871 const QuicTime::Delta QuicSentPacketManager::GetCryptoRetransmissionDelay() 871 const QuicTime::Delta QuicSentPacketManager::GetCryptoRetransmissionDelay()
872 const { 872 const {
873 // This is equivalent to the TailLossProbeDelay, but slightly more aggressive 873 // This is equivalent to the TailLossProbeDelay, but slightly more aggressive
874 // because crypto handshake messages don't incur a delayed ack time. 874 // because crypto handshake messages don't incur a delayed ack time.
875 QuicTime::Delta srtt = rtt_stats_.smoothed_rtt(); 875 QuicTime::Delta srtt = rtt_stats_.smoothed_rtt();
876 if (srtt.IsZero()) { 876 if (srtt.IsZero()) {
877 srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us()); 877 srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us());
878 } 878 }
879 int64 delay_ms = max(kMinHandshakeTimeoutMs, 879 int64_t delay_ms = max(kMinHandshakeTimeoutMs,
880 static_cast<int64>(1.5 * srtt.ToMilliseconds())); 880 static_cast<int64_t>(1.5 * srtt.ToMilliseconds()));
881 return QuicTime::Delta::FromMilliseconds( 881 return QuicTime::Delta::FromMilliseconds(
882 delay_ms << consecutive_crypto_retransmission_count_); 882 delay_ms << consecutive_crypto_retransmission_count_);
883 } 883 }
884 884
885 const QuicTime::Delta QuicSentPacketManager::GetTailLossProbeDelay() const { 885 const QuicTime::Delta QuicSentPacketManager::GetTailLossProbeDelay() const {
886 QuicTime::Delta srtt = rtt_stats_.smoothed_rtt(); 886 QuicTime::Delta srtt = rtt_stats_.smoothed_rtt();
887 if (srtt.IsZero()) { 887 if (srtt.IsZero()) {
888 srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us()); 888 srtt = QuicTime::Delta::FromMicroseconds(rtt_stats_.initial_rtt_us());
889 } 889 }
890 if (enable_half_rtt_tail_loss_probe_ && consecutive_tlp_count_ == 0u) { 890 if (enable_half_rtt_tail_loss_probe_ && consecutive_tlp_count_ == 0u) {
891 return QuicTime::Delta::FromMilliseconds( 891 return QuicTime::Delta::FromMilliseconds(
892 max(kMinTailLossProbeTimeoutMs, 892 max(kMinTailLossProbeTimeoutMs,
893 static_cast<int64>(0.5 * srtt.ToMilliseconds()))); 893 static_cast<int64_t>(0.5 * srtt.ToMilliseconds())));
894 } 894 }
895 if (!unacked_packets_.HasMultipleInFlightPackets()) { 895 if (!unacked_packets_.HasMultipleInFlightPackets()) {
896 return QuicTime::Delta::Max( 896 return QuicTime::Delta::Max(
897 srtt.Multiply(2), 897 srtt.Multiply(2),
898 srtt.Multiply(1.5).Add( 898 srtt.Multiply(1.5).Add(
899 QuicTime::Delta::FromMilliseconds(kMinRetransmissionTimeMs / 2))); 899 QuicTime::Delta::FromMilliseconds(kMinRetransmissionTimeMs / 2)));
900 } 900 }
901 return QuicTime::Delta::FromMilliseconds( 901 return QuicTime::Delta::FromMilliseconds(
902 max(kMinTailLossProbeTimeoutMs, 902 max(kMinTailLossProbeTimeoutMs,
903 static_cast<int64>(2 * srtt.ToMilliseconds()))); 903 static_cast<int64_t>(2 * srtt.ToMilliseconds())));
904 } 904 }
905 905
906 const QuicTime::Delta QuicSentPacketManager::GetRetransmissionDelay() const { 906 const QuicTime::Delta QuicSentPacketManager::GetRetransmissionDelay() const {
907 QuicTime::Delta retransmission_delay = send_algorithm_->RetransmissionDelay(); 907 QuicTime::Delta retransmission_delay = send_algorithm_->RetransmissionDelay();
908 if (retransmission_delay.IsZero()) { 908 if (retransmission_delay.IsZero()) {
909 // We are in the initial state, use default timeout values. 909 // We are in the initial state, use default timeout values.
910 retransmission_delay = 910 retransmission_delay =
911 QuicTime::Delta::FromMilliseconds(kDefaultRetransmissionTimeMs); 911 QuicTime::Delta::FromMilliseconds(kDefaultRetransmissionTimeMs);
912 } else if (retransmission_delay.ToMilliseconds() < kMinRetransmissionTimeMs) { 912 } else if (retransmission_delay.ToMilliseconds() < kMinRetransmissionTimeMs) {
913 retransmission_delay = 913 retransmission_delay =
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 // Rtt and cwnd do not need to be reset when the peer address change is 993 // Rtt and cwnd do not need to be reset when the peer address change is
994 // considered to be caused by NATs. 994 // considered to be caused by NATs.
995 return; 995 return;
996 } 996 }
997 997
998 rtt_stats_.OnConnectionMigration(); 998 rtt_stats_.OnConnectionMigration();
999 send_algorithm_->OnConnectionMigration(); 999 send_algorithm_->OnConnectionMigration();
1000 } 1000 }
1001 1001
1002 } // namespace net 1002 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.h ('k') | net/quic/quic_sent_packet_manager_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698