Page MenuHomeVyOS Platform

VPNv4 imported routes are withdrawn and reinstalled on every commit
Closed, ResolvedPublicBUG

Description

Summary

Leaked VPNv4 routes from a VRF are temporarily withdrawn from the default VRF during every commit, even when the configuration change is unrelated to BGP or VRF routing.

Version Information

  • VyOS version: 2026.06.10-0053-rolling
  • Release train: rolling
  • Release flavor: generic

Environment

I have the following VRFs configured:

  • default
  • test

Routes are leaked from vrf test into the default VRF using VPNv4 route leaking.

Relevant Configuration

set vrf name test protocols bgp address-family ipv4-unicast export vpn
set vrf name test protocols bgp address-family ipv4-unicast rd vpn export '12345:200'
set vrf name test protocols bgp address-family ipv4-unicast route-target vpn export '12345:200'

set protocols bgp address-family ipv4-unicast import vpn
set protocols bgp address-family ipv4-unicast route-target vpn import '12345:200'

Problem Description

Whenever I run any commit, leaked routes imported from vrf test into the default VRF are briefly removed from the routing table.

This happens even when the configuration change has nothing to do with BGP, VRFs, route leaking, or routing policy.

For example:

set policy route-map test rule 10 action 'permit'
commit

The route-map in this example is not attached to any BGP neighbor or routing policy, but during the commit process all leaked routes disappear from the default VRF and are reinstalled only after the commit finishes.

Impact

This causes a traffic interruption of approximately 20 - 30 seconds.

During that time, customers relying on the leaked routes lose connectivity, including Internet access.

In a production environment, this makes even minor unrelated configuration changes disruptive, because every commit briefly withdraws and then reinstalls the leaked routes.

Expected Behavior

Configuration changes unrelated to BGP VPN route leaking should not cause imported routes to be withdrawn and reinstalled.

Leaked routes should remain present in the routing table throughout the commit process, or the reconfiguration process should be handled in a way that avoids any traffic interruption.

Actual Behavior

During every commit:

  1. The leaked routes are removed from the kernel routing table.
  2. The routes disappear from tools such as:
    • ip route show vrf default
    • route -n
  3. The routes are restored only after the commit completes.

This behavior is reproducible on every commit, including changes that are completely unrelated to BGP, VRFs, or route leaking.

Additional Information

I tested a similar setup on a clean FRRouting installation on Debian and did not observe this behavior there. In that setup, the route leak remains intact during unrelated configuration changes.

This suggests the issue may be related to VyOS commit handling rather than to FRRouting itself.

Reproduction Steps

  1. Configure two VRFs: default and test.
  2. Configure VPNv4 route leaking from vrf test into default.
  3. Verify that leaked routes are present in the default VRF.
  4. Apply any unrelated configuration change.
  5. Run commit.
  6. Observe that leaked routes are removed temporarily and then restored after commit completes.

Details

Version
2026.06.10-0053-rolling
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)
Forum thread
https://forum.vyos.io/t/route-leak-between-vrfs-is-temporarily-removed-during-any-commit-causing-traffic-interruption/17520

Event Timeline

FRR reloads the whole configuration per commit, not only one protocol
So policy-route-map is related to FRR config and prefix-lists are the same between all FRR routing daemons.
https://github.com/vyos/vyos-1x/blob/c2f87f243a1f813fbdd319b1004fd3a26397ab3e/python/vyos/frrender.py#L850

Viacheslav triaged this task as Normal priority.Jun 15 2026, 1:03 PM

In my previous deployments using FRR on Debian, I never had to rely on a full FRR reload for routine BGP policy changes. In most cases, applying the change and performing a soft refresh (for example, clear ip bgp vrf test * soft in/out) was sufficient and did not impact forwarding.

I understand that FRR currently reloads the entire configuration on every commit and that route-maps and prefix-lists are part of the generated FRR configuration.

My concern is not the reload itself, but its impact on forwarding. During the commit process, the imported VPNv4 routes are removed from the kernel routing table and only reinstalled after the reload completes. As a result, traffic using those routes is interrupted for approximately 20–30 seconds.

In a production environment this becomes a significant operational issue. Even a routine change, such as adjusting local-preference or modifying a policy object, causes all routes leaked from VRF test into the default VRF to disappear temporarily. From the customer perspective this is seen as a service outage.

The practical consequence is that any commit, regardless of how minor, carries the risk of interrupting traffic for users behind leaked routes.

Looks like I'll have to use a workaround and run BGP between the two VRFs instead.

With the current behavior, route leaking is difficult to use in production. Every commit temporarily removes the leaked routes from the kernel, which means traffic is interrupted until they are reinstalled.

That may be acceptable in a lab environment, but in production networks where SLA matters, even a short routing outage during routine changes is a problem.

Honestly, that's pretty disappointing because route leaking would otherwise be the cleanest solution for this use case.

c-po raised the priority of this task from Normal to High.Jun 20 2026, 9:22 AM
a.kudientsov changed the task status from Open to In progress.Jun 20 2026, 1:12 PM
a.kudientsov claimed this task.

I tested the patch and can confirm that it fixes the issue.

Thanks for the fix!

Viacheslav moved this task from Need Triage to Completed on the VyOS Rolling board.