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

Add initial support for load balancing TCP backends #119

Closed
1 task done
aryan9600 opened this issue Oct 18, 2023 · 1 comment · Fixed by #148
Closed
1 task done

Add initial support for load balancing TCP backends #119

aryan9600 opened this issue Oct 18, 2023 · 1 comment · Fixed by #148
Assignees
Labels
area/controlplane area/dataplane area/maintenance priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.

Comments

@aryan9600
Copy link
Member

aryan9600 commented Oct 18, 2023

Problem Statement

At the moment, support for TCP backends is more in the form of a proxy than a load balancer, i.e. it can handle only one TCP backend at a time. We should add support for load balancing traffic between multiple TCP backends in a round robin fashion. This will allow users to specify more than one backend reference in a TCPRoute object.

Note: for the purposes of this issue we do not need a complete/comprehensive/exhaustive implementation: we're targeting a basic "it works at a basic level" implementation for now so that PRs can be smaller and we can work iteratively forward.

Prerequisites

@shaneutt shaneutt added kind/feature Categorizes issue or PR as related to a new feature. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. labels Oct 18, 2023
@shaneutt shaneutt moved this to Next in Blixt Project Board Oct 18, 2023
@shaneutt shaneutt added area/dataplane area/controlplane help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. labels Oct 18, 2023
@aryan9600
Copy link
Member Author

/assign aryan9600

@shaneutt shaneutt moved this from Next to In Progress in Blixt Project Board Oct 19, 2023
@shaneutt shaneutt removed the help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. label Oct 19, 2023
@shaneutt shaneutt added area/maintenance and removed kind/feature Categorizes issue or PR as related to a new feature. labels Dec 5, 2023
k8s-ci-robot added a commit that referenced this issue Dec 11, 2023
Add support for round-robin load balancing for `TCPRoute`. This enables
mutliple backend references in a UDPRoute object, with traffic being
distributed to each backend in a round-robin fashion.

A new BPF map `TCP_CONNECTIONS` was introduced to help keep track of
active TCP connections, with its key storing the clien <<ip:port>>
identifier and the value storing the backend's <<ip:port>> along with
the state of the connection.

Fixes #119 

Follow up items:
* modify `TCP_CONNECTIONS` to be more generic; get rid of
`BLIXT_CONNTRACK` and refactor udp ingress and icmp egress to use the
new generic map
@github-project-automation github-project-automation bot moved this from In Progress to Done in Blixt Project Board Dec 11, 2023
@shaneutt shaneutt changed the title Add support for load balancing TCP backends Add initial support for load balancing TCP backends Dec 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/controlplane area/dataplane area/maintenance priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Projects
Development

Successfully merging a pull request may close this issue.

2 participants