Skip to content

[refactor] Split felix server into watcher/handler#772

Open
sknat wants to merge 1 commit into
masterfrom
nsk-split-felix-server
Open

[refactor] Split felix server into watcher/handler#772
sknat wants to merge 1 commit into
masterfrom
nsk-split-felix-server

Conversation

@sknat
Copy link
Copy Markdown
Collaborator

@sknat sknat commented Sep 1, 2025

This patch splits the felix server in two pieces:

  • a felix watcher placed under agent/watchers/felix
  • a felix server placed under agent/felix

The former will have only the responsibility of watching
and submitting events into a single event queue.
The latter will receive the event in a single goroutine
and proceed to program VPP as a single thred.

The intent is to move away from a model with multiple servers
replicating state and communicating over a pubsub. This being
prone to race conditions, deadlocks, and not providing many
benefits as scale & asynchronicity will not be a constraint
on nodes with relatively small number of pods (~100) as is k8s
default.

@sknat sknat force-pushed the nsk-split-felix-server branch from 0354524 to adbe7fe Compare September 1, 2025 13:35
@sknat sknat self-assigned this Sep 2, 2025
@sknat sknat force-pushed the nsk-split-felix-server branch from adbe7fe to 68c4d11 Compare September 29, 2025 13:41
@sknat sknat force-pushed the nsk-split-felix-server branch from 68c4d11 to 172b238 Compare October 13, 2025 09:22
@sknat sknat force-pushed the nsk-split-felix-server branch from 172b238 to 34b4725 Compare October 21, 2025 09:54
Comment thread calico-vpp-agent/felix/policies/host_endpoint.go Outdated
Comment thread calico-vpp-agent/common/types.go Outdated
Comment thread calico-vpp-agent/felix/cache/cache.go Outdated
Comment thread calico-vpp-agent/felix/cache/cache.go Outdated
@sknat sknat force-pushed the nsk-split-felix-server branch from 34b4725 to c93538b Compare November 4, 2025 10:43
@sknat sknat added this to the agent refactoring single thread milestone Nov 17, 2025
@sknat sknat changed the title Split felix server into watcher/handler [refactor] Split felix server into watcher/handler Jan 7, 2026
@sknat sknat changed the title [refactor] Split felix server into watcher/handler [refactor] Split felix server into watcher/handler Jan 7, 2026
This patch splits the felix server in two pieces:
- a felix watcher placed under `agent/watchers/felix`
- a felix server placed under `agent/felix`

The former will have only the responsibility of watching
and submitting events into a single event queue.
The latter will receive the event in a single goroutine
and proceed to program VPP as a single thred.

The intent is to move away from a model with multiple servers
replicating state and communicating over a pubsub. This being
prone to race conditions, deadlocks, and not providing many
benefits as scale & asynchronicity will not be a constraint
on nodes with relatively small number of pods (~100) as is k8s
default.

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
@aritrbas aritrbas force-pushed the nsk-split-felix-server branch from c93538b to 8fed9d1 Compare May 19, 2026 00:25
@aritrbas
Copy link
Copy Markdown
Collaborator

Rebased on latest master to resolve merge conflicts and applied some fixes to comply with the latest Felix API updates in release/v3.31.0 and release/v3.32.0 as well as the NPOL and CNAT changes in VPP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants