Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPv6 VRF prefix marked as invalid by BGP after ca32945b1fd6 (regression) #18063

Open
2 tasks done
SPYFF opened this issue Feb 7, 2025 · 0 comments
Open
2 tasks done
Labels
triage Needs further investigation

Comments

@SPYFF
Copy link

SPYFF commented Feb 7, 2025

Description

In one of our scenario a BGP prefix marked as invalid and not advertized after commit ca32945.
Before this commit, the prefix marked as valid and successfully advertized as well.

Version

r1# show version 
FRRouting 10.1-dev-dbg-gca32945b1 (r1) on Linux(6.8.0-52-generic).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
This is a git build of frr-10.0-dev-327-gca32945b1
Associated branch(es):
	local:(HEAD detached at ca32945b1)


This is where the `git bisect` stopped.

How to reproduce

There is a reproducer, I attach the files. It has some directories, so I zip-ed them, hopefully not problem.

reproducer.zip

I used mininet emulator which is similar to topotest but focusing on interactive usage instead being part of a CI pipeline. I did not wanted to replace the installer FRR so I worked in the /tmp dir. Unpack the zip to /tmp/FRRTEST folder and install FRR to the /tmp/FRRTEST/build-dir directory. Then simply run sudo ./srv6topo-bgpdbg.py.

Also there are some debug logs. In the good.log which is before the regression, I see entries related to the 2001:abba:0:a1::/64 prefix. After the commit, in bad.log I see none of them.

bad.log
good.log

Expected behavior

If the mininet environment running ping between nodes ru1 and du1 will work:

mininet> ru1 ping 2001:be1a:0:d11::d11 -I 2001:abba:0:a11::a11
PING 2001:be1a:0:d11::d11 (2001:be1a:0:d11::d11) from 2001:abba:0:a11::a11 : 56 data bytes
64 bytes from 2001:be1a:0:d11::d11: icmp_seq=1 ttl=63 time=0.232 ms
64 bytes from 2001:be1a:0:d11::d11: icmp_seq=2 ttl=63 time=0.072 ms

mininet> ru1 ping 2001:be1a:0:d1::d1 -I 2001:abba:0:a1::a1
PING 2001:be1a:0:d1::d1 (2001:be1a:0:d1::d1) from 2001:abba:0:a1::a1 : 56 data bytes
64 bytes from 2001:be1a:0:d1::d1: icmp_seq=1 ttl=63 time=0.098 ms
64 bytes from 2001:be1a:0:d1::d1: icmp_seq=2 ttl=63 time=0.072 ms

Also BGP prefix 2001:abba:0:a1::/64 marked as valid, and advertized:

mininet> r1 vtysh -c "sh bgp vrf vrf66 all"

For address family: IPv6 VPN
BGP table version is 8, local router ID is 10.0.0.1, vrf id 0
Default local pref 100, local AS 64512
Status codes:  s suppressed, d damped, h history, u unsorted, * 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
Route Distinguisher: 64512:66
 *>  2001:abba:0:a1::/64
                    2001:a1fa:0:1::1(detnet)@5
                                             0    120  32768 i
    UN=2001:a1fa:0:1::1 EC{64512:66} label=32 sid=2001:fade:0:1:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=5
 *>  2001:abba:0:a11::/64
                    2001:a1fa:0:1::1(detnet)@5
                                             0    110  32768 ?
    UN=2001:a1fa:0:1::1 EC{64512:66} label=32 sid=2001:fade:0:1:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=5
 *>  2001:abba:0:8a11::/64
                    2001:a1fa:0:1::1(detnet)@5
                                             0         32768 i
    UN=2001:a1fa:0:1::1 EC{64512:66} label=32 sid=2001:fade:0:1:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=5
 *>i 2001:be1a:0:d1::/64
                    2001:a1fa:0:3::3(detnet)
                                             0    120      0 i
    UN=2001:a1fa:0:3::3 EC{64512:66} label=32 sid=2001:fade:0:3:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=0
 *>i 2001:be1a:0:d11::/64
                    2001:a1fa:0:3::3(detnet)
                                             0    110      0 ?
    UN=2001:a1fa:0:3::3 EC{64512:66} label=32 sid=2001:fade:0:3:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=0
 *>i 2001:be1a:0:8d13::/64
                    2001:a1fa:0:3::3(detnet)
                                             0    100      0 i
    UN=2001:a1fa:0:3::3 EC{64512:66} label=32 sid=2001:fade:0:3:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=0

Displayed 6 routes and 6 total paths

Actual behavior

If the mininet environment running ping between nodes ru1 and du1 will work partially:

mininet> ru1 ping 2001:be1a:0:d11::d11 -I 2001:abba:0:a11::a11
PING 2001:be1a:0:d11::d11 (2001:be1a:0:d11::d11) from 2001:abba:0:a11::a11 : 56 data bytes
64 bytes from 2001:be1a:0:d11::d11: icmp_seq=1 ttl=63 time=0.232 ms
64 bytes from 2001:be1a:0:d11::d11: icmp_seq=2 ttl=63 time=0.072 ms

mininet> ru1 ping 2001:be1a:0:d1::d1 -I 2001:abba:0:a1::a1
PING 2001:be1a:0:d1::d1 (2001:be1a:0:d1::d1) from 2001:abba:0:a1::a1 : 56 data bytes
From 2001:abba:0:8a11::1 icmp_seq=1 Destination unreachable: No route
From 2001:abba:0:8a11::1 icmp_seq=2 Destination unreachable: No route

Also BGP prefix 2001:abba:0:a1::/64 marked as invalid, and not advertized:

mininet> r1 vtysh -c "sh bgp vrf vrf66 all"

For address family: IPv6 VPN
BGP table version is 4, local router ID is 10.0.0.1, vrf id 0
Default local pref 100, local AS 64512
Status codes:  s suppressed, d damped, h history, u unsorted, * 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
Route Distinguisher: 64512:66
     2001:abba:0:a1::/64
                    2001:a1fa:0:1::1(detnet)@5
                                             0    120  32768 i
    UN=2001:a1fa:0:1::1 EC{64512:66} label=32 sid=2001:fade:0:1:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=5
 *>  2001:abba:0:a11::/64
                    2001:a1fa:0:1::1(detnet)@5
                                             0    110  32768 ?
    UN=2001:a1fa:0:1::1 EC{64512:66} label=32 sid=2001:fade:0:1:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=5
 *>  2001:abba:0:8a11::/64
                    2001:a1fa:0:1::1(detnet)@5
                                             0         32768 i
    UN=2001:a1fa:0:1::1 EC{64512:66} label=32 sid=2001:fade:0:1:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=5
 *>i 2001:be1a:0:d11::/64
                    2001:a1fa:0:3::3(detnet)
                                             0    110      0 ?
    UN=2001:a1fa:0:3::3 EC{64512:66} label=32 sid=2001:fade:0:3:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=0
 *>i 2001:be1a:0:8d13::/64
                    2001:a1fa:0:3::3(detnet)
                                             0    100      0 i
    UN=2001:a1fa:0:3::3 EC{64512:66} label=32 sid=2001:fade:0:3:8000:: sid_structure=[48,17,15,0] type=bgp, subtype=0

Displayed 5 routes and 5 total paths

Additional context

No response

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.
@SPYFF SPYFF added the triage Needs further investigation label Feb 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage Needs further investigation
Projects
None yet
Development

No branches or pull requests

1 participant