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

Issue 1437023002: Landing Recent QUIC changes until 2015-11-09 20:32 UTC (Closed)

Created:
5 years, 1 month ago by rjshade
Modified:
5 years, 1 month ago
Reviewers:
Ryan Hamilton
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Landing Recent QUIC changes until 2015-11-09 20:32 UTC Add client-side support of cert transparency for QUIC, gated at QUIC_VERSION_30. With this change, when the negotiated version > QUIC_VERSION_29, the client indicates that it supports cert transparency in client hello, and caches the CSCT value if it exists in server's response. However, the client NEITHER demands SCT NOR verifies the received SCT (e.g., it is up to Chrome how to verify). Merge internal change: 107397642 https://codereview.chromium.org/1435943002/ Not sending QUIC packets if the send alarm is set. Behind FLAGS_respect_send_alarm This fixes a subtle bug where we weren't always respecting priorities when writing. I posit that if we are send limited by the sent packet manager, we expect to resume with OnCanWrite, and resume the highest priority session. Unfortunately right now that's not the case. When the highest priority session gets blocked by the sent packet manager it schedules the alarm. However it's perfectly possible that before the alarm fires, we get an incoming request, process it, that stream checks to see if it can write, and when CanWrite checks now(), we are past the time when the alarm should have fired (due to doing a lot of work, busy machine, what have you) and write data for the random stream. Merge internal change: 107380116 https://codereview.chromium.org/1439653002/ Add token binding negotiation to QUIC This adds a tag (TBKP) to the SCFG and CHLO messages containing a taglist as a value of the supported token binding key parameters (P256 is currently the only supported param). This replaces the TLS token binding negotiation extension as part of the broader Token Binding spec when done over QUIC. Token binding negotiation is off by default - it must be turned on server-side in QuicCryptoServerConfig::ConfigOptions and client side in QuicCryptoClientConfig. If it is enabled, the application layer using QUIC must handle the rest of the Token Binding protocol. More information (including links to the Token Binding specs) is in this doc: https://docs.google.com/document/d/12eKfkdC7g5IGUCtghzg7Wi__qiEkY65fX09n8sjLtHg/edit?pli=1#heading=h.y8fw05yhvdsg Merge internal change: 107277639 https://codereview.chromium.org/1437893002/ Make comments for EndToEndTest.LargePostEarlyResponse more clear. Rearrange code to clarifying the logic when sending request header and body separately. Merge internal change: 107261172 https://codereview.chromium.org/1433353002/ Further reduce the number of QUIC end-to-end test variations that we run from 54 to 30, by only running the version negotiation variants when either all or none of other options are enabled. Among other things, this will help the perfomance of these test in the Chrome memory bots. Merge internal change: 107172676 https://codereview.chromium.org/1414953012/ Add some helper methods to QuicTestServer Merge internal change: 107150707 https://codereview.chromium.org/1433813002/ Move the call to revive packets from QuicConnection::ProcessUdpPacket to QuicConnection::OnPacketComplete. This avoid hitting a DCHECK in the EndToEnd tests when: FEC is enabled, stateless rejects are enabled and packets are reordered. Merge internal change: 107136813 https://codereview.chromium.org/1419303009/ Reduce the number of QUIC end-to-end test combinations that are from from 240 to 46, by looking at five of the options, and only running when either none of them, all of them or just one of them is enabled. Merge internal change: 107135565 https://codereview.chromium.org/1418503022/ Clean up "magic" constants in QuicFramerTest to add comments which explains their values and extract out to named constants. Merge internal change: 107036345 https://codereview.chromium.org/1435673002/ Replace QuicEncryptedPacket argument in QuicConnectionDebugVisitor::OnPacketSent with an encrypted length. No functional change. Merge internal change: 107034442 https://codereview.chromium.org/1433783004/ Override ReliableQuicStream::StopReading() to send RST_STREAM+NO_ERROR if CloseWriteSide() is called before StopReading(). Currently we always call StopReading() before calling CloseWriteSide(). However, there is not restriction to prevent calling StopReading() after CloseWrite(), in which case we should also send a QUIC_STREAM_NO_ERROR rst to stop the peer to sending more data. This feature improves RST_STREAM+NO_ERROR mechanism to be more future-proof. Merge internal change: 106990301 https://codereview.chromium.org/1433063002/ Update the comment of --quic_version. Merge internal change: 106978852 https://codereview.chromium.org/1425823005/ Pass in connection ID and supported version to QuicFramer::BuildVersionNegotiationPacket, instead of passing in a QuicPacketHeader and supported versions. Merge internal change: 106955386 https://codereview.chromium.org/1433703005/ Change bufferring data structure for QuicStreamSequencer. Protected by FLAGS_quic_use_stream_sequencer_buffer. Swith QuicStreamSequencer's underlying data structure from QuicFrameList to StreamSequencerBuffer. Merge internal change: 106947577 https://codereview.chromium.org/1433793002/ Add include to reflect what is already used. Merge internal change: 106946658 https://codereview.chromium.org/1433013003/ Add a data structure QuicMultipathTransmissionsMap which is not in use now. QuicMultipathTransmissionsMap manages packets which are transmitted across multiple paths. Also add a new struct QuicPathIdPacketNumber which comprises both QuicPathId and QuicPacketNumber. Merge internal change: 106938391 https://codereview.chromium.org/1431363002/ Earlier check for nullptr. Merge internal change: 106859834 https://codereview.chromium.org/1433783003/ Quic streams honor RST_STREAM + NO_ERROR on the write side. Override QuicDataStream CloseWriteSide method to honor QUIC_STREAM_NO_ERROR on QUIC_VERSION_29 or later versions: send rst stream when writing to a stream initiated by the peer is finished but incoming data hasn't been received completely. Merge internal change: 106853342 https://codereview.chromium.org/1413373013/ Add OnConnectionMigration method to QuicSentPacketManager. Add OnConnectionMigration interface to SendAlgorithmInterface and RttStats. No functional change expected. This change is preparing to reset cwnd and rtt measurement when the client migrates to a different network. Merge internal change: 106851267 https://codereview.chromium.org/1435553004/ Factoring a QuicCryptoServerStreamBase API out of QuicCryptoServerStream Merge internal change: 106845785 https://codereview.chromium.org/1413613016/ Deprecate --gfe2_reloadable_flag_quic_stop_checking_for_mismatch_ids Merge internal change: 106845547 https://codereview.chromium.org/1418963008/ No functional change. Minor change to reorder when the list of QuicAckListeners is swapped into the TransmissionInfo in order to avoid an extra allocation. Merge internal change: 106814823 https://codereview.chromium.org/1428303003/ Committed: https://crrev.com/c86dbfa1eb69d5db6763a017411696da57b9090a Cr-Commit-Position: refs/heads/master@{#359370}

Patch Set 1 #

Patch Set 2 : Final set of merged changes #

Patch Set 3 : #

Patch Set 4 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1495 lines, -578 lines) Patch
M net/net.gypi View 2 chunks +3 lines, -0 lines 0 comments Download
M net/quic/congestion_control/pacing_sender.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/congestion_control/rtt_stats.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/congestion_control/send_algorithm_interface.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/congestion_control/tcp_cubic_bytes_sender.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/congestion_control/tcp_cubic_sender.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/crypto/crypto_handshake.h View 2 chunks +5 lines, -0 lines 0 comments Download
M net/quic/crypto/crypto_handshake.cc View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/crypto/crypto_handshake_message.cc View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/crypto/crypto_protocol.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/crypto/crypto_utils.h View 1 chunk +12 lines, -0 lines 0 comments Download
M net/quic/crypto/crypto_utils.cc View 1 chunk +34 lines, -0 lines 0 comments Download
M net/quic/crypto/proof_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/crypto/proof_verifier.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/crypto/proof_verifier_chromium.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/crypto/proof_verifier_chromium.cc View 4 chunks +5 lines, -2 lines 0 comments Download
M net/quic/crypto/proof_verifier_chromium_test.cc View 6 chunks +6 lines, -6 lines 0 comments Download
M net/quic/crypto/quic_crypto_client_config.h View 8 chunks +9 lines, -0 lines 0 comments Download
M net/quic/crypto/quic_crypto_client_config.cc View 19 chunks +54 lines, -6 lines 0 comments Download
M net/quic/crypto/quic_crypto_client_config_test.cc View 5 chunks +14 lines, -11 lines 0 comments Download
M net/quic/crypto/quic_crypto_server_config.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/crypto/quic_crypto_server_config.cc View 5 chunks +39 lines, -21 lines 0 comments Download
M net/quic/quic_chromium_client_session_test.cc View 1 chunk +3 lines, -2 lines 0 comments Download
M net/quic/quic_connection.h View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_connection.cc View 6 chunks +19 lines, -5 lines 0 comments Download
M net/quic/quic_connection_logger.h View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_connection_logger.cc View 1 chunk +3 lines, -3 lines 0 comments Download
M net/quic/quic_connection_test.cc View 9 chunks +129 lines, -28 lines 0 comments Download
M net/quic/quic_crypto_client_stream.cc View 3 chunks +7 lines, -8 lines 0 comments Download
M net/quic/quic_crypto_client_stream_test.cc View 5 chunks +43 lines, -4 lines 0 comments Download
M net/quic/quic_crypto_server_stream.h View 1 2 3 3 chunks +50 lines, -39 lines 0 comments Download
M net/quic/quic_crypto_server_stream.cc View 6 chunks +37 lines, -12 lines 0 comments Download
M net/quic/quic_crypto_server_stream_test.cc View 6 chunks +28 lines, -8 lines 0 comments Download
M net/quic/quic_flags.h View 2 chunks +2 lines, -2 lines 0 comments Download
M net/quic/quic_flags.cc View 2 chunks +8 lines, -4 lines 0 comments Download
M net/quic/quic_flow_controller.cc View 1 chunk +0 lines, -5 lines 0 comments Download
M net/quic/quic_framer.h View 1 chunk +4 lines, -3 lines 0 comments Download
M net/quic/quic_framer.cc View 2 chunks +8 lines, -7 lines 0 comments Download
M net/quic/quic_framer_test.cc View 74 chunks +167 lines, -182 lines 0 comments Download
M net/quic/quic_headers_stream_test.cc View 1 chunk +1 line, -0 lines 0 comments Download
A net/quic/quic_multipath_transmissions_map.h View 1 2 3 1 chunk +65 lines, -0 lines 0 comments Download
A net/quic/quic_multipath_transmissions_map.cc View 1 2 1 chunk +70 lines, -0 lines 0 comments Download
A net/quic/quic_multipath_transmissions_map_test.cc View 1 2 1 chunk +114 lines, -0 lines 0 comments Download
M net/quic/quic_packet_creator.cc View 1 chunk +2 lines, -7 lines 0 comments Download
M net/quic/quic_protocol.h View 2 chunks +5 lines, -0 lines 0 comments Download
M net/quic/quic_sent_packet_manager.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/quic_sent_packet_manager.cc View 1 chunk +15 lines, -0 lines 0 comments Download
M net/quic/quic_spdy_stream.h View 1 chunk +5 lines, -0 lines 0 comments Download
M net/quic/quic_spdy_stream.cc View 2 chunks +27 lines, -0 lines 0 comments Download
M net/quic/quic_stream_factory.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_stream_sequencer.cc View 2 chunks +11 lines, -2 lines 0 comments Download
M net/quic/quic_stream_sequencer_test.cc View 27 chunks +96 lines, -54 lines 0 comments Download
M net/quic/quic_unacked_packet_map.cc View 2 chunks +10 lines, -7 lines 0 comments Download
M net/quic/reliable_quic_stream.h View 2 chunks +7 lines, -1 line 0 comments Download
M net/quic/reliable_quic_stream.cc View 2 chunks +0 lines, -6 lines 0 comments Download
M net/quic/test_tools/crypto_test_utils.h View 4 chunks +27 lines, -2 lines 0 comments Download
M net/quic/test_tools/crypto_test_utils.cc View 6 chunks +57 lines, -49 lines 0 comments Download
M net/quic/test_tools/crypto_test_utils_chromium.cc View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/test_tools/quic_test_utils.h View 2 chunks +2 lines, -1 line 0 comments Download
M net/tools/quic/end_to_end_test.cc View 6 chunks +77 lines, -27 lines 0 comments Download
M net/tools/quic/quic_client_bin.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/tools/quic/quic_client_session_test.cc View 1 chunk +3 lines, -1 line 0 comments Download
M net/tools/quic/quic_dispatcher_test.cc View 2 chunks +5 lines, -3 lines 0 comments Download
M net/tools/quic/quic_server_session.h View 3 chunks +8 lines, -6 lines 0 comments Download
M net/tools/quic/quic_server_session.cc View 3 chunks +3 lines, -3 lines 0 comments Download
M net/tools/quic/quic_server_session_test.cc View 1 chunk +3 lines, -3 lines 0 comments Download
M net/tools/quic/quic_simple_client_bin.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/tools/quic/quic_spdy_server_stream_test.cc View 11 chunks +89 lines, -26 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_client.h View 1 chunk +4 lines, -0 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_client.cc View 3 chunks +11 lines, -0 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_server.h View 2 chunks +16 lines, -1 line 0 comments Download
M net/tools/quic/test_tools/quic_test_server.cc View 6 chunks +46 lines, -15 lines 0 comments Download

Messages

Total messages: 18 (10 generated)
Ryan Hamilton
Oh, here it is! LGTM
5 years, 1 month ago (2015-11-11 22:14:54 UTC) #4
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1437023002/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1437023002/20001
5 years, 1 month ago (2015-11-12 17:31:06 UTC) #6
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/117960)
5 years, 1 month ago (2015-11-12 17:40:45 UTC) #8
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1437023002/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1437023002/40001
5 years, 1 month ago (2015-11-12 17:46:18 UTC) #11
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_compile_dbg_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_compile_dbg_ng/builds/12981)
5 years, 1 month ago (2015-11-12 18:01:29 UTC) #13
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1437023002/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1437023002/60001
5 years, 1 month ago (2015-11-12 18:55:50 UTC) #16
commit-bot: I haz the power
Committed patchset #4 (id:60001)
5 years, 1 month ago (2015-11-12 20:16:33 UTC) #17
commit-bot: I haz the power
5 years, 1 month ago (2015-11-12 20:17:41 UTC) #18
Message was sent while issue was closed.
Patchset 4 (id:??) landed as
https://crrev.com/c86dbfa1eb69d5db6763a017411696da57b9090a
Cr-Commit-Position: refs/heads/master@{#359370}

Powered by Google App Engine
This is Rietveld 408576698