summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_crypto_server_stream.h
diff options
context:
space:
mode:
authorrtenneti <rtenneti@chromium.org>2014-11-19 19:32:24 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-20 03:32:59 +0000
commit85d89716b4de9d1280d74a9cbe70e9abcb9c274c (patch)
treed7598d938f89c27e4f9f7136ec71fdedd8649f19 /net/quic/quic_crypto_server_stream.h
parentac5b4307414e447002ed67a038cad27264a5cce5 (diff)
downloadchromium_src-85d89716b4de9d1280d74a9cbe70e9abcb9c274c.zip
chromium_src-85d89716b4de9d1280d74a9cbe70e9abcb9c274c.tar.gz
chromium_src-85d89716b4de9d1280d74a9cbe70e9abcb9c274c.tar.bz2
Land Recent QUIC Changes.
Change from setting QUIC's ack timer to 0ms when any handshake packet is received to setting it when the handshake is confirmed on the client side. Merge internal change: 80306847 https://codereview.chromium.org/742823005/ Preparation for Chrome experiment to enable bandwidth resumption. Protected behind FLAGS_quic_enable_bandwidth_resumption_experiment Once this CL is in, I intend to add a Chrome experiment to add the connection option kBWRE to a small percentage of connections to test the effect of turning on BW resumption. If a client provides a previously cached bandwidth estimate (that is recent, and from the same serving region), then set initial CWND based on this data. Behavior change only when both the flag is true, and the Chrome experiment adds the connection option to client handshakes. A followup CL (78446219) will add varz to track the distribution of resulting initial CWNDs. Merge internal change: 80239310 https://codereview.chromium.org/737153002/ Changes QUIC's SentPacketManager to pass in HAS_RETRANSMITTABLE_DATA to the SendAlgorithm for FEC packets, so that the SendAlgorithm can count FEC packets towards congestion control. Merge internal change: 80171666 https://codereview.chromium.org/731863007/ Record the last packet send time before we start sending the packet Problem: Every time QuicConnection sends a new packet, it records the time that the packet was sent. It passes this information to the QuicSentPacketManager, which ultimately stores the information in the TransmissionInfo.sent_time for the packet. Later, when the QuicSentPacketManager receives an ack for the packet, it retrieves its TransmissionInfo and takes a sample of the current RTT as follows: rtt_sample = ack_receive_time - transmission_info.sent_time Previously, QuicConnection was recording the packet "sent_time" as the time that WritePacket completes. The problem with this approach is that the write itself may pause the thread or take a long time. In this case, transmission_info.sent_time will be artificially inflated. When that inflated value is subtracted from the ack time, as above, it will cause the current RTT sample to become artificially small. An artificially small RTT will affect our current estimate of the min RTT, which we currently cannot recover from. The min_rtt will be pinned to the aberrant value. Solution: Changed the code to record the sent_time as the time that the write begins. The drawback of this approach is that any extra send time will be temporarily factored into our smoothed-RTT calculations. The advantage is that it will prevent artificially small RTTs from setting the min_rtt forever. Added a corresponding test, which exercises this scenario by artificially advancing the clock during the write. Change QUIC to record send timestamp prior to write. Protected by FLAGS_quic_record_send_time_before_write. Merge internal change: 80138676 https://codereview.chromium.org/740793002/ Remove a QUIC LOG(DFATAL) that validly occurs when two packets are queued. This may occur when the internal server is write blocked when an two packet REJ is written. Merge internal change: 80124025 https://codereview.chromium.org/736053002/ Tighten up a QUIC LOG(DFATAL) for packets expected to have a non-zero nack count. If the packet is never sent, it never gets nacked, but that wasn't taken into account. Merge internal change: 80120917 https://codereview.chromium.org/735353002/ Use override instead of virtual..override in ./net/quic/... and ./net/tools/quic/... C++11 in Chromium! $ find .../quic/ \( -iname \*.h -o -iname \*.cc \) -print -exec clang_tidy {} -checks='-*,misc-use-override' -fix \; Merge internal change: 80111599 https://codereview.chromium.org/741773002/ Log the SNI and UAID fields in handshake messages as quoted strings. Merge internal change: 80005106 https://codereview.chromium.org/735933002/ R=rch@chromium.org Review URL: https://codereview.chromium.org/744433003 Cr-Commit-Position: refs/heads/master@{#304960}
Diffstat (limited to 'net/quic/quic_crypto_server_stream.h')
-rw-r--r--net/quic/quic_crypto_server_stream.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/quic/quic_crypto_server_stream.h b/net/quic/quic_crypto_server_stream.h
index 09d9bd8..f88affe 100644
--- a/net/quic/quic_crypto_server_stream.h
+++ b/net/quic/quic_crypto_server_stream.h
@@ -82,6 +82,8 @@ class NET_EXPORT_PRIVATE QuicCryptoServerStream : public QuicCryptoStream {
void set_previous_cached_network_params(
CachedNetworkParameters cached_network_params);
+ const CachedNetworkParameters* previous_cached_network_params() const;
+
protected:
virtual QuicErrorCode ProcessClientHello(
const CryptoHandshakeMessage& message,
@@ -93,8 +95,6 @@ class NET_EXPORT_PRIVATE QuicCryptoServerStream : public QuicCryptoStream {
// before going through the parameter negotiation step.
virtual void OverrideQuicConfigDefaults(QuicConfig* config);
- CachedNetworkParameters* get_previous_cached_network_params();
-
private:
friend class test::CryptoTestUtils;