![]() Issue: In a scaled setup, (where number of nets > BGP_CLEARING_BATCH_MAX_DESTS for walk_batch_table_helper), when peer is shutdown, it is seen some of the paths are not deleted, which are received from that peer. Fix: This is due to, in clear_batch_rib_helper, once walk_batch_table_helper returns after BGP_CLEARING_BATCH_MAX_DESTS is reached, we just break from inner loop for the afi/safi for loops. So during walk for next afi/safi that 'ret' state is overwritten with new state. Also the resume context is overwritten. This causes to lose the start point for next walk, some nets are skipped forever. So they are not marked for deletion anymore. To fix this, we immediately return from current run. This will have resume state to be stored correctly, and next walk will start from there. Testing: 32 ecmp paths were received from the shutdown peer Before fix: show bgp ipv6 2052:52:1:167::/64 BGP routing table entry for 2052:52:1:167::/64, version 495 Paths: (246 available, best #127, table default) Not advertised to any peer <snip> 4200165500 4200165002 2021:21:51:101::2(spine-5) from spine-5(2021:21:51:101::2) (6.0.0.17) (fe80::202:ff:fe00:55) (prefer-global) Origin incomplete, valid, external, multipath Last update: Fri Apr 4 17:25:05 2025 4200165500 4200165002 2021:21:11:116::2(spine-1) from spine-1(2021:21:11:116::2) (0.0.0.0) (fe80::202:ff:fe00:3d) (prefer-global)<<<<path not deleted Origin incomplete, valid, external Last update: Fri Apr 4 17:25:05 2025 4200165500 4200165002 2021:21:11:115::2(spine-1) from spine-1(2021:21:11:115::2) (0.0.0.0) (fe80::202:ff:fe00:3d) (prefer-global)<<<<path not deleted Origin incomplete, valid, external Last update: Fri Apr 4 17:25:05 2025 <snip> 32 paths are supposed to be withdrawn: root@leaf-1:mgmt:# vtysh -c "show bgp ipv6 2052:52:1:167::/64" | grep "prefer-global" | wc -l 256 root@leaf-1:mgmt# vtysh -c "show bgp ipv6 2052:52:1:167::/64" | grep "prefer-global" | wc -l 246<<should be 224, but showing 246, which is wrong After fix: 32 paths are supposed to be withdrawn: root@leaf-1:mgmt:# vtysh -c "show bgp ipv6 2052:52:1:167::/64" | grep "prefer-global" | wc -l 256 root@leaf-1:mgmt:# vtysh -c "show bgp ipv6 2052:52:1:167::/64" | grep "prefer-global" | wc -l 224<<<shows correctly Signed-off-by: Soumya Roy <souroy@nvidia.com> |
||
---|---|---|
.github | ||
alpine | ||
babeld | ||
bfdd | ||
bgpd | ||
debian | ||
doc | ||
docker | ||
eigrpd | ||
fpm | ||
gdb | ||
grpc | ||
include | ||
isisd | ||
ldpd | ||
lib | ||
m4 | ||
mgmtd | ||
mlag | ||
nhrpd | ||
ospf6d | ||
ospfclient | ||
ospfd | ||
pathd | ||
pbrd | ||
pceplib | ||
pimd | ||
pkgsrc | ||
python | ||
qpb | ||
redhat | ||
ripd | ||
ripngd | ||
sharpd | ||
snapcraft | ||
staticd | ||
tests | ||
tools | ||
vrrpd | ||
vtysh | ||
watchfrr | ||
yang | ||
zebra | ||
.clang-format | ||
.dockerignore | ||
.flake8 | ||
.git-blame-ignore-revs | ||
.gitignore | ||
.isort.cfg | ||
.pylintrc | ||
.travis.yml | ||
bootstrap.sh | ||
buildtest.sh | ||
config.version.in | ||
configure.ac | ||
COPYING | ||
Makefile.am | ||
README.md | ||
stamp-h.in | ||
version.h |
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