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

Issue 308273004: Allow QUIC's BBR congestion control to be negotiated in the crypto (Closed)

Created:
6 years, 6 months ago by ramant (doing other things)
Modified:
6 years, 6 months ago
CC:
chromium-reviews, cbentzel+watch_chromium.org, wtc, Ian Swett
Visibility:
Public.

Description

Allow QUIC's BBR congestion control to be negotiated in the crypto handshake. Adding an implementation of QuicFixedTagVector to QuicConfig to enable multiple congestion control options per connection. Merge internal change: 68114869 R=rch@chromium.org

Patch Set 1 #

Total comments: 13
Unified diffs Side-by-side diffs Delta from patch set Stats (+203 lines, -46 lines) Patch
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 2 chunks +4 lines, -0 lines 0 comments Download
M net/quic/quic_config.h View 3 chunks +48 lines, -4 lines 7 comments Download
M net/quic/quic_config.cc View 11 chunks +120 lines, -32 lines 6 comments Download
M net/quic/quic_config_test.cc View 7 chunks +13 lines, -7 lines 0 comments Download
M net/quic/quic_crypto_client_stream_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_protocol.h View 1 chunk +3 lines, -0 lines 0 comments Download
M net/quic/quic_protocol.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M net/quic/quic_sent_packet_manager.cc View 1 chunk +7 lines, -1 line 0 comments Download
M net/quic/test_tools/mock_crypto_client_stream.cc View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 4 (0 generated)
ramant (doing other things)
6 years, 6 months ago (2014-06-02 04:08:50 UTC) #1
Ryan Hamilton
lgtm
6 years, 6 months ago (2014-06-02 15:32:48 UTC) #2
wtc
Patch set 1 LGTM. I have some questions and suggested changes for the QuicFixedTagVector class ...
6 years, 6 months ago (2014-06-03 02:00:53 UTC) #3
Ian Swett
6 years, 6 months ago (2014-06-03 13:31:29 UTC) #4
Message was sent while issue was closed.
lgtm

Good points Wan-Teh about the class being a bit confusing.  I think it makes
more sense in the context of the other config classes, but I'm sure it could be
improved further, particularly in terms of comments.

https://codereview.chromium.org/308273004/diff/1/net/quic/quic_config.cc
File net/quic/quic_config.cc (right):

https://codereview.chromium.org/308273004/diff/1/net/quic/quic_config.cc#newc...
net/quic/quic_config.cc:364: QuicTagVector QuicFixedTagVector::GetSendValues()
const {
On 2014/06/03 02:00:53, wtc wrote:
> 
> Another design is to make the getter method returns bool:
> 
>   bool QuicFixedTagVector::GetSendValues(QuicTagVector* out) const {
>     if (!has_send_values_) {
>       return false;
>     }
>     *out = send_values_;
>     return true;
>   }

I prefer get methods which have return values, but if we're going to change it,
we should make sure every config class follows the same pattern.

https://codereview.chromium.org/308273004/diff/1/net/quic/quic_config.cc#newc...
net/quic/quic_config.cc:365: LOG_IF(DFATAL, !has_send_values_) << "No send
values to get for tag:" << tag_;
On 2014/06/03 02:00:53, wtc wrote:
> 
> This check seems too strict. If presence_ == PRESENCE_OPTIONAL, it seems that
we
> should allow !has_send_values.

The contract is that you should never call GetSendValues without calling
HasSendValues first.  Again, that should be true for all of the fixed fields,
but isn't documented.

https://codereview.chromium.org/308273004/diff/1/net/quic/quic_config.cc#newc...
net/quic/quic_config.cc:412: has_receive_values_ = true;
On 2014/06/03 02:00:53, wtc wrote:
> 
> Nit: should we do receive_values_.clear() first?

We could, though we never process the same tag twice.

https://codereview.chromium.org/308273004/diff/1/net/quic/quic_config.h
File net/quic/quic_config.h (right):

https://codereview.chromium.org/308273004/diff/1/net/quic/quic_config.h#newco...
net/quic/quic_config.h:218: // Stores tag from CHLO or SHLO messages that are
not negotiated.
On 2014/06/03 02:00:53, wtc wrote:
> 
> 1. If I only read this class declaration, I have no idea how to use it. Below
I
> suggest some potential improvements.
> 
> 2. Nit: "tag" is confusing because the value of this tag is a vector of tags.
> It's not clear whether "tag" refers to the name or the value.
> 
> Also, this comment should point out that the config value is a tag vector, in
> addition to the fixed, non-negotiated aspect.

Agreed on documentation.  This class follows the pattern of classes in
QuicConfig in general.  I'm not sure if we want to document every one separately
or not?  In practice, they're pretty straightforward in context, but more
comments are fine by me.

Powered by Google App Engine
This is Rietveld 408576698