-
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
Discussion: supporting alternative L7 protocols based on UDP & TCP #10140
Comments
This is a pretty high level question so I'm not quite sure exactly how to answer it. In general, we would expect Envoy to be extendable to support almost any L7 protocol. If the right APIs don't exist, we should add them. With that said, there are a few different related issues and concepts here for reference:
|
Thanks for those references! I'm digging into routing proposal, as well as the UDPA work in general. Both references definitely feel like they're going in the right direction! One way to make the question more concrete is to take a protocol and walk through the process and document the highs and lows. The first one that comes to mind is DNS (ala CoreDNS) because of its familiarity and general usefulness. NTP/SNTP and TFTP would also be good candidates due to their simplicity. Anyone interested in collaborating, or perhaps has already starting that work? |
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. |
I'm going to close this - discussion has moved to a doc. |
With the recent alpha support of UDP listener filters, I'm hoping to kickoff a discussion on how we should holistically approach adding support for new L7 protocols for Envoy users, with the goal of something like a best practices doc and/or a few proposed new APIs (if needed.)
Envoy has first-class support for HTTP1/2/3ish, which includes connection management, proxying, sniffing & routing. HTTP is also extended to support different HTTP-based protocols like gRPC. But since Envoy is an L3/L4 proxy at the core, it has "complete" support for TCP-based protocols like MongoDB and Redis. Complete is in quotes because there are also many protocols that are implemented simply at the data layer as Filters, since many are HTTP-based.
As the reader may already know, there are many IP-based protocols in the world beyond HTTP and popular databases. Here's just a few of the ones I've investigated for use with Envoy, as well as their category and protocol:
Admittedly the list above is a biased sampling of L7 protocols from personal use cases and many of the protocols actual support both TCP and UDP. But bias aside, I believe there are others who would also like to leverage Envoy with these and other protocols. So the main question I hope to answer is:
First-class here means the same level of functionality as HTTP, or roughly connection management, proxying, sniffing & routing, as well as any protocol-specific features. Sub-questions that fall from the main questions are:
At this point I'd love to start the discussion and hear what other people think!
/cc folks who have given me early feedback: @markmandel (from agones) @PiotrSikora @jplevyak @duderino
The text was updated successfully, but these errors were encountered: