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

L4 consistent hashing QUIC proxy #1193

Open
josephjacks opened this issue Jun 30, 2017 · 9 comments
Open

L4 consistent hashing QUIC proxy #1193

josephjacks opened this issue Jun 30, 2017 · 9 comments
Labels
area/quic enhancement Feature requests. Not bugs or questions. help wanted Needs help!

Comments

@josephjacks
Copy link
Contributor

Mentioned partially and might depend on work in #492 given QUIC is built on top of UDP.

https://en.m.wikipedia.org/wiki/QUIC

Official standalone library: https://github.com/google/proto-quic

@mattklein123 mattklein123 added the enhancement Feature requests. Not bugs or questions. label Jun 30, 2017
@mattklein123
Copy link
Member

Presumably G will implement this at some point. cc @tschroed @htuch

@alyssawilk
Copy link
Contributor

I suspect this is the case but I don't believe we plan on doing so this year. If more folks pile on requesting it I'll reach out to the QUIC TL and see if we can get it on the roadmap sooner rather than later.

@mattklein123
Copy link
Member

Assigning over to @alyssawilk for tracking and further updates. Google will be starting on this in the next month or so. ETA for feature delivery is conservatively probably 6 months out.

@alyssawilk
Copy link
Contributor

AFIK the Google-QUIC team is committed to integrating actual QUIC rather than UDP proxying. I don't think adding UDP proxying to Envoy was on our road map. I'll check with [relevant folks] about adding it but I suspect it would go after QUIC integration so a ways out.

If @cmluciano does stateful UDP proxying over on #492 this would be a fairly small feature (hash on ConnectionId rather than 4-tuple) on top of that. @cmluciano when you've hashed out line items for stateful proxying can you circle back and let me know if you're interested in a plug-in for determining connection based on ConnectionId? Even if not, if you do the bulk of the work for stateful UDP I suspect I can get folks on our end to sign up for hashing.

The only extra feature I think would be useful for QUIC proxying other than the above mentioned is "health checking" to ensure port connectivity. Essentially if you're doing this on the open internet it's nice to send a trial QUIC handshake through the open socket to make sure ephemeral port for the upstream connection isn't one of the commonly blocked UDP ports, or that no other entity is black-holing your packets. Depressingly important for QUIC reliability.

@stale
Copy link

stale bot commented Jun 20, 2018

This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions.

@stale stale bot added the stale stalebot believes this issue/PR has not been touched recently label Jun 20, 2018
@alyssawilk alyssawilk added help wanted Needs help! and removed stale stalebot believes this issue/PR has not been touched recently labels Jun 20, 2018
@alyssawilk alyssawilk removed their assignment Jun 20, 2018
@mattklein123 mattklein123 added no stalebot Disables stalebot from closing an issue area/quic and removed help wanted Needs help! labels Oct 30, 2018
@josephjacks
Copy link
Contributor Author

Looks like this is finally happening based on #2557 (comment) — Awesome!

@mattklein123 mattklein123 changed the title Add support for proxying QUIC L4 consistent hashing QUIC proxy Jun 14, 2019
@mattklein123 mattklein123 self-assigned this Jun 14, 2019
@mattklein123
Copy link
Member

Re-titling this "L4 consistent hashing QUIC proxy" to differentiate from the L7 support being worked on right now. This feature is required for a production QUIC deployment behind UDP load balancers that don't understand QUIC. I will work on a design doc for this in the next 1-2 months and share.

@danzh2010
Copy link
Contributor

This feature is required for a production QUIC deployment behind UDP load balancers that don't understand QUIC.

This statement is out dated in light of #9424. And this issue seems not specific to QUIC any more, consider renaming and untagging it?

@mattklein123
Copy link
Member

I don't think it's out of date, it's still required in some deployments if we want to deal with NAT rebinding, but I agree it's actually now covered by #9514. I'm still planning on working on this but it's gotten pushed back due to other obligations. If it's OK with you I would rather keep this issue right now for tracking as my plan is to implement #9514 as a means to solve this issue by allowing to hash on the QUIC connection ID within the UDP frame during UDP proxy forwarding.

@mattklein123 mattklein123 modified the milestones: 1.14.0, 1.15.0 Mar 10, 2020
@mattklein123 mattklein123 modified the milestones: 1.15.0, 1.16.0 Jun 17, 2020
@mattklein123 mattklein123 modified the milestones: 1.16.0, 1.17.0 Oct 4, 2020
@mattklein123 mattklein123 modified the milestones: 1.17.0, 1.18.0 Jan 7, 2021
@mattklein123 mattklein123 added help wanted Needs help! and removed no stalebot Disables stalebot from closing an issue labels Jan 15, 2021
@alyssawilk alyssawilk modified the milestones: 1.18.0, 1.19.0 Mar 22, 2021
@mattklein123 mattklein123 modified the milestones: 1.19.0, 1.20.0 Jul 7, 2021
@alyssawilk alyssawilk modified the milestones: 1.20.0, 1.21.0 Oct 4, 2021
@alyssawilk alyssawilk removed this from the 1.21.0 milestone Jan 4, 2022
@mattklein123 mattklein123 removed their assignment Jul 19, 2022
jpsim pushed a commit that referenced this issue Nov 28, 2022
Description: adding templating to register native filters.
Risk Level: low - optional feature
Testing: used in example apps
Docs Changes: pending

Signed-off-by: Jose Nino <jnino@lyft.com>
Signed-off-by: JP Simard <jp@jpsim.com>
jpsim pushed a commit that referenced this issue Nov 29, 2022
Description: adding templating to register native filters.
Risk Level: low - optional feature
Testing: used in example apps
Docs Changes: pending

Signed-off-by: Jose Nino <jnino@lyft.com>
Signed-off-by: JP Simard <jp@jpsim.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/quic enhancement Feature requests. Not bugs or questions. help wanted Needs help!
Projects
None yet
Development

No branches or pull requests

4 participants