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

UDP round-robin load-balancing #10

Closed
2 of 8 tasks
Tracked by #119
shaneutt opened this issue Nov 8, 2022 · 2 comments · Fixed by #117
Closed
2 of 8 tasks
Tracked by #119

UDP round-robin load-balancing #10

shaneutt opened this issue Nov 8, 2022 · 2 comments · Fixed by #117
Assignees
Labels
area/dataplane feature New feature or request priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.

Comments

@shaneutt
Copy link
Member

shaneutt commented Nov 8, 2022

Problem Statement

Previously we've added the ability to redirect UDP traffic to a Backend using eBPF, but only to a single Backend. The purpose of this task is to add support for multiple Backends in the Routing map, and then support to balance traffic between those Backends using the "round-robin" strategy in our eBPF data-plane code.

Prerequisites

Proposed Solution

  • the BACKENDS map can now include multiple BACKEND resources
  • the eBPF code is updated to handle load-balancing between BACKEND resources according to a round-robin strategy
  • integration tests are added that provide a UDPRoute pointing to a Service results in the correct dispersion of requests across multiple BACKEND resources
  • each UDPRoute should be able to support multiple BackendRefs
  • each BackendRef for a UDPRoute should be able to support multiple Endpoints

Acceptance Criteria

  • when a Service is used as a backendRef for a UDPRoute and it includes multiple endpoints, traffic is load-balanced between those endpoints with a basic round-robin strategy (future iterations may add other strategies, but not required to resolve this).

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.

@shaneutt shaneutt removed the blocked label Dec 12, 2022
@mlavacca mlavacca assigned mlavacca and unassigned mlavacca Dec 13, 2022
@mlavacca mlavacca removed their assignment Oct 11, 2023
@shaneutt shaneutt added the priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. label Oct 12, 2023
@shaneutt shaneutt moved this to Next in Blixt Project Board Oct 12, 2023
@shaneutt shaneutt added this to the v0.4.0 - Primary Features milestone Oct 12, 2023
@aryan9600
Copy link
Member

i'd like to give this a shot :)

@mlavacca
Copy link
Member

Thanks for your interest @aryan9600!

/assign @aryan9600

@shaneutt shaneutt moved this from Next to In Progress in Blixt Project Board Oct 17, 2023
@shaneutt shaneutt modified the milestones: v0.4.0 - Primary Features, v0.3.0 - Gateway API Conformance Oct 18, 2023
k8s-ci-robot pushed a commit that referenced this issue Oct 19, 2023
Add support for distributing traffic amongst several backends for a
UDPRoute in a round-robin fashion. High level changes:
* The `target` field in the `Targets` protobuf message has been updated
to be a list named `targets`.
* The bpf map `BACKENDS` has been updated to be of type `<BackendKey,
BackendList>`, where `BackendList` contains a list of `Backends`.
* A new bpf map `GATEWAY_INDEXES` of type `<BackendKey, u16>` has been
introduced to keep track of the last backend that received a packet.

Deletion handling for TCPRoute and UDPRoute has also been improved by
avoiding fetching related `Endpoints`, which could lead to objects being
stuck with finalizers.

Fixes #10

---------

Signed-off-by: Sanskar Jaiswal <[email protected]>
@github-project-automation github-project-automation bot moved this from In Progress to Done in Blixt Project Board Oct 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/dataplane feature New feature or request 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.

3 participants