-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
http3: make quic/quiche core code #15720
Conversation
Part of #12829. The transport extension will stay a built-in extension since it fits well. UDP listener and UDP writer extension points have been removed. GSO is still only enabled for QUIC because it currently depends on QUICHE, has some obvious perf issues, and is failing non-QUIC integration tests. Futher work is needed to remove codec extension factories. Part of #12829 Signed-off-by: Matt Klein <[email protected]>
CC @envoyproxy/api-shepherds: Your approval is needed for changes made to |
cc @moderation if you want to test this I believe this should allow you to compile out H3. There is some more cleanup work to do but let me know if that's not the case. |
I might have missed a few spots for fully compiling out. Will continue in the next follow up. |
@mattklein123 I can confirm that this allowed me to compile on Red Hat 8 with Clang 10. Thanks |
Signed-off-by: Matt Klein <[email protected]>
Signed-off-by: Matt Klein <[email protected]>
I believe the clang tidy issues are pre-existing. I will poke around a bit but my preference would be to merge this modulo any other PR comments, just to avoid merge conflicts. |
Signed-off-by: Matt Klein <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks for tackling this.
@@ -1,7 +1,8 @@ | |||
#include <algorithm> | |||
#include <memory> | |||
|
|||
#include "extensions/quic_listeners/quiche/envoy_quic_proof_verifier.h" | |||
#include "common/quic/envoy_quic_proof_verifier.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so I'm all for QUIC being built in, but why the big file move? If we have TLS in extensions why not QUIC?
(I'm also happy with everything core being in core, but we have a bunch of other exceptions so I'd like to make sure we have a plan and maybe file a follow up issue for others)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The other things that are "core extensions" fall into 2 buckets today:
- TLS which is an extension because technically there is an openssl port out there.
- Extensions that actually are true extensions in terms of documentation, proto build, etc. but we force into the build because they are needed for core functionality (like admin server, etc.).
IMO QUIC doesn't fall into either of those categories which is why I moved the code. I just can't see any situation in which we will override the QUICHE code realistically.
Hey Matt, can you fold this into your mega PR: @moderation caught that Envoy currently doesn't do quic upstream because I didn't stick client_connection_factory_lib in the envoy select for the server build, I only included it in the integration tests. |
Yeah I will merge that in. FYI I'm doing a follow up to this PR that will further clean all of the client/codec stuff up but we can have this in for now. |
Signed-off-by: Matt Klein <[email protected]>
@alyssawilk updated per comments |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fine merging over clang tidy failures, as IMO there's no need to clean up all the things. I would suggest waiting for at least the other builds to pass as for example I wonder if "is_quic" is going to be 'unused' in opt mode.
cc @DavidSchinazi @danzh2010 as this is going to break everything we have in flight. Whee! =P
@@ -438,6 +438,7 @@ envoy_cc_library( | |||
"@envoy_api//envoy/extensions/filters/listener/proxy_protocol/v3:pkg_cc_proto", | |||
] + envoy_select_enable_http3([ | |||
"//source/common/quic:active_quic_listener_lib", | |||
"//source/common/quic:client_connection_factory_lib", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like this removed from quic protocol test too in the hopes of future-proofing but I can do in one of my many quic PRS.
@@ -1022,7 +1022,9 @@ Network::DrainableFilterChainSharedPtr ListenerFilterChainFactoryBuilder::buildF | |||
transport_socket.DebugString())); | |||
} | |||
#else | |||
UNREFERENCED_PARAMETER(listener_); | |||
// When QUIC is compiled out it should not be possible to configure either the QUIC transport | |||
// socket or the QUIC listener and get to this point. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mind filing a tracking issue for upstream/downstream quic to have tests in the compile time options build that we fail gracefully if H3 is configured upstream/downstream while compiled out?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made a note here: #12829 (comment)
I will work on this in the follow up PR I have ongoing to remove codec/client extension points for QUIC.
I think the ASSERT macro handles this correctly but let's see. I will definitely wait for the builds to complete.
Thank you for dealing with the pain!!! |
FYI, this broke builds with |
How did that pass CI? The compile_time_options build is compiled with |
compile time options is also where we check that quic compile out works.
I think we need to do 2 build passes to make this work correctly :-/
…On Tue, Mar 30, 2021 at 3:51 PM Greg Greenway ***@***.***> wrote:
FYI, this broke builds with --define boringssl=fips.
How did that pass CI? The compile_time_options build is compiled with
boringssl=fips, and it looks like it passed.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#15720 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AELALPP5XWS7IX2M3BJVIMDTGITVZANCNFSM4Z4E2FUA>
.
|
I don't know, yet. I originally suspected |
I will take a look and fix. I suspect also that fips with http3=False works, but not just fips. |
@PiotrSikora are you also passing |
I can confirm that |
At least makes this problem obvious, so I will add that to my other PR while I see if I can figure out something better. Edit: nevermind that doesn't seem to work. Will keep poking. |
Part of #12829. The transport
extension will stay a built-in extension since it fits well. UDP
listener and UDP writer extension points have been removed. GSO is
still only enabled for QUIC because it currently depends on QUICHE, has
some obvious perf issues, and is failing non-QUIC integration tests.
Futher work is needed to remove codec extension factories.
Risk Level: Low
Testing: Existing/modified tests
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features: N/A