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

h3 config examples #15987

Merged
merged 5 commits into from
Apr 28, 2021
Merged

h3 config examples #15987

merged 5 commits into from
Apr 28, 2021

Conversation

alyssawilk
Copy link
Contributor

Risk Level: n/a
Testing: examples config test, manual testing
Docs Changes: n/a
Release Notes: n/a
Part of #12923
Co-authored-by: Michael Payne [email protected]

Signed-off-by: Alyssa Wilk <[email protected]>
@alyssawilk
Copy link
Contributor Author

Hey Dan,

one weird thing, if I run bazel-bin/source/exe/envoy-static --config-path configs/envoyproxy_io_proxy_http3_downstream.template.yaml --concurrency 1
It works (/git/curl$ ./src/curl  -vv --http3 https://127.0.0.1:10000 gets results)
If I run bazel-bin/source/exe/envoy-static --config-path configs/envoyproxy_io_proxy_http3_downstream.template.yaml
I get consistent failures : https://pastebin.com/eU4DeqPd

Is this due to something wrong with my example config, or like @moderation posited is there something going wrong with QUIC with concurrency > 1 ?
Basically if you can't tell me what I did wrong I'll file a tracking issue and you can repro once this lands :-)

@alyssawilk
Copy link
Contributor Author

Actually I'm going to file a tracking issue either way - either we have a bug with concurrency or we have a bug with config validation (given it lets me run but doesn't work)

@moderation
Copy link
Contributor

Cross reference - #15845

downstream_socket_config:
prefer_gro: true
filter_chains:
transport_socket:
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 a hyphen is missing here? i.e.
- transport_socket:

Copy link
Contributor Author

Choose a reason for hiding this comment

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

the example configs test passed (locally for me - CI failed catastrophically for unrelated reasons) so I assume it works either way?

Copy link
Contributor

Choose a reason for hiding this comment

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

It works with or without a hyphen (which is a bit surprising to me) ¯_(ツ)_/¯

@alyssawilk
Copy link
Contributor Author

Ah, I do have to fix config examples to not choke on H3 configs though.
/wait

- name: listener_0
address:
socket_address:
protocol: TCP
Copy link
Contributor

Choose a reason for hiding this comment

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

UDP?

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 the idea here is a standard TCP listener that makes a h3 upstream call to h3 enabled www.google.com

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh, my bad, thinking it was downstream.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

oh I hoped the naming would be enough - let me add a comment at the top of the configs too!

@danzh2010
Copy link
Contributor

Hey Dan,

one weird thing, if I run bazel-bin/source/exe/envoy-static --config-path configs/envoyproxy_io_proxy_http3_downstream.template.yaml --concurrency 1
It works (/git/curl$ ./src/curl  -vv --http3 https://127.0.0.1:10000 gets results)
If I run bazel-bin/source/exe/envoy-static --config-path configs/envoyproxy_io_proxy_http3_downstream.template.yaml
I get consistent failures : https://pastebin.com/eU4DeqPd

Is this due to something wrong with my example config, or like @moderation posited is there something going wrong with QUIC with concurrency > 1 ?
Basically if you can't tell me what I did wrong I'll file a tracking issue and you can repro once this lands :-)

It not obvious to me what's going wrong here. The config looks reasonable. I'll try it out locally.

Signed-off-by: Alyssa Wilk <[email protected]>
@yanavlasov yanavlasov merged commit ec87fdd into envoyproxy:main Apr 28, 2021
gokulnair pushed a commit to gokulnair/envoy that referenced this pull request May 6, 2021
Signed-off-by: Alyssa Wilk <[email protected]>
Signed-off-by: Gokul Nair <[email protected]>
@alyssawilk alyssawilk deleted the h3_config_example branch February 28, 2022 21:25
@triplewy
Copy link

@alyssawilk Is there an example h3 config for a quic listener that handles multiple certificates? Because quic listener does not support tls inspector filter so I'm not sure idiomatic way of routing multiple domains with one quic listener. For tcp listener, I would use tls inspector filter and filter chain matches on the sni to route requests to different http connection managers.

@danzh2010
Copy link
Contributor

@alyssawilk Is there an example h3 config for a quic listener that handles multiple certificates? Because quic listener does not support tls inspector filter so I'm not sure idiomatic way of routing multiple domains with one quic listener. For tcp listener, I would use tls inspector filter and filter chain matches on the sni to route requests to different http connection managers.

You can config multiple filter chains with different cert chains in transport socket. And you can config how filter chains are matched on connection properties.

@triplewy
Copy link

triplewy commented Jul 17, 2023

You can config multiple filter chains with different cert chains in transport socket. And you can config how filter chains are matched on connection properties.

@danzh2010 It seems for QUIC that you cannot do filter chain match on server_name because TLS inspector listener filter is not supported for QUIC. So it seems only option is to use one HttpConnectionManager for all QUIC connections and put all cert chains in one transport socket for QUIC

@triplewy
Copy link

@danzh2010 Ah so I tested with QUIC filter chain using server name and it seems that we don't need TLS inspector for server_name filter name match to work?

@danzh2010
Copy link
Contributor

@danzh2010 Ah so I tested with QUIC filter chain using server name and it seems that we don't need TLS inspector for server_name filter name match to work?

server_name is provided by QUICHE stack, no need for TLS inspector.

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