Page MenuHomeVyOS Platform

FRR does not redistribute BGP table x routes
Closed, ResolvedPublicBUG

Description

To reproduce this:

Configurations:
R-01

set interfaces ethernet eth0 address '10.0.0.1/24'
set interfaces ethernet eth1 address '192.168.1.1/24'
set interfaces ethernet eth2 address '10.55.8.62/24'
set protocols bfd peer 10.0.0.2 source address '10.0.0.1'
set protocols bfd peer 10.0.0.2 source interface 'eth1'
set protocols bgp address-family ipv4-unicast redistribute connected
set protocols bgp address-family ipv4-unicast redistribute static
set protocols bgp address-family ipv4-unicast redistribute table 100
set protocols bgp address-family ipv4-unicast redistribute table 101
set protocols bgp neighbor 10.0.0.2 address-family ipv4-unicast soft-reconfiguration inbound
set protocols bgp neighbor 10.0.0.2 bfd
set protocols bgp neighbor 10.0.0.2 remote-as '65002'
set protocols bgp parameters log-neighbor-changes
set protocols bgp parameters router-id '10.0.0.1'
set protocols bgp system-as '65001'
set protocols static table 100 route 192.168.11.0/24 blackhole
set protocols static table 101 route 8.8.4.4/32 next-hop 10.55.8.254
set protocols static table 101 route 8.8.8.8/32 next-hop 10.55.8.254
set system host-name 'R-01'

R-02

set interfaces ethernet eth0 address '10.0.0.2/24'
set interfaces ethernet eth1 address '192.168.2.1/24'
set protocols bfd peer 10.0.0.1 source address '10.0.0.2'
set protocols bfd peer 10.0.0.1 source interface 'eth1'
set protocols bfd peer 10.0.0.1 source address '10.0.0.2'
set protocols bfd peer 10.0.0.1 source interface 'eth1'
set protocols bgp address-family ipv4-unicast redistribute connected
set protocols bgp address-family ipv4-unicast redistribute static
set protocols bgp address-family ipv4-unicast redistribute table 100
set protocols bgp neighbor 10.0.0.1 address-family ipv4-unicast soft-reconfiguration inbound
set protocols bgp neighbor 10.0.0.1 bfd
set protocols bgp neighbor 10.0.0.1 remote-as '65001'
set protocols bgp parameters log-neighbor-changes
set protocols bgp parameters router-id '10.0.0.2'
set protocols bgp system-as '65002'
set protocols static table 100 route 192.168.12.0/24 blackhole
set system host-name 'R-02'

Testing:

Inside R-01

vyos@R-01:~$
vyos@R-01:~$ show ip route table 100
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

VRF default table 100:
S>* 192.168.11.0/24 [1/0] unreachable (blackhole), weight 1, 00:08:15
vyos@R-01:~$
vyos@R-01:~$ show ip route table 101
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

VRF default table 101:
S>* 8.8.4.4/32 [1/0] via 10.55.8.254, eth2, weight 1, 00:12:00
S>* 8.8.8.8/32 [1/0] via 10.55.8.254, eth2, weight 1, 00:12:00
vyos@R-01:~$
vyos@R-01:~$
vyos@R-01:~$
vyos@R-01:~$ show ip bgp neighbors 10.0.0.2 advertised-routes
BGP table version is 8, local router ID is 10.0.0.1, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.0.0/24      0.0.0.0                  0         32768 ?
 *> 10.55.8.0/24     0.0.0.0                  0         32768 ?
 *> 192.168.1.0/24   0.0.0.0                  0         32768 ?
 *> 192.168.2.0/24   0.0.0.0                                0 65002 ?

Total number of prefixes 4
vyos@R-01:~$
vyos@R-01:~$ show ip bgp neighbors 10.0.0.2 received-routes
BGP table version is 8, local router ID is 10.0.0.1, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.0.0/24      10.0.0.2                 0             0 65002 ?
 *> 10.55.8.0/24     10.0.0.2                               0 65002 65001 ?
 *> 192.168.1.0/24   10.0.0.2                               0 65002 65001 ?
 *> 192.168.2.0/24   10.0.0.2                 0             0 65002 ?

Total number of prefixes 4
vyos@R-01:~$
vyos@R-01:~$ show ip bgp summary

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.0.0.1, local AS number 65001 vrf-id 0
BGP table version 8
RIB entries 7, using 672 bytes of memory
Peers 1, using 20 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
10.0.0.2        4      65002        51        57        8    0    0 00:09:54            2        4 N/A

Total number of neighbors 1
vyos@R-01:~$
vyos@R-01:~$
vyos@R-01:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 10.0.0.0/24 is directly connected, eth0, 00:23:10
C>* 10.55.8.0/24 is directly connected, eth2, 00:18:40
C>* 192.168.1.0/24 is directly connected, eth1, 00:23:10
B>* 192.168.2.0/24 [20/0] via 10.0.0.2, eth0, weight 1, 00:13:54
vyos@R-01:~$
vyos@R-01:~$
vyos@R-01:~$ show version | grep -i ver
Version:          VyOS 1.4.2
vyos@R-01:~$
vyos@R-01:~$

Inside R-02

vyos@R-02:~$
vyos@R-02:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 10.0.0.0/24 is directly connected, eth0, 00:26:45
B>* 10.55.8.0/24 [20/0] via 10.0.0.1, eth0, weight 1, 00:18:09
B>* 192.168.1.0/24 [20/0] via 10.0.0.1, eth0, weight 1, 00:18:09
C>* 192.168.2.0/24 is directly connected, eth1, 00:26:46
vyos@R-02:~$
vyos@R-02:~$
vyos@R-02:~$ show ip route table 100
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

VRF default table 100:
S>* 192.168.12.0/24 [1/0] unreachable (blackhole), weight 1, 00:18:42
vyos@R-02:~$
vyos@R-02:~$
vyos@R-02:~$ show ip bgp summary

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.0.0.2, local AS number 65002 vrf-id 0
BGP table version 12
RIB entries 7, using 672 bytes of memory
Peers 1, using 20 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
10.0.0.1        4      65001        62        56       12    0    0 00:17:35            3        4 N/A

Total number of neighbors 1
vyos@R-02:~$
vyos@R-02:~$ show ip bgp neighbors 10.0.0.1 advertised-routes
BGP table version is 12, local router ID is 10.0.0.2, vrf id 0
Default local pref 100, local AS 65002
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.0.0/24      0.0.0.0                  0         32768 ?
 *> 10.55.8.0/24     0.0.0.0                                0 65001 ?
 *> 192.168.1.0/24   0.0.0.0                                0 65001 ?
 *> 192.168.2.0/24   0.0.0.0                  0         32768 ?

Total number of prefixes 4
vyos@R-02:~$
vyos@R-02:~$ show ip bgp neighbors 10.0.0.1 re
received         received-routes
vyos@R-02:~$ show ip bgp neighbors 10.0.0.1 received-routes
BGP table version is 12, local router ID is 10.0.0.2, vrf id 0
Default local pref 100, local AS 65002
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.0.0/24      10.0.0.1                 0             0 65001 ?
 *> 10.55.8.0/24     10.0.0.1                 0             0 65001 ?
 *> 192.168.1.0/24   10.0.0.1                 0             0 65001 ?
 *> 192.168.2.0/24   10.0.0.1                               0 65001 65002 ?

Total number of prefixes 4
vyos@R-02:~$

FRR configs:

R-01

vyos@R-01:~$ vtysh -c "show run"
Building configuration...

Current configuration:
!
frr version 9.1.3
frr defaults traditional
hostname vyos
log syslog
log facility local7
hostname R-01
service integrated-vtysh-config
!
ip route 192.168.11.0/24 blackhole table 100
ip route 8.8.4.4/32 10.55.8.254 table 101
ip route 8.8.8.8/32 10.55.8.254 table 101
!
router bgp 65001
 bgp router-id 10.0.0.1
 bgp log-neighbor-changes
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 no bgp network import-check
 neighbor 10.0.0.2 remote-as 65002
 neighbor 10.0.0.2 bfd
 !
 address-family ipv4 unicast
  redistribute connected
  redistribute static
  redistribute table 100
  redistribute table 101
  neighbor 10.0.0.2 activate
  neighbor 10.0.0.2 soft-reconfiguration inbound
 exit-address-family
exit
!
rpki
exit
!
bfd
 peer 10.0.0.2 local-address 10.0.0.1 interface eth1
 exit
 !
exit
!
end

R-02

vyos@R-02#  vtysh -c "show run"
Building configuration...

Current configuration:
!
frr version 9.1.3
frr defaults traditional
hostname vyos
log syslog
log facility local7
hostname R-02
service integrated-vtysh-config
!
ip route 192.168.12.0/24 blackhole table 100
!
router bgp 65002
 bgp router-id 10.0.0.2
 bgp log-neighbor-changes
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 no bgp network import-check
 neighbor 10.0.0.1 remote-as 65001
 neighbor 10.0.0.1 bfd
 !
 address-family ipv4 unicast
  redistribute connected
  redistribute static
  redistribute table 100
  neighbor 10.0.0.1 activate
  neighbor 10.0.0.1 soft-reconfiguration inbound
 exit-address-family
exit
!
rpki
exit
!
bfd
 peer 10.0.0.1 local-address 10.0.0.2 interface eth1
 exit
 !
exit
!
end
[edit]
vyos@R-02#

Route table 100, 101 on the R-01 side and route table 100 on the R-02 side do not distribute.

This seems to be a similar issue with his task https://vyos.dev/T7297

Details

Version
1.4.2
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Event Timeline

I can confirm the issue exists in what will become VyOS 1.4.3 as this is a bug in the FRR codebase itself and not the VyOS CLI configuration.

Upgrading to VyOS 2025.06.24-0020-rolling current which already uses FRR 10.2 make the redistribution appear:

cpo@LR3.wue3# run show ip bgp
BGP table version is 15, local router ID is 10.0.0.2, vrf id 0
Default local pref 100, local AS 65002
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 8.8.4.4/32       10.0.0.1                 0             0 65001 ?
 *> 8.8.8.8/32       10.0.0.1                 0             0 65001 ?
 *  10.0.0.0/24      10.0.0.1                 0             0 65001 ?
 *>                  0.0.0.0                  0         32768 ?
 *> 172.18.202.0/24  10.0.0.1                 0             0 65001 ?
 *> 172.18.203.0/24  0.0.0.0                  0         32768 ?
 *> 172.18.254.202/32
                    10.0.0.1                 0             0 65001 ?
 *> 172.18.254.203/32
                    0.0.0.0                  0         32768 ?
 *> 192.0.2.0/30     10.0.0.1                 0             0 65001 ?
 *> 192.168.11.0/24  10.0.0.1                 0             0 65001 ?
dmbaturin changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.

Any updates on this? We're running 1.4 and this is holding back required changes in our configuration.

Viacheslav changed the task status from Open to Needs testing.EditedSep 15 2025, 11:08 AM
Viacheslav assigned this task to hedrok.
Viacheslav added subscribers: hedrok, Viacheslav.

@hedrok could you re-check and mark as solved if all work as expected?

Viacheslav moved this task from Open to Finished on the VyOS 1.5 Circinus board.
Viacheslav moved this task from Backlog to Finished on the VyOS 1.4 Sagitta (1.4.4) board.

Ergo: Upgrading to 1.4.4 fixes this?

Yes, it will be fixed in release 1.4.4.

When is 1.4.4 planned for release?

Sorry, please consult about dates of releases with support.