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

FRR not advertising routes to BGP peers if a lot of netlink messages happen. #18098

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

Comments

@lukedirtwalker
Copy link

Description

We have hit a bug where FRR does not announce all routes to its BGP peer.
We suspect that this happens when there is a lot of routes being remove and re-added on linux (via netlink) and the advertisements timer fires at the same time.

In a reproducer test case, we start 2 frr instances, one for announcing prefixes to the other, the other to check what prefixes where received.
Then we run a binary that adds and deletes routes on demand (triggered via HTTP).
After the topology is setup we add 2500 routes, remove 1000, and re-add the 1000 again.

In the end we would expect to see 2500 routes on the side that receives routes, but most of the time not all routes are there.

Version

FRRouting 10.2.1_git (a74c083e9249) on Linux(6.8.0-52-generic).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
configured with:
    '--prefix=/usr' '--sysconfdir=/etc' '--localstatedir=/var' '--sbindir=/usr/lib/frr' '--libdir=/usr/lib' '--enable-rpki' '--enable-vtysh' '--enable-multipath=64' '--enable-vty-group=frrvty' '--enable-user=frr' '--enable-group=frr' '--enable-pcre2posix' '--enable-scripting' 'CC=gcc' 'CXX=g++'

How to reproduce

The following repository provides a reproducer including a readme on how to run the reproducer.

https://github.com/lukedirtwalker/frr_reproducer

Expected behavior

All 2500 routes are announced and present at the frr3 side.

Actual behavior

Only a subset of all 2500 routes are announced to the frr3 side. All routes are in the routing table of frr2 for some it shows "Not advertised to any peer", as shown in an example below:

e22a3bc7ecfc# show ip bgp 10.42.29.224/27
BGP routing table entry for 10.42.29.224/27, version 3501
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Local
    0.0.0.0 from 0.0.0.0 (10.0.0.2)
      Origin incomplete, metric 15, weight 32768, valid, sourced, best (First path received)
      Last update: Tue Feb 11 14:18:30 2025

Additional context

No response

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.
@lukedirtwalker lukedirtwalker added the triage Needs further investigation label Feb 11, 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