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

Issue 242593002: Land Recent QUIC Changes. (Closed)

Created:
6 years, 8 months ago by ramant (doing other things)
Modified:
6 years, 8 months ago
Reviewers:
Ryan Hamilton
CC:
chromium-reviews, cbentzel+watch_chromium.org, jar (doing other things), Robbie Shade
Visibility:
Public.

Description

Land Recent QUIC Changes. Disable QuicFlowController for QUIC versions < QUIC_VERSION_17 Chrome Beta was happily advertising a flow control receive window of length 0, under the assumption that because the version of QUIC being spoken didn't support flow control, a zero length window advertisement would have no adverse effects. On the server end, the refactoring in internal change: 64733866 resulted in the QUIC version not being checked when querying QuicFlowController::IsBlocked. IsBlocked would look at the client's advertised receive window, and conclude that no data could be sent. This would never change as the flow control accounting is protected behind version checks. Ultimately this means that once a stream was marked as write blocked, it would never resume writing: https://codereview.chromium.org/242453002/diff/1/net/quic/quic_session.cc?context=&column_width=80 (line# 286) resulting in a connection timeout. This CL explicitly disables the QuicFlowController when the negotiated QUIC version is < QUIC_VERSION_17. Merge internal change: 65137349 This internal change was LGTM'ed by rch. Wanted to port this change to disable flow control. https://codereview.chromium.org/242583002/ Downgrading rst stream codes which wouldn't be recognized by the peer. chromium: fixed chromium's unit tests to use AdjustErrorForVersion. Merge internal change: 64783797 https://codereview.chromium.org/242483002/ Added WriteResult::WriteResult method for internal use. Merge internal change: 64780998 https://codereview.chromium.org/242293003/ QUIC: When sending a RST stream for flow control accounting purposes, include a more descriptive error code. Prompted by alyssar's comment in internal change: 61236803 Chromium specific code: + deleted unused ConstructRstPacket method from QuicNetworkTransactionTest. + Changed ConstructRstPacket to use the new descriptive error code. Merge internal change: 64774941 https://codereview.chromium.org/242093003/ Pull out flow control functionality from ReliableQuicStream into a new class, QuicFlowController. Without this refactoring, all the accounting of bytes sent/buffered/consumed, comparisons of these with limits to decide if blocked or not, will be duplicated in ReliableQuicStream and QuicConnection. Putting all this in a new class means it's easier to have more comprehensive testing, simplifies ReliableQuicStream, and will make it much easier to add Connection level flow control (work in progress internal change: 63944402). Refactor of QUIC stream flow control. No behavior change, still protected behind FLAGS_enable_quic_stream_flow_control. This flag is currently disabled. Merge internal change: 64733866 https://codereview.chromium.org/242453002/ Plumbs through delta_largest_observed from QuicSentPackerManager::HandleAckForSentPacket, up to the QuicAckNotifier. Eventually these values get to the QuicFasterStatsGatherer which now performs a more accurate RT calculation. The important changes are in QuicSentPacketManager (pulling the delta out of ReceivedInfo), and in QuicFasterStatsGatherer (doing the new calculation of RT). The rest is plumbing and updating tests. Improve accuracy of QUIC FasterStats RT calculation by using the delta time included with delayed ACKs. Merge internal change: 64721749 https://codereview.chromium.org/241783002/ Fixed a bug in QuicPacketCreator when FEC was used for unsupported versions, and made packet_creator tests run across all supported versions of QUIC. Merge internal change: 64701677 https://codereview.chromium.org/241483004/ Fix to ensure hybrid slow start is reset when QUIC's retransmission timer fires. Merge internal change: 64698621 https://codereview.chromium.org/241563002/ R=rch@chromium.org Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=264889

Patch Set 1 #

Patch Set 2 : Build fix #

Patch Set 3 : Added NET_EXPORT_PRIVATE to AdjustErrorForVersion #

Patch Set 4 : Build fix. Use uint32 instead of int #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1078 lines, -443 lines) Patch
M net/net.gypi View 3 chunks +5 lines, -0 lines 0 comments Download
M net/quic/congestion_control/hybrid_slow_start.h View 2 chunks +17 lines, -11 lines 0 comments Download
M net/quic/congestion_control/hybrid_slow_start.cc View 1 2 3 4 chunks +46 lines, -51 lines 0 comments Download
M net/quic/congestion_control/hybrid_slow_start_test.cc View 3 chunks +9 lines, -13 lines 0 comments Download
M net/quic/congestion_control/tcp_cubic_sender.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/congestion_control/tcp_cubic_sender_test.cc View 3 chunks +14 lines, -0 lines 0 comments Download
M net/quic/quic_ack_notifier.h View 2 chunks +4 lines, -2 lines 0 comments Download
M net/quic/quic_ack_notifier.cc View 2 chunks +4 lines, -2 lines 0 comments Download
M net/quic/quic_ack_notifier_manager.h View 1 chunk +2 lines, -1 line 0 comments Download
M net/quic/quic_ack_notifier_manager.cc View 2 chunks +3 lines, -2 lines 0 comments Download
M net/quic/quic_ack_notifier_test.cc View 3 chunks +28 lines, -11 lines 0 comments Download
M net/quic/quic_connection.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M net/quic/quic_connection_test.cc View 6 chunks +6 lines, -6 lines 0 comments Download
M net/quic/quic_crypto_stream.h View 1 chunk +0 lines, -3 lines 0 comments Download
M net/quic/quic_crypto_stream.cc View 2 chunks +1 line, -4 lines 0 comments Download
M net/quic/quic_crypto_stream_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_data_stream.h View 1 chunk +0 lines, -3 lines 0 comments Download
M net/quic/quic_data_stream.cc View 1 chunk +0 lines, -4 lines 0 comments Download
M net/quic/quic_data_stream_test.cc View 11 chunks +41 lines, -34 lines 0 comments Download
A net/quic/quic_flow_controller.h View 1 chunk +113 lines, -0 lines 0 comments Download
A net/quic/quic_flow_controller.cc View 1 chunk +183 lines, -0 lines 0 comments Download
A net/quic/quic_flow_controller_test.cc View 1 chunk +101 lines, -0 lines 0 comments Download
M net/quic/quic_headers_stream.h View 1 chunk +0 lines, -3 lines 0 comments Download
M net/quic/quic_headers_stream.cc View 2 chunks +1 line, -4 lines 0 comments Download
M net/quic/quic_headers_stream_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_http_stream_test.cc View 1 chunk +2 lines, -1 line 0 comments Download
M net/quic/quic_network_transaction_unittest.cc View 1 chunk +0 lines, -7 lines 0 comments Download
M net/quic/quic_packet_creator.h View 1 chunk +8 lines, -0 lines 0 comments Download
M net/quic/quic_packet_creator.cc View 5 chunks +15 lines, -9 lines 0 comments Download
M net/quic/quic_packet_creator_test.cc View 26 chunks +165 lines, -40 lines 0 comments Download
M net/quic/quic_packet_generator.cc View 3 chunks +7 lines, -0 lines 0 comments Download
M net/quic/quic_protocol.h View 1 2 2 chunks +10 lines, -0 lines 0 comments Download
M net/quic/quic_protocol.cc View 2 chunks +20 lines, -0 lines 0 comments Download
M net/quic/quic_protocol_test.cc View 1 chunk +13 lines, -0 lines 0 comments Download
M net/quic/quic_sent_packet_manager.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/quic_sent_packet_manager.cc View 6 chunks +14 lines, -8 lines 0 comments Download
M net/quic/quic_session.cc View 3 chunks +7 lines, -4 lines 0 comments Download
M net/quic/quic_session_test.cc View 2 chunks +3 lines, -3 lines 0 comments Download
M net/quic/quic_stream_factory_test.cc View 1 chunk +3 lines, -1 line 0 comments Download
M net/quic/quic_stream_sequencer.cc View 3 chunks +4 lines, -0 lines 0 comments Download
M net/quic/quic_utils.cc View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/reliable_quic_stream.h View 6 chunks +8 lines, -22 lines 0 comments Download
M net/quic/reliable_quic_stream.cc View 9 chunks +40 lines, -105 lines 0 comments Download
M net/quic/reliable_quic_stream_test.cc View 1 15 chunks +62 lines, -23 lines 0 comments Download
A net/quic/test_tools/quic_flow_controller_peer.h View 1 chunk +42 lines, -0 lines 0 comments Download
A net/quic/test_tools/quic_flow_controller_peer.cc View 1 chunk +61 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_test_utils.h View 1 chunk +3 lines, -2 lines 0 comments Download
M net/quic/test_tools/reliable_quic_stream_peer.h View 1 chunk +0 lines, -11 lines 0 comments Download
M net/quic/test_tools/reliable_quic_stream_peer.cc View 1 chunk +0 lines, -43 lines 0 comments Download
M net/tools/quic/quic_server_session_test.cc View 3 chunks +3 lines, -3 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_utils.h View 1 chunk +3 lines, -2 lines 0 comments Download

Messages

Total messages: 11 (0 generated)
ramant (doing other things)
6 years, 8 months ago (2014-04-18 02:51:27 UTC) #1
Ryan Hamilton
lgtm
6 years, 8 months ago (2014-04-18 03:40:29 UTC) #2
Ryan Hamilton
We probably don't want to land this until we've made sure the flow control situation ...
6 years, 8 months ago (2014-04-18 03:47:35 UTC) #3
ramant (doing other things)
On 2014/04/18 03:47:35, Ryan Hamilton wrote: > We probably don't want to land this until ...
6 years, 8 months ago (2014-04-18 03:48:22 UTC) #4
ramant (doing other things)
The CQ bit was checked by rtenneti@chromium.org
6 years, 8 months ago (2014-04-18 21:50:15 UTC) #5
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/rtenneti@chromium.org/242593002/60001
6 years, 8 months ago (2014-04-18 21:50:29 UTC) #6
commit-bot: I haz the power
The CQ bit was unchecked by commit-bot@chromium.org
6 years, 8 months ago (2014-04-18 22:06:35 UTC) #7
commit-bot: I haz the power
Try jobs failed on following builders: tryserver.chromium on linux_chromium_gn_rel
6 years, 8 months ago (2014-04-18 22:06:35 UTC) #8
ramant (doing other things)
The CQ bit was checked by rtenneti@chromium.org
6 years, 8 months ago (2014-04-18 22:12:40 UTC) #9
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/rtenneti@chromium.org/242593002/60001
6 years, 8 months ago (2014-04-18 22:12:59 UTC) #10
commit-bot: I haz the power
6 years, 8 months ago (2014-04-18 23:44:40 UTC) #11
Message was sent while issue was closed.
Change committed as 264889

Powered by Google App Engine
This is Rietveld 408576698