-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Add support for QUIC upstream #14829
Labels
area/quic
cronvoy-alpha
feature list for cronvoy alpha
enhancement
Feature requests. Not bugs or questions.
no stalebot
Disables stalebot from closing an issue
Comments
alyssawilk
added a commit
that referenced
this issue
Feb 9, 2021
Only adding explicit (hard-configured, or downstream-initiated) HTTP/3. Getting Auto for UDP/TCP is going to take substantially more work. HTTP/3 config will be rejected initially to keep this PR simple as possible. Risk Level: Low (unused, hidden) Testing: new unit tests Docs Changes: n/a Release Notes: n/a Part of #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Feel free to tag me for any windows specific (test or otherwise) issue |
alyssawilk
added a commit
that referenced
this issue
Mar 3, 2021
This is working end to end for a number of the protocol integration tests, but still needs a bunch of work before it's production ready (I triaged some of the excludes but not all, watermarks not working etc). I think given this works for the happy path it's worth checking in, and I can iterate on getting individual tests working and doing the TODOs. Risk Level: low (minor core refactors, major changes are all behind hidden config) Testing: integration tests, some unit tests Docs Changes: n/a Release Notes: n/a #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
This was referenced Mar 9, 2021
alyssawilk
added a commit
that referenced
this issue
Mar 15, 2021
Enabling (most of the) the downstream tests for quic upstream for more coverage. Enabling cookie tests given Dan's fix Fixing a couple of tests with filters assuming headers-come-with-fin Defaulting header size to Envoy defaults. Risk Level: low (quic / test code) Testing: yes Docs Changes: n/a Release Notes: n/a part of #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
ggreenway
pushed a commit
that referenced
this issue
Mar 16, 2021
As quic connections are created early, we can't set header limits in waitForHttpConnection Part of #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
alyssawilk
added a commit
that referenced
this issue
Mar 18, 2021
Alas I didn't end up moving all of the protocol options over, as the cluster has its own timeout params so most of the QuicProtocolOptions are listener-specific. Commit Message: adding quic protocol config to quic upstream Risk Level: n/a (quic only) Testing: unit tests Docs Changes: n/a Release Notes: n/a part of #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
This was referenced Mar 22, 2021
Merged
alyssawilk
added a commit
that referenced
this issue
Mar 30, 2021
Tagging a bunch of quic test failures with more details. Adapting the status code tests to QUIC and fixing QUIC code to validate. minor refactors to core code. Risk Level: low (minor core refactors) Testing: new integration tests Docs Changes: n/a Release Notes: n/a part of #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
This was referenced Apr 12, 2021
alyssawilk
added a commit
that referenced
this issue
May 3, 2021
Respecting upstream and downstream caps on number of headers for HTTP/3 Risk Level: n/a (http/3) Testing: turned up integration tests Docs Changes: n/a Release Notes: n/a #14829 among others. Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
alyssawilk
pushed a commit
that referenced
this issue
May 3, 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 #2557 #12930 #14829 Signed-off-by: Dan Zhang <danzh@google.com> Co-authored-by: Dan Zhang <danzh@google.com>
alyssawilk
added a commit
that referenced
this issue
May 4, 2021
Risk Level: n/a Testing: yes! Docs Changes: n/a Release Notes: n/a #14829 among others Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 5, 2021
Respecting upstream and downstream caps on number of headers for HTTP/3 Risk Level: n/a (http/3) Testing: turned up integration tests Docs Changes: n/a Release Notes: n/a envoyproxy#14829 among others. Signed-off-by: Alyssa Wilk <alyssar@chromium.org> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
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 <danzh@google.com> Co-authored-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 5, 2021
Risk Level: n/a Testing: yes! Docs Changes: n/a Release Notes: n/a envoyproxy#14829 among others Signed-off-by: Alyssa Wilk <alyssar@chromium.org> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Risk Level: n/a (hidden by default) Testing: e2e tests Docs Changes: n/a Release Notes: n/a Part of envoyproxy#14829 Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Commit Message: use max header size in HCM config to initialize quic session. Additional Description: change QuicSession::Initialize() and filter chain creation order to set max header list size for each session before Initialize(). Move Initialize() of Http3 connection from CodecClient to CodecClientProd. Added CodecClient::connect() interface. Change EnvoyQuicConnection not to directly inherit from QuicConnection. And renamed it. Fix a use-after-free bug in FakeUpstream which causes ASAN failure. Risk Level: low Testing: more protocol H3 tests Part of envoyproxy#2557 envoyproxy#12930 envoyproxy#14829 Signed-off-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
envoyproxy#16128) Commit Message: use posted callback to block/unblock quic stream in EnvoyQuicStream::readDisable() with weak_ptr to stream to handle stream life time issue. Additional Description: currently if readDisabled() is called in decodeHeaders|Trailers(), the stream will be blocked right away which breaks the assumption QUICHE has that a stream shouldn't be blocked during OnInitialHeadersComplete() and OnTrailingHeadersComplete(). This change makes the stream state change completely outside of QUICHE call stack. (The unblocking is already outside of QUICHE call stack in existing implementation.) Also simplify the blockage state change logic. Risk Level: low Testing: added more unit tests and enabled Http2UpstreamIntegrationTest::ManyLargeSimultaneousRequestWithBufferLimits which was flaky. Part of envoyproxy#2557 envoyproxy#14829 Signed-off-by: Dan Zhang <danzh@google.com> Co-authored-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Respecting upstream and downstream caps on number of headers for HTTP/3 Risk Level: n/a (http/3) Testing: turned up integration tests Docs Changes: n/a Release Notes: n/a envoyproxy#14829 among others. Signed-off-by: Alyssa Wilk <alyssar@chromium.org> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
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 <danzh@google.com> Co-authored-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Risk Level: n/a Testing: yes! Docs Changes: n/a Release Notes: n/a envoyproxy#14829 among others Signed-off-by: Alyssa Wilk <alyssar@chromium.org> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Commit Message: use max header size in HCM config to initialize quic session. Additional Description: change QuicSession::Initialize() and filter chain creation order to set max header list size for each session before Initialize(). Move Initialize() of Http3 connection from CodecClient to CodecClientProd. Added CodecClient::connect() interface. Change EnvoyQuicConnection not to directly inherit from QuicConnection. And renamed it. Fix a use-after-free bug in FakeUpstream which causes ASAN failure. Risk Level: low Testing: more protocol H3 tests Part of envoyproxy#2557 envoyproxy#12930 envoyproxy#14829 Signed-off-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
envoyproxy#16128) Commit Message: use posted callback to block/unblock quic stream in EnvoyQuicStream::readDisable() with weak_ptr to stream to handle stream life time issue. Additional Description: currently if readDisabled() is called in decodeHeaders|Trailers(), the stream will be blocked right away which breaks the assumption QUICHE has that a stream shouldn't be blocked during OnInitialHeadersComplete() and OnTrailingHeadersComplete(). This change makes the stream state change completely outside of QUICHE call stack. (The unblocking is already outside of QUICHE call stack in existing implementation.) Also simplify the blockage state change logic. Risk Level: low Testing: added more unit tests and enabled Http2UpstreamIntegrationTest::ManyLargeSimultaneousRequestWithBufferLimits which was flaky. Part of envoyproxy#2557 envoyproxy#14829 Signed-off-by: Dan Zhang <danzh@google.com> Co-authored-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Respecting upstream and downstream caps on number of headers for HTTP/3 Risk Level: n/a (http/3) Testing: turned up integration tests Docs Changes: n/a Release Notes: n/a envoyproxy#14829 among others. Signed-off-by: Alyssa Wilk <alyssar@chromium.org> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
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 <danzh@google.com> Co-authored-by: Dan Zhang <danzh@google.com> Signed-off-by: Gokul Nair <gnair@twitter.com>
gokulnair
pushed a commit
to gokulnair/envoy
that referenced
this issue
May 6, 2021
Risk Level: n/a Testing: yes! Docs Changes: n/a Release Notes: n/a envoyproxy#14829 among others Signed-off-by: Alyssa Wilk <alyssar@chromium.org> Signed-off-by: Gokul Nair <gnair@twitter.com>
alyssawilk
added a commit
that referenced
this issue
May 7, 2021
Unhiding HTTP/3 upstream and downstream configuration, linking to example configs, and updating docs for HTTP/3 alpha. Risk Level: n/a Testing: n/a Docs Changes: yes Release Notes: inline #14829 #2557 #15845 Fixes #12923 Co-Authored-By: Michael Payne michael@sooper.org Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Closing as this is functionally done, though there's bells and whistles yet |
alyssawilk
added a commit
that referenced
this issue
May 19, 2021
Risk Level: Medium (some data plane refactors, mostly no-ops for !HTTP/3) Testing: turned up HTTP/3 upstream SDS integration tests Docs Changes: n/a Release Notes: n/a part of #14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
leyao-daily
pushed a commit
to leyao-daily/envoy
that referenced
this issue
Sep 30, 2021
Risk Level: Medium (some data plane refactors, mostly no-ops for !HTTP/3) Testing: turned up HTTP/3 upstream SDS integration tests Docs Changes: n/a Release Notes: n/a part of envoyproxy#14829 Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area/quic
cronvoy-alpha
feature list for cronvoy alpha
enhancement
Feature requests. Not bugs or questions.
no stalebot
Disables stalebot from closing an issue
As we close in on #2557 we want to start thinking about upstream support for QUIC.
The main use case may be for mobile (envoyproxy/envoy-mobile#1033) but it could be used in general for forward proxying and cross-data center hops.
v1 would be hard-coded QUIC with no failover, but for use on the internet it would eventually need to include things like QUIC vs TCP racing, 0-rtt credential caching, alt-scv cache, etc.
The text was updated successfully, but these errors were encountered: