gateway icon indicating copy to clipboard operation
gateway copied to clipboard

L4 Support

Open danehans opened this issue 2 years ago • 9 comments

During the 4/29/21 community meeting, support for L4 support, e.g. TCPRoute was discussed. The community should come to an agreement on if L4 should be supported and if so, how.

danehans avatar Apr 29 '22 16:04 danehans

@youngnick PTAL when you have a moment. Feel free to provide input and any relevant xref's as needed.

danehans avatar Apr 29 '22 16:04 danehans

From my understanding most Gateway API implementations have been L7 support only, e.g. HTTPRoute.

xref a MetalLB issue I created on this topic: https://github.com/metallb/metallb/issues/847

danehans avatar Apr 29 '22 16:04 danehans

In short, my experience has been that implementing TCPRoute and UDPRoute (that is, doing Layer 4 forwarding) inside a Kubernetes cluster is difficult because, to have it work the way users expect requires tight coordination with the CNI and routing tables, which I think is beyond the scope of this project.

An implementation that fills the functions of an Ingress controller, and implements HTTPRoute and TLSRoute, can be done using Envoy proxy as it exists today, without requiring anything other than a way to expose the proxy containers to the internet (which can be as simple as a Service of Type LoadBalancer, a NodePort, or other method.) That's this project. 😄

youngnick avatar May 01 '22 23:05 youngnick

@youngnick Not supporting the TCPRoute and UDPRoute in the Gateway API spec is consistent with Contour's approach - https://github.com/projectcontour/contour/issues/1248

However there have been numerous requests in the community to support UDPRoute particularly for voice applications. The Istio issue is https://github.com/istio/istio/issues/1430

If the view is that Envoy Gateway can't support the TCPRoute or UDPRoute route resources, should the upstream work in the Kubernetes SIG Gateway API remove these routes from the specification?

According to the Implementations page, NGINX Kubernetes Gateway and Traefik plan on supporting UDPRoute

moderation avatar May 16 '22 22:05 moderation

I would definitely like to see both TCP and UDP implemented by this project, so let's discuss after the initial HTTP bootstrapping work is done. Having both TCP and UDP support is a consistent customer request.

mattklein123 avatar May 16 '22 22:05 mattklein123

@youngnick Perhaps Im missing something but I dont understand the issue you describe? In an ingress its just bypassing kubeproxy just like httpRoute would? Service LoadBalancers bypass kubeproxy when externalTrafficPolicy is set to Local. I would think a complete gateway implementation would support all 3 route types?

adamdunstan avatar May 18 '22 22:05 adamdunstan

I would think a complete gateway implementation would support all 3 route types?

Per my comment above we will definitely support all 3 types in this project. Where it lands on the roadmap I'm not sure. Let's see how things evolve and who wants to work on what.

mattklein123 avatar May 18 '22 22:05 mattklein123

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 "no stalebot" or other activity occurs. Thank you for your contributions.

github-actions[bot] avatar Jul 01 '22 04:07 github-actions[bot]

This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted" or "no stalebot". Thank you for your contributions.

github-actions[bot] avatar Jul 08 '22 08:07 github-actions[bot]

xref https://github.com/envoyproxy/gateway/pull/646 for adding UDPRoute support.

danehans avatar Oct 26 '22 15:10 danehans

Note: This is a tracking issue and separate issues/PRs are used for specific L4 protocol support. I assigned myself this issue to track the overall progress of L4 support.

danehans avatar Nov 08 '22 20:11 danehans

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 "no stalebot" or other activity occurs. Thank you for your contributions.

github-actions[bot] avatar Dec 09 '22 00:12 github-actions[bot]

This can be closed when UDPRoute and TCProute support are added.

danehans avatar Jan 05 '23 17:01 danehans

closing this since UDPRoute and TCPRoute support is in

arkodg avatar Jan 06 '23 19:01 arkodg