Go to file
Donald Sharp 40dd3946a6 bgpd: Ensure BGP does not stop monitoring nexthops
In some cases BGP can be monitoring the same prefix
in both the nexthop and import check tables.  If this
is the case, when unregistering one bnc from one table
make sure we are not still registered in the other

Example of the problem:

r1(config-router)# address-family ipv4 uni
r1(config-router-af)# no network 192.168.100.41/32
r1(config-router-af)# exit

r1# show bgp import-check-table
Current BGP import check cache:
r1# show bgp nexthop
Current BGP nexthop cache:
 192.168.100.41 valid [IGP metric 0], #paths 1, peer 192.168.100.41
  if r1-eth0
  Last update: Wed Dec  6 11:01:40 2023

BGP now believes it is only watching 192.168.100.41 in the nexthop
cache, but zebra doesn't have anything:

r1# show ip import-check
VRF default:
 Resolve via default: on
r1# show ip nht
VRF default:
 Resolve via default: on

So if anything happens to the route that is being matched for
192.168.100.41 bgp is no longer going to be notified about this.

The source of this problem is that zebra has dropped the two different
tables into 1 table, while bgp has 2 tables to track this.  The solution
to this problem (other than the rewrite that is being done ) is to have
BGP have a bit of smarts about looking in both tables for the bnc and
if found in both don't send the delete of the prefix tracking to zebra.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-06 11:42:01 -05:00
.github github: Add rebase label on PR if it's > 50 commits behind 2023-05-09 09:37:23 +03:00
alpine docker: Use openssl instead of libressl 2023-07-31 11:04:30 +03:00
babeld *: convert struct interface->connected to DLIST 2023-11-22 23:00:30 +01:00
bfdd lib: all: remove './' from xpath 22% speedup 2023-11-29 14:37:23 -05:00
bgpd bgpd: Ensure BGP does not stop monitoring nexthops 2023-12-06 11:42:01 -05:00
debian redhat, debian: Update release notes for 9.1 release 2023-11-27 08:51:59 +02:00
doc Merge pull request #14920 from LabNConsulting/chopps/rr-support 2023-12-05 11:42:10 -05:00
docker docker/ubi8-minimal: add protobuf-c runtime dep 2023-12-04 17:41:04 -05:00
eigrpd lib: all: remove './' from xpath 22% speedup 2023-11-29 14:37:23 -05:00
fpm *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
gdb *: Rename thread.[ch] to event.[ch] 2023-03-24 08:32:16 -04:00
grpc *: manual SPDX License ID conversions 2023-02-09 14:09:07 +01:00
include bgpd,lib,sharpd,zebra: srv6 introduce multiple segs/SIDs in nexthop 2023-09-20 15:07:15 +02:00
isisd isisd: Fix dislaying LSP ID 2023-12-04 19:41:28 -05:00
ldpd Merge pull request #14867 from opensourcerouting/zclient-options-cleanup 2023-11-25 09:15:07 -05:00
lib Merge pull request #14947 from pguibert6WIND/nexthop_num_no_recurse_static 2023-12-05 11:55:21 -05:00
m4 build: fix sed regex in Lua macro 2022-12-08 12:39:17 +01:00
mgmtd mgmtd: validate candidate yang tree before creating a config diff 2023-11-30 03:10:09 +02:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd *: convert struct interface->connected to DLIST 2023-11-22 23:00:30 +01:00
ospf6d Merge pull request #14811 from donaldsharp/zebra_final_shutdown_finally 2023-11-28 20:14:42 +01:00
ospfclient *: Convert event.h to frrevent.h 2023-03-24 08:32:17 -04:00
ospfd ospfd: fix deferred shutdown handling 2023-12-01 08:53:30 -03:00
pathd Merge pull request #14925 from pguibert6WIND/doctring_pathd_fix 2023-12-01 11:24:30 -06:00
pbrd pbrd: fix map seq installed flag in json 2023-12-05 11:30:50 -08:00
pceplib *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
pimd lib: all: remove './' from xpath 22% speedup 2023-11-29 14:37:23 -05:00
pkgsrc mgmtd: Bringup MGMTD daemon and datastore module support 2023-03-21 22:08:32 -04:00
python [ospfd]: add support for RFC 5709 HMAC-SHA Auth 2023-09-16 07:38:23 +03:30
qpb mgmtd: Bringup MGMTD daemon and datastore module support 2023-03-21 22:08:32 -04:00
redhat redhat, debian: Update release notes for 9.1 release 2023-11-27 08:51:59 +02:00
ripd lib: all: remove './' from xpath 22% speedup 2023-11-29 14:37:23 -05:00
ripngd lib: all: remove './' from xpath 22% speedup 2023-11-29 14:37:23 -05:00
sharpd sharpd: fix avoid twice sending NHG_DEL for a nexthop-group 2023-12-05 10:06:12 +01:00
snapcraft snapcraft: Use libyang 2.1.80 2023-07-20 21:46:38 +03:00
staticd Merge pull request #14922 from louis-6wind/fix-bfd-static-source 2023-12-06 09:51:32 -03:00
tests Merge pull request #14922 from louis-6wind/fix-bfd-static-source 2023-12-06 09:51:32 -03:00
tools bgpd: lttng tp add evpn route events 2023-11-29 21:44:30 -08:00
vrrpd lib: all: remove './' from xpath 22% speedup 2023-11-29 14:37:23 -05:00
vtysh lib,vtysh: fix show route map JSON output 2023-11-24 10:00:25 -03:00
watchfrr watchfrr: Extend ignore option to daemon being killed 2023-10-18 14:30:03 -04:00
yang *: Introduce Local Host Routes to FRR 2023-11-01 17:13:06 -04:00
zebra Merge pull request #12600 from donaldsharp/local_routes 2023-12-05 11:00:44 -05:00
.clang-format *: convert struct interface->connected to DLIST 2023-11-22 23:00:30 +01:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.flake8 style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore doc: configure: add configure option to generate .ccls file 2023-05-18 09:32:32 -04:00
.isort.cfg style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.pylintrc style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.travis.yml lib: libyang2 add missed conversion 2021-05-17 22:13:59 -04:00
bootstrap.sh build: turn on automake warnings (& symlinks) 2021-04-21 15:42:37 +02:00
buildtest.sh *: manual SPDX License ID conversions 2023-02-09 14:09:07 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac *: Remove APPLE #defines from build 2023-11-07 06:46:19 -05:00
COPYING *: sort out & explain licenses used in FRR 2023-02-09 12:46:13 +01:00
Makefile.am build: clean up mgmtd lib protobuf make syntax 2023-03-27 16:44:27 -04:00
README.md doc: Fix the link that points to Slack invitation in README 2022-03-24 13:13:37 +02:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
version.h build: make builddir include path consistent 2021-04-21 15:42:33 +02:00

Icon

FRRouting

FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD and supports all modern CPU architectures.

FRR currently supports the following protocols:

  • BGP
  • OSPFv2
  • OSPFv3
  • RIPv1
  • RIPv2
  • RIPng
  • IS-IS
  • PIM-SM/MSDP
  • LDP
  • BFD
  • Babel
  • PBR
  • OpenFabric
  • VRRP
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

For source tarballs, see the releases page.

For Debian and its derivatives, use the APT repository at https://deb.frrouting.org/.

Instructions on building and installing from source for supported platforms may be found in the developer docs.

Once installed, please refer to the user guide for instructions on use.

Community

The FRRouting email list server is located here and offers the following public lists:

Topic List
Development dev@lists.frrouting.org
Users & Operators frog@lists.frrouting.org
Announcements announce@lists.frrouting.org

For chat, we currently use Slack. You can join by clicking the "Slack" link under the Participate section of our website.

Contributing

FRR maintains developer's documentation which contains the project workflow and expectations for contributors. Some technical documentation on project internals is also available.

We welcome and appreciate all contributions, no matter how small!

Security

To report security issues, please use our security mailing list:

security [at] lists.frrouting.org