Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

quiche: make flow control configurable #15865

Merged
merged 28 commits into from
May 3, 2021

Conversation

danzh2010
Copy link
Contributor

Commit Message: Add initial stream and connection level flow control windows to envoy.config.core.v3.QuicProtocolOptions which is be used in QUIC listener config and Http3 upstream cluster config.

Risk Level: low
Testing: re-enable more Http3 downstream protocol test.

Part of #2557 #12930 #14829

@repokitteh-read-only
Copy link

CC @envoyproxy/api-shepherds: Your approval is needed for changes made to api/envoy/.
envoyproxy/api-shepherds assignee is @markdroth
CC @envoyproxy/api-watchers: FYI only for changes made to api/envoy/.

🐱

Caused by: #15865 was opened by danzh2010.

see: more, trace.

Signed-off-by: Dan Zhang <[email protected]>
Signed-off-by: Dan Zhang <[email protected]>
Signed-off-by: Dan Zhang <[email protected]>
@danzh2010
Copy link
Contributor Author

/retest

@repokitteh-read-only
Copy link

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #15865 (comment) was created by @danzh2010.

see: more, trace.

Signed-off-by: Dan Zhang <[email protected]>
Signed-off-by: Dan Zhang <[email protected]>
@danzh2010
Copy link
Contributor Author

/retest

@repokitteh-read-only
Copy link

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #15865 (comment) was created by @danzh2010.

see: more, trace.

@danzh2010
Copy link
Contributor Author

/assign @antoniovicente @alyssawilk

@repokitteh-read-only
Copy link

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #15865 (comment) was created by @danzh2010.

see: more, trace.

@danzh2010
Copy link
Contributor Author

/retest

@repokitteh-read-only
Copy link

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #15865 (comment) was created by @danzh2010.

see: more, trace.

@alyssawilk
Copy link
Contributor

@antoniovicente you still doing passes here or should I take this back now I've returned?

antoniovicente
antoniovicente previously approved these changes Apr 27, 2021
Copy link
Contributor

@antoniovicente antoniovicente left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alyssawilk

I think this looks good except for a few nits. Off to you.

test/common/quic/active_quic_listener_test.cc Outdated Show resolved Hide resolved
@@ -116,8 +116,9 @@ class QuicHttpIntegrationTest : public HttpIntegrationTest, public QuicMultiVers
persistent_info.quic_config_, supported_versions_, std::move(connection),
persistent_info.server_id_, persistent_info.crypto_config_.get(), &push_promise_index_,
*dispatcher_,
/*send_buffer_limit=*/2 *
Http3::Utility::OptionsLimits::DEFAULT_INITIAL_STREAM_WINDOW_SIZE);
// Use smaller window then the configured one to have test coverage of client codec buffer
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change "configured" to "default"

Copy link
Contributor

@alyssawilk alyssawilk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! Thanks for first pass Antonio - I literally had to delete 2 comments when I saw you'd asked the same questions already :-P

@@ -107,6 +107,7 @@ void EnvoyQuicClientStream::encodeTrailers(const Http::RequestTrailerMap& traile
void EnvoyQuicClientStream::encodeMetadata(const Http::MetadataMapVector& /*metadata_map_vector*/) {
// Metadata Frame is not supported in QUIC.
// TODO(danzh): add stats for metadata not supported error.
ENVOY_BUG(false, "METADATA is not supported in Http3.");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think HTTP/1.1 just swallows it with a stat increase. I'd mildly prefer that to crashing in debug mode.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay, I downgrade it to debug log and incremented the stats.

->config()
->GetInitialSessionFlowControlWindowToSend());
// IETF Quic supports low flow control limit. But Google Quic only supports flow control window no
// smaller than 16kB.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we have a test for setting below 16k making sure that gQUIC ends up 16k? Basically if "upstream" ever changes the default I'd like to make sure we catch it.

@@ -315,6 +315,11 @@ class ConfigHelper {
const envoy::extensions::filters::network::http_connection_manager::v3::LocalReplyConfig&
config);

// Adjust the upstream route with larger timeout if running tsan. This is the duration between
// whole request being processed and whole response received.
static void adjustUpstreamTimeoutForTsan(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you file a tracking bug for this one? I'm concerned about QUIC being slower, both on tsan and not and I'd like us to look into it at some point.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

alyssawilk
alyssawilk previously approved these changes Apr 28, 2021
Copy link
Contributor

@alyssawilk alyssawilk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo any remaining comments from Antonio :-)

@alyssawilk
Copy link
Contributor

(oh, and making sure CI is happy)

@danzh2010
Copy link
Contributor Author

Windows CI fails with irrelevant test, filed #16214

@danzh2010
Copy link
Contributor Author

/retest

@repokitteh-read-only
Copy link

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #15865 (comment) was created by @danzh2010.

see: more, trace.

@danzh2010
Copy link
Contributor Author

/retest

@repokitteh-read-only
Copy link

Retrying Azure Pipelines:
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #15865 (comment) was created by @danzh2010.

see: more, trace.

antoniovicente
antoniovicente previously approved these changes Apr 28, 2021
Copy link
Contributor

@antoniovicente antoniovicente left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Thanks Dan.

@alyssawilk
Copy link
Contributor

Argh, looks like this conflicts with the headers PR. Can you do a main merge, and we'll need another stamp from @envoyproxy/api-shepherds but otherwise this is good to go!

@danzh2010 danzh2010 dismissed stale reviews from antoniovicente and alyssawilk via ef1f953 April 29, 2021 18:51
Signed-off-by: Dan Zhang <[email protected]>
Copy link
Member

@htuch htuch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm api

Signed-off-by: Dan Zhang <[email protected]>
@alyssawilk alyssawilk merged commit fe62d97 into envoyproxy:main May 3, 2021
gokulnair pushed a commit to gokulnair/envoy that referenced this pull request May 5, 2021
Commit Message: Add initial stream and connection level flow control windows to envoy.config.core.v3.QuicProtocolOptions which is be used in QUIC listener config and Http3 upstream cluster config.

Risk Level: low
Testing: re-enable more Http3 downstream protocol test.

Part of envoyproxy#2557 envoyproxy#12930 envoyproxy#14829

Signed-off-by: Dan Zhang <[email protected]>
Co-authored-by: Dan Zhang <[email protected]>
Signed-off-by: Gokul Nair <[email protected]>
gokulnair pushed a commit to gokulnair/envoy that referenced this pull request May 6, 2021
Commit Message: Add initial stream and connection level flow control windows to envoy.config.core.v3.QuicProtocolOptions which is be used in QUIC listener config and Http3 upstream cluster config.

Risk Level: low
Testing: re-enable more Http3 downstream protocol test.

Part of envoyproxy#2557 envoyproxy#12930 envoyproxy#14829

Signed-off-by: Dan Zhang <[email protected]>
Co-authored-by: Dan Zhang <[email protected]>
Signed-off-by: Gokul Nair <[email protected]>
gokulnair pushed a commit to gokulnair/envoy that referenced this pull request May 6, 2021
Commit Message: Add initial stream and connection level flow control windows to envoy.config.core.v3.QuicProtocolOptions which is be used in QUIC listener config and Http3 upstream cluster config.

Risk Level: low
Testing: re-enable more Http3 downstream protocol test.

Part of envoyproxy#2557 envoyproxy#12930 envoyproxy#14829

Signed-off-by: Dan Zhang <[email protected]>
Co-authored-by: Dan Zhang <[email protected]>
Signed-off-by: Gokul Nair <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants