Skip to content

core(routing): reconcile against system route state - #148

Draft
tionis wants to merge 1 commit into
encodeous:mainfrom
tionis:system-routes
Draft

core(routing): reconcile against system route state#148
tionis wants to merge 1 commit into
encodeous:mainfrom
tionis:system-routes

Conversation

@tionis

@tionis tionis commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Closes #97.

Nylon now reads the actual addresses and routes on its interface instead of relying on an in-memory record of previously successful commands.

This adds a small amount of control-plane overhead because reconciliation now queries the OS once per probe interval (one second by default). It does not affect the packet-
forwarding path. If this becomes noticeable—particularly on Windows—we can move system reconciliation to a slower interval or replace the command-based queries with native APIs.

This means it can recover if another process changes the route table, the OS removes a route, or a command only partially succeeds.

The new SystemRoutes interface supports Linux, macOS, and Windows using their existing system networking tools. Reconciliation still adds new entries before removing old ones to avoid unnecessary connectivity interruptions.

Kernel-managed connected routes and link-local addresses are left alone.

Before this is upstreamed we should do some cross-platform testing as e.g. powershell might have quite a big overhead.

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.

core(routing): use less brittle route reconciliation mechanism

1 participant