diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 21:38:46 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 21:38:46 +0000 |
commit | c519295e83ab20eb42e58e40f28493df43d3d1c4 (patch) | |
tree | 7552eb2c91d2af49831d1a4550ced17af25985bf /net/quic/quic_sent_packet_manager.cc | |
parent | 016af54060c480dd1473e10f86bbf67f1fce85de (diff) | |
download | chromium_src-c519295e83ab20eb42e58e40f28493df43d3d1c4.zip chromium_src-c519295e83ab20eb42e58e40f28493df43d3d1c4.tar.gz chromium_src-c519295e83ab20eb42e58e40f28493df43d3d1c4.tar.bz2 |
Landing Recent QUIC Changes.
Change how QUIC negotiates pacing from congestion feedback to QUIC
connection option.
Merge internal change: 73061068
https://codereview.chromium.org/471613002/
Add max_bandwidth and max_bandwidth_timestamp to QUIC source address
token.
Merge internal change: 73055131
https://codereview.chromium.org/463093003/
Don't print (SCUP) in log message, the DebugString that follows contains
this already.
Merge internal change: 73054570
https://codereview.chromium.org/464893003/
Do not support Quic timestamp feedback type in the framer.
Merge internal change: 72905602
https://codereview.chromium.org/467893002/
Change QUIC's delayed ack timer from 100ms to 25ms.
Rationale: This delay kicks in when the receiver is waiting for a second
data packet before sending an ack, and 100ms seems inordinately long for
this wait. The timer fires per-packet in low-bandwidth network paths
(BW < ~384 kbps), where more frequent acks helps with (i) ack clocking,
and (ii) better bw estimation for BBR.
Merge internal change: 72788368
https://codereview.chromium.org/461183002/
QUIC - clean up changes to keep in sync with internal source tree.
https://codereview.chromium.org/454263002/
R=rch@chromium.org
TBR=thestig@chromium.org
Review URL: https://codereview.chromium.org/471293002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290018 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_sent_packet_manager.cc')
-rw-r--r-- | net/quic/quic_sent_packet_manager.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/net/quic/quic_sent_packet_manager.cc b/net/quic/quic_sent_packet_manager.cc index a0ce684..292afa6 100644 --- a/net/quic/quic_sent_packet_manager.cc +++ b/net/quic/quic_sent_packet_manager.cc @@ -49,8 +49,6 @@ static const size_t kNumMinRttSamplesAfterQuiescence = 2; // Number of unpaced packets to send after quiescence. static const size_t kInitialUnpacedBurst = 10; -// Use a 1 minute window for Recent Min RTT with BBR. - bool HasCryptoHandshake(const TransmissionInfo& transmission_info) { if (transmission_info.retransmittable_frames == NULL) { return false; @@ -115,9 +113,8 @@ void QuicSentPacketManager::SetFromConfig(const QuicConfig& config) { send_algorithm_.reset( SendAlgorithmInterface::Create(clock_, &rtt_stats_, kReno, stats_)); } - if (config.congestion_feedback() == kPACE || - (config.HasReceivedConnectionOptions() && - ContainsQuicTag(config.ReceivedConnectionOptions(), kPACE))) { + if (config.HasReceivedConnectionOptions() && + ContainsQuicTag(config.ReceivedConnectionOptions(), kPACE)) { MaybeEnablePacing(); } // TODO(ianswett): Remove the "HasReceivedLossDetection" branch once @@ -740,6 +737,8 @@ QuicTime::Delta QuicSentPacketManager::TimeUntilSend( now, unacked_packets_.bytes_in_flight(), retransmittable); } +// Uses a 25ms delayed ack timer. Also helps with better signaling +// in low-bandwidth (< ~384 kbps), where an ack is sent per packet. // Ensures that the Delayed Ack timer is always set to a value lesser // than the retransmission timer's minimum value (MinRTO). We want the // delayed ack to get back to the QUIC peer before the sender's @@ -753,7 +752,8 @@ QuicTime::Delta QuicSentPacketManager::TimeUntilSend( // any benefits, but if the delayed ack becomes a significant source // of (likely, tail) latency, then consider such a mechanism. const QuicTime::Delta QuicSentPacketManager::DelayedAckTime() const { - return QuicTime::Delta::FromMilliseconds(kMinRetransmissionTimeMs/2); + return QuicTime::Delta::FromMilliseconds(min(kMaxDelayedAckTime, + kMinRetransmissionTimeMs/2)); } const QuicTime QuicSentPacketManager::GetRetransmissionTime() const { @@ -805,7 +805,8 @@ const QuicTime::Delta QuicSentPacketManager::GetTailLossProbeDelay() const { QuicTime::Delta srtt = rtt_stats_.SmoothedRtt(); if (!unacked_packets_.HasMultipleInFlightPackets()) { return QuicTime::Delta::Max( - srtt.Multiply(1.5).Add(DelayedAckTime()), srtt.Multiply(2)); + srtt.Multiply(2), srtt.Multiply(1.5) + .Add(QuicTime::Delta::FromMilliseconds(kMinRetransmissionTimeMs/2))); } return QuicTime::Delta::FromMilliseconds( max(kMinTailLossProbeTimeoutMs, |