diff options
author | rtenneti <rtenneti@chromium.org> | 2014-11-19 19:32:24 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-20 03:32:59 +0000 |
commit | 85d89716b4de9d1280d74a9cbe70e9abcb9c274c (patch) | |
tree | d7598d938f89c27e4f9f7136ec71fdedd8649f19 /net/quic/quic_crypto_server_stream.h | |
parent | ac5b4307414e447002ed67a038cad27264a5cce5 (diff) | |
download | chromium_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.h | 4 |
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; |