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

Issue 2916033003: Landing Recent QUIC changes until 03:18 AM, May 28, UTC (Closed)

Created:
3 years, 6 months ago by Jana
Modified:
3 years, 6 months ago
Reviewers:
Ryan Hamilton
CC:
chromium-reviews, cbentzel+watch_chromium.org, net-reviews_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Landing Recent QUIC changes until 03:18 AM, May 28, UTC Flags updated. https://codereview.chromium.org/2920713002/ Default to BBR congestion control for QUIC. Protected by FLAGS_quic_reloadable_flag_quic_default_to_bbr. Merge internal change: 157287886 https://codereview.chromium.org/2917823004/ Remove is_deletable_ from QuicStream. Add QuicStream::IsWaitingForAcks which returns true if stream is waiting for acks. Merge internal change: 157256038 https://codereview.chromium.org/2916233002/ Remove QuicPacketNumberQueue::Complement() because it is no longer used and will add work to the process of changing over to a deque from an IntervalSet. n/a (Test only) Merge internal change: 157226948 https://codereview.chromium.org/2919733002/ Groundwork for cancelling quartc streams after a deadline is exceeded. In the quic/quartc wrapper: - Adds a method to QuartcSessionInterface to cancel a stream by number - Fixes stream error code reporting - Fixes spurious reset frames sent with QUIC_RST_STREAM_ACKNOWLEDGEMENT This is done by number on QuartcSessionInterface instead of by a method on a stream (or by passing the session a pointer to the stream) because the quartc session owns quartc streams and may delete them before the deadline. Under the covers, the CancelStream method resets a stream with error code 6 (QUIC_STREAM_CANCELLED). QuartcStream currently only reports a non-zero error code if there's a connection error. This cl rectifies that by exposing both stream_error() and connection_error() and letting callers examine whichever one they want. Since Quartc only sends on outgoing streams, it never sent a fin on incoming streams. This led to it not closing incoming streams cleanly. Whenever it closed an incoming stream, it sent a reset frame with the error code QUIC_RST_STREAM_ACKNOWLEDGEMENT, in order to communicate a final byte offset. This isn't necessary, since we never send anything (the final offset is always 0). Instead, we now close the reverse direction (sending on inbound streams, receiving on outbound streams) immediately on stream creation, by simulating a fin. This prevents spurious reset frames that look like errors. In quartc: - Adds CancelStream to the thread-safe wrapper - Adds an optional parameter to SendOutgoingFrame to set a deadline - Fixes incorrectly ordered boolean parameters in the quartc_connection_test SendOutgoingFrame will now schedule a task to cancel a stream if it is given a non-infinite deadline. The new deadline parameter defaults to infinite to preserve current behavior. We'll likely only use this for video and audio streams, not for data and control streams. n/a (only linked by quartc) Merge internal change: 157132817 https://codereview.chromium.org/2913413002/ n/a (test-only change) Merge internal change: 156881271 https://codereview.chromium.org/2913153003/ Inline methods of QuicBandwidth class. No functional change; not flag-protected. Since "B" in "BBR" stands for bandwidth, we've been using QuicBandwidth class much more actively on the hot paths. The overhead from calling QuicBandwidth methods started to show up on profiles, so I've maked a CL to make them all inlined, as it was done with QuicTime::Delta. This removes the non-negativity check from the QuicBandwidth constructor where it would previously result in a QUIC_BUG, since it's now constexpr. Merge internal change: 156806926 https://codereview.chromium.org/2921603002/ This QUIC change includes: 1) Change QuicStream's life time. QuicStream is not deletable when it has unacked data (including FIN). 2) Closed but not deletable QuicStream is moved to zombie_streams in QuicSession. 3) Move ack listener to QuicStream. 4) QuicHeaderStream keeps track of unacked headers which have not null ack listener. 5) Both QuicStream and QuicSession implement StreamNotifier which will be notified when stream frame is acked or retransmitted. Protected by FLAGS_quic_reloadable_flag_quic_use_stream_notifier. Merge internal change: 156886444 https://codereview.chromium.org/2915873003/ Move tests from portable_quic to the new quic/quartc wrapper location. n/a (test only, tests code that is only linked by Quartc) Merge internal change: 156794055 https://codereview.chromium.org/2915993002/ Use BBR for Quartc congestion control. We think BBR will do what we want in Quartc: generally avoid queuing packets in the network and keep RTT low. WebRTC does something similar with its own bandwidth estimator. We're starting work to optimize media flow, and we don't want to waste effort optimizing on top of the wrong congestion control algorithm. n/a (only linked by quartc) Merge internal change: 156746324 https://codereview.chromium.org/2912393003/ BUG= Review-Url: https://codereview.chromium.org/2916033003 Cr-Commit-Position: refs/heads/master@{#476570} Committed: https://chromium.googlesource.com/chromium/src/+/3c1d5ca822a369a0ef65d7044100f73903fdbdc0

Patch Set 1 #

Patch Set 2 : Added Quartc test files that were missed earlier. #

Total comments: 1

Patch Set 3 : Added stream_notifier_interface.h which was missed earlier. #

Patch Set 4 : Maybe missed a QUIC_EXPORT_PRIVATE #

Patch Set 5 : A few more EXPORTs. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1806 lines, -187 lines) Patch
M net/BUILD.gn View 1 2 3 1 chunk +2 lines, -0 lines 0 comments Download
M net/quic/core/frames/quic_ack_frame.h View 1 chunk +0 lines, -5 lines 0 comments Download
M net/quic/core/frames/quic_ack_frame.cc View 1 chunk +0 lines, -7 lines 0 comments Download
M net/quic/core/frames/quic_frames_test.cc View 1 chunk +0 lines, -13 lines 0 comments Download
M net/quic/core/quic_bandwidth.h View 2 chunks +47 lines, -17 lines 0 comments Download
M net/quic/core/quic_bandwidth.cc View 1 chunk +0 lines, -100 lines 0 comments Download
M net/quic/core/quic_connection.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/core/quic_connection.cc View 2 chunks +11 lines, -1 line 0 comments Download
M net/quic/core/quic_flags_list.h View 3 chunks +9 lines, -2 lines 0 comments Download
M net/quic/core/quic_framer_test.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M net/quic/core/quic_headers_stream.h View 2 chunks +40 lines, -0 lines 0 comments Download
M net/quic/core/quic_headers_stream.cc View 2 chunks +105 lines, -0 lines 0 comments Download
M net/quic/core/quic_headers_stream_test.cc View 2 chunks +60 lines, -1 line 0 comments Download
M net/quic/core/quic_sent_packet_manager.h View 1 chunk +2 lines, -0 lines 0 comments Download
M net/quic/core/quic_sent_packet_manager.cc View 4 chunks +11 lines, -0 lines 0 comments Download
M net/quic/core/quic_session.h View 10 chunks +31 lines, -1 line 0 comments Download
M net/quic/core/quic_session.cc View 5 chunks +60 lines, -2 lines 0 comments Download
M net/quic/core/quic_session_test.cc View 2 chunks +20 lines, -0 lines 0 comments Download
M net/quic/core/quic_spdy_session.cc View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/core/quic_spdy_stream_test.cc View 3 chunks +64 lines, -0 lines 0 comments Download
M net/quic/core/quic_stream.h View 8 chunks +27 lines, -2 lines 0 comments Download
M net/quic/core/quic_stream.cc View 4 chunks +55 lines, -2 lines 0 comments Download
M net/quic/core/quic_stream_test.cc View 1 chunk +118 lines, -0 lines 0 comments Download
M net/quic/core/quic_unacked_packet_map.h View 4 chunks +11 lines, -0 lines 0 comments Download
M net/quic/core/quic_unacked_packet_map.cc View 3 chunks +28 lines, -1 line 0 comments Download
A net/quic/core/stream_notifier_interface.h View 1 2 3 1 chunk +29 lines, -0 lines 0 comments Download
M net/quic/quartc/quartc_factory.h View 1 1 chunk +3 lines, -3 lines 0 comments Download
M net/quic/quartc/quartc_factory.cc View 1 chunk +7 lines, -0 lines 0 comments Download
M net/quic/quartc/quartc_factory_interface.h View 1 2 3 4 2 chunks +11 lines, -1 line 0 comments Download
M net/quic/quartc/quartc_packet_writer.h View 1 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quartc/quartc_session.h View 1 4 chunks +14 lines, -4 lines 0 comments Download
M net/quic/quartc/quartc_session.cc View 3 chunks +45 lines, -14 lines 0 comments Download
M net/quic/quartc/quartc_session_interface.h View 1 2 3 4 3 chunks +10 lines, -1 line 0 comments Download
A net/quic/quartc/quartc_session_test.cc View 1 1 chunk +641 lines, -0 lines 0 comments Download
M net/quic/quartc/quartc_stream.h View 1 2 chunks +6 lines, -1 line 0 comments Download
M net/quic/quartc/quartc_stream.cc View 2 chunks +9 lines, -1 line 0 comments Download
M net/quic/quartc/quartc_stream_interface.h View 1 2 3 4 3 chunks +6 lines, -2 lines 0 comments Download
A net/quic/quartc/quartc_stream_test.cc View 1 1 chunk +276 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_session_peer.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_session_peer.cc View 1 1 chunk +12 lines, -0 lines 0 comments Download
M net/quic/test_tools/simulator/quic_endpoint_test.cc View 1 chunk +0 lines, -2 lines 0 comments Download
M net/tools/quic/end_to_end_test.cc View 2 chunks +24 lines, -1 line 0 comments Download

Messages

Total messages: 29 (21 generated)
Jana
3 years, 6 months ago (2017-06-01 07:14:09 UTC) #6
Ryan Hamilton
lgtm https://codereview.chromium.org/2916033003/diff/20001/net/quic/quartc/quartc_stream.h File net/quic/quartc/quartc_stream.h (right): https://codereview.chromium.org/2916033003/diff/20001/net/quic/quartc/quartc_stream.h#newcode15 net/quic/quartc/quartc_stream.h:15: class QUIC_EXPORT_PRIVATE QuartcStream : public QuicStream, Please make ...
3 years, 6 months ago (2017-06-02 00:19:18 UTC) #14
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2916033003/40001
3 years, 6 months ago (2017-06-02 00:37:12 UTC) #16
commit-bot: I haz the power
Try jobs failed on following builders: ios-simulator on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/builds/229115)
3 years, 6 months ago (2017-06-02 01:28:09 UTC) #18
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2916033003/60001
3 years, 6 months ago (2017-06-02 01:33:28 UTC) #21
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_compile_dbg_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_compile_dbg_ng/builds/425430)
3 years, 6 months ago (2017-06-02 02:58:24 UTC) #23
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2916033003/80001
3 years, 6 months ago (2017-06-02 03:05:16 UTC) #26
commit-bot: I haz the power
3 years, 6 months ago (2017-06-02 04:52:36 UTC) #29
Message was sent while issue was closed.
Committed patchset #5 (id:80001) as
https://chromium.googlesource.com/chromium/src/+/3c1d5ca822a369a0ef65d7044100...

Powered by Google App Engine
This is Rietveld 408576698