Skip to content

fix(srv6): replace DSR delivery route in place to avoid a blackhole window#29

Merged
ryskn merged 1 commit into
dev/srv6egress-v1from
fix/srv6-dsr-delivery-route-replace
Jul 3, 2026
Merged

fix(srv6): replace DSR delivery route in place to avoid a blackhole window#29
ryskn merged 1 commit into
dev/srv6egress-v1from
fix/srv6-dsr-delivery-route-replace

Conversation

@ryskn

@ryskn ryskn commented Jul 3, 2026

Copy link
Copy Markdown
Owner

What

updateDeliveryRoute did RouteDel(old) then RouteAdd(new) on every local-backend membership change, leaving a window with no /128 delivery route where VIP traffic blackholed.

Fix

RouteAdd is a non-multipath add, which VPP applies as an atomic replace of the prefix's paths. Skip the prior RouteDel and just RouteAdd(new) — no gap. RouteDel is kept only for the no-backends (removal) case; on add failure the old route is still installed and retried next reconcile.

Review finding

Low (correctness) L6.

Test

GOOS=linux go vet ./calico-vpp-agent/cni/... green.

…indow

updateDeliveryRoute did RouteDel(old) then RouteAdd(new) on every
local-backend membership change, leaving a window with no /128 delivery
route where VIP traffic blackholed. RouteAdd is a non-multipath add,
which VPP applies as an atomic replace of the prefix's paths, so a single
RouteAdd(new) swaps the paths with no gap. RouteDel is kept only for the
no-backends case (route removal). On add failure the old route is still
installed, so state is retained and retried next reconcile.
@ryskn ryskn merged commit e453484 into dev/srv6egress-v1 Jul 3, 2026
1 check passed
@ryskn ryskn deleted the fix/srv6-dsr-delivery-route-replace branch July 3, 2026 01:40
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.

1 participant