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

Issue 288313003: Land Recent QUIC Changes. (Closed)

Created:
6 years, 7 months ago by ramant (doing other things)
Modified:
6 years, 7 months ago
CC:
chromium-reviews, cbentzel+watch_chromium.org, Jana, wtc, jar (doing other things), Robbie Shade, Ian Swett
Base URL:
https://chromium.googlesource.com/chromium/src
Visibility:
Public.

Description

Land Recent QUIC Changes. Stub for BBRv2, based on TCP congestion feedback frames. Merge internal change: 67154078 https://codereview.chromium.org/283333008/ Update QuicSentPacketManager to sample a new recent min rtt within the first 2 rtt samples after quiescence. Merge internal change: 67149500 https://codereview.chromium.org/286143007/ Change the test QUIC stream id to be the first non reserved stream ID (and also to use the right typedef). Merge internal change: 67146383 https://codereview.chromium.org/292453003/ Adds dynamic FEC on/off switch in packet creator. Tightens use of max_packets_per_fec_group through use of a setter method across the QUIC code. FEC operations are now decided based on should_fec_protect_, which is expected to be a dynamic on/off control in the packet creator, instead of max_packets_per_fec_group. Adds dynamic FEC on/off switch in packet_creator. Merge internal change: 67144415 https://codereview.chromium.org/286153003/ Minor cleanup to simplify QuicSentPacketManager's OnPacketSent and always reset the retransmission alarm anytime a new pending packet is sent. Always setting the retransmission alarm is only a simplification of the approach, and not intended to fix any issues. Merge internal change: 67143274 https://codereview.chromium.org/288333002/ Don't set QUIC's write alarm if we are connection flow control blocked. Added QUIC_VERSION_19 to kSupportedQuicVersions. Merge internal change: 67141668 https://codereview.chromium.org/285193006/ Minor cleanup of QuicUnackedPacketMap to simplify the implementation of HasPendingPackets and move a test only method, GetNumRetransmittablePackets, into QuicSentPacketManagerPeer. Merge internal change: 67123054 https://codereview.chromium.org/282323003/ Fix a QUIC bug where a crypto packet was never removed from the UnackedPacketMap if it was not acked and spuriously retransmitted at least twice. Merge internal change: 67050631 https://codereview.chromium.org/284273002/ Refactor: move flow controller from QuicConnection to QuicSession. No behavior change intended. Merge internal change: 67036889 https://codereview.chromium.org/286213002/ Fix a QUIC bug where a packet could remain in the UnackedPacketMap indefinitely. This can cause a memory leak when tracking entropy. Merge internal change: 67028206 https://codereview.chromium.org/285233006/ Delete dead code used only in tests. Merge internal change: 66938996 https://codereview.chromium.org/288303002/ Add handling + parsing for ALTSVC frame. Also change frame type number and add an extra version check for BLOCKED frame. SPDY4/HTTP2 only. Merge internal change: 66925490 https://codereview.chromium.org/286173002/ QUIC loadtest fixes: - Wait for the QUIC handshake to complete before saying that the QuicTestClient is connected. - Force connect at client creation time when talking HTTP/HTTPS/SPDY for consistency. Merge internal change: 66855236 https://codereview.chromium.org/282153004/ QUIC now respects configured SPDY stream limits. Merge internal change: 66831620 https://codereview.chromium.org/286113004/ R=rch@chromium.org Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=271211

Patch Set 1 #

Patch Set 2 : implemented rch's comments #

Total comments: 20
Unified diffs Side-by-side diffs Delta from patch set Stats (+674 lines, -463 lines) Patch
M net/net.gypi View 2 chunks +0 lines, -2 lines 0 comments Download
D net/quic/congestion_control/quic_max_sized_map.h View 1 chunk +0 lines, -77 lines 0 comments Download
D net/quic/congestion_control/quic_max_sized_map_test.cc View 1 chunk +0 lines, -66 lines 0 comments Download
M net/quic/congestion_control/receive_algorithm_interface.cc View 1 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/congestion_control/send_algorithm_interface.h View 1 chunk +5 lines, -4 lines 0 comments Download
M net/quic/congestion_control/send_algorithm_interface.cc View 1 chunk +3 lines, -0 lines 2 comments Download
M net/quic/congestion_control/tcp_cubic_sender.h View 1 chunk +0 lines, -3 lines 0 comments Download
M net/quic/quic_client_session.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/quic_client_session.cc View 1 chunk +4 lines, -1 line 0 comments Download
M net/quic/quic_client_session_base.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/quic_client_session_base.cc View 1 chunk +7 lines, -3 lines 0 comments Download
M net/quic/quic_client_session_test.cc View 2 chunks +3 lines, -1 line 2 comments Download
M net/quic/quic_connection.h View 6 chunks +7 lines, -19 lines 2 comments Download
M net/quic/quic_connection.cc View 7 chunks +4 lines, -30 lines 0 comments Download
M net/quic/quic_connection_logger.cc View 1 chunk +4 lines, -0 lines 0 comments Download
M net/quic/quic_connection_test.cc View 12 chunks +21 lines, -29 lines 0 comments Download
M net/quic/quic_crypto_client_stream.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_crypto_server_stream.h View 1 chunk +4 lines, -0 lines 0 comments Download
M net/quic/quic_crypto_server_stream.cc View 2 chunks +5 lines, -1 line 0 comments Download
M net/quic/quic_data_stream_test.cc View 4 chunks +7 lines, -5 lines 0 comments Download
M net/quic/quic_headers_stream_test.cc View 1 chunk +6 lines, -0 lines 0 comments Download
M net/quic/quic_http_stream_test.cc View 2 chunks +4 lines, -2 lines 0 comments Download
M net/quic/quic_packet_creator.h View 4 chunks +31 lines, -8 lines 6 comments Download
M net/quic/quic_packet_creator.cc View 11 chunks +72 lines, -29 lines 0 comments Download
M net/quic/quic_packet_creator_test.cc View 6 chunks +84 lines, -6 lines 0 comments Download
M net/quic/quic_packet_generator_test.cc View 3 chunks +3 lines, -3 lines 0 comments Download
M net/quic/quic_protocol.h View 3 chunks +5 lines, -1 line 0 comments Download
M net/quic/quic_protocol.cc View 1 1 chunk +4 lines, -0 lines 0 comments Download
M net/quic/quic_sent_packet_manager.cc View 4 chunks +28 lines, -20 lines 4 comments Download
M net/quic/quic_sent_packet_manager_test.cc View 3 chunks +74 lines, -0 lines 0 comments Download
M net/quic/quic_session.h View 5 chunks +16 lines, -2 lines 0 comments Download
M net/quic/quic_session.cc View 11 chunks +54 lines, -14 lines 2 comments Download
M net/quic/quic_session_test.cc View 12 chunks +68 lines, -13 lines 2 comments Download
M net/quic/quic_stream_factory.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M net/quic/quic_unacked_packet_map.h View 2 chunks +4 lines, -5 lines 0 comments Download
M net/quic/quic_unacked_packet_map.cc View 3 chunks +4 lines, -21 lines 0 comments Download
M net/quic/quic_write_blocked_list.h View 2 chunks +9 lines, -4 lines 0 comments Download
M net/quic/quic_write_blocked_list_test.cc View 6 chunks +14 lines, -10 lines 0 comments Download
M net/quic/reliable_quic_stream.cc View 1 chunk +3 lines, -3 lines 0 comments Download
M net/quic/reliable_quic_stream_test.cc View 14 chunks +17 lines, -13 lines 0 comments Download
M net/quic/test_tools/quic_packet_creator_peer.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_packet_creator_peer.cc View 1 chunk +8 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_sent_packet_manager_peer.cc View 1 chunk +9 lines, -1 line 0 comments Download
M net/quic/test_tools/quic_session_peer.h View 1 chunk +2 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_session_peer.cc View 1 chunk +6 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_test_utils.h View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/test_tools/quic_test_utils.cc View 7 chunks +11 lines, -15 lines 0 comments Download
M net/tools/quic/end_to_end_test.cc View 3 chunks +6 lines, -1 line 0 comments Download
M net/tools/quic/quic_client.cc View 4 chunks +5 lines, -4 lines 0 comments Download
M net/tools/quic/quic_client_session.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/tools/quic/quic_client_session.cc View 1 chunk +4 lines, -1 line 0 comments Download
M net/tools/quic/quic_client_session_test.cc View 2 chunks +2 lines, -0 lines 0 comments Download
M net/tools/quic/quic_dispatcher.h View 1 chunk +1 line, -2 lines 0 comments Download
M net/tools/quic/quic_dispatcher.cc View 3 chunks +8 lines, -11 lines 0 comments Download
M net/tools/quic/quic_dispatcher_test.cc View 1 chunk +4 lines, -4 lines 0 comments Download
M net/tools/quic/quic_server_session.h View 1 chunk +1 line, -0 lines 0 comments Download
M net/tools/quic/quic_server_session.cc View 1 chunk +5 lines, -5 lines 0 comments Download
M net/tools/quic/quic_server_session_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/tools/quic/quic_spdy_client_stream_test.cc View 1 chunk +1 line, -0 lines 0 comments Download
M net/tools/quic/test_tools/quic_dispatcher_peer.h View 1 chunk +1 line, -2 lines 0 comments Download
M net/tools/quic/test_tools/quic_dispatcher_peer.cc View 1 chunk +2 lines, -4 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_utils.cc View 6 chunks +10 lines, -13 lines 0 comments Download

Messages

Total messages: 11 (0 generated)
ramant (doing other things)
6 years, 7 months ago (2014-05-16 16:42:21 UTC) #1
Ryan Hamilton
lgtm
6 years, 7 months ago (2014-05-16 18:13:18 UTC) #2
ramant (doing other things)
The CQ bit was checked by rtenneti@chromium.org
6 years, 7 months ago (2014-05-16 18:23:13 UTC) #3
ramant (doing other things)
The CQ bit was unchecked by rtenneti@chromium.org
6 years, 7 months ago (2014-05-16 18:23:34 UTC) #4
ramant (doing other things)
The CQ bit was checked by rtenneti@chromium.org
6 years, 7 months ago (2014-05-16 18:36:42 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/288313003/20001
6 years, 7 months ago (2014-05-16 18:37:54 UTC) #6
commit-bot: I haz the power
FYI, CQ is re-trying this CL (attempt #1). Please consider checking whether the failures are ...
6 years, 7 months ago (2014-05-17 05:19:07 UTC) #7
commit-bot: I haz the power
Change committed as 271211
6 years, 7 months ago (2014-05-17 15:51:35 UTC) #8
wtc
Patch set 2 LGTM. https://codereview.chromium.org/288313003/diff/20001/net/quic/congestion_control/send_algorithm_interface.cc File net/quic/congestion_control/send_algorithm_interface.cc (right): https://codereview.chromium.org/288313003/diff/20001/net/quic/congestion_control/send_algorithm_interface.cc#newcode33 net/quic/congestion_control/send_algorithm_interface.cc:33: LOG(DFATAL) << "BbrTcpSender is not ...
6 years, 7 months ago (2014-05-19 18:58:39 UTC) #9
Ian Swett
lgtm A minor suggestion on a better comment if you'd like to change it. https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_sent_packet_manager.cc ...
6 years, 7 months ago (2014-05-19 20:20:40 UTC) #10
ramant (doing other things)
6 years, 7 months ago (2014-05-20 03:22:31 UTC) #11
Message was sent while issue was closed.
Fixed the comments in the following CL:

https://codereview.chromium.org/292113002/

https://codereview.chromium.org/288313003/diff/20001/net/quic/congestion_cont...
File net/quic/congestion_control/send_algorithm_interface.cc (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/congestion_cont...
net/quic/congestion_control/send_algorithm_interface.cc:33: LOG(DFATAL) <<
"BbrTcpSender is not supported.";
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: Is the class named BbrTcpSender or TcpBbrSender?

It is called BbrTcpSender (internally).

Ian: Should we rename kTCPBBR to kBBRTCP or should we BbrTcpSender to
TcpBbrSender.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_client_ses...
File net/quic/quic_client_session_test.cc (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_client_ses...
net/quic/quic_client_session_test.cc:25: using
net::test::kInitialFlowControlWindowForTest;
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: since the entire file is inside the net::test namespace, this using
> statement isn't needed.

Done.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_connection.h
File net/quic/quic_connection.h (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_connection...
net/quic/quic_connection.h:97: // both has pending data to write, and is able to
write (e.g. based on flow
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: has both has => both has

Done.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_packet_cre...
File net/quic/quic_packet_creator.h (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_packet_cre...
net/quic/quic_packet_creator.h:61: // be enabled first
(set_max_packets_per_fec_group should be non-zero) for
On 2014/05/19 18:58:40, wtc wrote:
> 
> Typo: It seems that "set_max_packets_per_fec_group" should be
> "max_packets_per_fec_group".

Done.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_packet_cre...
net/quic/quic_packet_creator.h:129: // Caller must ensure that any open FEC
group are closed before calling this
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: the subject "any open FEC group" (singular) and the verb "are" (plural)
> don't match.

Done.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_packet_cre...
net/quic/quic_packet_creator.h:139: // still return NOT_IN_FEC_GROUP, and
fec_group_.get() may still be NULL.
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: "IsFecProtected() may still return NOT_IN_FEC_GROUP" doesn't match the
code
> because IsFecProtected() returns a bool. Did you mean "MaybeStartFec" instead
of
> "IsFecProtected"?

jri and I went through the code and updated the comment per jri.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_sent_packe...
File net/quic/quic_sent_packet_manager.cc (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_sent_packe...
net/quic/quic_sent_packet_manager.cc:177: // the high water mark to be raised if
necessary.
On 2014/05/19 20:20:41, Ian Swett wrote:
> On 2014/05/19 18:58:40, wtc wrote:
> > 
> > I'm wondering if this comment needs to be updated, now that the function has
> > been changed from IsSentAndNotPending to IsForRttOnly.
> 
> It could be updated.  A better comment might be "Remove any rtt only packets
> less than or equal to the largest observed, since they will not produce an RTT
> measurement."

Done.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_sent_packe...
net/quic/quic_sent_packet_manager.cc:177: // the high water mark to be raised if
necessary.
On 2014/05/19 18:58:40, wtc wrote:
> 
> I'm wondering if this comment needs to be updated, now that the function has
> been changed from IsSentAndNotPending to IsForRttOnly.

Updated the comment per Ian.

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_session.cc
File net/quic/quic_session.cc (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_session.cc...
net/quic/quic_session.cc:302:
write_blocked_streams_.HasWriteBlockedDataStreams())) {
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: I would simplify this expression with De Morgan's laws. Up to you.

rjshade: wdyt?

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_session_te...
File net/quic/quic_session_test.cc (right):

https://codereview.chromium.org/288313003/diff/20001/net/quic/quic_session_te...
net/quic/quic_session_test.cc:117: explicit TestSession(QuicConnection*
connection,
On 2014/05/19 18:58:40, wtc wrote:
> 
> Nit: this "explicit" keyword can be removed now.

Done.

Powered by Google App Engine
This is Rietveld 408576698