Repository navigation
fix(router): Bind a VIP only to a backend address its VRF advertises - #817
Merged
Merged
Conversation
Contributor
|
@privateip got merge conflicts |
privateip
force-pushed
the
fix/vip-binding-advertised-prefix
branch
from
October 8, 2026 21:53
9baa0aa to
d606d46
Compare
privateip
enabled auto-merge
October 8, 2026 21:54
3 of 4 tasks
privateip
force-pushed
the
fix/vip-binding-advertised-prefix
branch
from
October 9, 2026 01:51
d606d46 to
65759b3
Compare
The bind path now requires a BGPAdvertisement on this node's BGPRouter, with the VRF's ID, whose prefix contains the backend address, and otherwise fails with BindFailed naming the VPC, VRF, node and address. The VRF lookup is split out (resolveVIPBindingVRF) so teardown keeps resolving the VRF context alone and still deletes a binding whose advertisement is already gone. livePeers goes through the same check, so a peer whose backend is not served claims no row. The reconciler now watches BGPAdvertisements that carry a VRFID and Function and maps one on this node's router to this node's bindings, so a binding written before its advertisement binds as soon as the address is advertised. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
privateip
force-pushed
the
fix/vip-binding-advertised-prefix
branch
from
October 9, 2026 15:34
65759b3 to
80ec75c
Compare
scotwells
approved these changes
Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was wrong
Since #809, galactic-router finds a VIP binding's VRF by the binding's VPC. That fixed two tenants sharing a prefix on one node, but it dropped the check that the backend address is one the VRF advertises on that node.
So a binding reports Bound for an address the node does not serve. This happens with a hand-written binding, with one generated before the backend's interface is up, and with a stale attachment address. Before #809 each of these failed with BindFailed. Now flows to that backend are lost while its status looks healthy.
What changed
The router and gateway docs describe the new rule.
Testing
New unit tests check that a binding is:
Other new tests check that a binding deletes after its advertisement is gone, and that only advertisements on this node's router requeue its bindings.
Build, lint and unit tests pass. The YAML formatter's lint step fails inside a worktree, so I ran it with a temporary config that skips the repository metadata directory, and it passed. I did not run the end-to-end tests.
🤖 Generated with Claude Code